py2docfx 0.1.16rc2051518__py3-none-any.whl → 0.1.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py2docfx/docfx_yaml/miss_reference.py +1 -1
- py2docfx/docfx_yaml/parameter_utils.py +58 -6
- py2docfx/docfx_yaml/tests/roots/test-translator-typing/code_with_typing.py +14 -0
- py2docfx/docfx_yaml/tests/roots/test-translator-typing/conf.py +18 -0
- py2docfx/docfx_yaml/tests/test_translator_typing.py +39 -0
- py2docfx/docfx_yaml/utils.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/babel/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/certifi/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/certifi/core.py +1 -32
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/constant.py +17 -0
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/legacy.py +1 -3
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/md.py +19 -14
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/utils.py +6 -0
- py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/version.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/markupsafe/_speedups.pyi +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/markupsafe/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_parser.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_tokenizer.py +5 -4
- py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +53 -22
- py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +39 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/py.typed +4 -0
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +6 -7
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pygments/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/_sql_builtins.py +106 -0
- py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/scripting.py +5 -3
- py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/sql.py +24 -118
- py2docfx/venv/basevenv/Lib/site-packages/requests/__version__.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/requests/compat.py +12 -0
- py2docfx/venv/basevenv/Lib/site-packages/requests/models.py +3 -1
- py2docfx/venv/basevenv/Lib/site-packages/requests/utils.py +6 -16
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +0 -38
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_discovery.py +33 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_entry_points.py +4 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +0 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +12 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_scripts.py +361 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +6 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +25 -37
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +29 -28
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +39 -179
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +0 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +3 -55
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/compat/py310.py +11 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +10 -12
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +34 -29
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/contexts.py +0 -14
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +49 -24
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/__init__.py +6 -0
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/arabic_stemmer.py +798 -797
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/armenian_stemmer.py +212 -213
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basestemmer.py +20 -54
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basque_stemmer.py +202 -228
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/catalan_stemmer.py +370 -375
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/danish_stemmer.py +63 -61
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_porter_stemmer.py +466 -0
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_stemmer.py +1217 -343
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/english_stemmer.py +295 -264
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/esperanto_stemmer.py +588 -0
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/estonian_stemmer.py +850 -0
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/finnish_stemmer.py +144 -143
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/french_stemmer.py +308 -246
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/german_stemmer.py +224 -167
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/greek_stemmer.py +1314 -1313
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hindi_stemmer.py +39 -38
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hungarian_stemmer.py +231 -256
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/indonesian_stemmer.py +61 -64
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/irish_stemmer.py +101 -106
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/italian_stemmer.py +272 -272
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/lithuanian_stemmer.py +233 -240
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/nepali_stemmer.py +108 -134
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/norwegian_stemmer.py +108 -63
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/porter_stemmer.py +101 -108
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/portuguese_stemmer.py +241 -250
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/romanian_stemmer.py +332 -296
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/russian_stemmer.py +178 -179
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/serbian_stemmer.py +2331 -2332
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/spanish_stemmer.py +254 -259
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/swedish_stemmer.py +143 -70
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/tamil_stemmer.py +638 -1491
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/turkish_stemmer.py +326 -292
- py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/yiddish_stemmer.py +245 -246
- py2docfx/venv/basevenv/Lib/site-packages/sphinx/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/applehelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/htmlhelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/qthelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/serializinghtml/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/_version.py +9 -4
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/connection.py +87 -38
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/exceptions.py +12 -4
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/http2/connection.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/poolmanager.py +17 -1
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/py.typed +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/response.py +53 -24
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/request.py +12 -4
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_.py +22 -2
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/__main__.py +7 -5
- py2docfx/venv/{venv1/Lib/site-packages/wheel/cli → basevenv/Lib/site-packages/wheel/_commands}/__init__.py +3 -5
- py2docfx/venv/{venv1/Lib/site-packages/wheel/cli → basevenv/Lib/site-packages/wheel/_commands}/convert.py +14 -9
- py2docfx/venv/{venv1/Lib/site-packages/wheel/cli → basevenv/Lib/site-packages/wheel/_commands}/pack.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_metadata.py +184 -0
- py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +12 -23
- py2docfx/venv/basevenv/Lib/site-packages/wheel/macosx_libfile.py +4 -0
- py2docfx/venv/basevenv/Lib/site-packages/wheel/metadata.py +17 -183
- py2docfx/venv/basevenv/Lib/site-packages/wheel/wheelfile.py +30 -16
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/instrumentation.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +152 -29
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +3 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +3 -10
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +3 -8
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_aiohttp.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl_async.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_rest_py3.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +27 -21
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/__init__.py +3 -7
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +2 -35
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_models.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +12 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +66 -13
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +62 -23
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +256 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_connection_string_parser.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_messaging_shared.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +23 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +12 -16
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py +22 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +10 -6
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +13 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py +3 -5
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_client.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py +3 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +22 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py +17 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/certifi/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +1 -32
- py2docfx/venv/venv1/Lib/site-packages/certifi/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/constant.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/legacy.py +1 -3
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/md.py +19 -14
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +35 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +33 -10
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +37 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +75 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +107 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +28 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +22 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +49 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +34 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +15 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +52 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +50 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +23 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +313 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +9 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +4 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +16 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +47 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +16 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +16 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +14 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +14 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +6 -6
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +18 -18
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hashes.py +5 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +7 -4
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/padding.py +7 -121
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +21 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +48 -6
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +68 -18
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +3 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +15 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py +39 -6
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py +100 -49
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +27 -15
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py +60 -25
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/annotations_pb2.pyi +24 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/auth_pb2.pyi +120 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/backend_pb2.pyi +102 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/billing_pb2.pyi +50 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.pyi +405 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/config_change_pb2.pyi +65 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/consumer_pb2.pyi +62 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/context_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/control_pb2.pyi +43 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/distribution_pb2.pyi +144 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/documentation_pb2.pyi +86 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/endpoint_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.pyi +90 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_behavior_pb2.pyi +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_info_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/http_pb2.pyi +94 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/label_pb2.pyi +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/launch_stage_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/log_pb2.pyi +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/logging_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.pyi +186 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitored_resource_pb2.pyi +104 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitoring_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/policy_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/quota_pb2.pyi +116 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/resource_pb2.pyi +93 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/routing_pb2.pyi +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/service_pb2.pyi +170 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/source_info_pb2.pyi +34 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/system_parameter_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/usage_pb2.pyi +55 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/visibility_pb2.pyi +56 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/bidi.py +17 -4
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_info.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/client_info.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py +13 -4
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +8 -5
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +2 -36
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_helpers.py +240 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/_helpers.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/aiohttp.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +5 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/credentials.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/identity_pool.py +91 -2
- py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_aiohttp_requests.py +8 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_http_client.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/urllib3.py +15 -5
- py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/extended_operations_pb2.pyi +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/location/locations_pb2.pyi +96 -0
- py2docfx/venv/venv1/Lib/site-packages/google/gapic/metadata/gapic_metadata_pb2.pyi +118 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/http_request_pb2.pyi +91 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/log_severity_pb2.pyi +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto_pb2.pyi +126 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/id_token.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_types.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any.py +15 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor.py +15 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +258 -113
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pool.py +22 -8
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +106 -23
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/field_mask.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +21 -18
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +8 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +60 -43
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +4 -5
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +11 -7
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/code_pb2.pyi +58 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/attribute_context_pb2.pyi +309 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/audit_context_pb2.pyi +51 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.py +29 -23
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +246 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/http_pb2.pyi +71 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/status_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/calendar_period_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/color_pb2.pyi +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/date_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/datetime_pb2.pyi +77 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/dayofweek_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/decimal_pb2.pyi +27 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/expr_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/fraction_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/interval_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/latlng_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/localized_text_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/money_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/month_pb2.pyi +50 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/phone_number_pb2.pyi +48 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/postal_address_pb2.pyi +74 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/quaternion_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/timeofday_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/application.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/individual_cache.py +9 -5
- py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +4 -5
- py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/msal/throttled_http_client.py +58 -30
- py2docfx/venv/venv1/Lib/site-packages/opencensus/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/__init__.py +138 -138
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/exporter.py +93 -93
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/processor.py +63 -63
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/protocol.py +206 -206
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/storage.py +205 -205
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/transport.py +355 -355
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/utils.py +79 -79
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/version.py +15 -15
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/log_exporter/__init__.py +314 -314
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/__init__.py +190 -190
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/__init__.py +62 -62
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/cpu.py +50 -50
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/http_requests.py +176 -176
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/memory.py +42 -42
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/process.py +87 -87
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/state.py +50 -50
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat.py +100 -100
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat_metrics.py +480 -480
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/trace_exporter/__init__.py +236 -236
- py2docfx/venv/venv1/Lib/site-packages/packaging/__init__.py +15 -0
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_elffile.py +10 -9
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_manylinux.py +13 -11
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_musllinux.py +5 -3
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_parser.py +12 -15
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_tokenizer.py +15 -12
- py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/markers.py +148 -39
- py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +862 -0
- py2docfx/venv/venv1/Lib/site-packages/packaging/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/requirements.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/specifiers.py +41 -33
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/tags.py +135 -50
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/utils.py +39 -48
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/version.py +53 -32
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/py.typed +4 -0
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +6 -7
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/__version__.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/requests/compat.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/models.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/requests/utils.py +6 -16
- py2docfx/venv/venv1/Lib/site-packages/rsa/__init__.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/rsa/asn1.py +52 -52
- py2docfx/venv/venv1/Lib/site-packages/rsa/cli.py +321 -321
- py2docfx/venv/venv1/Lib/site-packages/rsa/common.py +184 -184
- py2docfx/venv/venv1/Lib/site-packages/rsa/core.py +53 -53
- py2docfx/venv/venv1/Lib/site-packages/rsa/key.py +858 -858
- py2docfx/venv/venv1/Lib/site-packages/rsa/parallel.py +96 -96
- py2docfx/venv/venv1/Lib/site-packages/rsa/pem.py +134 -134
- py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1.py +485 -485
- py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1_v2.py +100 -100
- py2docfx/venv/venv1/Lib/site-packages/rsa/prime.py +198 -198
- py2docfx/venv/venv1/Lib/site-packages/rsa/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/randnum.py +95 -95
- py2docfx/venv/venv1/Lib/site-packages/rsa/transform.py +72 -72
- py2docfx/venv/venv1/Lib/site-packages/rsa/util.py +97 -97
- py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +0 -38
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_discovery.py +33 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_entry_points.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +0 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +12 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_scripts.py +361 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +25 -37
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +29 -28
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +39 -179
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +0 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +3 -55
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/compat/py310.py +11 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +10 -12
- py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +34 -29
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/contexts.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +49 -24
- py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +380 -708
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +9 -4
- py2docfx/venv/venv1/Lib/site-packages/urllib3/connection.py +87 -38
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/exceptions.py +12 -4
- py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/connection.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/urllib3/poolmanager.py +17 -1
- py2docfx/venv/venv1/Lib/site-packages/urllib3/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/response.py +53 -24
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/request.py +12 -4
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +22 -2
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/wheel/__main__.py +7 -5
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/cli → venv1/Lib/site-packages/wheel/_commands}/__init__.py +3 -5
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/cli → venv1/Lib/site-packages/wheel/_commands}/convert.py +14 -9
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/cli → venv1/Lib/site-packages/wheel/_commands}/pack.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
- py2docfx/venv/venv1/Lib/site-packages/wheel/_metadata.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +12 -23
- py2docfx/venv/venv1/Lib/site-packages/wheel/macosx_libfile.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/metadata.py +17 -183
- py2docfx/venv/venv1/Lib/site-packages/wheel/wheelfile.py +30 -16
- {py2docfx-0.1.16rc2051518.dist-info → py2docfx-0.1.17.dist-info}/METADATA +2 -3
- {py2docfx-0.1.16rc2051518.dist-info → py2docfx-0.1.17.dist-info}/RECORD +588 -427
- {py2docfx-0.1.16rc2051518.dist-info → py2docfx-0.1.17.dist-info}/WHEEL +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +0 -1137
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +0 -536
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/server.py +0 -86
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
- py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -17
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -260
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -356
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -192
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -253
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -90
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -1011
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -172
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +0 -121
- py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +0 -1137
- py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +0 -536
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/server.py +0 -86
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
- py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
- py2docfx/venv/venv1/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -17
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -108
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -61
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -571
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/version.py +0 -561
- /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/__init__.py → certifi/py.typed} +0 -0
- /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/packaging/__init__.py → charset_normalizer/py.typed} +0 -0
- /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/__init__.py → basevenv/Lib/site-packages/idna/py.typed} +0 -0
- /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/packaging/__init__.py → basevenv/Lib/site-packages/jinja2/py.typed} +0 -0
- /py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
- /py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_structures.py +0 -0
- /py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
- {py2docfx-0.1.16rc2051518.dist-info → py2docfx-0.1.17.dist-info}/top_level.txt +0 -0
@@ -1,260 +0,0 @@
|
|
1
|
-
import collections
|
2
|
-
import contextlib
|
3
|
-
import functools
|
4
|
-
import os
|
5
|
-
import re
|
6
|
-
import sys
|
7
|
-
import warnings
|
8
|
-
from typing import Dict, Generator, Iterator, NamedTuple, Optional, Sequence, Tuple
|
9
|
-
|
10
|
-
from ._elffile import EIClass, EIData, ELFFile, EMachine
|
11
|
-
|
12
|
-
EF_ARM_ABIMASK = 0xFF000000
|
13
|
-
EF_ARM_ABI_VER5 = 0x05000000
|
14
|
-
EF_ARM_ABI_FLOAT_HARD = 0x00000400
|
15
|
-
|
16
|
-
|
17
|
-
# `os.PathLike` not a generic type until Python 3.9, so sticking with `str`
|
18
|
-
# as the type for `path` until then.
|
19
|
-
@contextlib.contextmanager
|
20
|
-
def _parse_elf(path: str) -> Generator[Optional[ELFFile], None, None]:
|
21
|
-
try:
|
22
|
-
with open(path, "rb") as f:
|
23
|
-
yield ELFFile(f)
|
24
|
-
except (OSError, TypeError, ValueError):
|
25
|
-
yield None
|
26
|
-
|
27
|
-
|
28
|
-
def _is_linux_armhf(executable: str) -> bool:
|
29
|
-
# hard-float ABI can be detected from the ELF header of the running
|
30
|
-
# process
|
31
|
-
# https://static.docs.arm.com/ihi0044/g/aaelf32.pdf
|
32
|
-
with _parse_elf(executable) as f:
|
33
|
-
return (
|
34
|
-
f is not None
|
35
|
-
and f.capacity == EIClass.C32
|
36
|
-
and f.encoding == EIData.Lsb
|
37
|
-
and f.machine == EMachine.Arm
|
38
|
-
and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5
|
39
|
-
and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD
|
40
|
-
)
|
41
|
-
|
42
|
-
|
43
|
-
def _is_linux_i686(executable: str) -> bool:
|
44
|
-
with _parse_elf(executable) as f:
|
45
|
-
return (
|
46
|
-
f is not None
|
47
|
-
and f.capacity == EIClass.C32
|
48
|
-
and f.encoding == EIData.Lsb
|
49
|
-
and f.machine == EMachine.I386
|
50
|
-
)
|
51
|
-
|
52
|
-
|
53
|
-
def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool:
|
54
|
-
if "armv7l" in archs:
|
55
|
-
return _is_linux_armhf(executable)
|
56
|
-
if "i686" in archs:
|
57
|
-
return _is_linux_i686(executable)
|
58
|
-
allowed_archs = {
|
59
|
-
"x86_64",
|
60
|
-
"aarch64",
|
61
|
-
"ppc64",
|
62
|
-
"ppc64le",
|
63
|
-
"s390x",
|
64
|
-
"loongarch64",
|
65
|
-
"riscv64",
|
66
|
-
}
|
67
|
-
return any(arch in allowed_archs for arch in archs)
|
68
|
-
|
69
|
-
|
70
|
-
# If glibc ever changes its major version, we need to know what the last
|
71
|
-
# minor version was, so we can build the complete list of all versions.
|
72
|
-
# For now, guess what the highest minor version might be, assume it will
|
73
|
-
# be 50 for testing. Once this actually happens, update the dictionary
|
74
|
-
# with the actual value.
|
75
|
-
_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50)
|
76
|
-
|
77
|
-
|
78
|
-
class _GLibCVersion(NamedTuple):
|
79
|
-
major: int
|
80
|
-
minor: int
|
81
|
-
|
82
|
-
|
83
|
-
def _glibc_version_string_confstr() -> Optional[str]:
|
84
|
-
"""
|
85
|
-
Primary implementation of glibc_version_string using os.confstr.
|
86
|
-
"""
|
87
|
-
# os.confstr is quite a bit faster than ctypes.DLL. It's also less likely
|
88
|
-
# to be broken or missing. This strategy is used in the standard library
|
89
|
-
# platform module.
|
90
|
-
# https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183
|
91
|
-
try:
|
92
|
-
# Should be a string like "glibc 2.17".
|
93
|
-
version_string: Optional[str] = os.confstr("CS_GNU_LIBC_VERSION")
|
94
|
-
assert version_string is not None
|
95
|
-
_, version = version_string.rsplit()
|
96
|
-
except (AssertionError, AttributeError, OSError, ValueError):
|
97
|
-
# os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)...
|
98
|
-
return None
|
99
|
-
return version
|
100
|
-
|
101
|
-
|
102
|
-
def _glibc_version_string_ctypes() -> Optional[str]:
|
103
|
-
"""
|
104
|
-
Fallback implementation of glibc_version_string using ctypes.
|
105
|
-
"""
|
106
|
-
try:
|
107
|
-
import ctypes
|
108
|
-
except ImportError:
|
109
|
-
return None
|
110
|
-
|
111
|
-
# ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
|
112
|
-
# manpage says, "If filename is NULL, then the returned handle is for the
|
113
|
-
# main program". This way we can let the linker do the work to figure out
|
114
|
-
# which libc our process is actually using.
|
115
|
-
#
|
116
|
-
# We must also handle the special case where the executable is not a
|
117
|
-
# dynamically linked executable. This can occur when using musl libc,
|
118
|
-
# for example. In this situation, dlopen() will error, leading to an
|
119
|
-
# OSError. Interestingly, at least in the case of musl, there is no
|
120
|
-
# errno set on the OSError. The single string argument used to construct
|
121
|
-
# OSError comes from libc itself and is therefore not portable to
|
122
|
-
# hard code here. In any case, failure to call dlopen() means we
|
123
|
-
# can proceed, so we bail on our attempt.
|
124
|
-
try:
|
125
|
-
process_namespace = ctypes.CDLL(None)
|
126
|
-
except OSError:
|
127
|
-
return None
|
128
|
-
|
129
|
-
try:
|
130
|
-
gnu_get_libc_version = process_namespace.gnu_get_libc_version
|
131
|
-
except AttributeError:
|
132
|
-
# Symbol doesn't exist -> therefore, we are not linked to
|
133
|
-
# glibc.
|
134
|
-
return None
|
135
|
-
|
136
|
-
# Call gnu_get_libc_version, which returns a string like "2.5"
|
137
|
-
gnu_get_libc_version.restype = ctypes.c_char_p
|
138
|
-
version_str: str = gnu_get_libc_version()
|
139
|
-
# py2 / py3 compatibility:
|
140
|
-
if not isinstance(version_str, str):
|
141
|
-
version_str = version_str.decode("ascii")
|
142
|
-
|
143
|
-
return version_str
|
144
|
-
|
145
|
-
|
146
|
-
def _glibc_version_string() -> Optional[str]:
|
147
|
-
"""Returns glibc version string, or None if not using glibc."""
|
148
|
-
return _glibc_version_string_confstr() or _glibc_version_string_ctypes()
|
149
|
-
|
150
|
-
|
151
|
-
def _parse_glibc_version(version_str: str) -> Tuple[int, int]:
|
152
|
-
"""Parse glibc version.
|
153
|
-
|
154
|
-
We use a regexp instead of str.split because we want to discard any
|
155
|
-
random junk that might come after the minor version -- this might happen
|
156
|
-
in patched/forked versions of glibc (e.g. Linaro's version of glibc
|
157
|
-
uses version strings like "2.20-2014.11"). See gh-3588.
|
158
|
-
"""
|
159
|
-
m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str)
|
160
|
-
if not m:
|
161
|
-
warnings.warn(
|
162
|
-
f"Expected glibc version with 2 components major.minor,"
|
163
|
-
f" got: {version_str}",
|
164
|
-
RuntimeWarning,
|
165
|
-
)
|
166
|
-
return -1, -1
|
167
|
-
return int(m.group("major")), int(m.group("minor"))
|
168
|
-
|
169
|
-
|
170
|
-
@functools.lru_cache
|
171
|
-
def _get_glibc_version() -> Tuple[int, int]:
|
172
|
-
version_str = _glibc_version_string()
|
173
|
-
if version_str is None:
|
174
|
-
return (-1, -1)
|
175
|
-
return _parse_glibc_version(version_str)
|
176
|
-
|
177
|
-
|
178
|
-
# From PEP 513, PEP 600
|
179
|
-
def _is_compatible(arch: str, version: _GLibCVersion) -> bool:
|
180
|
-
sys_glibc = _get_glibc_version()
|
181
|
-
if sys_glibc < version:
|
182
|
-
return False
|
183
|
-
# Check for presence of _manylinux module.
|
184
|
-
try:
|
185
|
-
import _manylinux
|
186
|
-
except ImportError:
|
187
|
-
return True
|
188
|
-
if hasattr(_manylinux, "manylinux_compatible"):
|
189
|
-
result = _manylinux.manylinux_compatible(version[0], version[1], arch)
|
190
|
-
if result is not None:
|
191
|
-
return bool(result)
|
192
|
-
return True
|
193
|
-
if version == _GLibCVersion(2, 5):
|
194
|
-
if hasattr(_manylinux, "manylinux1_compatible"):
|
195
|
-
return bool(_manylinux.manylinux1_compatible)
|
196
|
-
if version == _GLibCVersion(2, 12):
|
197
|
-
if hasattr(_manylinux, "manylinux2010_compatible"):
|
198
|
-
return bool(_manylinux.manylinux2010_compatible)
|
199
|
-
if version == _GLibCVersion(2, 17):
|
200
|
-
if hasattr(_manylinux, "manylinux2014_compatible"):
|
201
|
-
return bool(_manylinux.manylinux2014_compatible)
|
202
|
-
return True
|
203
|
-
|
204
|
-
|
205
|
-
_LEGACY_MANYLINUX_MAP = {
|
206
|
-
# CentOS 7 w/ glibc 2.17 (PEP 599)
|
207
|
-
(2, 17): "manylinux2014",
|
208
|
-
# CentOS 6 w/ glibc 2.12 (PEP 571)
|
209
|
-
(2, 12): "manylinux2010",
|
210
|
-
# CentOS 5 w/ glibc 2.5 (PEP 513)
|
211
|
-
(2, 5): "manylinux1",
|
212
|
-
}
|
213
|
-
|
214
|
-
|
215
|
-
def platform_tags(archs: Sequence[str]) -> Iterator[str]:
|
216
|
-
"""Generate manylinux tags compatible to the current platform.
|
217
|
-
|
218
|
-
:param archs: Sequence of compatible architectures.
|
219
|
-
The first one shall be the closest to the actual architecture and be the part of
|
220
|
-
platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
|
221
|
-
The ``linux_`` prefix is assumed as a prerequisite for the current platform to
|
222
|
-
be manylinux-compatible.
|
223
|
-
|
224
|
-
:returns: An iterator of compatible manylinux tags.
|
225
|
-
"""
|
226
|
-
if not _have_compatible_abi(sys.executable, archs):
|
227
|
-
return
|
228
|
-
# Oldest glibc to be supported regardless of architecture is (2, 17).
|
229
|
-
too_old_glibc2 = _GLibCVersion(2, 16)
|
230
|
-
if set(archs) & {"x86_64", "i686"}:
|
231
|
-
# On x86/i686 also oldest glibc to be supported is (2, 5).
|
232
|
-
too_old_glibc2 = _GLibCVersion(2, 4)
|
233
|
-
current_glibc = _GLibCVersion(*_get_glibc_version())
|
234
|
-
glibc_max_list = [current_glibc]
|
235
|
-
# We can assume compatibility across glibc major versions.
|
236
|
-
# https://sourceware.org/bugzilla/show_bug.cgi?id=24636
|
237
|
-
#
|
238
|
-
# Build a list of maximum glibc versions so that we can
|
239
|
-
# output the canonical list of all glibc from current_glibc
|
240
|
-
# down to too_old_glibc2, including all intermediary versions.
|
241
|
-
for glibc_major in range(current_glibc.major - 1, 1, -1):
|
242
|
-
glibc_minor = _LAST_GLIBC_MINOR[glibc_major]
|
243
|
-
glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor))
|
244
|
-
for arch in archs:
|
245
|
-
for glibc_max in glibc_max_list:
|
246
|
-
if glibc_max.major == too_old_glibc2.major:
|
247
|
-
min_minor = too_old_glibc2.minor
|
248
|
-
else:
|
249
|
-
# For other glibc major versions oldest supported is (x, 0).
|
250
|
-
min_minor = -1
|
251
|
-
for glibc_minor in range(glibc_max.minor, min_minor, -1):
|
252
|
-
glibc_version = _GLibCVersion(glibc_max.major, glibc_minor)
|
253
|
-
tag = "manylinux_{}_{}".format(*glibc_version)
|
254
|
-
if _is_compatible(arch, glibc_version):
|
255
|
-
yield f"{tag}_{arch}"
|
256
|
-
# Handle the legacy manylinux1, manylinux2010, manylinux2014 tags.
|
257
|
-
if glibc_version in _LEGACY_MANYLINUX_MAP:
|
258
|
-
legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version]
|
259
|
-
if _is_compatible(arch, glibc_version):
|
260
|
-
yield f"{legacy_tag}_{arch}"
|
@@ -1,356 +0,0 @@
|
|
1
|
-
"""Handwritten parser of dependency specifiers.
|
2
|
-
|
3
|
-
The docstring for each __parse_* function contains EBNF-inspired grammar representing
|
4
|
-
the implementation.
|
5
|
-
"""
|
6
|
-
|
7
|
-
import ast
|
8
|
-
from typing import Any, List, NamedTuple, Optional, Tuple, Union
|
9
|
-
|
10
|
-
from ._tokenizer import DEFAULT_RULES, Tokenizer
|
11
|
-
|
12
|
-
|
13
|
-
class Node:
|
14
|
-
def __init__(self, value: str) -> None:
|
15
|
-
self.value = value
|
16
|
-
|
17
|
-
def __str__(self) -> str:
|
18
|
-
return self.value
|
19
|
-
|
20
|
-
def __repr__(self) -> str:
|
21
|
-
return f"<{self.__class__.__name__}('{self}')>"
|
22
|
-
|
23
|
-
def serialize(self) -> str:
|
24
|
-
raise NotImplementedError
|
25
|
-
|
26
|
-
|
27
|
-
class Variable(Node):
|
28
|
-
def serialize(self) -> str:
|
29
|
-
return str(self)
|
30
|
-
|
31
|
-
|
32
|
-
class Value(Node):
|
33
|
-
def serialize(self) -> str:
|
34
|
-
return f'"{self}"'
|
35
|
-
|
36
|
-
|
37
|
-
class Op(Node):
|
38
|
-
def serialize(self) -> str:
|
39
|
-
return str(self)
|
40
|
-
|
41
|
-
|
42
|
-
MarkerVar = Union[Variable, Value]
|
43
|
-
MarkerItem = Tuple[MarkerVar, Op, MarkerVar]
|
44
|
-
# MarkerAtom = Union[MarkerItem, List["MarkerAtom"]]
|
45
|
-
# MarkerList = List[Union["MarkerList", MarkerAtom, str]]
|
46
|
-
# mypy does not support recursive type definition
|
47
|
-
# https://github.com/python/mypy/issues/731
|
48
|
-
MarkerAtom = Any
|
49
|
-
MarkerList = List[Any]
|
50
|
-
|
51
|
-
|
52
|
-
class ParsedRequirement(NamedTuple):
|
53
|
-
name: str
|
54
|
-
url: str
|
55
|
-
extras: List[str]
|
56
|
-
specifier: str
|
57
|
-
marker: Optional[MarkerList]
|
58
|
-
|
59
|
-
|
60
|
-
# --------------------------------------------------------------------------------------
|
61
|
-
# Recursive descent parser for dependency specifier
|
62
|
-
# --------------------------------------------------------------------------------------
|
63
|
-
def parse_requirement(source: str) -> ParsedRequirement:
|
64
|
-
return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
|
65
|
-
|
66
|
-
|
67
|
-
def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement:
|
68
|
-
"""
|
69
|
-
requirement = WS? IDENTIFIER WS? extras WS? requirement_details
|
70
|
-
"""
|
71
|
-
tokenizer.consume("WS")
|
72
|
-
|
73
|
-
name_token = tokenizer.expect(
|
74
|
-
"IDENTIFIER", expected="package name at the start of dependency specifier"
|
75
|
-
)
|
76
|
-
name = name_token.text
|
77
|
-
tokenizer.consume("WS")
|
78
|
-
|
79
|
-
extras = _parse_extras(tokenizer)
|
80
|
-
tokenizer.consume("WS")
|
81
|
-
|
82
|
-
url, specifier, marker = _parse_requirement_details(tokenizer)
|
83
|
-
tokenizer.expect("END", expected="end of dependency specifier")
|
84
|
-
|
85
|
-
return ParsedRequirement(name, url, extras, specifier, marker)
|
86
|
-
|
87
|
-
|
88
|
-
def _parse_requirement_details(
|
89
|
-
tokenizer: Tokenizer,
|
90
|
-
) -> Tuple[str, str, Optional[MarkerList]]:
|
91
|
-
"""
|
92
|
-
requirement_details = AT URL (WS requirement_marker?)?
|
93
|
-
| specifier WS? (requirement_marker)?
|
94
|
-
"""
|
95
|
-
|
96
|
-
specifier = ""
|
97
|
-
url = ""
|
98
|
-
marker = None
|
99
|
-
|
100
|
-
if tokenizer.check("AT"):
|
101
|
-
tokenizer.read()
|
102
|
-
tokenizer.consume("WS")
|
103
|
-
|
104
|
-
url_start = tokenizer.position
|
105
|
-
url = tokenizer.expect("URL", expected="URL after @").text
|
106
|
-
if tokenizer.check("END", peek=True):
|
107
|
-
return (url, specifier, marker)
|
108
|
-
|
109
|
-
tokenizer.expect("WS", expected="whitespace after URL")
|
110
|
-
|
111
|
-
# The input might end after whitespace.
|
112
|
-
if tokenizer.check("END", peek=True):
|
113
|
-
return (url, specifier, marker)
|
114
|
-
|
115
|
-
marker = _parse_requirement_marker(
|
116
|
-
tokenizer, span_start=url_start, after="URL and whitespace"
|
117
|
-
)
|
118
|
-
else:
|
119
|
-
specifier_start = tokenizer.position
|
120
|
-
specifier = _parse_specifier(tokenizer)
|
121
|
-
tokenizer.consume("WS")
|
122
|
-
|
123
|
-
if tokenizer.check("END", peek=True):
|
124
|
-
return (url, specifier, marker)
|
125
|
-
|
126
|
-
marker = _parse_requirement_marker(
|
127
|
-
tokenizer,
|
128
|
-
span_start=specifier_start,
|
129
|
-
after=(
|
130
|
-
"version specifier"
|
131
|
-
if specifier
|
132
|
-
else "name and no valid version specifier"
|
133
|
-
),
|
134
|
-
)
|
135
|
-
|
136
|
-
return (url, specifier, marker)
|
137
|
-
|
138
|
-
|
139
|
-
def _parse_requirement_marker(
|
140
|
-
tokenizer: Tokenizer, *, span_start: int, after: str
|
141
|
-
) -> MarkerList:
|
142
|
-
"""
|
143
|
-
requirement_marker = SEMICOLON marker WS?
|
144
|
-
"""
|
145
|
-
|
146
|
-
if not tokenizer.check("SEMICOLON"):
|
147
|
-
tokenizer.raise_syntax_error(
|
148
|
-
f"Expected end or semicolon (after {after})",
|
149
|
-
span_start=span_start,
|
150
|
-
)
|
151
|
-
tokenizer.read()
|
152
|
-
|
153
|
-
marker = _parse_marker(tokenizer)
|
154
|
-
tokenizer.consume("WS")
|
155
|
-
|
156
|
-
return marker
|
157
|
-
|
158
|
-
|
159
|
-
def _parse_extras(tokenizer: Tokenizer) -> List[str]:
|
160
|
-
"""
|
161
|
-
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
|
162
|
-
"""
|
163
|
-
if not tokenizer.check("LEFT_BRACKET", peek=True):
|
164
|
-
return []
|
165
|
-
|
166
|
-
with tokenizer.enclosing_tokens(
|
167
|
-
"LEFT_BRACKET",
|
168
|
-
"RIGHT_BRACKET",
|
169
|
-
around="extras",
|
170
|
-
):
|
171
|
-
tokenizer.consume("WS")
|
172
|
-
extras = _parse_extras_list(tokenizer)
|
173
|
-
tokenizer.consume("WS")
|
174
|
-
|
175
|
-
return extras
|
176
|
-
|
177
|
-
|
178
|
-
def _parse_extras_list(tokenizer: Tokenizer) -> List[str]:
|
179
|
-
"""
|
180
|
-
extras_list = identifier (wsp* ',' wsp* identifier)*
|
181
|
-
"""
|
182
|
-
extras: List[str] = []
|
183
|
-
|
184
|
-
if not tokenizer.check("IDENTIFIER"):
|
185
|
-
return extras
|
186
|
-
|
187
|
-
extras.append(tokenizer.read().text)
|
188
|
-
|
189
|
-
while True:
|
190
|
-
tokenizer.consume("WS")
|
191
|
-
if tokenizer.check("IDENTIFIER", peek=True):
|
192
|
-
tokenizer.raise_syntax_error("Expected comma between extra names")
|
193
|
-
elif not tokenizer.check("COMMA"):
|
194
|
-
break
|
195
|
-
|
196
|
-
tokenizer.read()
|
197
|
-
tokenizer.consume("WS")
|
198
|
-
|
199
|
-
extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma")
|
200
|
-
extras.append(extra_token.text)
|
201
|
-
|
202
|
-
return extras
|
203
|
-
|
204
|
-
|
205
|
-
def _parse_specifier(tokenizer: Tokenizer) -> str:
|
206
|
-
"""
|
207
|
-
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
|
208
|
-
| WS? version_many WS?
|
209
|
-
"""
|
210
|
-
with tokenizer.enclosing_tokens(
|
211
|
-
"LEFT_PARENTHESIS",
|
212
|
-
"RIGHT_PARENTHESIS",
|
213
|
-
around="version specifier",
|
214
|
-
):
|
215
|
-
tokenizer.consume("WS")
|
216
|
-
parsed_specifiers = _parse_version_many(tokenizer)
|
217
|
-
tokenizer.consume("WS")
|
218
|
-
|
219
|
-
return parsed_specifiers
|
220
|
-
|
221
|
-
|
222
|
-
def _parse_version_many(tokenizer: Tokenizer) -> str:
|
223
|
-
"""
|
224
|
-
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
|
225
|
-
"""
|
226
|
-
parsed_specifiers = ""
|
227
|
-
while tokenizer.check("SPECIFIER"):
|
228
|
-
span_start = tokenizer.position
|
229
|
-
parsed_specifiers += tokenizer.read().text
|
230
|
-
if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True):
|
231
|
-
tokenizer.raise_syntax_error(
|
232
|
-
".* suffix can only be used with `==` or `!=` operators",
|
233
|
-
span_start=span_start,
|
234
|
-
span_end=tokenizer.position + 1,
|
235
|
-
)
|
236
|
-
if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True):
|
237
|
-
tokenizer.raise_syntax_error(
|
238
|
-
"Local version label can only be used with `==` or `!=` operators",
|
239
|
-
span_start=span_start,
|
240
|
-
span_end=tokenizer.position,
|
241
|
-
)
|
242
|
-
tokenizer.consume("WS")
|
243
|
-
if not tokenizer.check("COMMA"):
|
244
|
-
break
|
245
|
-
parsed_specifiers += tokenizer.read().text
|
246
|
-
tokenizer.consume("WS")
|
247
|
-
|
248
|
-
return parsed_specifiers
|
249
|
-
|
250
|
-
|
251
|
-
# --------------------------------------------------------------------------------------
|
252
|
-
# Recursive descent parser for marker expression
|
253
|
-
# --------------------------------------------------------------------------------------
|
254
|
-
def parse_marker(source: str) -> MarkerList:
|
255
|
-
return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES))
|
256
|
-
|
257
|
-
|
258
|
-
def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList:
|
259
|
-
retval = _parse_marker(tokenizer)
|
260
|
-
tokenizer.expect("END", expected="end of marker expression")
|
261
|
-
return retval
|
262
|
-
|
263
|
-
|
264
|
-
def _parse_marker(tokenizer: Tokenizer) -> MarkerList:
|
265
|
-
"""
|
266
|
-
marker = marker_atom (BOOLOP marker_atom)+
|
267
|
-
"""
|
268
|
-
expression = [_parse_marker_atom(tokenizer)]
|
269
|
-
while tokenizer.check("BOOLOP"):
|
270
|
-
token = tokenizer.read()
|
271
|
-
expr_right = _parse_marker_atom(tokenizer)
|
272
|
-
expression.extend((token.text, expr_right))
|
273
|
-
return expression
|
274
|
-
|
275
|
-
|
276
|
-
def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom:
|
277
|
-
"""
|
278
|
-
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
|
279
|
-
| WS? marker_item WS?
|
280
|
-
"""
|
281
|
-
|
282
|
-
tokenizer.consume("WS")
|
283
|
-
if tokenizer.check("LEFT_PARENTHESIS", peek=True):
|
284
|
-
with tokenizer.enclosing_tokens(
|
285
|
-
"LEFT_PARENTHESIS",
|
286
|
-
"RIGHT_PARENTHESIS",
|
287
|
-
around="marker expression",
|
288
|
-
):
|
289
|
-
tokenizer.consume("WS")
|
290
|
-
marker: MarkerAtom = _parse_marker(tokenizer)
|
291
|
-
tokenizer.consume("WS")
|
292
|
-
else:
|
293
|
-
marker = _parse_marker_item(tokenizer)
|
294
|
-
tokenizer.consume("WS")
|
295
|
-
return marker
|
296
|
-
|
297
|
-
|
298
|
-
def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem:
|
299
|
-
"""
|
300
|
-
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
|
301
|
-
"""
|
302
|
-
tokenizer.consume("WS")
|
303
|
-
marker_var_left = _parse_marker_var(tokenizer)
|
304
|
-
tokenizer.consume("WS")
|
305
|
-
marker_op = _parse_marker_op(tokenizer)
|
306
|
-
tokenizer.consume("WS")
|
307
|
-
marker_var_right = _parse_marker_var(tokenizer)
|
308
|
-
tokenizer.consume("WS")
|
309
|
-
return (marker_var_left, marker_op, marker_var_right)
|
310
|
-
|
311
|
-
|
312
|
-
def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar:
|
313
|
-
"""
|
314
|
-
marker_var = VARIABLE | QUOTED_STRING
|
315
|
-
"""
|
316
|
-
if tokenizer.check("VARIABLE"):
|
317
|
-
return process_env_var(tokenizer.read().text.replace(".", "_"))
|
318
|
-
elif tokenizer.check("QUOTED_STRING"):
|
319
|
-
return process_python_str(tokenizer.read().text)
|
320
|
-
else:
|
321
|
-
tokenizer.raise_syntax_error(
|
322
|
-
message="Expected a marker variable or quoted string"
|
323
|
-
)
|
324
|
-
|
325
|
-
|
326
|
-
def process_env_var(env_var: str) -> Variable:
|
327
|
-
if env_var in ("platform_python_implementation", "python_implementation"):
|
328
|
-
return Variable("platform_python_implementation")
|
329
|
-
else:
|
330
|
-
return Variable(env_var)
|
331
|
-
|
332
|
-
|
333
|
-
def process_python_str(python_str: str) -> Value:
|
334
|
-
value = ast.literal_eval(python_str)
|
335
|
-
return Value(str(value))
|
336
|
-
|
337
|
-
|
338
|
-
def _parse_marker_op(tokenizer: Tokenizer) -> Op:
|
339
|
-
"""
|
340
|
-
marker_op = IN | NOT IN | OP
|
341
|
-
"""
|
342
|
-
if tokenizer.check("IN"):
|
343
|
-
tokenizer.read()
|
344
|
-
return Op("in")
|
345
|
-
elif tokenizer.check("NOT"):
|
346
|
-
tokenizer.read()
|
347
|
-
tokenizer.expect("WS", expected="whitespace after 'not'")
|
348
|
-
tokenizer.expect("IN", expected="'in' after 'not'")
|
349
|
-
return Op("not in")
|
350
|
-
elif tokenizer.check("OP"):
|
351
|
-
return Op(tokenizer.read().text)
|
352
|
-
else:
|
353
|
-
return tokenizer.raise_syntax_error(
|
354
|
-
"Expected marker operator, one of "
|
355
|
-
"<=, <, !=, ==, >=, >, ~=, ===, in, not in"
|
356
|
-
)
|