Sync from SUSE:SLFO:Main python-geoip2 revision a6e95a27c6dcc3ab4dab5113580a5046

This commit is contained in:
Adrian Schröter 2024-05-03 20:47:17 +02:00
commit 5b45df4c2d
5 changed files with 447 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

View File

@ -0,0 +1,135 @@
From a3152e9e77850aa741976e7e492ab98b672be536 Mon Sep 17 00:00:00 2001
From: "Dishy.Dev" <dishy@dev>
Date: Sun, 8 Nov 2020 08:15:57 +0000
Subject: [PATCH] Removing unused urllib3 dependency, loosening requests
version requirement and making aiohttp and requests optional installs
---
.github/workflows/lint.yml | 2 +-
README.rst | 3 +++
geoip2/webservice.py | 46 +++++++++++++++++++++++++++++---------
requirements.txt | 3 ---
setup.cfg | 2 ++
setup.py | 5 +++++
6 files changed, 46 insertions(+), 15 deletions(-)
Index: geoip2-4.6.0/README.rst
===================================================================
--- geoip2-4.6.0.orig/README.rst
+++ geoip2-4.6.0/README.rst
@@ -17,6 +17,9 @@ To install the ``geoip2`` module, type:
.. code-block:: bash
$ pip install geoip2
+ $ pip install geoip2[aiohttp]
+ $ pip install geoip2[requests]
+ $ pip install geoip2[all] # Install both requests and aiohttp support
If you are not able to use pip, you may also use easy_install from the
source directory:
Index: geoip2-4.6.0/geoip2/webservice.py
===================================================================
--- geoip2-4.6.0.orig/geoip2/webservice.py
+++ geoip2-4.6.0/geoip2/webservice.py
@@ -27,12 +27,21 @@ Requests to the web service are always m
import ipaddress
import json
+import sys
from typing import Any, Dict, cast, List, Optional, Type, Union
-import aiohttp
-import aiohttp.http
-import requests
-import requests.utils
+try:
+ import aiohttp
+ import aiohttp.http
+except ImportError:
+ pass
+
+try:
+ import requests
+ import requests.utils
+except ImportError:
+ pass
+
import geoip2
import geoip2.models
@@ -48,13 +57,28 @@ from geoip2.errors import (
from geoip2.models import City, Country, Insights
from geoip2.types import IPAddress
-_AIOHTTP_UA = (
- f"GeoIP2-Python-Client/{geoip2.__version__} {aiohttp.http.SERVER_SOFTWARE}"
-)
-
-_REQUEST_UA = (
- f"GeoIP2-Python-Client/{geoip2.__version__} {requests.utils.default_user_agent()}"
-)
+# If neither requests or aiohttp is installed then inform user how to
+# install them
+if "aiohttp" not in sys.modules and "requests" not in sys.modules:
+ raise ImportError(
+ """To enable geoip2.webservice,
+ install aiohttp or requests support.
+ pip install geoip2[aiohttp]
+ pip install geoip2[requests]
+ pip install geoip2[all]"""
+ )
+
+
+if "aiohttp" in sys.modules:
+ _AIOHTTP_UA = (
+ f"GeoIP2-Python-Client/{geoip2.__version__} {aiohttp.http.SERVER_SOFTWARE}"
+ )
+
+if "requests" in sys.modules:
+ _REQUEST_UA = (
+ f"GeoIP2-Python-Client/{geoip2.__version__}"
+ f" {requests.utils.default_user_agent()}"
+ )
class BaseClient: # pylint: disable=missing-class-docstring, too-few-public-methods
Index: geoip2-4.6.0/requirements.txt
===================================================================
--- geoip2-4.6.0.orig/requirements.txt
+++ geoip2-4.6.0/requirements.txt
@@ -1,4 +1 @@
-aiohttp>=3.6.2,<4.0.0
maxminddb>=2.2.0,<3.0.0
-requests>=2.24.0,<3.0.0
-urllib3>=1.25.2,<2.0.0
Index: geoip2-4.6.0/setup.cfg
===================================================================
--- geoip2-4.6.0.orig/setup.cfg
+++ geoip2-4.6.0/setup.cfg
@@ -26,8 +26,9 @@ deps =
pytest
mocket
commands = pytest tests
+usedevelop = true
+extras = aiohttp, requests
[egg_info]
tag_build =
tag_date = 0
-
Index: geoip2-4.6.0/setup.py
===================================================================
--- geoip2-4.6.0.orig/setup.py
+++ geoip2-4.6.0/setup.py
@@ -26,6 +26,11 @@ setup(
include_package_data=True,
python_requires=">=3.6",
install_requires=requirements,
+ extras_require={
+ "all": ["requests>=2.14.0,<3.0.0", "aiohttp>=3.6.2,<4.0.0"],
+ "requests": "requests>=2.14.0,<3.0.0",
+ "aiohttp": "aiohttp>=3.6.2,<4.0.0",
+ },
tests_require=["mocket>=3.8.9"],
test_suite="tests",
license=geoip2.__license__,

BIN
python-geoip2-4.6.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

201
python-geoip2.changes Normal file
View File

@ -0,0 +1,201 @@
-------------------------------------------------------------------
Wed Feb 15 19:57:56 UTC 2023 - Dirk Müller <dmueller@suse.com>
- fix tests on python 3.8 as well with newer python-mocket by skipping
the tests/test_webservice which need porting to new python-mocket
-------------------------------------------------------------------
Mon Jan 23 16:42:49 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
- Disable broken tests for python 3.11. python-mocket currently does not work
with python 3.11, so we should disable tests that uses it until it's
supported.
See these issues:
gh#maxmind/GeoIP2-python@3b0dbb1eb990
gh#mindflayer/python-mocket#181
gh#benoitc/http-parser#95
-------------------------------------------------------------------
Mon Jul 4 07:11:02 UTC 2022 - Paolo Stivanin <info@paolostivanin.com>
- Update to version 4.6.0:
- The AddressNotFoundError class now has an ip_address attribute
with the lookup address and network property for the empty network
in the database containing the IP address. These are only available
when using a database, not the web service.
- Rebase 0001-Removing-unused-urllib3-dependency-loosening-request.patch
-------------------------------------------------------------------
Thu Nov 18 19:55:34 UTC 2021 - Sebastian Wagner <sebix+novell.com@sebix.at>
- update to version 4.5.0:
- 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_code`` and
``mobile_network_code`` attributes were added to ``geoip2.model.ISP``
for the GeoIP2 ISP database and ``geoip2.record.Traits`` for the
Enterprise database and the GeoIP2 City and Insights web services.
We expect this data to be available by late January, 2022.
-------------------------------------------------------------------
Fri Sep 24 19:10:31 UTC 2021 - Sebastian Wagner <sebix+novell.com@sebix.at>
- update to version 4.4.0:
- The public API on ``geoip2.database`` is now explicitly defined by
setting ``__all__``.
- The return type of the ``metadata()`` method on ``Reader`` is now
``maxminddb.reader.Metadata`` rather than a union type.
- update to version 4.3.0:
- Previously, the ``py.typed`` file 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 ``Reader`` constructor have
been expanded to match those specified by ``maxmindb.open_database``. In
particular, ``os.PathLike`` and ``IO`` have been added.
- Corrected the type hint for the ``metadata()`` method on ``Reader``. It
will return a ``maxminddb.extension.Metadata`` if the C extension is being
used.
-------------------------------------------------------------------
Tue Jul 13 09:58:29 UTC 2021 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Add patch to remove urllib3 and relax requests dependencies
+ 0001-Removing-unused-urllib3-dependency-loosening-request.patch
- Update BuildRequires and Requires from requirements.txt and setup.py
-------------------------------------------------------------------
Fri May 14 16:10:51 UTC 2021 - Sebastian Wagner <sebix+novell.com@sebix.at>
- update to version 4.2.0:
- You may now set a proxy to use when making web service requests by passing
the ``proxy`` parameter to the ``AsyncClient`` or ``Client`` constructor.
-------------------------------------------------------------------
Thu Dec 10 01:27:35 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- replace deprecated setup.py test call by pyunittest macro so that
pip does not try to download stuff
-------------------------------------------------------------------
Wed Nov 4 15:56:32 UTC 2020 - Paolo Stivanin <info@paolostivanin.com>
- update to version 4.1.0:
* Added the is_residential_proxy attribute to geoip2.model.AnonymousIP
and geoip2.record.Traits.
* HTTPError now provides the decoded response content in the
decoded_content attribute.
-------------------------------------------------------------------
Tue Jul 28 18:55:20 UTC 2020 - Sebastian Wagner <sebix+novell.com@sebix.at>
- update to version 4.0.2:
- Added ``py.typed`` file per PEP 561. Reported by Árni Már Jónsson.
-------------------------------------------------------------------
Thu Jul 23 20:21:35 UTC 2020 - Sebastian Wagner <sebix+novell.com@sebix.at>
- update to version 4.0.1:
- Re-release to fix bad reStructuredText in ``README.md``. No substantive
changes.
- update to version 4.0.0:
- 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.Client`` now provides a ``close()`` method and associated
context managers to be used in ``with`` statements.
- Type hints have been added.
- The attributes ``postal_code`` and ``postal_confidence`` have been removed
from ``geoip2.record.Location``. These would previously always be ``None``.
- ``user_id`` is no longer supported as a named argument for the constructor
on ``geoip2.webservice.Client``. Use ``account_id`` or a positional
parameter instead.
- For both ``Client`` and ``AsyncClient`` requests, the default timeout is
now 60 seconds.
-------------------------------------------------------------------
Thu Apr 16 17:45:00 UTC 2020 - Marcus Rueckert <mrueckert@suse.de>
- match buildrequires to requirements.txt
-------------------------------------------------------------------
Wed Mar 4 07:46:22 UTC 2020 - Paolo Stivanin <info@paolostivanin.com>
- Update to 3.0.0
* 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 network attribute was added to geoip2.record.Traits,
geoip2.model.AnonymousIP, geoip2.model.ASN,
geoip2.model.ConnectionType, geoip2.model.Domain,
and geoip2.model.ISP. This is an ipaddress.IPv4Network or an
ipaddress.IPv6Network. This is the largest network where all of the
fields besides ip_address have the same value. GitHub #79.
* Python 3.3 and 3.4 are no longer supported.
* Updated documentation of anonymizer attributes - is_anonymous_vpn and
is_hosting_provider - to be more descriptive.
* Added support for the user_count trait for the GeoIP2 Precision webservice.
* Added the static_ip_score attribute to geoip2.record.Traits for
* GeoIP2 Precision Insights. This is a float which indicates how static or dynamic
an IP address is.
-------------------------------------------------------------------
Mon Mar 11 07:07:04 UTC 2019 - John Vandenberg <jayvdb@gmail.com>
- Fix minimum build dependency of maxminddb
- Fix fdupes
- Use more useful GitHub repo as URL
- Add HISTORY.rst to %doc
-------------------------------------------------------------------
Tue Dec 4 12:48:25 UTC 2018 - Matej Cepl <mcepl@suse.com>
- Remove superfluous devel dependency for noarch package
-------------------------------------------------------------------
Sun May 27 08:28:33 UTC 2018 - sebix+novell.com@sebix.at
- update to version 2.9.0:
* You may now pass in the database via a file descriptor rather than a file
name when creating a new ``geoip2.database.Reader`` object using ``MODE_FD``.
This will read the database from the file descriptor into memory. Pull
request by nkinkade. GitHub #53.
-------------------------------------------------------------------
Wed May 2 12:02:32 UTC 2018 - tchvatal@suse.com
- Use license macro for license
-------------------------------------------------------------------
Thu Apr 12 19:32:15 UTC 2018 - sebix+novell.com@sebix.at
- update to version 2.8.0:
* Renamed user ID to account ID in the code and added support for the new
``ACCOUNT_ID_REQUIRED`` AND ``ACCOUNT_ID_UNKNOWN`` error codes.
- update to version 2.7.0:
* The ``is_in_european_union`` attribute was added to
``geoip2.record.Country`` and ``geoip2.record.RepresentedCountry``. This
attribute is ``True`` if the country is a member state of the European
Union.
-------------------------------------------------------------------
Sat Mar 3 18:36:30 UTC 2018 - arun@gmx.de
- specfile:
* update copyright year
* don't use python_module for Requires
-------------------------------------------------------------------
Fri Oct 27 21:10:06 UTC 2017 - sebix+novell.com@sebix.at
- update to version 2.6.0:
* The following new anonymizer attributes were added to ``geoip2.record.Traits``
for use with GeoIP2 Precision Insights: ``is_anonymous``,
``is_anonymous_vpn``, ``is_hosting_provider``, ``is_public_proxy``, and
``is_tor_exit_node``.
-------------------------------------------------------------------
Thu May 25 16:30:03 UTC 2017 - sebix+novell.com@sebix.at
- initial package

85
python-geoip2.spec Normal file
View File

@ -0,0 +1,85 @@
#
# spec file for package python-geoip2
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-geoip2
Version: 4.6.0
Release: 0
Summary: MaxMind GeoIP2 Python API
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/maxmind/GeoIP2-python
Source: https://files.pythonhosted.org/packages/source/g/geoip2/geoip2-%{version}.tar.gz#/%{name}-%{version}.tar.gz
# PATCH-FIX-OPENSUSE 0001-Removing-unused-urllib3-dependency-loosening-request.patch -- Removing unused urllib3 dependency loosening requests version based on https://github.com/maxmind/GeoIP2-python/pull/104.patch
Patch0: 0001-Removing-unused-urllib3-dependency-loosening-request.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
# SECTION test requirements
BuildRequires: %{python_module aiohttp >= 3.6.2}
BuildRequires: %{python_module maxminddb >= 2.2.0}
# mocket currently does not work with 3.11. See these issues:
# gh#maxmind/GeoIP2-python@3b0dbb1eb990
# gh#mindflayer/python-mocket#181
# gh#benoitc/http-parser#95
BuildRequires: %{python_module mocket >= 3.8.9 if %python-base < 3.11}
BuildRequires: %{python_module python-magic >= 0.4.18}
BuildRequires: %{python_module requests >= 2.14.0}
# /SECTION
Recommends: python-aiohttp >= 3.6.2
Requires: python-maxminddb >= 2.0.0
Requires: python-requests >= 2.14.0
BuildArch: noarch
%ifpython2
Recommends: python2-ipaddress
%endif
%python_subpackages
%description
This package provides an API for the GeoIP2 web services and databases.
The API also works with MaxMind's free GeoLite2 databases.
%prep
%setup -q -n geoip2-%{version}
%patch0 -p1
%build
%python_build
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
python38_tests="tests/models_test.py tests/database_test.py"
python39_tests=$python38_tests
python310_tests=$python38_tests
# mocket currently does not work with 3.11. See these issues:
# gh#maxmind/GeoIP2-python@3b0dbb1eb990
# gh#mindflayer/python-mocket#181
# gh#benoitc/http-parser#95
python311_tests="tests/models_test.py tests/database_test.py"
%pyunittest -v ${$python_tests}
%files %{python_files}
%license LICENSE
%doc README.rst HISTORY.rst
%{python_sitelib}/geoip2
%{python_sitelib}/geoip2-%{version}*-info
%changelog