diff --git a/proxy/common/types.py b/proxy/common/types.py index 279211e4..a95a49e8 100644 --- a/proxy/common/types.py +++ b/proxy/common/types.py @@ -10,10 +10,17 @@ """ import queue import ipaddress +import sys from typing import TYPE_CHECKING, Dict, Any, List, Union -from typing_extensions import Protocol +# NOTE: Using try/except causes linting problems which is why it's necessary +# NOTE: to use this mypy/pylint idiom for py36-py38 compatibility +# Ref: https://github.com/python/typeshed/issues/3500#issuecomment-560958608 +if sys.version_info >= (3, 8): + from typing import Protocol +else: + from typing_extensions import Protocol if TYPE_CHECKING: DictQueueType = queue.Queue[Dict[str, Any]] # pragma: no cover diff --git a/requirements.txt b/requirements.txt index 160811c5..71f75de8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -typing-extensions==3.10.0.2 +typing-extensions==3.10.0.2; python_version < "3.8" diff --git a/setup.py b/setup.py index 849de5f8..45ec2d54 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,9 @@ if __name__ == '__main__': zip_safe=False, packages=find_packages(exclude=['tests', 'tests.*']), package_data={'proxy': ['py.typed']}, - install_requires=open('requirements.txt', 'r').read().strip().split(), + install_requires=[ + 'typing-extensions; python_version < "3.8"', + ], entry_points={ 'console_scripts': [ 'proxy = proxy:entry_point'