All Versions
15
Latest Version
Avg Release Cycle
70 days
Latest Release
486 days ago

Changelog History
Page 1

  • v2.0.0 Changes

    June 27, 2020

    πŸš€ geopy 2.0 is a major release with lots of cleanup and inner refactorings.
    The public interface of the library is mostly the same, and the set
    πŸ‘ of supported geocoders didn't change.

    πŸš€ If you have checked your code on the latest 1.x release with enabled
    ⚠ warnings (i.e. with -Wd key of the python command) and fixed
    ⬆️ all of them, then it should be safe to upgrade.

    πŸ†• New Features

    geopy.adapters module. Previously all geocoders used urllib
    πŸ‘ for HTTP requests, which doesn't support keepalives. Adapters is
    a new mechanism which allows to use other HTTP client implementations.

    There are 3 implementations coming out of the box:

    • geopy.adapters.RequestsAdapter -- uses requests library
      πŸ‘ which supports keepalives (thus it is significantly more effective
      πŸ“¦ than urllib). It is used by default if requests package
      is installed.
    • geopy.adapters.URLLibAdapter -- uses urllib, basically
      0️⃣ it provides the same behavior as in geopy 1.x. It is used by default if
      πŸ“¦ requests package is not installed.

    - geopy.adapters.AioHTTPAdapter -- uses aiohttp library.

    βž• Added optional asyncio support in all geocoders via
    πŸ‘€ .AioHTTPAdapter, see the new Async Mode
    doc section.

    .AsyncRateLimiter -- an async counterpart of .RateLimiter.

    .RateLimiter is now thread-safe.

    Packaging Changes

    ⬇️ Dropped support for Python 2.7 and 3.4.

    πŸ†• New extras:

    • geopy[requests] for geopy.adapters.RequestsAdapter.
    • geopy[aiohttp] for geopy.adapters.AioHTTPAdapter.

    πŸ’₯ Breaking Changes

    • geopy.distance algorithms now raise ValueError for points with
      different altitudes, because altitude is ignored in calculations.
    • βœ‚ Removed geopy.distance.vincenty, use geopy.distance.geodesic instead.
    • ⏱ timeout=None now disables request timeout, previously
      0️⃣ a default timeout has been used in this case.
    • βœ‚ Removed GoogleV3.timezone, use .GoogleV3.reverse_timezone instead.
    • βœ‚ Removed format_string param from all geocoders.
      πŸ‘€ See Specifying Parameters Once doc section for alternatives.
    • 0️⃣ exactly_one's default is now True for all geocoders
      and methods.
    • Removed service-specific request params from all __init__ methods
      of geocoders. Pass them to the corresponding geocode/reverse
      methods instead.
    • All bounding box arguments now must be passed as a list of two Points.
      Previously some geocoders accepted unique formats like plain strings
      and lists of 4 coordinates -- these values are not valid anymore.
    • .GoogleV3.reverse_timezone used to allow numeric at_time value.
      Pass datetime instances instead.
    • πŸ“œ reverse methods used to bypass the query if it couldn't be parsed
      as a .Point. Now a ValueError is raised in this case.
    • .Location and .Timezone classes no longer accept None
      for point and raw args.
    • πŸ”§ .Nominatim now raises geopy.exc.ConfigurationError when
      0️⃣ used with a default or sample user-agent.
    • .Point now raises a ValueError if constructed from a single number.
      A zero longitude must be explicitly passed to avoid the error.
    • Most of the service-specific arguments of geocoders now must be passed
      as kwargs, positional arguments are not accepted.
    • βœ‚ Removed default value None for authentication key arguments of
      .GeoNames, .OpenMapQuest and .Yandex.
    • πŸ›  parse_* methods in geocoders have been prefixed with _
      to explicitly mark that they are private.

    πŸ—„ Deprecations

    • 🚚 .Nominatim has been moved from geopy.geocoders.osm module
      to geopy.geocoders.nominatim. The old module is still present for
      🚚 backwards compatibility, but it will be removed in geopy 3.
  • v2.0.0.rc1 Changes

    June 21, 2020

    πŸš€ geopy 2.0 is a major release with lots of cleanup and inner refactorings.
    The public interface of the library is mostly the same, and the set
    πŸ‘ of supported geocoders didn't change.

    πŸš€ If you have checked your code on the latest 1.x release with enabled
    ⚠ warnings (i.e. with -Wd key of the python command) and fixed
    ⬆️ all of them, then it should be safe to upgrade.

    πŸ†• New features

    geopy.adapters module. Previously all geocoders used urllib
    πŸ‘ for HTTP requests, which doesn't support keepalives. Adapters is
    a new mechanism which allows to use other HTTP client implementations.

    There are 3 implementations coming out of the box:

    • geopy.adapters.RequestsAdapter -- uses requests library
      πŸ‘ which supports keepalives (thus it is significantly more effective
      πŸ“¦ than urllib). It is used by default if requests package
      is installed.
    • geopy.adapters.URLLibAdapter -- uses urllib, basically
      0️⃣ it provides the same behavior as in geopy 1.x. It is used by default if
      πŸ“¦ requests package is not installed.

    - geopy.adapters.AioHTTPAdapter -- uses aiohttp library.

    βž• Added optional asyncio support in all geocoders via
    πŸ‘€ .AioHTTPAdapter, see the new Async Mode
    doc section.

    .AsyncRateLimiter -- an async counterpart of .RateLimiter.

    .RateLimiter is now thread-safe.

    Packaging changes

    ⬇️ Dropped support for Python 2.7 and 3.4.

    πŸ†• New extras:

    • geopy[requests] for geopy.adapters.RequestsAdapter.
    • geopy[aiohttp] for geopy.adapters.AioHTTPAdapter.

    Chores

    • geopy.distance algorithms now raise ValueError for points with
      different altitudes, because altitude is ignored in calculations.
    • βœ‚ Removed geopy.distance.vincenty, use geopy.distance.geodesic instead.
    • ⏱ timeout=None now disables request timeout, previously
      0️⃣ a default timeout has been used in this case.
    • βœ‚ Removed GoogleV3.timezone, use .GoogleV3.reverse_timezone instead.
    • βœ‚ Removed format_string param from all geocoders.
      πŸ‘€ See Specifying Parameters Once doc section for alternatives.
    • 0️⃣ exactly_one's default is now True for all geocoders
      and methods.
    • Removed service-specific request params from all __init__ methods
      of geocoders. Pass them to the corresponding geocode/reverse
      methods instead.
    • All bounding box arguments now must be passed as a list of two Points.
      Previously some geocoders accepted unique formats like plain strings
      and lists of 4 coordinates -- these values are not valid anymore.
    • .GoogleV3.reverse_timezone used to allow numeric at_time value.
      Pass datetime instances instead.
    • πŸ“œ reverse methods used to bypass the query if it couldn't be parsed
      as a .Point. Now a ValueError is raised in this case.
    • .Location and .Timezone classes no longer accept None
      for point and raw args.
    • πŸ”§ .Nominatim now raises geopy.exc.ConfigurationError when
      0️⃣ used with a default or sample user-agent.
    • .Point now raises a ValueError if constructed from a single number.
      A zero longitude must be explicitly passed to avoid the error.
    • Most of the service-specific arguments of geocoders now must be passed
      as kwargs, positional arguments are not accepted.
    • βœ‚ Removed default value None for authentication key arguments of
      .GeoNames, .OpenMapQuest and .Yandex.
    • πŸ›  parse_* methods in geocoders have been prefixed with _
      to explicitly mark that they are private.
  • v1.23.0 Changes

    June 27, 2020

    πŸš€ This is the last feature release for the 1.x series, as geopy 2.0 has been
    πŸ›  released. The 1.x series will not receive any new features or bugfixes
    unless explicitly asked on the issue tracker.

    βž• ADDED: Units Conversion docs section.

    βž• ADDED: Docs now explicitly clarify that geocoding services
    don't consider altitudes. (#165)

    βž• ADDED: Point.format_unicode method. It was always present as
    __unicode__ magic for Python 2.7, and now it can be accessed
    as a public method.

    πŸ”– ADDED: geopy. __version_info__ tuple which can be used to dynamically
    compare geopy version.

    βž• ADDED: pytest --skip-tests-requiring-internet switch (might be useful
    πŸ“¦ for downstream package maintainers). (#413)

    πŸ”„ CHANGED: Points with different altitudes now emit a warning
    ⚠ in distance computations. In geopy 2.0 the warning would become
    πŸ‘» an exception. (#387)

    πŸ”„ CHANGED: Improved Point docs: added missing public methods,
    βž• added more examples.

    πŸ”„ CHANGED: Nominatim started emitting warnings for a number of sample
    user agents mentioned in the docs, such as specify_your_app_name_here.

    πŸ›  FIXED: IGNFrance ignored proxies with username + password auth. (#289)

  • v1.22.0 Changes

    May 11, 2020

    βž• ADDED: AlgoliaPlaces geocoder.
    Contributed by Álvaro Mondéjar. (#405)

    βž• ADDED: BaiduV3 geocoder. (#394)

    βž• ADDED: MapQuest geocoder.
    Contributed by Pratheek Rebala. (#399)

    βž• ADDED: MapTiler geocoder.
    Contributed by chilfing. (#397)

    βž• ADDED: Nominatim-based geocoders: zoom parameter
    has been added to the reverse method.
    Contributed by David Mueller. (#406)

    βž• ADDED: GoogleV3 added support for lists in components param
    which allows to specify multiple components with the same name.
    Contributed by Pratheek Rebala. (#409)

    πŸ“š CHANGED: Updated links to Nominatim documentation.
    Contributed by Sarah Hoffmann. (#403)

    πŸ”„ CHANGED: Yandex now issues a deprecation warning when lang
    parameter is specified in __init__. lang should be passed
    to geocode and reverse instead. (#350)

    πŸ”„ CHANGED: format_string param has been marked as deprecated
    🚚 in all geocoders and will be removed in geopy 2.0.
    πŸ‘€ See the new Specifying Parameters Once doc section for alternatives.

    πŸ›  FIXED: IGNFrance incorrectly processed empty results: geocode
    has been raising an IndexError, reverse was returning an empty
    list. Now they both return None. (#244)

    πŸ›  FIXED: TomTom geocoder has been raising GeocoderInsufficientPrivileges
    πŸ‘» exception for rate limiting errors instead of GeocoderQuotaExceeded.

  • v1.21.0 Changes

    February 02, 2020

    βž• ADDED: HERE geocoder now supports the new API KEY authentication
    πŸ—„ method. The old one is marked as deprecated and now issues a warning.
    Contributed by deeplook. (#388)

    βž• ADDED: Nominatim-based geocoders: featuretype parameter
    has been added to the geocode method.
    Contributed by Sergio MartΓ­n Morillas. (#365)

    βž• ADDED: Nominatim-based geocoders: namedetails parameter
    has been added to the geocode method.
    Contributed by enrique a. (#368)

    βž• ADDED: Pelias: language parameter has been added
    to the geocode and reverse methods.
    Contributed by Armin Leuprecht. (#378)

    πŸ”„ CHANGED: Yandex geocoder started to require API key for all requests
    ⚠ since September 2019, so a warning asking to specify a key has been
    βž• added which is issued when API key is missing.

    πŸ”„ CHANGED (packaging): sdist now contains tests.

    πŸ›  FIXED: Updated link to TomTom Search API documentation.
    Contributed by Przemek Malolepszy. (#362)

    πŸ›  FIXED: Occasional KeyError('city') in Geolake.
    Contributed by Dmitrii K. (#373)

  • v1.20.0

    May 26, 2019
  • v1.19.0 Changes

    March 26, 2019

    βž• ADDED: GoogleV3: place_id arg has been added to
    the geocode method. Contributed by Mesut Γ–ncel. (#348)

    βž• ADDED: Geolake, GeoNames, MapBox, OpenCage, OpenMapQuest,
    Nominatim and PickPoint geocoders now also accept Python lists
    of countries instead of just a single string. (#349)

    πŸ”„ CHANGED: geocode-specific args have been moved to geocode methods
    from __init__, and the corresponding __init__ args has been
    πŸ—„ deprecated. The affected geocoders are: GeocodeEarth, GeoNames,
    OpenMapQuest, Nominatim, Pelias, PickPoint,
    LiveAddress. (#350)

    πŸ›  FIXED: OpenCage's country arg was not respected.
    Contributed by Sebastian Illing. (#342)

    πŸ›  FIXED: GoogleV3 has erroneously been issuing a warning about
    a missing api key when using premier.
    Contributed by Mike Hansen. (#345)

  • v1.18.1 Changes

    December 16, 2018

    πŸ›  FIXED: GeoNames.reverse_timezone didn't process errors returned by API
    and instead was always raising obscure KeyError exceptions.

    πŸ›  FIXED: GeoNames.reverse_timezone raised KeyError for points which
    don't have an assigned Olson timezone ID (e.g. Antarctica).
    Now a valid geopy.Timezone is returned for such, where pytz timezone
    πŸ›  is created as pytz.FixedOffset.

    πŸ›  FIXED: GoogleV3.reverse_timezone raised KeyError for points which
    don't have an assigned Olson timezone ID (e.g. Antarctica).
    Now None is returned for such requests, as Google doesn't provide
    any meaningful data there.

  • v1.18.0 Changes

    December 02, 2018

    πŸ‘€ The work on geopy 2.0 has started, see the new geopy 2.0 doc section
    πŸ‘ for more info. geopy 2.0 will drop support for Python 2.7 and 3.4.
    To ensure a smoother transition from 1.x to 2.0, make sure to check
    ⚠ your code with warnings enabled (i.e. run python with the -Wd
    switch).

    βž• ADDED: Geolake geocoder. Contributed by Yorick Holkamp. (#329)

    βž• ADDED: BANFrance (Base Adresse Nationale) geocoder.
    Contributed by SΓ©bastien BarrΓ©. (#336)

    βž• ADDED: TomTom and AzureMaps: language param has been added to
    the reverse method.

    βž• ADDED: Geonames geocoder now supports both findNearbyPlaceName
    and findNearby reverse geocoding methods, as chosen by a new
    find_nearby_type parameter of the reverse method.
    Contributed by svalee. (#327)

    βž• ADDED: Geonames geocoder now supports returning a timezone
    for a particular Point via a new reverse_timezone method.
    Contributed by svalee. (#327)

    βž• ADDED: Geonames geocoder's reverse method now supports new
    parameters: lang and feature_code.
    Contributed by svalee. (#327)

    βž• ADDED: Geonames now supports scheme parameter. Although
    πŸ‘ the service itself doesn't yet support https, it will
    be possible to enable https via this new parameter as soon
    πŸš€ as they add the support, without waiting for a new release of
    geopy.

    πŸ”„ CHANGED: Geonames now builds Location.address differently:
    previously it looked like Kreuzberg, 16, DE, now it looks
    like Kreuzberg, Berlin, Germany.

    πŸ”„ CHANGED: All warnings now specify a correct stacklevel so that
    ⚠ the warnings point at the place in your code that triggered it,
    instead of the geopy internals.

    πŸ”„ CHANGED: All warnings with UserWarning category which will be
    βœ‚ removed in geopy 2.0 now have the DeprecationWarning category.

    πŸ”„ CHANGED: geopy.extra.rate_limiter.RateLimiter is no longer
    an experimental API.

    πŸ”„ CHANGED: GoogleV3.timezone now issues a deprecation warning when
    at_time is a number instead of a datetime. In geopy 2.0 this will
    πŸ‘» become an exception.

    πŸ”„ CHANGED: GoogleV3.timezone method is now deprecated in favor of
    GoogleV3.reverse_timezone, which works exactly the same, except that
    it returns a new geopy.Timezone object, which is a wrapper for
    pytz timezone similarly to geopy.Location. This object also
    contains a raw response of the service. GoogleV3.timezone will be
    βœ‚ removed in geopy 2.0. (#332)

    πŸ”„ CHANGED: Point constructor silently ignored the tail of the string
    πŸ“œ if it couldn't be parsed, now it is not ignored. For example,
    πŸ“œ 75 5th Avenue, NYC, USA was parsed as Point(75, 5),
    πŸ‘» but now it would raise a ValueError exception.

    πŸ›  FIXED: GoogleV3.timezone method didn't process errors returned
    by the API.

  • v1.17.0 Changes

    September 13, 2018

    βž• ADDED: OpenMapQuest how inherits from Nominatim. This adds support
    for all parameters and queries implemented in Nominatim (such as
    reverse geocoding). (#319)

    βž• ADDED: Nominatim-based geocoders now support an extratags option.
    Contributed by Oleg. (#320)

    βž• ADDED: Mapbox geocoder. Contributed by William Hammond. (#323)

    βž• ADDED: ArcGIS now supports custom domain and auth_domain values.
    Contributed by Albina. (#325)

    βž• ADDED: Bodies of unsuccessful HTTP responses are now logged
    with INFO level.

    πŸ”„ CHANGED: Reverse geocoding methods now issue a warning for string
    queries which cannot be used to construct a Point instance.
    πŸ‘» In geopy 2.0 this will become an exception.

    πŸ”„ CHANGED: GoogleV3 now issues a warning when used without an API key.

    πŸ”„ CHANGED: Parameters accepting bounding boxes have been unified to
    accept a pair of diagonal points across all geopy. Previous
    πŸ‘ formats are still supported (until geopy 2.0) but now issue
    ⚠ a warning when used.

    πŸ”„ CHANGED: Path part of the API urls has been moved to class attributes
    in all geocoders, which allows to override them in subclasses.
    Bing and What3Words now store api urls internally differently.

    πŸ›  FIXED: TomTom and AzureMaps have been passing boolean values for
    typeahead in a wrong format (i.e. 0 and 1 instead of
    false and true).