NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1149 most downloaded on PyPI
Python Geocoding Toolbox
Last release 2 months ago
12 Jul 2026
Release timing varies
gaps range from 6 weeks to 2.6 years
Most releases are documented
notes for 37 of 60 stable releases
Nothing withdrawn
no release was ever pulled
20 years old
61 releases · first in 2006
Geocoders' reverse methods called with string inputs exercise the vulnerable path.
GitHub Security advisory: GHSA-mhvh-fq92-pfmr.
Regular Expression Denial of Service (ReDoS) in geopy.Point:
geopy.Point.from_string may take excessive CPU time when parsing long,
malformed coordinate strings due to inefficient regular-expression behavior.
The numeric geopy.Point constructor is not affected.
Geocoders' reverse methods called with string inputs exercise the vulnerable path.
Reported by Younghun Lee in #608,
fix contributed by Apoorv Darshan in #610.
The fix rejects any inputs longer than 256 chars unconditionally,
which may start falsely rejecting previously valid Point strings
with long irrelevant prefixes.
.Geocodio: fix GeocoderQueryError being raised for empty results..GoogleV3: fix utcnow deprecation warnings.setup.py to setup.cfg.download_url from the metadata.distutils with packaging in tests (fixes Python 3.12+)..Nominatim: fix test_reverse_near_zero which was failing due to.TomTom: update documentation links.One column per quarter.
.Nominatim : fix broken featuretype parameter.
.Nominatim: fix broken featuretype parameter. (#564)New geocoder: .Woosmap . Contributed by galela.
.Woosmap..Geokeo.allowlist_externals instead of whitelist_externals.certifi..DataBC: update service domain and endpoint.__init__ args for all geocoders..Pelias : deprecate country_bias param, use countries instead.
.MapBox: add referer param to allow restricted api_keys..MapBox: add language param to geocode..Distance: add floor division + right multiplication.Distance: make hashable. (#485).Nominatim: add namedetails param to reverse. (#525).Pelias: add countries param to geocode. (#504).GoogleV3: pass the original error_message to exceptions.ValueError in .distance.geodesic due tosetup.py to setup.cfg..Pelias: deprecate country_bias param, use countries.IGNFrance: authentication is no longer accepted by the API,TypeError thrown by .RequestsAdapter.ArcGIS: get address from LongLabel if Address is empty..BANFrance: fix broken reverse (it looks like their API haslng query arg haslon)..IGNFrance: fix broken geocoder due to removal of.OpenCage : added annotations param. Contributed by mtmail.
.OpenCage: added annotations param..Photon: added bbox param..Geocodio..HereV7..What3WordsV3..exc.GeocoderRateLimited. This error extends.exc.GeocoderQuotaExceeded and is now raised instead of it.AdapterHTTPError: added headers attribute. (#479).GoogleV3 has been moved from geopy.geocoders.googlev3 modulegeopy.geocoders.google. The old module is still present for.OpenCage: improved error handling by using the default errors map.exc.GeocoderQuotaExceeded instead of.exc.GeocoderQueryError for HTTP 402 error). (#479).Photon: updated domain. Contributed by yrafalin. (#481).IGNFrance: removed redundant check. Contributed by Miltos. (#469).exc.GeocoderTimedOut instead of a more.exc.GeocoderServiceError. (#479)geopy.exc: extend more specific built-in exceptions where appropriate:.ConfigurationError, .GeocoderQueryError,.GeocoderNotFound now extend ValueError;.GeocoderRateLimited and .GeocoderUnavailableIOError;.GeocoderTimedOut extends TimeoutError. (#484)Fixed an undocumented breaking change in geopy 2.0.0, where the .Distance class has become abstract, thus it could no longer be used for unit conversi…
.Point constructor..GoogleV3: change missing api_key warning to an error. (#450).Distance class has become abstract, thus it could.Photon incorrectly treated 0.0 coordinate as an empty response..Nominatim: fix TypeError on empty reverse result. (#455).Bing: change postalcode to postalCode..Nominatim: better describe what is returned in addressdetails..Nominatim: better describe viewbox param behavior..Yandex: remove attention block about requiring an API key.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 suppo
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.
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 libraryurllib). It is used by default if requests packagegeopy.adapters.URLLibAdapter -- uses urllib, basicallyrequests 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.
Dropped support for Python 2.7 and 3.4.
New extras:
geopy[requests] for geopy.adapters.RequestsAdapter.geopy[aiohttp] for geopy.adapters.AioHTTPAdapter.geopy.distance algorithms now raise ValueError for points withgeopy.distance.vincenty, use geopy.distance.geodesic instead.timeout=None now disables request timeout, previouslyGoogleV3.timezone, use .GoogleV3.reverse_timezone instead.format_string param from all geocoders.Specifying Parameters Once doc section for alternatives.exactly_one's default is now True for all geocoders__init__ methodsgeocode/reverse.GoogleV3.reverse_timezone used to allow numeric at_time value.datetime instances instead.reverse methods used to bypass the query if it couldn't be parsed.Point. Now a ValueError is raised in this case..Location and .Timezone classes no longer accept Nonepoint and raw args..Nominatim now raises geopy.exc.ConfigurationError when.Point now raises a ValueError if constructed from a single number.None for authentication key arguments of.GeoNames, .OpenMapQuest and .Yandex.parse_* methods in geocoders have been prefixed with _.Nominatim has been moved from geopy.geocoders.osm modulegeopy.geocoders.nominatim. The old module is still present forgeopy 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 suppo
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.
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 libraryurllib). It is used by default if requests packagegeopy.adapters.URLLibAdapter -- uses urllib, basicallyrequests 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.
Dropped support for Python 2.7 and 3.4.
New extras:
geopy[requests] for geopy.adapters.RequestsAdapter.geopy[aiohttp] for geopy.adapters.AioHTTPAdapter.geopy.distance algorithms now raise ValueError for points withgeopy.distance.vincenty, use geopy.distance.geodesic instead.timeout=None now disables request timeout, previouslyGoogleV3.timezone, use .GoogleV3.reverse_timezone instead.format_string param from all geocoders.Specifying Parameters Once doc section for alternatives.exactly_one's default is now True for all geocoders__init__ methodsgeocode/reverse.GoogleV3.reverse_timezone used to allow numeric at_time value.datetime instances instead.reverse methods used to bypass the query if it couldn't be parsed.Point. Now a ValueError is raised in this case..Location and .Timezone classes no longer accept Nonepoint and raw args..Nominatim now raises geopy.exc.ConfigurationError when.Point now raises a ValueError if constructed from a single number.None for authentication key arguments of.GeoNames, .OpenMapQuest and .Yandex.parse_* methods in geocoders have been prefixed with _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 unle
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)
CHANGED: Yandex now issues a deprecation warning when lang parameter is specified in __init__ . lang should be passed to geocode and reverse instead.
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.
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…
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)
…service response. This might be considered a breaking change (although it's unlikely that the previous raw value was usable at all). Contributed by Se…
FIXED: MapBox's geocode method was ignoring the exactly_one
parameter. Contributed by TheRealZeljko. (#358)
FIXED: The resulting Location's raw attribute in MapBox
erroneously contained a single string instead of a full service
response. This might be considered a breaking change (although
it's unlikely that the previous raw value was usable at all).
Contributed by Sergey Lyapustin and TheRealZeljko. (#354)
CHANGED: geocode-specific args have been moved to geocode methods from __init__, and the corresponding __init__ args has been deprecated. The affected…
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)
FIXED: GeoNames.reverse_timezone didn't process errors returned by API and instead was always raising obscure KeyError exceptions.
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.
CHANGED: All warnings with UserWarning category which will be removed in geopy 2.0 now have the DeprecationWarning category.
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.
ADDED: OpenMapQuest how inherits from Nominatim. This adds support for all parameters and queries implemented in Nominatim (such as reverse geocoding)
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).
ADDED: geopy.extra.rate_limiter.RateLimiter class, useful for bulk-geocoding a pandas DataFrame. See also the new Usage with Pandas doc section.
ADDED: geopy.extra.rate_limiter.RateLimiter class, useful for
bulk-geocoding a pandas DataFrame. See also the new
Usage with Pandas doc section. (#317)
CHANGED: Nominatim now issues a warning when the default user_agent
is used against nominatim.openstreetmap.org. Please always specify
a custom user-agent when using Nominatim. (#316)
ADDED: GeocodeEarth geocoder based on Pelias (ex-Mapzen).
ADDED: GeocodeEarth geocoder based on Pelias (ex-Mapzen). (#309)
ADDED: TomTom and AzureMaps (based on TomTom) geocoders. (#312)
ADDED: HERE geocoder. Contributed by deeplook. (#304)
ADDED: Baidu now supports authentication using SK via a new
security_key option.
Contributed by tony. (#298)
ADDED: Nominatim's and Pickpoint's view_box option now accepts
a list of Points or numbers instead of just stringified coordinates.
Contributed by svalee. (#299)
ADDED: Nominatim and Pickpoint geocoders now support a bounded
option, which restricts results to the items strictly contained
within the view_box.
Contributed by Karimov Dmitriy. (#182)
ADDED: proxies param of geocoders can now accept a single string
instead of a dict. See the updated docs for
the geopy.geocoders.options.default_proxies attribute for
more details.
Contributed by svalee. (#300)
CHANGED: Mapzen has been renamed to Pelias, domain parameter has
been made required. (#309)
CHANGED: What3Words API has been updated from v1 to v2.
Please note that Location.raw results have changed due to that.
Contributed by Jonathan Batchelor. (#226)
FIXED: Baidu mistakenly didn't process the returned errors correctly. Contributed by tony. (#298)
FIXED: proxies={} didn't reset system proxies as expected.
Also make sure to check out the updated docs! A new Semver doc section has been added, explaining the geopy's policy on breaking changes.
This release contains a lot of public API cleanup. Also make sure to
check out the updated docs! A new Semver doc section has been added,
explaining the geopy's policy on breaking changes.
ADDED: Nominatim geocoder now supports an addressdetails option in
the reverse method.
Contributed by Serphentas. (#285)
ADDED: ArcGIS geocoder now supports an out_fields option in
the geocode method.
Contributed by Jonathan Batchelor. (#227)
ADDED: Yandex geocoder now supports a kind option in the
reverse method.
ADDED: Some geocoders were missing format_string option. Now all
geocoders support it.
ADDED: geopy.distance.lonlat function for conveniently converting
(x, y, [z]) coordinate tuples to the Point instances, which use
(y, x, [z]).
Contributed by svalee. (#282)
ADDED: geopy.geocoders.options object, which allows to configure
geocoder defaults (such as User-Agent, timeout, format_string)
application-wide. (#288)
ADDED: Support for supplying a custom SSL context. See docs for
geopy.geocoders.options.default_ssl_context. (#291)
ADDED: Baidu geocoder was missing the exactly_one option in its reverse
method.
ADDED: GeocodeFarm now supports a scheme option.
CHANGED: Baidu and Yandex geocoders now use https scheme by default instead of http.
CHANGED: ArcGIS geocoder was updated to use the latest API.
Please note that Location.raw results for geocode have changed
a little due to that.
Contributed by Jonathan Batchelor. (#227)
CHANGED: Explicitly passed timeout=None in geocoder calls now
issues a warning. Currently it means "use geocoder's default timeout",
while in geopy 2.0 it would mean "use no timeout". (#288)
CHANGED: GoogleV3 geocode call now supports components without
query being specified. (#296)
CHANGED: GeoNames, GoogleV3, IGNFrance, OpenCage and Yandex erroneously
had exactly_one=False by default for reverse methods, which must have
been True. This behavior has been kept, however a warning will be issued
now unless exactly_one option is explicitly specified in reverse calls
for these geocoders. The default value will be changed in geopy 2.0. (#295)
CHANGED: Point now throws a ValueError exception instead of normalizing
latitude and tolerating NaN/inf values for coordinates. (#294)
CHANGED: Vincenty usage now issues a warning. Geodesic should be used
instead. Vincenty is planned to be removed in geopy 2.0. (#293)
CHANGED: ArcGIS wkid option for reverse call has been deprecated
because it was never working properly, and it won't, due to
the coordinates normalization in Point.
FIXED: ArcGIS and What3Words did not respect exactly_one=False.
Now they respect it and return a list of a single location in this case.
FIXED: ArcGIS was throwing an exception on empty response of reverse.
Now None is returned, as expected.
FIXED: GeocodeFarm was raising an exception on empty response instead
of returning None. Contributed by Arthur Pemberton. (#240)
FIXED: GeocodeFarm had missing Location.address value sometimes.
REMOVED: geopy.geocoders.DEFAULT_* constants (in favor of
geopy.geocoders.options.default_* attributes). (#288)
REMOVED: YahooPlaceFinder geocoder. (#283)
REMOVED: GeocoderDotUS geocoder. (#286)
ADDED: Pickpoint geocoder. Contributed by Vladimir Kalinkin.
ADDED: Pickpoint geocoder. Contributed by Vladimir Kalinkin. (#246)
ADDED: Bing geocoder: additional parameters for geocoding (culture
and include_country_code). Contributed by Bernd Schlapsi. (#166)
ADDED: Point and Location instances are now picklable.
ADDED: More accurate algorithm for distance computation
geopy.distance.geodesic, which is now a default
geopy.distance.distance. Vincenty usage is now discouraged in favor of
the geodesic. This also has added a dependency of geopy on
geographiclib package. Contributed by Charles Karney. (#144)
ADDED: Nominatim geocoder now supports a limit option and uses limit=1
for exactly_one=True requests. Contributed by Serphentas. (#281)
CHANGED: Point now issues warnings for incorrect or ambiguous inputs.
Some of them (namely not finite values and out of band latitudes)
will be replaced with ValueError exceptions in the future versions
of geopy. (#272)
CHANGED: Point now uses fmod instead of % which results in more
accurate coordinates normalization. Contributed by svalee. (#275, #279)
CHANGED: When using http proxy, urllib's install_opener was used, which
was altering urlopen call globally. It's not used anymore.
CHANGED: Point now raises ValueError instead of TypeError when more
than 3 arguments have been passed.
FIXED: Point was raising an exception when compared to non-iterables.
FIXED: Coordinates of a Point instance changed via __setitem__ were
not updating the corresponding lat/long/alt attributes.
FIXED: Coordinates of a Point instance changed via __setitem__ were
not being normalized after assignment. Note, however, that attribute
assignments are still not normalized. (#272)
FIXED: Distance instances comparison was not working in Python3.
FIXED: Yandex geocoder was sending API key with an incorrect parameter.
FIXED: Unit conversions from feet were incorrect. Contributed by scottessner. (#162)
FIXED: Vincenty destination function had an error in the formula implementation. Contributed by Hanno Schlichting. (#194)
FIXED: Vincenty was throwing UnboundLocalError when difference between the two longitudes was close to 2*pi or either of them was NaN. (#187)
REMOVED: geopy.util.NullHandler logging handler has been removed.
ADDED: Mapzen geocoder. Contributed by migurski.
ADDED: Mapzen geocoder. Contributed by migurski. (#183)
ADDED: GoogleV3 geocoder now supports a channel option.
Contributed by gotche. (#206)
ADDED: Photon geocoder now accepts a new limit option.
Contributed by Mariana Georgieva.
CHANGED: Use the IUGG mean earth radius for EARTH_RADIUS. Contributed by cffk. (#151)
CHANGED: Use the exact conversion factor from kilometers to miles. Contributed by cffk. (#150)
CHANGED: OpenMapQuest geocoder now properly supports api_key
option and makes it required.
CHANGED: Photon geocoder: removed osm_tag option from
reverse geocoding method, as Photon backend doesn't support
it for reverse geocoding.
FIXED: Photon geocoder was always returning an empty address.
FIXED: Yandex geocoder was returning a truncated address
(the name part of a place was missing).
FIXED: The custom User-Agent header was not actually sent.
This also fixes broken Nominatim, which has recently banned
the stock urllib user agent.
FIXED: geopy.util.get_version() function was throwing
an ImportError exception instead of returning a version string.
FIXED: Docs for constructing a geopy.point.Point were referencing
latitude and longitude in a wrong order. Contributed by micahcochran
and sjorek. (#207 #229)
REMOVED: Navidata geocoder has been removed. Contributed by medecau. (#204)
ADDED: Photon geocoder. Contributed by mthh.
ADDED: Photon geocoder. Contributed by mthh.
ADDED: Bing supports structured query parameters. Contributed by SemiNormal.
CHANGED: Geocoders send a User-Agent header, which by default is
geopy/1.11.0. Configure it during geocoder initialization. Contributed
by sebastianneubauer.
FIXED: Index out of range error with no results using Yandex. Contributed by facciocose.
FIXED: Nominatim was incorrectly sending view_box when not requested,
and formatting it incorrectly. Contributed by m0zes.
FIXED: Nominatim specifies a viewbox parameter rather than the apparently deprecated view_box.
None for their free tier. Contributed by Eric Palakovich Carr.with_timezone parameter is true. Contributed by willr.viewbox parameter rather than the
apparently deprecated view_box.FIXED: Fix support for GoogleV3 bounds parameter. Contributed by Benjamin Trigona-Harany.
CHANGED: MapQuest geocoder removed as the API it uses is now only available to enterprise accounts. OpenMapQuest is a replacement for Nominatim-source
scheme
argument. Contributed by srounet.domain argument, which
allows using a different server than nominatim.openstreetmap.org.
Contributed by srounet.get_geocoder_for_service. Contributed
by Adrián López.FIXED: GoogleV3 geocoder did not send API keys for reverse and timezone methods.
ADDED: NaviData geocoder added. Contributed by NaviData.
scheme
to be http, rather than the default https, you will now receive a
ConfigurationError.FIXED: IGN France geocoder's address formatting better handles results that do not have a building number. Contributed by Thomas Gratier.
ADDED: IGNFrance geocoder. Contributed by Thomas Gratier.
FIXED: What3Words validation loosened. Contributed by spatialbitz.
ADDED: Python 3.2 and PyPy3 compatibility. Contributed by Mike Toews.
ADDED: Yandex geocoder added. Contributed by htch.
auth_id parameter was added to the geocoder's
initialization. Contributed by Arsen Mamikonyan.ADDED: Mapquest.reverse() method added. Contributed by Dody Suria Wijaya.
ADDED: Nominatim.geocode() accepts a geometry argument for retrieving wkt, svg, kml, or geojson formatted geometries in results. Contributed by spatia
geometry argument for
retrieving wkt, svg, kml, or geojson formatted geometries
in results. Contributed by spatialbitz.ADDED: GeoNames.reverse() added. Contributed by Emile Aben.
FIXED: YahooPlaceFinder is now compatible with the older requests_oauthlib version 0.4.0.
FIXED: Point.format() seconds precision in Python 3.
FIXED: Fix OpenCage AttributeError on empty result. Contributed by IsaacHaze.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →