class_docstr: Geocoder using the HERE Geocoder API.
  
  Documentation at:
      https://developer.here.com/documentation/geocoder/
  
  .. attention::
      This class uses a v6 API which is in maintenance mode.
      Consider using the newer :class:`.HereV7` class.
docstr: :param str app_id: Should be a valid HERE Maps APP ID. Will eventually
      be replaced with APIKEY.
      See https://developer.here.com/authenticationpage.
  
      .. attention::
          App ID and App Code are being replaced by API Keys and OAuth 2.0
          by HERE. Consider getting an ``apikey`` instead of using
          ``app_id`` and ``app_code``.
  
  :param str app_code: Should be a valid HERE Maps APP CODE. Will
      eventually be replaced with APIKEY.
      See https://developer.here.com/authenticationpage.
  
      .. attention::
          App ID and App Code are being replaced by API Keys and OAuth 2.0
          by HERE. Consider getting an ``apikey`` instead of using
          ``app_id`` and ``app_code``.
  
  :param str apikey: Should be a valid HERE Maps APIKEY. These keys were
      introduced in December 2019 and will eventually replace the legacy
      APP CODE/APP ID pairs which are already no longer available for new
      accounts (but still work for old accounts).
      More authentication details are available at
      https://developer.here.com/blog/announcing-two-new-authentication-types.
      See https://developer.here.com/authenticationpage.
  
  :param str scheme:
      See :attr:`geopy.geocoders.options.default_scheme`.
  
  :param int timeout:
      See :attr:`geopy.geocoders.options.default_timeout`.
  
  :param dict proxies:
      See :attr:`geopy.geocoders.options.default_proxies`.
  
  :param str user_agent:
      See :attr:`geopy.geocoders.options.default_user_agent`.
  
  :type ssl_context: :class:`ssl.SSLContext`
  :param ssl_context:
      See :attr:`geopy.geocoders.options.default_ssl_context`.
  
  :param callable adapter_factory:
      See :attr:`geopy.geocoders.options.default_adapter_factory`.
  
      .. versionadded:: 2.0
docstr_tok: [":","param","str","app_id",":","Should","be","a","valid","HERE","Maps","APP","ID",".","Will","eventually","be","replaced","with","APIKEY",".","See","https",":","\/\/developer.here.com\/authenticationpage",".","..","attention",":",":","App","ID","and","App","Code","are","being","replaced","by","API","Keys","and","OAuth","2.0","by","HERE",".","Consider","getting","an","``","apikey","``","instead","of","using","``","app_id","``","and","``","app_code","``",".",":","param","str","app_code",":","Should","be","a","valid","HERE","Maps","APP","CODE",".","Will","eventually","be","replaced","with","APIKEY",".","See","https",":","\/\/developer.here.com\/authenticationpage",".","..","attention",":",":","App","ID","and","App","Code","are","being","replaced","by","API","Keys","and","OAuth","2.0","by","HERE",".","Consider","getting","an","``","apikey","``","instead","of","using","``","app_id","``","and","``","app_code","``",".",":","param","str","apikey",":","Should","be","a","valid","HERE","Maps","APIKEY",".","These","keys","were","introduced","in","December","2019","and","will","eventually","replace","the","legacy","APP","CODE\/APP","ID","pairs","which","are","already","no","longer","available","for","new","accounts","(","but","still","work","for","old","accounts",")",".","More","authentication","details","are","available","at","https",":","\/\/developer.here.com\/blog\/announcing-two-new-authentication-types",".","See","https",":","\/\/developer.here.com\/authenticationpage",".",":","param","str","scheme",":","See",":","attr",":","`","geopy.geocoders.options.default_scheme","`",".",":","param","int","timeout",":","See",":","attr",":","`","geopy.geocoders.options.default_timeout","`",".",":","param","dict","proxies",":","See",":","attr",":","`","geopy.geocoders.options.default_proxies","`",".",":","param","str","user_agent",":","See",":","attr",":","`","geopy.geocoders.options.default_user_agent","`",".",":","type","ssl_context",":",":","class",":","`","ssl.SSLContext","`",":","param","ssl_context",":","See",":","attr",":","`","geopy.geocoders.options.default_ssl_context","`",".",":","param","callable","adapter_factory",":","See",":","attr",":","`","geopy.geocoders.options.default_adapter_factory","`",".","..","versionadded",":",":","2.0"]
code: def __init__(
      self,
      *,
      app_id=None,
      app_code=None,
      apikey=None,
      scheme=None,
      timeout=DEFAULT_SENTINEL,
      proxies=DEFAULT_SENTINEL,
      user_agent=None,
      ssl_context=DEFAULT_SENTINEL,
      adapter_factory=None,
  ):
      """
  
      :param str app_id: Should be a valid HERE Maps APP ID. Will eventually
          be replaced with APIKEY.
          See https://developer.here.com/authenticationpage.
  
          .. attention::
              App ID and App Code are being replaced by API Keys and OAuth 2.0
              by HERE. Consider getting an ``apikey`` instead of using
              ``app_id`` and ``app_code``.
  
      :param str app_code: Should be a valid HERE Maps APP CODE. Will
          eventually be replaced with APIKEY.
          See https://developer.here.com/authenticationpage.
  
          .. attention::
              App ID and App Code are being replaced by API Keys and OAuth 2.0
              by HERE. Consider getting an ``apikey`` instead of using
              ``app_id`` and ``app_code``.
  
      :param str apikey: Should be a valid HERE Maps APIKEY. These keys were
          introduced in December 2019 and will eventually replace the legacy
          APP CODE/APP ID pairs which are already no longer available for new
          accounts (but still work for old accounts).
          More authentication details are available at
          https://developer.here.com/blog/announcing-two-new-authentication-types.
          See https://developer.here.com/authenticationpage.
  
      :param str scheme:
          See :attr:`geopy.geocoders.options.default_scheme`.
  
      :param int timeout:
          See :attr:`geopy.geocoders.options.default_timeout`.
  
      :param dict proxies:
          See :attr:`geopy.geocoders.options.default_proxies`.
  
      :param str user_agent:
          See :attr:`geopy.geocoders.options.default_user_agent`.
  
      :type ssl_context: :class:`ssl.SSLContext`
      :param ssl_context:
          See :attr:`geopy.geocoders.options.default_ssl_context`.
  
      :param callable adapter_factory:
          See :attr:`geopy.geocoders.options.default_adapter_factory`.
  
          .. versionadded:: 2.0
      """
      super().__init__(
          scheme=scheme,
          timeout=timeout,
          proxies=proxies,
          user_agent=user_agent,
          ssl_context=ssl_context,
          adapter_factory=adapter_factory,
      )
      is_apikey = bool(apikey)
      is_app_code = app_id and app_code
      if not is_apikey and not is_app_code:
          raise ConfigurationError(
              "HERE geocoder requires authentication, either `apikey` "
              "or `app_id`+`app_code` must be set"
          )
      if is_app_code:
          warnings.warn(
              "Since December 2019 HERE provides two new authentication "
              "methods `API Key` and `OAuth 2.0`. `app_id`+`app_code` "
              "is deprecated and might eventually be phased out. "
              "Consider switching to `apikey`, which geopy supports. "
              "See https://developer.here.com/blog/announcing-two-new-authentication-types",  # noqa
              UserWarning,
              stacklevel=2,
          )
  
      self.app_id = app_id
      self.app_code = app_code
      self.apikey = apikey
      domain = "ls.hereapi.com" if is_apikey else "api.here.com"
      self.api = "%s://geocoder.%s%s" % (
          self.scheme,
          domain,
          self.geocode_path,
      )
      self.reverse_api = "%s://reverse.geocoder.%s%s" % (
          self.scheme,
          domain,
          self.reverse_path,
      )
  
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 1 to create a new Here object from inherited base classes: Geocoder with example: obj = Here()