setuptoolswas incorrectly listed as a runtime dependency. This has been removed. Pull request by Mathieu Dupuy. GitHub #174.
- IMPORTANT: Python 3.8 or greater is required. If you are using an older version, please use an earlier release.
- The
is_anycastattribute was added togeoip2.record.Traits. This returnsTrueif the IP address belongs to an anycast network. This is available for the GeoIP2 Country, City Plus, and Insights web services and the GeoIP2 Country, City, and Enterprise databases.
- IMPORTANT: Python 3.7 or greater is required. If you are using an older version, please use an earlier release.
- The
AddressNotFoundErrorclass now has anip_addressattribute with the lookup address andnetworkproperty for the empty network in the database containing the IP address. These are only available when using a database, not the web service. Pull request by illes. GitHub #130.
- Support for mobile country code (MCC) and mobile network codes (MNC) was
added for the GeoIP2 ISP and Enterprise databases as well as the GeoIP2
City and Insights web services.
mobile_country_codeandmobile_network_codeattributes were added togeoip2.model.ISPfor the GeoIP2 ISP database andgeoip2.record.Traitsfor the Enterprise database and the GeoIP2 City and Insights web services. We expect this data to be available by late January, 2022.
- The public API on
geoip2.databaseis now explicitly defined by setting__all__. - The return type of the
metadata()method onReaderis nowmaxminddb.reader.Metadatarather than a union type.
- Previously, the
py.typedfile was not being added to the source distribution. It is now explicitly specified in the manifest. - The type hints for the database file in the
Readerconstructor have been expanded to match those specified bymaxmindb.open_database. In particular,os.PathLikeandIOhave been added. - Corrected the type hint for the
metadata()method onReader. It will return amaxminddb.extension.Metadataif the C extension is being used.
- You may now set a proxy to use when making web service requests by passing
the
proxyparameter to theAsyncClientorClientconstructor.
- Added the
is_residential_proxyattribute togeoip2.model.AnonymousIPandgeoip2.record.Traits. HTTPErrornow provides the decoded response content in thedecoded_contentattribute. Requested by Oleg Serbokryl. GitHub #95.
- Added
py.typedfile per PEP 561. Reported by Árni Már Jónsson.
- Re-release to fix bad reStructuredText in
README.md. No substantive changes.
- IMPORTANT: Python 2.7 and 3.5 support has been dropped. Python 3.6 or greater is required.
- Asyncio support has been added for web service requests. To make async
requests, use
geoip.webservice.AsyncClient. geoip.webservice.Clientnow provides aclose()method and associated context managers to be used inwithstatements.- Type hints have been added.
- The attributes
postal_codeandpostal_confidencehave been removed fromgeoip2.record.Location. These would previously always beNone. user_idis no longer supported as a named argument for the constructor ongeoip2.webservice.Client. Useaccount_idor a positional parameter instead.- For both
ClientandAsyncClientrequests, the default timeout is now 60 seconds.
- BREAKING CHANGE: The
geoip2.record.*classes have been refactored to improve performance. This refactoring may break classes that inherit from them. The public API should otherwise be compatible. - The
networkattribute was added togeoip2.record.Traits,geoip2.model.AnonymousIP,geoip2.model.ASN,geoip2.model.ConnectionType,geoip2.model.Domain, andgeoip2.model.ISP. This is anipaddress.IPv4Networkor anipaddress.IPv6Network. This is the largest network where all of the fields besidesip_addresshave the same value. GitHub #79. - Python 3.3 and 3.4 are no longer supported.
- Updated documentation of anonymizer attributes -
is_anonymous_vpnandis_hosting_provider- to be more descriptive. - Added support for the
user_counttrait for the GeoIP2 Precision webservice. - Added the
static_ip_scoreattribute togeoip2.record.Traitsfor GeoIP2 Precision Insights. This is a float which indicates how static or dynamic an IP address is.
- You may now pass in the database via a file descriptor rather than a file
name when creating a new
geoip2.database.Readerobject usingMODE_FD. This will read the database from the file descriptor into memory. Pull request by nkinkade. GitHub #53.
- Python 2.6 support has been dropped. Python 2.7+ or 3.3+ is now required.
- Renamed user ID to account ID in the code and added support for the new
ACCOUNT_ID_REQUIREDANDACCOUNT_ID_UNKNOWNerror codes.
- The
is_in_european_unionattribute was added togeoip2.record.Countryandgeoip2.record.RepresentedCountry. This attribute isTrueif the country is a member state of the European Union.
- The following new anonymizer attributes were added to
geoip2.record.Traitsfor use with GeoIP2 Precision Insights:is_anonymous,is_anonymous_vpn,is_hosting_provider,is_public_proxy, andis_tor_exit_node.
- Added support for GeoLite2 ASN database.
- Corrected documentation of errors raised when using the database reader. Reported by Radek Holý. GitHub #42.
- Recent releases of
requests(2.12.2 and 2.12.3) require that the username for basic authentication be a string or bytes. The documentation for this module uses an integer for theuser_id, which will break with theserequestsversions. Theuser_idis now converted to bytes before being passed torequests.
- Updated documentation to clarify what the accuracy radius refers to.
- Fixed classifiers in
setup.py.
- This module now uses
ipaddresson Python 2 rather thanipaddrto validate IP addresses before sending them to the web service. - Added handling of additional error codes that the web service may return.
- PEP 257 documentation fixes.
- Updated documentation to reflect that the accuracy radius is now included in City.
- Previously, the source distribution was missing some tests and test databases. This has been corrected. Reported by Lumir Balhar.
- Added support for the GeoIP2 Enterprise database.
geoip2.database.Readernow supports being used in awithstatement (PEP 343). (PR from Nguyễn Hồng Quân. GitHub #29)
- The
geoip2.records.Locationclass has been updated to add attributes for theaverage_incomeandpopulation_densityfields provided by the Insights web service. - The
is_anonymous_proxyandis_satellite_providerproperties ongeoip2.records.Traitshave been deprecated. Please use our GeoIP2 Anonymous IP database to determine whether an IP address is used by an anonymizing service.
- The reader now supports pure Python file and memory modes. If you are not
using the C extension and your Python does not provide the
mmapmodule, the file mode will be used by default. You can explicitly set the mode using themodekeyword argument with theMODE_AUTO,MODE_MMAP,MODE_MMAP_EXT,MODE_FILE, andMODE_MEMORYconstants exported bygeoip2.database.
- Added support for the GeoIP2 Anonymous IP database. The
geoip2.database.Readerclass now has ananonymous_ip()method which returns ageoip2.models.AnonymousIPobject. - Added
__repr__and__eq__methods to the model and record classes to aid in debugging and using the library from a REPL.
- The constructor for
geoip2.webservice.Clientnow takes an optionaltimeoutparameter. (PR from arturro. GitHub #15)
- First production release.
BREAKING CHANGES: - The deprecated
city_isp_org()andomni()methodshave been removed.
- The
geoip2.database.Readerlookup methods (e.g.,city(),isp()) now raise aTypeErrorif they are used with a database that does not match the method. In particular, doing acity()lookup on a GeoIP2 Country database will result in an error and vice versa.
- The
A
metadata()method has been added to thegeoip2.database.Readerclass. This returns amaxminddb.reader.Metadataobject with information about the database.
- The web service client API has been updated for the v2.1 release of the web
service. In particular, the
city_isp_organdomnimethods ongeoip2.webservice.Clientshould be considered deprecated. Thecitymethod now provides all of the data formerly provided bycity_isp_org, and theomnimethod has been replaced by theinsightsmethod. Note: In v2.1 of the web service,accuracy_radius,autonomous_system_number, and all of theconfidencevalues were changed from unicode to integers. This may affect how you use these values from this API. - Support was added for the GeoIP2 Connection Type, Domain, and ISP databases.
- Switched to Apache 2.0 license.
- Fixed missing import statements for geoip2.errors and geoip2.models. (Gustavo J. A. M. Carneiro)
- Minor documentation and code cleanup
- Added requirement for maxminddb v0.3.0, which includes a pure Python
database reader. Removed the
extras_requirefor maxminddb.
- Added missing geoip2.models import to geoip.database.
- Documentation updates.
- Read in
README.rstas UTF-8 insetup.py.
- API CHANGE: Changed the
languageskeyword argument tolocaleson the constructors forgeoip.webservice.Clientandgeoip.database.Reader.
- Fixed packaging issue with extras_require.
- IMPORTANT:
geoip.webserviceswas renamedgeoip.webserviceas it contains only one class. - Added GeoIP2 database reader using
maxminddb. This does not work with PyPy as it relies on a C extension. - Added more specific exceptions for web service client.
- Fixed a bug in the model objects that prevented
longitudeandmetro_codefrom being used.
- First official beta release.
- Documentation updates and corrections.
- Support for Python 3.2 was dropped.
- The methods to call the web service on the
Clientobject now validate the IP addresses before calling the web service. This requires theipaddrmodule on Python 2.x. - We now support more languages. The new languages are de, es, fr, and pt-BR.
- The REST API now returns a record with data about your account. There is a new geoip.records.MaxMind class for this data.
- Rename model.continent.continent_code to model.continent.code.
- Documentation updates.
- Documentation and packaging updates
- Initial release