proxy.py/proxy/common/_version.py

64 lines
1.8 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""
proxy.py
~~~~~~~~
Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on
Network monitoring, controls & Application development, testing, debugging.
:copyright: (c) 2013-present by Abhinav Singh and contributors.
:license: BSD, see LICENSE for more details.
Version definition.
"""
from typing import Tuple, Union
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
try:
# pylint: disable=unused-import
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
def _to_int_or_str(inp: str) -> Union[int, str]: # pragma: no cover
try:
return int(inp)
except ValueError:
return inp
def _split_version_parts(inp: str) -> Tuple[str, ...]: # pragma: no cover
public_version, _plus, local_version = inp.partition('+')
return (*public_version.split('.'), local_version)
try:
VERSION = _ver_tup
except NameError: # pragma: no cover
VERSION = tuple(
map(_to_int_or_str, _split_version_parts(__version__)),
)
__all__ = '__version__', 'VERSION'