Releases: geopy/geopy
2.4.1
2.4.0
New Features
- New geocoder:
.Woosmap.
Contributed by galela. (#541) - New geocoder:
.Geokeo.
Contributed by Geokeo. (#490)
Breaking Changes
- Removed Algolia Places geocoder: the service is shut down.
Contributed by mtmail. (#547)
Packaging Changes
- Add support for Python 3.12. (#559)
- Update maintainer email.
- GitHub releases are now signed with GPG. (#550)
- tests: switch from httpbin.org to httpbingo.org. (#551)
- tests: use tox
allowlist_externalsinstead ofwhitelist_externals.
Contributed by galela. (#540)
Bugfixes
- RequestsAdapter: use system CA store by default instead of
certifi.
(#558) .DataBC: update service domain and endpoint.
Contributed by nickpcrogers. (#557)
Code Improvements
- Move hardcoded domains to
__init__args for all geocoders.
2.3.0
New Features
.MapBox: addrefererparam to allow restricted api_keys.
Contributed by Dennis Stritzke. (#501).MapBox: addlanguageparam togeocode.
Contributed by Dennis Stritzke. (#503).Distance: add floor division + right multiplication
operators. (#485).Distance: make hashable. (#485).Nominatim: addnamedetailsparam toreverse. (#525).Pelias: addcountriesparam togeocode. (#504).GoogleV3: pass the originalerror_messageto exceptions.
(#398)
Packaging Changes
- Drop support for Python 3.5 and 3.6.
- Add support for Python 3.10 and 3.11.
- Relax geographiclib upper version constraint to allow 2.x.
Contributed by David Hotham. (#520) - Raise geographiclib lower version constraint to 1.52 to fix possible
ValueErrorin.distance.geodesicdue to
the floating point inaccuracy. (#466) - Move static metadata from
setup.pytosetup.cfg.
Deprecations
.Pelias: deprecatecountry_biasparam, usecountries
instead. (#504).IGNFrance: authentication is no longer accepted by the API,
so passing any credentials to the geocoder class has been deprecated.
These arguments should be removed. (#496)
Bugfixes
- Fix possible
TypeErrorthrown by.RequestsAdapter
on destruction. Contributed by Philip Kahn. (#488) .ArcGIS: get address from LongLabel if Address is empty.- All geocoders: fix unexpected scientific point format for coordinates
near zero in reverse geocoding. (#511) .BANFrance: fix broken reverse (it looks like their API has
changed in a backwards-incompatible way: thelngquery arg has
been renamed tolon)..IGNFrance: fix broken geocoder due to removal of
authentication in their API. (#496)
Docs Improvements
2.2.0
New Features
.OpenCage: addedannotationsparam.
Contributed by mtmail. (#464).Photon: addedbboxparam.
Contributed by Holger Bruch. (#472)- New geocoder:
.Geocodio.
Contributed by Jon Duckworth. (#468) - New geocoder:
.HereV7.
Contributed by Pratheek Rebala. (#433) - New geocoder:
.What3WordsV3.
Contributed by Saïd Tezel. (#444) - New error class:
.exc.GeocoderRateLimited. This error extends
.exc.GeocoderQuotaExceededand is now raised instead of it
for HTTP 422 error code. (#479) .AdapterHTTPError: addedheadersattribute. (#479)
Breaking Changes
- Removed GeocodeFarm class: the service is very unstable. (#445)
Deprecations
.GoogleV3has been moved fromgeopy.geocoders.googlev3module
togeopy.geocoders.google. The old module is still present for
backwards compatibility, but it will be removed in geopy 3. (#483)
Bugfixes
.OpenCage: improved error handling by using the default errors map
(e.g. to raise.exc.GeocoderQuotaExceededinstead of
.exc.GeocoderQueryErrorfor HTTP 402 error). (#479)
Code Improvements
.Photon: updated domain. Contributed by yrafalin. (#481).IGNFrance: removed redundant check. Contributed by Miltos. (#469)- Changed default exception type for HTTP code 408: now it is raised as
.exc.GeocoderTimedOutinstead of a more
generic.exc.GeocoderServiceError. (#479) - :mod:
geopy.exc: extend more specific built-in exceptions where appropriate:
classes.ConfigurationError,.GeocoderQueryError,
.GeocoderNotFoundnow extendValueError;
.GeocoderRateLimitedand.GeocoderUnavailable
extendIOError;
.GeocoderTimedOutextendsTimeoutError. (#484)
Docs Improvements
2.1.0
New Features
- Add support for leading plus sign in the
.Pointconstructor.
Contributed by Azimjon Pulatov. (#448)
Breaking Changes
.GoogleV3: change missingapi_keywarning to an error. (#450)
Bugfixes
- Fixed an undocumented breaking change in geopy 2.0.0, where
the.Distanceclass has become abstract, thus it could
no longer be used for unit conversions. (#435) .Photonincorrectly treated 0.0 coordinate as an empty response.
Contributed by Mateusz Konieczny. (#439).Nominatim: fix TypeError on emptyreverseresult. (#455)
Docs Improvements
- Add Python 3.9 to the list of supported versions.
.Bing: changepostalcodetopostalCode.
Contributed by zhongjun-ma. (#424).Nominatim: better describe what is returned in addressdetails.
Contributed by Mateusz Konieczny. (#429).Nominatim: better describeviewboxparam behavior.
Contributed by Hannes. (#454).Yandex: remove attention block about requiring an API key.
2.0.0
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.adaptersmodule. Previously all geocoders usedurllib
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-- usesrequestslibrary
which supports keepalives (thus it is significantly more effective
thanurllib). It is used by default ifrequestspackage
is installed.geopy.adapters.URLLibAdapter-- usesurllib, basically
it provides the same behavior as in geopy 1.x. It is used by default if
requestspackage is not installed.geopy.adapters.AioHTTPAdapter-- usesaiohttplibrary.
-
Added optional asyncio support in all geocoders via
.AioHTTPAdapter, see the newAsync Mode
doc section. -
.AsyncRateLimiter-- an async counterpart of.RateLimiter. -
.RateLimiteris now thread-safe.
Packaging Changes
-
Dropped support for Python 2.7 and 3.4.
-
New extras:
geopy[requests]forgeopy.adapters.RequestsAdapter.geopy[aiohttp]forgeopy.adapters.AioHTTPAdapter.
Breaking Changes
geopy.distancealgorithms now raiseValueErrorfor points with
different altitudes, because altitude is ignored in calculations.- Removed
geopy.distance.vincenty, usegeopy.distance.geodesicinstead. timeout=Nonenow disables request timeout, previously
a default timeout has been used in this case.- Removed
GoogleV3.timezone, use.GoogleV3.reverse_timezoneinstead. - Removed
format_stringparam from all geocoders.
SeeSpecifying Parameters Oncedoc section for alternatives. exactly_one's default is nowTruefor all geocoders
and methods.- Removed service-specific request params from all
__init__methods
of geocoders. Pass them to the correspondinggeocode/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_timezoneused to allow numericat_timevalue.
Passdatetimeinstances instead.reversemethods used to bypass the query if it couldn't be parsed
as a.Point. Now aValueErroris raised in this case..Locationand.Timezoneclasses no longer accept None
forpointandrawargs..Nominatimnow raisesgeopy.exc.ConfigurationErrorwhen
used with a default or sample user-agent..Pointnow raises aValueErrorif 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
Nonefor authentication key arguments of
.GeoNames,.OpenMapQuestand.Yandex. parse_*methods in geocoders have been prefixed with_
to explicitly mark that they are private.
Deprecations
.Nominatimhas been moved fromgeopy.geocoders.osmmodule
togeopy.geocoders.nominatim. The old module is still present for
backwards compatibility, but it will be removed in geopy 3.
1.23.0
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 Conversiondocs section. -
ADDED: Docs now explicitly clarify that geocoding services
don't consider altitudes. (#165) -
ADDED:
Point.format_unicodemethod. 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-internetswitch (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
Pointdocs: added missing public methods,
added more examples. -
CHANGED:
Nominatimstarted emitting warnings for a number of sample
user agents mentioned in the docs, such asspecify_your_app_name_here. -
FIXED:
IGNFranceignored proxies with username + password auth. (#289)
2.0.0rc1
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.adaptersmodule. Previously all geocoders usedurllib
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-- usesrequestslibrary
which supports keepalives (thus it is significantly more effective
thanurllib). It is used by default ifrequestspackage
is installed.geopy.adapters.URLLibAdapter-- usesurllib, basically
it provides the same behavior as in geopy 1.x. It is used by default if
requestspackage is not installed.geopy.adapters.AioHTTPAdapter-- usesaiohttplibrary.
-
Added optional asyncio support in all geocoders via
.AioHTTPAdapter, see the newAsync Mode
doc section. -
.AsyncRateLimiter-- an async counterpart of.RateLimiter. -
.RateLimiteris now thread-safe.
Packaging changes
-
Dropped support for Python 2.7 and 3.4.
-
New extras:
geopy[requests]forgeopy.adapters.RequestsAdapter.geopy[aiohttp]forgeopy.adapters.AioHTTPAdapter.
Chores
geopy.distancealgorithms now raiseValueErrorfor points with
different altitudes, because altitude is ignored in calculations.- Removed
geopy.distance.vincenty, usegeopy.distance.geodesicinstead. timeout=Nonenow disables request timeout, previously
a default timeout has been used in this case.- Removed
GoogleV3.timezone, use.GoogleV3.reverse_timezoneinstead. - Removed
format_stringparam from all geocoders.
SeeSpecifying Parameters Oncedoc section for alternatives. exactly_one's default is nowTruefor all geocoders
and methods.- Removed service-specific request params from all
__init__methods
of geocoders. Pass them to the correspondinggeocode/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_timezoneused to allow numericat_timevalue.
Passdatetimeinstances instead.reversemethods used to bypass the query if it couldn't be parsed
as a.Point. Now aValueErroris raised in this case..Locationand.Timezoneclasses no longer accept None
forpointandrawargs..Nominatimnow raisesgeopy.exc.ConfigurationErrorwhen
used with a default or sample user-agent..Pointnow raises aValueErrorif 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
Nonefor authentication key arguments of
.GeoNames,.OpenMapQuestand.Yandex. parse_*methods in geocoders have been prefixed with_
to explicitly mark that they are private.
1.22.0
-
ADDED:
AlgoliaPlacesgeocoder.
Contributed by Álvaro Mondéjar. (#405) -
ADDED:
BaiduV3geocoder. (#394) -
ADDED:
MapQuestgeocoder.
Contributed by Pratheek Rebala. (#399) -
ADDED:
MapTilergeocoder.
Contributed by chilfing. (#397) -
ADDED:
Nominatim-based geocoders:zoomparameter
has been added to thereversemethod.
Contributed by David Mueller. (#406) -
ADDED:
GoogleV3added support for lists incomponentsparam
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:
Yandexnow issues a deprecation warning whenlang
parameter is specified in__init__.langshould be passed
togeocodeandreverseinstead. (#350) -
CHANGED:
format_stringparam has been marked as deprecated
in all geocoders and will be removed in geopy 2.0.
See the newSpecifying Parameters Oncedoc section for alternatives. -
FIXED:
IGNFranceincorrectly processed empty results:geocode
has been raising anIndexError,reversewas returning an empty
list. Now they both returnNone. (#244) -
FIXED:
TomTomgeocoder has been raisingGeocoderInsufficientPrivileges
exception for rate limiting errors instead ofGeocoderQuotaExceeded.
1.21.0
-
ADDED:
HEREgeocoder 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:featuretypeparameter
has been added to thegeocodemethod.
Contributed by Sergio Martín Morillas. (#365) -
ADDED:
Nominatim-based geocoders:namedetailsparameter
has been added to thegeocodemethod.
Contributed by enrique a. (#368) -
ADDED:
Pelias:languageparameter has been added
to thegeocodeandreversemethods.
Contributed by Armin Leuprecht. (#378) -
CHANGED:
Yandexgeocoder 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
TomTomSearch API documentation.
Contributed by Przemek Malolepszy. (#362) -
FIXED: Occasional
KeyError('city')inGeolake.
Contributed by Dmitrii K. (#373)