docs: def geocode(self, address=None, components=None, region=None,
                  language=None, bounds=None, sensor=None):
          """Geocode given address. Geocoder can queried using address and/or
          components. Components when used with address will restrict your query
          to specific area. When used without address they act like more precise
          query. For full details see
          `Google docs <https://developers.google.com/maps/documentation/geocoding/>`_.
  
          :param address: address string
          :param components: ditc of components
          :param region: region code specified as a ccTLD ("top-level domain")
              two-character value, influences but not restricts query result
          :param language: the language in which to return results. For full list
              of laguages go to Google Maps API docs
          :param bounds: two-tuple of (latitude, longitude) pairs of bounding
              box. Influences but not restricts result (same as region parameter)
          :param sensor: override default client sensor parameter
          """  # noqa
          parameters = dict(
              address=address,
              components=components,
              language=language,
              sensor=sensor,
              region=region,
  
          )
          if bounds:
              parameters['bounds'] = "%f,%f|%f,%f" % (
                  bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1])
          return self._make_request(self.GEOCODE_URL, parameters, "results")