py2docfx 0.1.16.dev2064350__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/convert_prepare/environment.py +1 -3
- py2docfx/convert_prepare/get_source.py +1 -6
- py2docfx/convert_prepare/package_info.py +1 -1
- 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/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/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/specifiers.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +39 -0
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +6 -7
- 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/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/urllib3/_version.py +2 -2
- 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/poolmanager.py +17 -1
- 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 +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +1 -1
- 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/rest/_aiohttp.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +13 -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 +1 -1
- 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/certifi/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +1 -32
- 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/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 +14 -5
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +2 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +49 -45
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +2 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +10 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +3 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +8 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +3 -2
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +6 -4
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +9 -3
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +7 -6
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +2 -1
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +79 -12
- 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/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_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/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/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/oauth2/id_token.py +12 -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/error_details_pb2.py +29 -23
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +41 -2
- 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 +1 -1
- py2docfx/venv/venv1/Lib/site-packages/packaging/_elffile.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/packaging/_manylinux.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/packaging/_parser.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/packaging/_tokenizer.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/packaging/markers.py +53 -22
- py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/packaging/specifiers.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/packaging/tags.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +6 -7
- 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 -1
- 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/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 +357 -703
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +2 -2
- 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/poolmanager.py +17 -1
- 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 +1 -1
- {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/METADATA +1 -1
- {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/RECORD +374 -372
- {py2docfx-0.1.16.dev2064350.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/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-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/top_level.txt +0 -0
@@ -1,267 +0,0 @@
|
|
1
|
-
import http.client
|
2
|
-
import re
|
3
|
-
import urllib.error
|
4
|
-
import urllib.request
|
5
|
-
from inspect import cleandoc
|
6
|
-
|
7
|
-
import pytest
|
8
|
-
|
9
|
-
import setuptools.package_index
|
10
|
-
|
11
|
-
import distutils.errors
|
12
|
-
|
13
|
-
|
14
|
-
class TestPackageIndex:
|
15
|
-
def test_regex(self):
|
16
|
-
hash_url = 'http://other_url?:action=show_md5&'
|
17
|
-
hash_url += 'digest=0123456789abcdef0123456789abcdef'
|
18
|
-
doc = """
|
19
|
-
<a href="http://some_url">Name</a>
|
20
|
-
(<a title="MD5 hash"
|
21
|
-
href="{hash_url}">md5</a>)
|
22
|
-
""".lstrip().format(**locals())
|
23
|
-
assert setuptools.package_index.PYPI_MD5.match(doc)
|
24
|
-
|
25
|
-
def test_bad_url_bad_port(self):
|
26
|
-
index = setuptools.package_index.PackageIndex()
|
27
|
-
url = 'http://127.0.0.1:0/nonesuch/test_package_index'
|
28
|
-
with pytest.raises(Exception, match=re.escape(url)):
|
29
|
-
v = index.open_url(url)
|
30
|
-
assert isinstance(v, urllib.error.HTTPError)
|
31
|
-
|
32
|
-
def test_bad_url_typo(self):
|
33
|
-
# issue 16
|
34
|
-
# easy_install inquant.contentmirror.plone breaks because of a typo
|
35
|
-
# in its home URL
|
36
|
-
index = setuptools.package_index.PackageIndex(hosts=('www.example.com',))
|
37
|
-
|
38
|
-
url = 'url:%20https://svn.plone.org/svn/collective/inquant.contentmirror.plone/trunk'
|
39
|
-
|
40
|
-
with pytest.raises(Exception, match=re.escape(url)):
|
41
|
-
v = index.open_url(url)
|
42
|
-
assert isinstance(v, urllib.error.HTTPError)
|
43
|
-
|
44
|
-
def test_bad_url_bad_status_line(self):
|
45
|
-
index = setuptools.package_index.PackageIndex(hosts=('www.example.com',))
|
46
|
-
|
47
|
-
def _urlopen(*args):
|
48
|
-
raise http.client.BadStatusLine('line')
|
49
|
-
|
50
|
-
index.opener = _urlopen
|
51
|
-
url = 'http://example.com'
|
52
|
-
with pytest.raises(Exception, match=r'line'):
|
53
|
-
index.open_url(url)
|
54
|
-
|
55
|
-
def test_bad_url_double_scheme(self):
|
56
|
-
"""
|
57
|
-
A bad URL with a double scheme should raise a DistutilsError.
|
58
|
-
"""
|
59
|
-
index = setuptools.package_index.PackageIndex(hosts=('www.example.com',))
|
60
|
-
|
61
|
-
# issue 20
|
62
|
-
url = 'http://http://svn.pythonpaste.org/Paste/wphp/trunk'
|
63
|
-
try:
|
64
|
-
index.open_url(url)
|
65
|
-
except distutils.errors.DistutilsError as error:
|
66
|
-
msg = str(error)
|
67
|
-
assert (
|
68
|
-
'nonnumeric port' in msg
|
69
|
-
or 'getaddrinfo failed' in msg
|
70
|
-
or 'Name or service not known' in msg
|
71
|
-
)
|
72
|
-
return
|
73
|
-
raise RuntimeError("Did not raise")
|
74
|
-
|
75
|
-
def test_url_ok(self):
|
76
|
-
index = setuptools.package_index.PackageIndex(hosts=('www.example.com',))
|
77
|
-
url = 'file:///tmp/test_package_index'
|
78
|
-
assert index.url_ok(url, True)
|
79
|
-
|
80
|
-
def test_parse_bdist_wininst(self):
|
81
|
-
parse = setuptools.package_index.parse_bdist_wininst
|
82
|
-
|
83
|
-
actual = parse('reportlab-2.5.win32-py2.4.exe')
|
84
|
-
expected = 'reportlab-2.5', '2.4', 'win32'
|
85
|
-
assert actual == expected
|
86
|
-
|
87
|
-
actual = parse('reportlab-2.5.win32.exe')
|
88
|
-
expected = 'reportlab-2.5', None, 'win32'
|
89
|
-
assert actual == expected
|
90
|
-
|
91
|
-
actual = parse('reportlab-2.5.win-amd64-py2.7.exe')
|
92
|
-
expected = 'reportlab-2.5', '2.7', 'win-amd64'
|
93
|
-
assert actual == expected
|
94
|
-
|
95
|
-
actual = parse('reportlab-2.5.win-amd64.exe')
|
96
|
-
expected = 'reportlab-2.5', None, 'win-amd64'
|
97
|
-
assert actual == expected
|
98
|
-
|
99
|
-
def test__vcs_split_rev_from_url(self):
|
100
|
-
"""
|
101
|
-
Test the basic usage of _vcs_split_rev_from_url
|
102
|
-
"""
|
103
|
-
vsrfu = setuptools.package_index.PackageIndex._vcs_split_rev_from_url
|
104
|
-
url, rev = vsrfu('https://example.com/bar@2995')
|
105
|
-
assert url == 'https://example.com/bar'
|
106
|
-
assert rev == '2995'
|
107
|
-
|
108
|
-
def test_local_index(self, tmpdir):
|
109
|
-
"""
|
110
|
-
local_open should be able to read an index from the file system.
|
111
|
-
"""
|
112
|
-
index_file = tmpdir / 'index.html'
|
113
|
-
with index_file.open('w') as f:
|
114
|
-
f.write('<div>content</div>')
|
115
|
-
url = 'file:' + urllib.request.pathname2url(str(tmpdir)) + '/'
|
116
|
-
res = setuptools.package_index.local_open(url)
|
117
|
-
assert 'content' in res.read()
|
118
|
-
|
119
|
-
def test_egg_fragment(self):
|
120
|
-
"""
|
121
|
-
EGG fragments must comply to PEP 440
|
122
|
-
"""
|
123
|
-
epoch = [
|
124
|
-
'',
|
125
|
-
'1!',
|
126
|
-
]
|
127
|
-
releases = [
|
128
|
-
'0',
|
129
|
-
'0.0',
|
130
|
-
'0.0.0',
|
131
|
-
]
|
132
|
-
pre = [
|
133
|
-
'a0',
|
134
|
-
'b0',
|
135
|
-
'rc0',
|
136
|
-
]
|
137
|
-
post = ['.post0']
|
138
|
-
dev = [
|
139
|
-
'.dev0',
|
140
|
-
]
|
141
|
-
local = [
|
142
|
-
('', ''),
|
143
|
-
('+ubuntu.0', '+ubuntu.0'),
|
144
|
-
('+ubuntu-0', '+ubuntu.0'),
|
145
|
-
('+ubuntu_0', '+ubuntu.0'),
|
146
|
-
]
|
147
|
-
versions = [
|
148
|
-
[''.join([e, r, p, loc]) for loc in locs]
|
149
|
-
for e in epoch
|
150
|
-
for r in releases
|
151
|
-
for p in sum([pre, post, dev], [''])
|
152
|
-
for locs in local
|
153
|
-
]
|
154
|
-
for v, vc in versions:
|
155
|
-
dists = list(
|
156
|
-
setuptools.package_index.distros_for_url(
|
157
|
-
'http://example.com/example-foo.zip#egg=example-foo-' + v
|
158
|
-
)
|
159
|
-
)
|
160
|
-
assert dists[0].version == ''
|
161
|
-
assert dists[1].version == vc
|
162
|
-
|
163
|
-
def test_download_git_with_rev(self, tmp_path, fp):
|
164
|
-
url = 'git+https://github.example/group/project@master#egg=foo'
|
165
|
-
index = setuptools.package_index.PackageIndex()
|
166
|
-
|
167
|
-
expected_dir = tmp_path / 'project@master'
|
168
|
-
fp.register([
|
169
|
-
'git',
|
170
|
-
'clone',
|
171
|
-
'--quiet',
|
172
|
-
'https://github.example/group/project',
|
173
|
-
expected_dir,
|
174
|
-
])
|
175
|
-
fp.register(['git', '-C', expected_dir, 'checkout', '--quiet', 'master'])
|
176
|
-
|
177
|
-
result = index.download(url, tmp_path)
|
178
|
-
|
179
|
-
assert result == str(expected_dir)
|
180
|
-
assert len(fp.calls) == 2
|
181
|
-
|
182
|
-
def test_download_git_no_rev(self, tmp_path, fp):
|
183
|
-
url = 'git+https://github.example/group/project#egg=foo'
|
184
|
-
index = setuptools.package_index.PackageIndex()
|
185
|
-
|
186
|
-
expected_dir = tmp_path / 'project'
|
187
|
-
fp.register([
|
188
|
-
'git',
|
189
|
-
'clone',
|
190
|
-
'--quiet',
|
191
|
-
'https://github.example/group/project',
|
192
|
-
expected_dir,
|
193
|
-
])
|
194
|
-
index.download(url, tmp_path)
|
195
|
-
|
196
|
-
def test_download_svn(self, tmp_path):
|
197
|
-
url = 'svn+https://svn.example/project#egg=foo'
|
198
|
-
index = setuptools.package_index.PackageIndex()
|
199
|
-
|
200
|
-
msg = r".*SVN download is not supported.*"
|
201
|
-
with pytest.raises(distutils.errors.DistutilsError, match=msg):
|
202
|
-
index.download(url, tmp_path)
|
203
|
-
|
204
|
-
|
205
|
-
class TestContentCheckers:
|
206
|
-
def test_md5(self):
|
207
|
-
checker = setuptools.package_index.HashChecker.from_url(
|
208
|
-
'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
|
209
|
-
)
|
210
|
-
checker.feed('You should probably not be using MD5'.encode('ascii'))
|
211
|
-
assert checker.hash.hexdigest() == 'f12895fdffbd45007040d2e44df98478'
|
212
|
-
assert checker.is_valid()
|
213
|
-
|
214
|
-
def test_other_fragment(self):
|
215
|
-
"Content checks should succeed silently if no hash is present"
|
216
|
-
checker = setuptools.package_index.HashChecker.from_url(
|
217
|
-
'http://foo/bar#something%20completely%20different'
|
218
|
-
)
|
219
|
-
checker.feed('anything'.encode('ascii'))
|
220
|
-
assert checker.is_valid()
|
221
|
-
|
222
|
-
def test_blank_md5(self):
|
223
|
-
"Content checks should succeed if a hash is empty"
|
224
|
-
checker = setuptools.package_index.HashChecker.from_url('http://foo/bar#md5=')
|
225
|
-
checker.feed('anything'.encode('ascii'))
|
226
|
-
assert checker.is_valid()
|
227
|
-
|
228
|
-
def test_get_hash_name_md5(self):
|
229
|
-
checker = setuptools.package_index.HashChecker.from_url(
|
230
|
-
'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
|
231
|
-
)
|
232
|
-
assert checker.hash_name == 'md5'
|
233
|
-
|
234
|
-
def test_report(self):
|
235
|
-
checker = setuptools.package_index.HashChecker.from_url(
|
236
|
-
'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478'
|
237
|
-
)
|
238
|
-
rep = checker.report(lambda x: x, 'My message about %s')
|
239
|
-
assert rep == 'My message about md5'
|
240
|
-
|
241
|
-
|
242
|
-
class TestPyPIConfig:
|
243
|
-
def test_percent_in_password(self, tmp_home_dir):
|
244
|
-
pypirc = tmp_home_dir / '.pypirc'
|
245
|
-
pypirc.write_text(
|
246
|
-
cleandoc(
|
247
|
-
"""
|
248
|
-
[pypi]
|
249
|
-
repository=https://pypi.org
|
250
|
-
username=jaraco
|
251
|
-
password=pity%
|
252
|
-
"""
|
253
|
-
),
|
254
|
-
encoding="utf-8",
|
255
|
-
)
|
256
|
-
cfg = setuptools.package_index.PyPIConfig()
|
257
|
-
cred = cfg.creds_by_repository['https://pypi.org']
|
258
|
-
assert cred.username == 'jaraco'
|
259
|
-
assert cred.password == 'pity%'
|
260
|
-
|
261
|
-
|
262
|
-
@pytest.mark.timeout(1)
|
263
|
-
def test_REL_DoS():
|
264
|
-
"""
|
265
|
-
REL should not hang on a contrived attack string.
|
266
|
-
"""
|
267
|
-
setuptools.package_index.REL.search('< rel=' + ' ' * 2**12)
|
@@ -1,134 +0,0 @@
|
|
1
|
-
"""develop tests"""
|
2
|
-
|
3
|
-
import os
|
4
|
-
import types
|
5
|
-
|
6
|
-
import pytest
|
7
|
-
|
8
|
-
import pkg_resources
|
9
|
-
import setuptools.sandbox
|
10
|
-
|
11
|
-
|
12
|
-
class TestSandbox:
|
13
|
-
def test_devnull(self, tmpdir):
|
14
|
-
with setuptools.sandbox.DirectorySandbox(str(tmpdir)):
|
15
|
-
self._file_writer(os.devnull)
|
16
|
-
|
17
|
-
@staticmethod
|
18
|
-
def _file_writer(path):
|
19
|
-
def do_write():
|
20
|
-
with open(path, 'w', encoding="utf-8") as f:
|
21
|
-
f.write('xxx')
|
22
|
-
|
23
|
-
return do_write
|
24
|
-
|
25
|
-
def test_setup_py_with_BOM(self):
|
26
|
-
"""
|
27
|
-
It should be possible to execute a setup.py with a Byte Order Mark
|
28
|
-
"""
|
29
|
-
target = pkg_resources.resource_filename(__name__, 'script-with-bom.py')
|
30
|
-
namespace = types.ModuleType('namespace')
|
31
|
-
setuptools.sandbox._execfile(target, vars(namespace))
|
32
|
-
assert namespace.result == 'passed'
|
33
|
-
|
34
|
-
def test_setup_py_with_CRLF(self, tmpdir):
|
35
|
-
setup_py = tmpdir / 'setup.py'
|
36
|
-
with setup_py.open('wb') as stream:
|
37
|
-
stream.write(b'"degenerate script"\r\n')
|
38
|
-
setuptools.sandbox._execfile(str(setup_py), globals())
|
39
|
-
|
40
|
-
|
41
|
-
class TestExceptionSaver:
|
42
|
-
def test_exception_trapped(self):
|
43
|
-
with setuptools.sandbox.ExceptionSaver():
|
44
|
-
raise ValueError("details")
|
45
|
-
|
46
|
-
def test_exception_resumed(self):
|
47
|
-
with setuptools.sandbox.ExceptionSaver() as saved_exc:
|
48
|
-
raise ValueError("details")
|
49
|
-
|
50
|
-
with pytest.raises(ValueError) as caught:
|
51
|
-
saved_exc.resume()
|
52
|
-
|
53
|
-
assert isinstance(caught.value, ValueError)
|
54
|
-
assert str(caught.value) == 'details'
|
55
|
-
|
56
|
-
def test_exception_reconstructed(self):
|
57
|
-
orig_exc = ValueError("details")
|
58
|
-
|
59
|
-
with setuptools.sandbox.ExceptionSaver() as saved_exc:
|
60
|
-
raise orig_exc
|
61
|
-
|
62
|
-
with pytest.raises(ValueError) as caught:
|
63
|
-
saved_exc.resume()
|
64
|
-
|
65
|
-
assert isinstance(caught.value, ValueError)
|
66
|
-
assert caught.value is not orig_exc
|
67
|
-
|
68
|
-
def test_no_exception_passes_quietly(self):
|
69
|
-
with setuptools.sandbox.ExceptionSaver() as saved_exc:
|
70
|
-
pass
|
71
|
-
|
72
|
-
saved_exc.resume()
|
73
|
-
|
74
|
-
def test_unpickleable_exception(self):
|
75
|
-
class CantPickleThis(Exception):
|
76
|
-
"This Exception is unpickleable because it's not in globals"
|
77
|
-
|
78
|
-
def __repr__(self) -> str:
|
79
|
-
return f'CantPickleThis{self.args!r}'
|
80
|
-
|
81
|
-
with setuptools.sandbox.ExceptionSaver() as saved_exc:
|
82
|
-
raise CantPickleThis('detail')
|
83
|
-
|
84
|
-
with pytest.raises(setuptools.sandbox.UnpickleableException) as caught:
|
85
|
-
saved_exc.resume()
|
86
|
-
|
87
|
-
assert str(caught.value) == "CantPickleThis('detail',)"
|
88
|
-
|
89
|
-
def test_unpickleable_exception_when_hiding_setuptools(self):
|
90
|
-
"""
|
91
|
-
As revealed in #440, an infinite recursion can occur if an unpickleable
|
92
|
-
exception while setuptools is hidden. Ensure this doesn't happen.
|
93
|
-
"""
|
94
|
-
|
95
|
-
class ExceptionUnderTest(Exception):
|
96
|
-
"""
|
97
|
-
An unpickleable exception (not in globals).
|
98
|
-
"""
|
99
|
-
|
100
|
-
with pytest.raises(setuptools.sandbox.UnpickleableException) as caught:
|
101
|
-
with setuptools.sandbox.save_modules():
|
102
|
-
setuptools.sandbox.hide_setuptools()
|
103
|
-
raise ExceptionUnderTest
|
104
|
-
|
105
|
-
(msg,) = caught.value.args
|
106
|
-
assert msg == 'ExceptionUnderTest()'
|
107
|
-
|
108
|
-
def test_sandbox_violation_raised_hiding_setuptools(self, tmpdir):
|
109
|
-
"""
|
110
|
-
When in a sandbox with setuptools hidden, a SandboxViolation
|
111
|
-
should reflect a proper exception and not be wrapped in
|
112
|
-
an UnpickleableException.
|
113
|
-
"""
|
114
|
-
|
115
|
-
def write_file():
|
116
|
-
"Trigger a SandboxViolation by writing outside the sandbox"
|
117
|
-
with open('/etc/foo', 'w', encoding="utf-8"):
|
118
|
-
pass
|
119
|
-
|
120
|
-
with pytest.raises(setuptools.sandbox.SandboxViolation) as caught:
|
121
|
-
with setuptools.sandbox.save_modules():
|
122
|
-
setuptools.sandbox.hide_setuptools()
|
123
|
-
with setuptools.sandbox.DirectorySandbox(str(tmpdir)):
|
124
|
-
write_file()
|
125
|
-
|
126
|
-
cmd, args, kwargs = caught.value.args
|
127
|
-
assert cmd == 'open'
|
128
|
-
assert args == ('/etc/foo', 'w')
|
129
|
-
assert kwargs == {"encoding": "utf-8"}
|
130
|
-
|
131
|
-
msg = str(caught.value)
|
132
|
-
assert 'open' in msg
|
133
|
-
assert "('/etc/foo', 'w')" in msg
|
134
|
-
assert "{'encoding': 'utf-8'}" in msg
|
@@ -1,119 +0,0 @@
|
|
1
|
-
# ------------------------------------
|
2
|
-
# Copyright (c) Microsoft Corporation.
|
3
|
-
# Licensed under the MIT License.
|
4
|
-
# ------------------------------------
|
5
|
-
import logging
|
6
|
-
import os
|
7
|
-
from typing import Any, Optional, cast
|
8
|
-
|
9
|
-
from azure.core.credentials import AccessToken, AccessTokenInfo, TokenRequestOptions, SupportsTokenInfo, TokenCredential
|
10
|
-
from .chained import ChainedTokenCredential
|
11
|
-
from .environment import EnvironmentCredential
|
12
|
-
from .managed_identity import ManagedIdentityCredential
|
13
|
-
from .._constants import EnvironmentVariables
|
14
|
-
from .._internal import get_default_authority, normalize_authority
|
15
|
-
|
16
|
-
_LOGGER = logging.getLogger(__name__)
|
17
|
-
|
18
|
-
|
19
|
-
class AzureApplicationCredential(ChainedTokenCredential):
|
20
|
-
"""A credential for Microsoft Entra applications.
|
21
|
-
|
22
|
-
This credential is designed for applications deployed to Azure (:class:`~azure.identity.DefaultAzureCredential` is
|
23
|
-
better suited to local development). It authenticates service principals and managed identities.
|
24
|
-
|
25
|
-
For service principal authentication, set these environment variables to identify a principal:
|
26
|
-
|
27
|
-
- **AZURE_TENANT_ID**: ID of the service principal's tenant. Also called its "directory" ID.
|
28
|
-
- **AZURE_CLIENT_ID**: the service principal's client ID
|
29
|
-
|
30
|
-
And one of these to authenticate that principal:
|
31
|
-
|
32
|
-
- **AZURE_CLIENT_SECRET**: one of the service principal's client secrets
|
33
|
-
|
34
|
-
**or**
|
35
|
-
|
36
|
-
- **AZURE_CLIENT_CERTIFICATE_PATH**: path to a PEM-encoded certificate file including the private key. The
|
37
|
-
certificate must not be password-protected.
|
38
|
-
|
39
|
-
See `Azure CLI documentation <https://learn.microsoft.com/cli/azure/create-an-azure-service-principal-azure-cli>`_
|
40
|
-
for more information about creating and managing service principals.
|
41
|
-
|
42
|
-
When this environment configuration is incomplete, the credential will attempt to authenticate a managed identity.
|
43
|
-
See `Microsoft Entra ID documentation
|
44
|
-
<https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/overview>`__ for an overview
|
45
|
-
of managed identities.
|
46
|
-
|
47
|
-
:keyword str authority: Authority of a Microsoft Entra endpoint, for example "login.microsoftonline.com",
|
48
|
-
the authority for Azure Public Cloud, which is the default when no value is given for this keyword argument or
|
49
|
-
environment variable AZURE_AUTHORITY_HOST. :class:`~azure.identity.AzureAuthorityHosts` defines authorities for
|
50
|
-
other clouds. Authority configuration applies only to service principal authentication.
|
51
|
-
:keyword str managed_identity_client_id: The client ID of a user-assigned managed identity. Defaults to the value
|
52
|
-
of the environment variable AZURE_CLIENT_ID, if any. If not specified, a system-assigned identity will be used.
|
53
|
-
"""
|
54
|
-
|
55
|
-
def __init__(self, **kwargs: Any) -> None:
|
56
|
-
authority = kwargs.pop("authority", None)
|
57
|
-
authority = normalize_authority(authority) if authority else get_default_authority()
|
58
|
-
managed_identity_client_id = kwargs.pop(
|
59
|
-
"managed_identity_client_id", os.environ.get(EnvironmentVariables.AZURE_CLIENT_ID)
|
60
|
-
)
|
61
|
-
super(AzureApplicationCredential, self).__init__(
|
62
|
-
EnvironmentCredential(authority=authority, **kwargs),
|
63
|
-
ManagedIdentityCredential(client_id=managed_identity_client_id, **kwargs),
|
64
|
-
)
|
65
|
-
|
66
|
-
def get_token(
|
67
|
-
self, *scopes: str, claims: Optional[str] = None, tenant_id: Optional[str] = None, **kwargs: Any
|
68
|
-
) -> AccessToken:
|
69
|
-
"""Request an access token for `scopes`.
|
70
|
-
|
71
|
-
This method is called automatically by Azure SDK clients.
|
72
|
-
|
73
|
-
:param str scopes: desired scopes for the access token. This method requires at least one scope.
|
74
|
-
For more information about scopes, see
|
75
|
-
https://learn.microsoft.com/entra/identity-platform/scopes-oidc.
|
76
|
-
:keyword str claims: additional claims required in the token, such as those returned in a resource provider's
|
77
|
-
claims challenge following an authorization failure.
|
78
|
-
:keyword str tenant_id: optional tenant to include in the token request.
|
79
|
-
|
80
|
-
:return: An access token with the desired scopes.
|
81
|
-
:rtype: ~azure.core.credentials.AccessToken
|
82
|
-
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
83
|
-
`message` attribute listing each authentication attempt and its error message.
|
84
|
-
"""
|
85
|
-
if self._successful_credential:
|
86
|
-
token = cast(TokenCredential, self._successful_credential).get_token(
|
87
|
-
*scopes, claims=claims, tenant_id=tenant_id, **kwargs
|
88
|
-
)
|
89
|
-
_LOGGER.info(
|
90
|
-
"%s acquired a token from %s", self.__class__.__name__, self._successful_credential.__class__.__name__
|
91
|
-
)
|
92
|
-
return token
|
93
|
-
|
94
|
-
return super(AzureApplicationCredential, self).get_token(*scopes, claims=claims, tenant_id=tenant_id, **kwargs)
|
95
|
-
|
96
|
-
def get_token_info(self, *scopes: str, options: Optional[TokenRequestOptions] = None) -> AccessTokenInfo:
|
97
|
-
"""Request an access token for `scopes`.
|
98
|
-
|
99
|
-
This is an alternative to `get_token` to enable certain scenarios that require additional properties
|
100
|
-
on the token. This method is called automatically by Azure SDK clients.
|
101
|
-
|
102
|
-
:param str scopes: desired scopes for the access token. This method requires at least one scope.
|
103
|
-
For more information about scopes, see https://learn.microsoft.com/entra/identity-platform/scopes-oidc.
|
104
|
-
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
105
|
-
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
106
|
-
|
107
|
-
:rtype: ~azure.core.credentials.AccessTokenInfo
|
108
|
-
:return: An AccessTokenInfo instance containing information about the token.
|
109
|
-
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
110
|
-
`message` attribute listing each authentication attempt and its error message.
|
111
|
-
"""
|
112
|
-
if self._successful_credential:
|
113
|
-
token_info = cast(SupportsTokenInfo, self._successful_credential).get_token_info(*scopes, options=options)
|
114
|
-
_LOGGER.info(
|
115
|
-
"%s acquired a token from %s", self.__class__.__name__, self._successful_credential.__class__.__name__
|
116
|
-
)
|
117
|
-
return token_info
|
118
|
-
|
119
|
-
return cast(SupportsTokenInfo, super()).get_token_info(*scopes, options=options)
|
@@ -1,121 +0,0 @@
|
|
1
|
-
# ------------------------------------
|
2
|
-
# Copyright (c) Microsoft Corporation.
|
3
|
-
# Licensed under the MIT License.
|
4
|
-
# ------------------------------------
|
5
|
-
import logging
|
6
|
-
import os
|
7
|
-
from typing import Optional, Any, cast
|
8
|
-
|
9
|
-
from azure.core.credentials import AccessToken, AccessTokenInfo, TokenRequestOptions
|
10
|
-
from azure.core.credentials_async import AsyncSupportsTokenInfo, AsyncTokenCredential
|
11
|
-
from .chained import ChainedTokenCredential
|
12
|
-
from .environment import EnvironmentCredential
|
13
|
-
from .managed_identity import ManagedIdentityCredential
|
14
|
-
from ..._constants import EnvironmentVariables
|
15
|
-
from ..._internal import get_default_authority, normalize_authority
|
16
|
-
|
17
|
-
_LOGGER = logging.getLogger(__name__)
|
18
|
-
|
19
|
-
|
20
|
-
class AzureApplicationCredential(ChainedTokenCredential):
|
21
|
-
"""A credential for Microsoft Entra applications.
|
22
|
-
|
23
|
-
This credential is designed for applications deployed to Azure (:class:`~azure.identity.aio.DefaultAzureCredential`
|
24
|
-
is better suited to local development). It authenticates service principals and managed identities.
|
25
|
-
|
26
|
-
For service principal authentication, set these environment variables to identify a principal:
|
27
|
-
|
28
|
-
- **AZURE_TENANT_ID**: ID of the service principal's tenant. Also called its "directory" ID.
|
29
|
-
- **AZURE_CLIENT_ID**: the service principal's client ID
|
30
|
-
|
31
|
-
And one of these to authenticate that principal:
|
32
|
-
|
33
|
-
- **AZURE_CLIENT_SECRET**: one of the service principal's client secrets
|
34
|
-
|
35
|
-
**or**
|
36
|
-
|
37
|
-
- **AZURE_CLIENT_CERTIFICATE_PATH**: path to a PEM-encoded certificate file including the private key. The
|
38
|
-
certificate must not be password-protected.
|
39
|
-
|
40
|
-
See `Azure CLI documentation <https://learn.microsoft.com/cli/azure/create-an-azure-service-principal-azure-cli>`_
|
41
|
-
for more information about creating and managing service principals.
|
42
|
-
|
43
|
-
When this environment configuration is incomplete, the credential will attempt to authenticate a managed identity.
|
44
|
-
See `Microsoft Entra ID documentation
|
45
|
-
<https://learn.microsoft.com/entra/identity/managed-identities-azure-resources/overview>`__ for an overview
|
46
|
-
of managed identities.
|
47
|
-
|
48
|
-
:keyword str authority: Authority of a Microsoft Entra endpoint, for example "login.microsoftonline.com",
|
49
|
-
the authority for Azure Public Cloud, which is the default when no value is given for this keyword argument or
|
50
|
-
environment variable AZURE_AUTHORITY_HOST. :class:`~azure.identity.AzureAuthorityHosts` defines authorities for
|
51
|
-
other clouds. Authority configuration applies only to service principal authentication.
|
52
|
-
:keyword str managed_identity_client_id: The client ID of a user-assigned managed identity. Defaults to the value
|
53
|
-
of the environment variable AZURE_CLIENT_ID, if any. If not specified, a system-assigned identity will be used.
|
54
|
-
"""
|
55
|
-
|
56
|
-
def __init__(
|
57
|
-
self, *, authority: Optional[str] = None, managed_identity_client_id: Optional[str] = None, **kwargs: Any
|
58
|
-
) -> None:
|
59
|
-
authority = normalize_authority(authority) if authority else get_default_authority()
|
60
|
-
managed_identity_client_id = managed_identity_client_id or os.environ.get(EnvironmentVariables.AZURE_CLIENT_ID)
|
61
|
-
super().__init__(
|
62
|
-
EnvironmentCredential(authority=authority, **kwargs),
|
63
|
-
ManagedIdentityCredential(client_id=managed_identity_client_id, **kwargs),
|
64
|
-
)
|
65
|
-
|
66
|
-
async def get_token(
|
67
|
-
self, *scopes: str, claims: Optional[str] = None, tenant_id: Optional[str] = None, **kwargs: Any
|
68
|
-
) -> AccessToken:
|
69
|
-
"""Asynchronously request an access token for `scopes`.
|
70
|
-
|
71
|
-
This method is called automatically by Azure SDK clients.
|
72
|
-
|
73
|
-
:param str scopes: desired scopes for the access token. This method requires at least one scope.
|
74
|
-
For more information about scopes, see
|
75
|
-
https://learn.microsoft.com/entra/identity-platform/scopes-oidc.
|
76
|
-
:keyword str claims: additional claims required in the token, such as those returned in a resource provider's
|
77
|
-
claims challenge following an authorization failure.
|
78
|
-
:keyword str tenant_id: optional tenant to include in the token request.
|
79
|
-
|
80
|
-
:return: An access token with the desired scopes.
|
81
|
-
:rtype: ~azure.core.credentials.AccessToken
|
82
|
-
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
83
|
-
`message` attribute listing each authentication attempt and its error message.
|
84
|
-
"""
|
85
|
-
if self._successful_credential:
|
86
|
-
token = await cast(AsyncTokenCredential, self._successful_credential).get_token(
|
87
|
-
*scopes, claims=claims, tenant_id=tenant_id, **kwargs
|
88
|
-
)
|
89
|
-
_LOGGER.info(
|
90
|
-
"%s acquired a token from %s", self.__class__.__name__, self._successful_credential.__class__.__name__
|
91
|
-
)
|
92
|
-
return token
|
93
|
-
|
94
|
-
return await super().get_token(*scopes, claims=claims, tenant_id=tenant_id, **kwargs)
|
95
|
-
|
96
|
-
async def get_token_info(self, *scopes: str, options: Optional[TokenRequestOptions] = None) -> AccessTokenInfo:
|
97
|
-
"""Request an access token for `scopes`.
|
98
|
-
|
99
|
-
This is an alternative to `get_token` to enable certain scenarios that require additional properties
|
100
|
-
on the token. This method is called automatically by Azure SDK clients.
|
101
|
-
|
102
|
-
:param str scopes: desired scopes for the access token. This method requires at least one scope.
|
103
|
-
For more information about scopes, see https://learn.microsoft.com/entra/identity-platform/scopes-oidc.
|
104
|
-
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
105
|
-
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
106
|
-
|
107
|
-
:rtype: ~azure.core.credentials.AccessTokenInfo
|
108
|
-
:return: An AccessTokenInfo instance containing information about the token.
|
109
|
-
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
110
|
-
`message` attribute listing each authentication attempt and its error message.
|
111
|
-
"""
|
112
|
-
if self._successful_credential:
|
113
|
-
token_info = await cast(AsyncSupportsTokenInfo, self._successful_credential).get_token_info(
|
114
|
-
*scopes, options=options
|
115
|
-
)
|
116
|
-
_LOGGER.info(
|
117
|
-
"%s acquired a token from %s", self.__class__.__name__, self._successful_credential.__class__.__name__
|
118
|
-
)
|
119
|
-
return token_info
|
120
|
-
|
121
|
-
return await cast(AsyncSupportsTokenInfo, super()).get_token_info(*scopes, options=options)
|