Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_latlng(self):
expected = "1,2"
ll = {"lat": 1, "lng": 2}
self.assertEqual(expected, convert.latlng(ll))
ll = [1, 2]
self.assertEqual(expected, convert.latlng(ll))
ll = (1, 2)
self.assertEqual(expected, convert.latlng(ll))
self.assertEqual(expected, convert.latlng(expected))
with self.assertRaises(TypeError):
convert.latlng(1)
def test_location_list(self):
expected = "1,2|1,2"
ll = [{"lat": 1, "lng": 2}, {"lat": 1, "lng": 2}]
self.assertEqual(expected, convert.location_list(ll))
ll = [[1, 2], [1, 2]]
self.assertEqual(expected, convert.location_list(ll))
ll = [(1, 2), [1, 2]]
self.assertEqual(expected, convert.location_list(ll))
self.assertEqual(expected, convert.location_list(expected))
with self.assertRaises(TypeError):
convert.latlng(1)
:param transit_routing_preference: Specifies preferences for transit
requests. Valid values are "less_walking" or "fewer_transfers"
:type transit_routing_preference: string
:param traffic_model: Specifies the predictive travel time model to use.
Valid values are "best_guess" or "optimistic" or "pessimistic".
The traffic_model parameter may only be specified for requests where
the travel mode is driving, and where the request includes a
departure_time.
:type units: string
:rtype: list of routes
"""
params = {
"origin": convert.latlng(origin),
"destination": convert.latlng(destination)
}
if mode:
# NOTE(broady): the mode parameter is not validated by the Maps API
# server. Check here to prevent silent failures.
if mode not in ["driving", "walking", "bicycling", "transit"]:
raise ValueError("Invalid travel mode.")
params["mode"] = mode
if waypoints:
waypoints = convert.location_list(waypoints)
if optimize_waypoints:
waypoints = "optimize:true|" + waypoints
params["waypoints"] = waypoints
async def _autocomplete(client, url_part, input_text,
offset=None, location=None, radius=None,
language=None, types=None, components=None,
strict_bounds=False):
params = {'input': input_text}
if offset:
params['offset'] = offset
if location:
params['location'] = convert.latlng(location)
if radius:
params['radius'] = radius
if language:
params['language'] = language
if types:
params['types'] = types
if components:
params['components'] = convert.components(components)
if strict_bounds:
params['strictbounds'] = 'true'
url = '/maps/api/place/%sautocomplete/json' % url_part
result = await client._request(url, params)
return result['predictions']
components=None,
strict_bounds=False,
):
"""
Internal handler for ``autocomplete`` and ``autocomplete_query``.
See each method's docs for arg details.
"""
params = {"input": input_text}
if session_token:
params["sessiontoken"] = session_token
if offset:
params["offset"] = offset
if location:
params["location"] = convert.latlng(location)
if radius:
params["radius"] = radius
if language:
params["language"] = language
if types:
params["types"] = types
if components:
if len(components) != 1 or list(components.keys())[0] != "country":
raise ValueError("Only country components are supported")
params["components"] = convert.components(components)
if strict_bounds:
params["strictbounds"] = "true"
url = "/maps/api/place/%sautocomplete/json" % url_part
return client._request(url, params).get("predictions", [])
:param timestamp: Timestamp specifies the desired time as seconds since
midnight, January 1, 1970 UTC. The Time Zone API uses the timestamp to
determine whether or not Daylight Savings should be applied. Times
before 1970 can be expressed as negative values. Optional. Defaults to
``datetime.utcnow()``.
:type timestamp: int or datetime.datetime
:param language: The language in which to return results.
:type language: string
:rtype: dict
"""
params = {
"location": convert.latlng(location),
"timestamp": convert.time(timestamp or datetime.utcnow())
}
if language:
params["language"] = language
return client._request( "/maps/api/timezone/json", params)
rank_by=None,
type=None,
region=None,
page_token=None,
):
"""
Internal handler for ``places`` and ``places_nearby``.
See each method's docs for arg details.
"""
params = {"minprice": min_price, "maxprice": max_price}
if query:
params["query"] = query
if location:
params["location"] = convert.latlng(location)
if radius:
params["radius"] = radius
if keyword:
params["keyword"] = keyword
if language:
params["language"] = language
if name:
params["name"] = convert.join_list(" ", name)
if open_now:
params["opennow"] = "true"
if rank_by:
params["rankby"] = rank_by
if type:
params["type"] = type
if region:
params["region"] = region
:param location_type: One or more location types to restrict results to.
:type location_type: list of strings
:param language: The language in which to return results.
:type language: string
:rtype: list of reverse geocoding results.
"""
# Check if latlng param is a place_id string.
# place_id strings do not contain commas; latlng strings do.
if convert.is_string(latlng) and ',' not in latlng:
params = {"place_id": latlng}
else:
params = {"latlng": convert.latlng(latlng)}
if result_type:
params["result_type"] = convert.join_list("|", result_type)
if location_type:
params["location_type"] = convert.join_list("|", location_type)
if language:
params["language"] = language
return client._request("/maps/api/geocode/json", params).get("results", [])