Skip to content

Commit

Permalink
Removing unused urllib3 dependency, loosening requests version requir…
Browse files Browse the repository at this point in the history
…ement and making aiohttp and requests optional installs
  • Loading branch information
Dishy.Dev committed Nov 8, 2020
1 parent 91440cd commit a3152e9
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
pip install --upgrade pylint black mypy voluptuous-stubs
- name: Install
run: python setup.py install
run: pip install -e .[all]

- name: Run mypy
run: mypy geoip2 tests
Expand Down
3 changes: 3 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
46 changes: 35 additions & 11 deletions geoip2/webservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
3 changes: 0 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,5 @@ deps =
pytest
mocket
commands = pytest tests
usedevelop = true
extras = aiohttp, requests
5 changes: 5 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__,
Expand Down

0 comments on commit a3152e9

Please sign in to comment.