class_docstr: Geocoder using the HERE Geocoding & Search v7 API.
  
  Documentation at:
      https://developer.here.com/documentation/geocoding-search-api/
  
  Terms of Service at:
      https://legal.here.com/en-gb/terms
  
  .. versionadded:: 2.2
docstr: Return a location point by address.
  
  :param str query: The address or query you wish to geocode. Optional,
      if ``components`` param is set.
  
  :param dict components: A structured query. Can be used along with
      the free-text ``query``. Should be a dictionary whose keys
      are one of:
      `country`, `state`, `county`, `city`, `district`, `street`,
      `houseNumber`, `postalCode`.
  
  :param at: The center of the search context.
  :type at: :class:`geopy.point.Point`, list or tuple of ``(latitude,
      longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
  :param list countries: A list of country codes specified in
      `ISO 3166-1 alpha-3 <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3>`_
      format, e.g. ``['USA', 'CAN']``.
      This is a hard filter.
  
  :param str language: Affects the language of the response,
      must be a BCP 47 compliant language code, e.g. ``en-US``.
  
  :param int limit: Defines the maximum number of items in the
      response structure. If not provided and there are multiple results
      the HERE API will return 20 results by default. This will be reset
      to one if ``exactly_one`` is True.
  
  :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.
  
  :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
      ``exactly_one=False``.
docstr_tok: ["Return","a","location","point","by","address",".",":","param","str","query",":","The","address","or","query","you","wish","to","geocode",".","Optional",",","if","``","components","``","param","is","set",".",":","param","dict","components",":","A","structured","query",".","Can","be","used","along","with","the","free-text","``","query","``",".","Should","be","a","dictionary","whose","keys","are","one","of",":","`","country","`",",","`","state","`",",","`","county","`",",","`","city","`",",","`","district","`",",","`","street","`",",","`","houseNumber","`",",","`","postalCode","`",".",":","param","at",":","The","center","of","the","search","context",".",":","type","at",":",":","class",":","`","geopy.point.Point","`",",","list","or","tuple","of","``","(","latitude",",","longitude",")","``",",","or","string","as","``","``","%","(","latitude",")","s",",","%","(","longitude",")","s","''","``",".",":","param","list","countries",":","A","list","of","country","codes","specified","in","`","ISO","3166-1","alpha-3","<","https",":","\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-3",">","`","_","format",",","e.g",".","``","[","'USA","'",",","'CAN","'","]","``",".","This","is","a","hard","filter",".",":","param","str","language",":","Affects","the","language","of","the","response",",","must","be","a","BCP","47","compliant","language","code",",","e.g",".","``","en-US","``",".",":","param","int","limit",":","Defines","the","maximum","number","of","items","in","the","response","structure",".","If","not","provided","and","there","are","multiple","results","the","HERE","API","will","return","20","results","by","default",".","This","will","be","reset","to","one","if","``","exactly_one","``","is","True",".",":","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",".",":","rtype",":","``","None","``",",",":","class",":","`","geopy.location.Location","`","or","a","list","of","them",",","if","``","exactly_one=False","``","."]
code: def geocode(
      self,
      query=None,
      *,
      components=None,
      at=None,
      countries=None,
      language=None,
      limit=None,
      exactly_one=True,
      timeout=DEFAULT_SENTINEL,
  ):
      """
      Return a location point by address.
  
      :param str query: The address or query you wish to geocode. Optional,
          if ``components`` param is set.
  
      :param dict components: A structured query. Can be used along with
          the free-text ``query``. Should be a dictionary whose keys
          are one of:
          `country`, `state`, `county`, `city`, `district`, `street`,
          `houseNumber`, `postalCode`.
  
      :param at: The center of the search context.
      :type at: :class:`geopy.point.Point`, list or tuple of ``(latitude,
          longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
      :param list countries: A list of country codes specified in
          `ISO 3166-1 alpha-3 <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3>`_
          format, e.g. ``['USA', 'CAN']``.
          This is a hard filter.
  
      :param str language: Affects the language of the response,
          must be a BCP 47 compliant language code, e.g. ``en-US``.
  
      :param int limit: Defines the maximum number of items in the
          response structure. If not provided and there are multiple results
          the HERE API will return 20 results by default. This will be reset
          to one if ``exactly_one`` is True.
  
      :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.
  
      :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
          ``exactly_one=False``.
      """
      params = {
          "apiKey": self.apikey,
      }
  
      if query:
          params["q"] = query
  
      if components:
          parts = [
              "{}={}".format(key, val)
              for key, val in components.items()
              if key in self.structured_query_params
          ]
          if not parts:
              raise GeocoderQueryError(
                  "`components` dict must not be empty"
              )
          for pair in parts:
              if ";" in pair:
                  raise GeocoderQueryError(
                      "';' must not be used in values of the structured query. "
                      "Offending pair: {!r}".format(pair)
                  )
          params["qq"] = ";".join(parts)
  
      if at:
          point = self._coerce_point_to_string(
              at, output_format="%(lat)s,%(lon)s"
          )
          params["at"] = point
  
      if countries:
          params["in"] = "countryCode:" + ",".join(countries)
  
      if language:
          params["lang"] = language
  
      if limit:
          params["limit"] = limit
      if exactly_one:
          params["limit"] = 1
  
      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)
  
imports: import collections.abc
  import json
  import warnings
  from functools import partial
  from urllib.parse import urlencode
  from geopy.adapters import AdapterHTTPError
  from geopy.exc import ConfigurationError, GeocoderAuthenticationFailure, GeocoderInsufficientPrivileges, GeocoderQueryError, GeocoderRateLimited, GeocoderServiceError, GeocoderUnavailable
  from geopy.geocoders.base import DEFAULT_SENTINEL, ERROR_CODE_MAP, Geocoder
  from geopy.location import Location
  from geopy.util import join_filter, logger
label_desc: Use image node_id 2 for calling the HereV7 obj's underlying member method code with example usage: obj.geocode(query) and returns: self