2021-11-14 05:13:20 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
proxy.py
|
|
|
|
~~~~~~~~
|
|
|
|
⚡⚡⚡ Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on
|
|
|
|
Network monitoring, controls & Application development, testing, debugging.
|
2021-11-13 21:16:07 +00:00
|
|
|
|
2021-11-14 05:13:20 +00:00
|
|
|
:copyright: (c) 2013-present by Abhinav Singh and contributors.
|
|
|
|
:license: BSD, see LICENSE for more details.
|
|
|
|
|
|
|
|
Version definition.
|
|
|
|
"""
|
2021-11-14 10:12:54 +00:00
|
|
|
from typing import Tuple, Union
|
|
|
|
|
2022-01-20 10:04:54 +00:00
|
|
|
|
Update project test dependencies to ensure green workflow (#1371)
* Use www.google.com for http2 tests
* Update README.md
Add missing tutorial's link
(cherry picked from commit e459f932cdb54c37ac6343470eed8581396b642b)
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* System packages for readthedocs
* Pin pyyaml, see https://github.com/yaml/pyyaml/issues/724\#issuecomment-1638587228
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Ignore flake8 S507
* precommit `pyyaml==5.3.1`
* follow https://github.com/yaml/pyyaml/issues/724
* pin to essentials_openapi==0.1.4 for blacksheep
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Remove blacksheep dep
* remove system_packages
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Check if tox upgrade helps with `ERROR: FAIL could not package project ` tox related issues
* Fix links
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use `importlib.metadata` instead of `pkg_resources`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Just remove link from plugin docstring for now
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* pin `sphinxcontrib-applehelp==1.0.2` which is breaking spellcheck
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Pin `sphinxcontrib-*`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* pin `towncrier` too
* add kwargs as a spelling
* `_get_dist` backward compatible with 3.6
* Use `httpbingo.org` instead of `httpbin.org` in tests making network requests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use `httpbingo` for reverse proxy plugin too which is tested in workflows
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* `importlib-metadata; python_version <= 3.7`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Integration test changes due to usage of httpbingo instead of httpbin
* `importlib-metadata; python_version <= 3.7` moved to build essentials and bypass reverse proxy integration test result verification for now
* Filter and ignore `DeprecationWarning` to make it work on 3.7
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* with deprecation ignore we dont need `importlib-metadata`
---------
Co-authored-by: Wermeille Bastien <bastien.wermeille@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-04-11 07:34:10 +00:00
|
|
|
def _get_dist(distribution_name: str) -> str:
|
|
|
|
# pylint: disable=import-outside-toplevel
|
|
|
|
import warnings
|
|
|
|
|
|
|
|
try:
|
|
|
|
# pylint: disable=import-outside-toplevel
|
|
|
|
from importlib.metadata import version # noqa: WPS433
|
|
|
|
|
|
|
|
return version(distribution_name)
|
|
|
|
except ModuleNotFoundError: # pragma: no cover
|
|
|
|
with warnings.catch_warnings():
|
|
|
|
warnings.filterwarnings('ignore', category=DeprecationWarning)
|
|
|
|
|
|
|
|
# pylint: disable=import-outside-toplevel
|
|
|
|
from pkg_resources import get_distribution # noqa: WPS433
|
|
|
|
|
|
|
|
return get_distribution(distribution_name).version
|
|
|
|
|
|
|
|
|
2021-11-13 21:16:07 +00:00
|
|
|
try:
|
|
|
|
# pylint: disable=unused-import
|
2022-01-20 10:04:54 +00:00
|
|
|
from ._scm_version import version as __version__ # noqa: WPS433, WPS436
|
|
|
|
from ._scm_version import version_tuple as _ver_tup # noqa: WPS433, WPS436
|
Update project test dependencies to ensure green workflow (#1371)
* Use www.google.com for http2 tests
* Update README.md
Add missing tutorial's link
(cherry picked from commit e459f932cdb54c37ac6343470eed8581396b642b)
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* System packages for readthedocs
* Pin pyyaml, see https://github.com/yaml/pyyaml/issues/724\#issuecomment-1638587228
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Ignore flake8 S507
* precommit `pyyaml==5.3.1`
* follow https://github.com/yaml/pyyaml/issues/724
* pin to essentials_openapi==0.1.4 for blacksheep
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Remove blacksheep dep
* remove system_packages
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Check if tox upgrade helps with `ERROR: FAIL could not package project ` tox related issues
* Fix links
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use `importlib.metadata` instead of `pkg_resources`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Just remove link from plugin docstring for now
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* pin `sphinxcontrib-applehelp==1.0.2` which is breaking spellcheck
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Pin `sphinxcontrib-*`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* pin `towncrier` too
* add kwargs as a spelling
* `_get_dist` backward compatible with 3.6
* Use `httpbingo.org` instead of `httpbin.org` in tests making network requests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use `httpbingo` for reverse proxy plugin too which is tested in workflows
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* `importlib-metadata; python_version <= 3.7`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Integration test changes due to usage of httpbingo instead of httpbin
* `importlib-metadata; python_version <= 3.7` moved to build essentials and bypass reverse proxy integration test result verification for now
* Filter and ignore `DeprecationWarning` to make it work on 3.7
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* with deprecation ignore we dont need `importlib-metadata`
---------
Co-authored-by: Wermeille Bastien <bastien.wermeille@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-04-11 07:34:10 +00:00
|
|
|
except ImportError: # pragma: no cover
|
|
|
|
__version__ = _get_dist('proxy.py') # noqa: WPS440
|
2021-11-13 21:16:07 +00:00
|
|
|
|
|
|
|
|
2022-01-14 09:43:14 +00:00
|
|
|
def _to_int_or_str(inp: str) -> Union[int, str]: # pragma: no cover
|
2021-11-14 10:12:54 +00:00
|
|
|
try:
|
|
|
|
return int(inp)
|
|
|
|
except ValueError:
|
|
|
|
return inp
|
|
|
|
|
|
|
|
|
2022-01-14 09:43:14 +00:00
|
|
|
def _split_version_parts(inp: str) -> Tuple[str, ...]: # pragma: no cover
|
2021-11-14 10:12:54 +00:00
|
|
|
public_version, _plus, local_version = inp.partition('+')
|
|
|
|
return (*public_version.split('.'), local_version)
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
VERSION = _ver_tup
|
2022-01-14 09:43:14 +00:00
|
|
|
except NameError: # pragma: no cover
|
2021-11-14 10:12:54 +00:00
|
|
|
VERSION = tuple(
|
|
|
|
map(_to_int_or_str, _split_version_parts(__version__)),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = '__version__', 'VERSION'
|