From 30d8190b598a60b3753a91db4abe23a563169832b97095009a4a764d9c20c2ad Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Tue, 13 Jul 2021 19:38:29 +0000 Subject: [PATCH 1/2] Accepting request 906077 from home:glaubitz:branches:Application:Geo - 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 OBS-URL: https://build.opensuse.org/request/show/906077 OBS-URL: https://build.opensuse.org/package/show/Application:Geo/python-geoip2?expand=0&rev=19 --- ...urllib3-dependency-loosening-request.patch | 120 ++++++++++++++++++ python-geoip2.changes | 7 + python-geoip2.spec | 8 +- 3 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 0001-Removing-unused-urllib3-dependency-loosening-request.patch diff --git a/0001-Removing-unused-urllib3-dependency-loosening-request.patch b/0001-Removing-unused-urllib3-dependency-loosening-request.patch new file mode 100644 index 0000000..e7eda1a --- /dev/null +++ b/0001-Removing-unused-urllib3-dependency-loosening-request.patch @@ -0,0 +1,120 @@ +From: "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 + +diff -Nru geoip2-4.2.0.orig/geoip2/webservice.py geoip2-4.2.0/geoip2/webservice.py +--- geoip2-4.2.0.orig/geoip2/webservice.py 2020-12-10 18:47:00.000000000 +0100 ++++ geoip2-4.2.0/geoip2/webservice.py 2021-07-13 11:55:41.952344432 +0200 +@@ -27,12 +27,21 @@ + + 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.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 +diff -Nru geoip2-4.2.0.orig/README.rst geoip2-4.2.0/README.rst +--- geoip2-4.2.0.orig/README.rst 2021-05-12 18:10:23.000000000 +0200 ++++ geoip2-4.2.0/README.rst 2021-07-13 11:55:41.952344432 +0200 +@@ -19,6 +19,9 @@ + .. 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: +diff -Nru geoip2-4.2.0.orig/requirements.txt geoip2-4.2.0/requirements.txt +--- geoip2-4.2.0.orig/requirements.txt 2020-07-28 19:27:21.000000000 +0200 ++++ geoip2-4.2.0/requirements.txt 2021-07-13 11:55:41.952344432 +0200 +@@ -1,4 +1 @@ +-aiohttp>=3.6.2,<4.0.0 + maxminddb>=2.0.0,<3.0.0 +-requests>=2.24.0,<3.0.0 +-urllib3>=1.25.2,<2.0.0 +diff -Nru geoip2-4.2.0.orig/setup.cfg geoip2-4.2.0/setup.cfg +--- geoip2-4.2.0.orig/setup.cfg 2021-05-12 18:12:14.163335000 +0200 ++++ geoip2-4.2.0/setup.cfg 2021-07-13 11:57:15.737814093 +0200 +@@ -22,8 +22,9 @@ + pytest + mocket + commands = pytest tests ++usedevelop = true ++extras = aiohttp, requests + + [egg_info] + tag_build = + tag_date = 0 +- +diff -Nru geoip2-4.2.0.orig/setup.py geoip2-4.2.0/setup.py +--- geoip2-4.2.0.orig/setup.py 2020-09-25 17:00:20.000000000 +0200 ++++ geoip2-4.2.0/setup.py 2021-07-13 11:55:41.952344432 +0200 +@@ -26,6 +26,11 @@ + 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__, diff --git a/python-geoip2.changes b/python-geoip2.changes index 04ebcda..0dbfbc8 100644 --- a/python-geoip2.changes +++ b/python-geoip2.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Jul 13 09:58:29 UTC 2021 - John Paul Adrian Glaubitz + +- 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 diff --git a/python-geoip2.spec b/python-geoip2.spec index d4706a8..1173406 100644 --- a/python-geoip2.spec +++ b/python-geoip2.spec @@ -26,8 +26,8 @@ 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 +Patch0: 0001-Removing-unused-urllib3-dependency-loosening-request.patch BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module urllib3 >= 1.25.2} BuildRequires: fdupes BuildRequires: python-rpm-macros # SECTION test requirements @@ -35,12 +35,11 @@ BuildRequires: %{python_module aiohttp >= 3.6.2} BuildRequires: %{python_module maxminddb >= 2.0.0} BuildRequires: %{python_module mocket >= 3.8.9} BuildRequires: %{python_module python-magic >= 0.4.18} -BuildRequires: %{python_module requests >= 2.24.0} +BuildRequires: %{python_module requests >= 2.14.0} # /SECTION Requires: python-aiohttp >= 3.6.2 Requires: python-maxminddb >= 2.0.0 -Requires: python-requests >= 2.24.0 -Requires: python-urllib3 >= 1.25.2 +Requires: python-requests >= 2.14.0 BuildArch: noarch %ifpython2 Recommends: python2-ipaddress @@ -53,6 +52,7 @@ The API also works with MaxMind's free GeoLite2 databases. %prep %setup -q -n geoip2-%{version} +%patch0 -p1 %build %python_build From 6d027c6c7b63b30478f0319fe853be3254df1836fcd4a1ed2b838f52b9dca6b0 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Tue, 13 Jul 2021 20:36:37 +0000 Subject: [PATCH 2/2] document patch source OBS-URL: https://build.opensuse.org/package/show/Application:Geo/python-geoip2?expand=0&rev=20 --- ...urllib3-dependency-loosening-request.patch | 65 ++++++++++++------- python-geoip2.spec | 4 +- 2 files changed, 42 insertions(+), 27 deletions(-) diff --git a/0001-Removing-unused-urllib3-dependency-loosening-request.patch b/0001-Removing-unused-urllib3-dependency-loosening-request.patch index e7eda1a..db43d3c 100644 --- a/0001-Removing-unused-urllib3-dependency-loosening-request.patch +++ b/0001-Removing-unused-urllib3-dependency-loosening-request.patch @@ -1,11 +1,36 @@ +From a3152e9e77850aa741976e7e492ab98b672be536 Mon Sep 17 00:00:00 2001 From: "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 -diff -Nru geoip2-4.2.0.orig/geoip2/webservice.py geoip2-4.2.0/geoip2/webservice.py ---- geoip2-4.2.0.orig/geoip2/webservice.py 2020-12-10 18:47:00.000000000 +0100 -+++ geoip2-4.2.0/geoip2/webservice.py 2021-07-13 11:55:41.952344432 +0200 +--- + .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(-) + +diff --git a/README.rst b/README.rst +index a17082e..8969781 100644 +--- a/README.rst ++++ b/README.rst +@@ -19,6 +19,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: +diff --git a/geoip2/webservice.py b/geoip2/webservice.py +index 4b1fc15..6ab0e84 100644 +--- a/geoip2/webservice.py ++++ b/geoip2/webservice.py @@ -27,12 +27,21 @@ import ipaddress @@ -68,30 +93,19 @@ diff -Nru geoip2-4.2.0.orig/geoip2/webservice.py geoip2-4.2.0/geoip2/webservice. class BaseClient: # pylint: disable=missing-class-docstring, too-few-public-methods -diff -Nru geoip2-4.2.0.orig/README.rst geoip2-4.2.0/README.rst ---- geoip2-4.2.0.orig/README.rst 2021-05-12 18:10:23.000000000 +0200 -+++ geoip2-4.2.0/README.rst 2021-07-13 11:55:41.952344432 +0200 -@@ -19,6 +19,9 @@ - .. 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: -diff -Nru geoip2-4.2.0.orig/requirements.txt geoip2-4.2.0/requirements.txt ---- geoip2-4.2.0.orig/requirements.txt 2020-07-28 19:27:21.000000000 +0200 -+++ geoip2-4.2.0/requirements.txt 2021-07-13 11:55:41.952344432 +0200 +diff --git a/requirements.txt b/requirements.txt +index af2c6ff..9c772e4 100644 +--- a/requirements.txt ++++ b/requirements.txt @@ -1,4 +1 @@ -aiohttp>=3.6.2,<4.0.0 maxminddb>=2.0.0,<3.0.0 -requests>=2.24.0,<3.0.0 -urllib3>=1.25.2,<2.0.0 -diff -Nru geoip2-4.2.0.orig/setup.cfg geoip2-4.2.0/setup.cfg ---- geoip2-4.2.0.orig/setup.cfg 2021-05-12 18:12:14.163335000 +0200 -+++ geoip2-4.2.0/setup.cfg 2021-07-13 11:57:15.737814093 +0200 +diff --git a/setup.cfg b/setup.cfg +index 9d48adc..c77568d 100644 +--- a/setup.cfg ++++ b/setup.cfg @@ -22,8 +22,9 @@ pytest mocket @@ -103,9 +117,10 @@ diff -Nru geoip2-4.2.0.orig/setup.cfg geoip2-4.2.0/setup.cfg tag_build = tag_date = 0 - -diff -Nru geoip2-4.2.0.orig/setup.py geoip2-4.2.0/setup.py ---- geoip2-4.2.0.orig/setup.py 2020-09-25 17:00:20.000000000 +0200 -+++ geoip2-4.2.0/setup.py 2021-07-13 11:55:41.952344432 +0200 +diff --git a/setup.py b/setup.py +index 2194e8f..14b6d99 100644 +--- a/setup.py ++++ b/setup.py @@ -26,6 +26,11 @@ include_package_data=True, python_requires=">=3.6", diff --git a/python-geoip2.spec b/python-geoip2.spec index 1173406..7fd0302 100644 --- a/python-geoip2.spec +++ b/python-geoip2.spec @@ -17,7 +17,6 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} -%bcond_without test Name: python-geoip2 Version: 4.2.0 Release: 0 @@ -26,6 +25,7 @@ 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 @@ -37,7 +37,7 @@ BuildRequires: %{python_module mocket >= 3.8.9} BuildRequires: %{python_module python-magic >= 0.4.18} BuildRequires: %{python_module requests >= 2.14.0} # /SECTION -Requires: python-aiohttp >= 3.6.2 +Recommends: python-aiohttp >= 3.6.2 Requires: python-maxminddb >= 2.0.0 Requires: python-requests >= 2.14.0 BuildArch: noarch