class_docstr: Geocoder using the Google Maps v3 API.
  
  Documentation at:
      https://developers.google.com/maps/documentation/geocoding/
  
  Pricing details:
      https://developers.google.com/maps/documentation/geocoding/usage-and-billing
docstr: Return an address by location point.
  
  :param query: The coordinates for which you wish to obtain the
      closest human-readable addresses.
  :type query: :class:`geopy.point.Point`, list or tuple of ``(latitude,
      longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
  :param bool exactly_one: Return one result or a list of results, if
      available.
  
  :param int timeout: Time, in seconds, to wait for the geocoding service
      to respond before raising a :class:`geopy.exc.GeocoderTimedOut`
      exception. Set this only if you wish to override, on this call
      only, the value set during the geocoder's initialization.
  
  :param str language: The language in which to return results.
  
  :param bool sensor: Whether the geocoding request comes from a
      device with a location sensor.
  
  :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
      ``exactly_one=False``.
docstr_tok: ["Return","an","address","by","location","point",".",":","param","query",":","The","coordinates","for","which","you","wish","to","obtain","the","closest","human-readable","addresses",".",":","type","query",":",":","class",":","`","geopy.point.Point","`",",","list","or","tuple","of","``","(","latitude",",","longitude",")","``",",","or","string","as","``","``","%","(","latitude",")","s",",","%","(","longitude",")","s","''","``",".",":","param","bool","exactly_one",":","Return","one","result","or","a","list","of","results",",","if","available",".",":","param","int","timeout",":","Time",",","in","seconds",",","to","wait","for","the","geocoding","service","to","respond","before","raising","a",":","class",":","`","geopy.exc.GeocoderTimedOut","`","exception",".","Set","this","only","if","you","wish","to","override",",","on","this","call","only",",","the","value","set","during","the","geocoder","'s","initialization",".",":","param","str","language",":","The","language","in","which","to","return","results",".",":","param","bool","sensor",":","Whether","the","geocoding","request","comes","from","a","device","with","a","location","sensor",".",":","rtype",":","``","None","``",",",":","class",":","`","geopy.location.Location","`","or","a","list","of","them",",","if","``","exactly_one=False","``","."]
code: def reverse(
      self,
      query,
      *,
      exactly_one=True,
      timeout=DEFAULT_SENTINEL,
      language=None,
      sensor=False,
  ):
      """
      Return an address by location point.
  
      :param query: The coordinates for which you wish to obtain the
          closest human-readable addresses.
      :type query: :class:`geopy.point.Point`, list or tuple of ``(latitude,
          longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
      :param bool exactly_one: Return one result or a list of results, if
          available.
  
      :param int timeout: Time, in seconds, to wait for the geocoding service
          to respond before raising a :class:`geopy.exc.GeocoderTimedOut`
          exception. Set this only if you wish to override, on this call
          only, the value set during the geocoder's initialization.
  
      :param str language: The language in which to return results.
  
      :param bool sensor: Whether the geocoding request comes from a
          device with a location sensor.
  
      :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
          ``exactly_one=False``.
      """
  
      params = {
          "latlng": self._coerce_point_to_string(query),
          "sensor": str(sensor).lower(),
      }
      if language:
          params["language"] = language
      if self.api_key:
          params["key"] = self.api_key
  
      if not self.premier:
          url = "?".join((self.api, urlencode(params)))
      else:
          url = self._get_signed_url(params)
  
      logger.debug("%s.reverse: %s", self.__class__.__name__, url)
      callback = partial(self._parse_json, exactly_one=exactly_one)
      return self._call_geocoder(url, callback, timeout=timeout)
  
imports: import base64
  import collections.abc
  import hashlib
  import hmac
  from calendar import timegm
  from datetime import datetime
  from functools import partial
  from urllib.parse import urlencode
  from geopy.exc import ConfigurationError, GeocoderQueryError, GeocoderQuotaExceeded, GeocoderServiceError, GeocoderUnavailable
  from geopy.geocoders.base import DEFAULT_SENTINEL, Geocoder
  from geopy.location import Location
  from geopy.timezone import ensure_pytz_is_installed, from_timezone_name
  from geopy.util import logger
label_desc: Use image node_id 5 for calling the GoogleV3 obj's underlying member method code with example usage: obj.reverse(query) and returns: self