code: def geocode(
              self,
              query,
              exactly_one=True,
              timeout=DEFAULT_SENTINEL,
              candidates=None,  # TODO: change default value to `1` in geopy 2.0
      ):
          
  
          if candidates is None:
              candidates = self.candidates
  
          if candidates is None:
              candidates = 1  # TODO: move to default args in geopy 2.0.
  
          if candidates:
              if not (1 <= candidates <= 10):
                  raise ValueError('candidates must be between 1 and 10')
  
          query = {
              'auth-id': self.auth_id,
              'auth-token': self.auth_token,
              'street': self.format_string % query,
              'candidates': candidates,
          }
          url = '{url}?{query}'.format(url=self.api, query=urlencode(query))
  
          logger.debug("%s.geocode: %s", self.__class__.__name__, url)
          return self._parse_json(self._call_geocoder(url, timeout=timeout),
                                  exactly_one)
docs: Return a location point by address.
  
          :param str query: The address or query you wish to geocode.
  
          :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 int candidates: An integer between 1 and 10 indicating the max
              number of candidate addresses to return if a valid address
              could be found. Defaults to `1`.
  
              .. versionadded:: 1.19.0
  
          :rtype: ``None``, :class:`geopy.location.Location` or a list of them, if
              ``exactly_one=False``.