class_docstr: Geocoder using the Geolake API.
  
  Documentation at:
      https://geolake.com/docs/api
  
  Terms of Service at:
      https://geolake.com/terms-of-use
class_docstr_tok: ["Geocoder","using","the","Geolake","API",".","Documentation","at",":","https",":","\/\/geolake.com\/docs\/api","Terms","of","Service","at",":","https",":","\/\/geolake.com\/terms-of-use"]
docstr: Return a location point by address.
  
  :param query: The address or query you wish to geocode.
  
      For a structured query, provide a dictionary whose keys
      are one of: `country`, `state`, `city`, `zipcode`, `street`, `address`,
      `houseNumber` or `subNumber`.
  :type query: str or dict
  
  :param country_codes: Provides the geocoder with a list
      of country codes that the query may reside in. This value will
      limit the geocoder to the supplied countries. The country code
      is a 2 character code as defined by the ISO-3166-1 alpha-2
      standard (e.g. ``FR``). Multiple countries can be specified with
      a Python list.
  
  :type country_codes: str or list
  
  :param bool exactly_one: Return one result or a list of one result.
  
  :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.
  
  :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
      ``exactly_one=False``.
docstr_tok: ["Return","a","location","point","by","address",".",":","param","query",":","The","address","or","query","you","wish","to","geocode",".","For","a","structured","query",",","provide","a","dictionary","whose","keys","are","one","of",":","`","country","`",",","`","state","`",",","`","city","`",",","`","zipcode","`",",","`","street","`",",","`","address","`",",","`","houseNumber","`","or","`","subNumber","`",".",":","type","query",":","str","or","dict",":","param","country_codes",":","Provides","the","geocoder","with","a","list","of","country","codes","that","the","query","may","reside","in",".","This","value","will","limit","the","geocoder","to","the","supplied","countries",".","The","country","code","is","a","2","character","code","as","defined","by","the","ISO-3166-1","alpha-2","standard","(","e.g",".","``","FR","``",")",".","Multiple","countries","can","be","specified","with","a","Python","list",".",":","type","country_codes",":","str","or","list",":","param","bool","exactly_one",":","Return","one","result","or","a","list","of","one","result",".",":","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",".",":","rtype",":","``","None","``",",",":","class",":","`","geopy.location.Location","`","or","a","list","of","them",",","if","``","exactly_one=False","``","."]
code: def geocode(
      self,
      query,
      *,
      country_codes=None,
      exactly_one=True,
      timeout=DEFAULT_SENTINEL,
  ):
      """
      Return a location point by address.
  
      :param query: The address or query you wish to geocode.
  
          For a structured query, provide a dictionary whose keys
          are one of: `country`, `state`, `city`, `zipcode`, `street`, `address`,
          `houseNumber` or `subNumber`.
      :type query: str or dict
  
      :param country_codes: Provides the geocoder with a list
          of country codes that the query may reside in. This value will
          limit the geocoder to the supplied countries. The country code
          is a 2 character code as defined by the ISO-3166-1 alpha-2
          standard (e.g. ``FR``). Multiple countries can be specified with
          a Python list.
  
      :type country_codes: str or list
  
      :param bool exactly_one: Return one result or a list of one result.
  
      :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.
  
      :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
          ``exactly_one=False``.
  
      """
  
      if isinstance(query, collections.abc.Mapping):
          params = {
              key: val
              for key, val in query.items()
              if key in self.structured_query_params
          }
          params["api_key"] = self.api_key
      else:
          params = {
              "api_key": self.api_key,
              "q": query,
          }
  
      if not country_codes:
          country_codes = []
      if isinstance(country_codes, str):
          country_codes = [country_codes]
      if country_codes:
          params["countryCodes"] = ",".join(country_codes)
  
      url = "?".join((self.api, urlencode(params)))
  
      logger.debug("%s.geocode: %s", self.__class__.__name__, url)
      callback = partial(self._parse_json, exactly_one=exactly_one)
      return self._call_geocoder(url, callback, timeout=timeout)
  
file_path: geopy/geopy/geocoders/geolake.py
imports: import collections.abc
  from functools import partial
  from urllib.parse import urlencode
  from geopy.geocoders.base import DEFAULT_SENTINEL, Geocoder
  from geopy.location import Location
  from geopy.util import join_filter, logger
label_desc: Use image node_id 2 for calling the Geolake obj's underlying member method code with example usage: obj.geocode(query) and returns: self