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
@@ -74,7 +74,7 @@ port_by_scheme = {"http": 80, "https": 443}
|
|
74
74
|
|
75
75
|
# When it comes time to update this value as a part of regular maintenance
|
76
76
|
# (ie test_recent_date is failing) update it to ~6 months before the current date.
|
77
|
-
RECENT_DATE = datetime.date(
|
77
|
+
RECENT_DATE = datetime.date(2025, 1, 1)
|
78
78
|
|
79
79
|
_CONTAINS_CONTROL_CHAR_RE = re.compile(r"[^-!#$%&'*+.^_`|~0-9a-zA-Z]")
|
80
80
|
|
@@ -232,45 +232,94 @@ class HTTPConnection(_HTTPConnection):
|
|
232
232
|
super().set_tunnel(host, port=port, headers=headers)
|
233
233
|
self._tunnel_scheme = scheme
|
234
234
|
|
235
|
-
if sys.version_info < (3, 11,
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
if
|
268
|
-
|
235
|
+
if sys.version_info < (3, 11, 9) or ((3, 12) <= sys.version_info < (3, 12, 3)):
|
236
|
+
# Taken from python/cpython#100986 which was backported in 3.11.9 and 3.12.3.
|
237
|
+
# When using connection_from_host, host will come without brackets.
|
238
|
+
def _wrap_ipv6(self, ip: bytes) -> bytes:
|
239
|
+
if b":" in ip and ip[0] != b"["[0]:
|
240
|
+
return b"[" + ip + b"]"
|
241
|
+
return ip
|
242
|
+
|
243
|
+
if sys.version_info < (3, 11, 9):
|
244
|
+
# `_tunnel` copied from 3.11.13 backporting
|
245
|
+
# https://github.com/python/cpython/commit/0d4026432591d43185568dd31cef6a034c4b9261
|
246
|
+
# and https://github.com/python/cpython/commit/6fbc61070fda2ffb8889e77e3b24bca4249ab4d1
|
247
|
+
def _tunnel(self) -> None:
|
248
|
+
_MAXLINE = http.client._MAXLINE # type: ignore[attr-defined]
|
249
|
+
connect = b"CONNECT %s:%d HTTP/1.0\r\n" % ( # type: ignore[str-format]
|
250
|
+
self._wrap_ipv6(self._tunnel_host.encode("ascii")), # type: ignore[union-attr]
|
251
|
+
self._tunnel_port,
|
252
|
+
)
|
253
|
+
headers = [connect]
|
254
|
+
for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined]
|
255
|
+
headers.append(f"{header}: {value}\r\n".encode("latin-1"))
|
256
|
+
headers.append(b"\r\n")
|
257
|
+
# Making a single send() call instead of one per line encourages
|
258
|
+
# the host OS to use a more optimal packet size instead of
|
259
|
+
# potentially emitting a series of small packets.
|
260
|
+
self.send(b"".join(headers))
|
261
|
+
del headers
|
262
|
+
|
263
|
+
response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined]
|
264
|
+
try:
|
265
|
+
(version, code, message) = response._read_status() # type: ignore[attr-defined]
|
266
|
+
|
267
|
+
if code != http.HTTPStatus.OK:
|
268
|
+
self.close()
|
269
|
+
raise OSError(
|
270
|
+
f"Tunnel connection failed: {code} {message.strip()}"
|
271
|
+
)
|
272
|
+
while True:
|
273
|
+
line = response.fp.readline(_MAXLINE + 1)
|
274
|
+
if len(line) > _MAXLINE:
|
275
|
+
raise http.client.LineTooLong("header line")
|
276
|
+
if not line:
|
277
|
+
# for sites which EOF without sending a trailer
|
278
|
+
break
|
279
|
+
if line in (b"\r\n", b"\n", b""):
|
280
|
+
break
|
281
|
+
|
282
|
+
if self.debuglevel > 0:
|
283
|
+
print("header:", line.decode())
|
284
|
+
finally:
|
285
|
+
response.close()
|
286
|
+
|
287
|
+
elif (3, 12) <= sys.version_info < (3, 12, 3):
|
288
|
+
# `_tunnel` copied from 3.12.11 backporting
|
289
|
+
# https://github.com/python/cpython/commit/23aef575c7629abcd4aaf028ebd226fb41a4b3c8
|
290
|
+
def _tunnel(self) -> None: # noqa: F811
|
291
|
+
connect = b"CONNECT %s:%d HTTP/1.1\r\n" % ( # type: ignore[str-format]
|
292
|
+
self._wrap_ipv6(self._tunnel_host.encode("idna")), # type: ignore[union-attr]
|
293
|
+
self._tunnel_port,
|
294
|
+
)
|
295
|
+
headers = [connect]
|
296
|
+
for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined]
|
297
|
+
headers.append(f"{header}: {value}\r\n".encode("latin-1"))
|
298
|
+
headers.append(b"\r\n")
|
299
|
+
# Making a single send() call instead of one per line encourages
|
300
|
+
# the host OS to use a more optimal packet size instead of
|
301
|
+
# potentially emitting a series of small packets.
|
302
|
+
self.send(b"".join(headers))
|
303
|
+
del headers
|
304
|
+
|
305
|
+
response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined]
|
306
|
+
try:
|
307
|
+
(version, code, message) = response._read_status() # type: ignore[attr-defined]
|
308
|
+
|
309
|
+
self._raw_proxy_headers = http.client._read_headers(response.fp) # type: ignore[attr-defined]
|
269
310
|
|
270
311
|
if self.debuglevel > 0:
|
271
|
-
|
272
|
-
|
273
|
-
|
312
|
+
for header in self._raw_proxy_headers:
|
313
|
+
print("header:", header.decode())
|
314
|
+
|
315
|
+
if code != http.HTTPStatus.OK:
|
316
|
+
self.close()
|
317
|
+
raise OSError(
|
318
|
+
f"Tunnel connection failed: {code} {message.strip()}"
|
319
|
+
)
|
320
|
+
|
321
|
+
finally:
|
322
|
+
response.close()
|
274
323
|
|
275
324
|
def connect(self) -> None:
|
276
325
|
self.sock = self._new_conn()
|
@@ -573,6 +573,11 @@ def send_jspi_request(
|
|
573
573
|
"method": request.method,
|
574
574
|
"signal": js_abort_controller.signal,
|
575
575
|
}
|
576
|
+
# Node.js returns the whole response (unlike opaqueredirect in browsers),
|
577
|
+
# so urllib3 can set `redirect: manual` to control redirects itself.
|
578
|
+
# https://stackoverflow.com/a/78524615
|
579
|
+
if _is_node_js():
|
580
|
+
fetch_data["redirect"] = "manual"
|
576
581
|
# Call JavaScript fetch (async api, returns a promise)
|
577
582
|
fetcher_promise_js = js.fetch(request.url, _obj_from_dict(fetch_data))
|
578
583
|
# Now suspend WebAssembly until we resolve that promise
|
@@ -693,6 +698,21 @@ def has_jspi() -> bool:
|
|
693
698
|
return False
|
694
699
|
|
695
700
|
|
701
|
+
def _is_node_js() -> bool:
|
702
|
+
"""
|
703
|
+
Check if we are in Node.js.
|
704
|
+
|
705
|
+
:return: True if we are in Node.js.
|
706
|
+
:rtype: bool
|
707
|
+
"""
|
708
|
+
return (
|
709
|
+
hasattr(js, "process")
|
710
|
+
and hasattr(js.process, "release")
|
711
|
+
# According to the Node.js documentation, the release name is always "node".
|
712
|
+
and js.process.release.name == "node"
|
713
|
+
)
|
714
|
+
|
715
|
+
|
696
716
|
def streaming_ready() -> bool | None:
|
697
717
|
if _fetcher:
|
698
718
|
return _fetcher.streaming_ready
|
@@ -203,6 +203,22 @@ class PoolManager(RequestMethods):
|
|
203
203
|
**connection_pool_kw: typing.Any,
|
204
204
|
) -> None:
|
205
205
|
super().__init__(headers)
|
206
|
+
if "retries" in connection_pool_kw:
|
207
|
+
retries = connection_pool_kw["retries"]
|
208
|
+
if not isinstance(retries, Retry):
|
209
|
+
# When Retry is initialized, raise_on_redirect is based
|
210
|
+
# on a redirect boolean value.
|
211
|
+
# But requests made via a pool manager always set
|
212
|
+
# redirect to False, and raise_on_redirect always ends
|
213
|
+
# up being False consequently.
|
214
|
+
# Here we fix the issue by setting raise_on_redirect to
|
215
|
+
# a value needed by the pool manager without considering
|
216
|
+
# the redirect boolean.
|
217
|
+
raise_on_redirect = retries is not False
|
218
|
+
retries = Retry.from_int(retries, redirect=False)
|
219
|
+
retries.raise_on_redirect = raise_on_redirect
|
220
|
+
connection_pool_kw = connection_pool_kw.copy()
|
221
|
+
connection_pool_kw["retries"] = retries
|
206
222
|
self.connection_pool_kw = connection_pool_kw
|
207
223
|
|
208
224
|
self.pools: RecentlyUsedContainer[PoolKey, HTTPConnectionPool]
|
@@ -456,7 +472,7 @@ class PoolManager(RequestMethods):
|
|
456
472
|
kw["body"] = None
|
457
473
|
kw["headers"] = HTTPHeaderDict(kw["headers"])._prepare_for_method_change()
|
458
474
|
|
459
|
-
retries = kw.get("retries")
|
475
|
+
retries = kw.get("retries", response.retries)
|
460
476
|
if not isinstance(retries, Retry):
|
461
477
|
retries = Retry.from_int(retries, redirect=redirect)
|
462
478
|
|
@@ -26,23 +26,6 @@ try:
|
|
26
26
|
except ImportError:
|
27
27
|
brotli = None
|
28
28
|
|
29
|
-
try:
|
30
|
-
import zstandard as zstd
|
31
|
-
except (AttributeError, ImportError, ValueError): # Defensive:
|
32
|
-
HAS_ZSTD = False
|
33
|
-
else:
|
34
|
-
# The package 'zstandard' added the 'eof' property starting
|
35
|
-
# in v0.18.0 which we require to ensure a complete and
|
36
|
-
# valid zstd stream was fed into the ZstdDecoder.
|
37
|
-
# See: https://github.com/urllib3/urllib3/pull/2624
|
38
|
-
_zstd_version = tuple(
|
39
|
-
map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr]
|
40
|
-
)
|
41
|
-
if _zstd_version < (0, 18): # Defensive:
|
42
|
-
HAS_ZSTD = False
|
43
|
-
else:
|
44
|
-
HAS_ZSTD = True
|
45
|
-
|
46
29
|
from . import util
|
47
30
|
from ._base_connection import _TYPE_BODY
|
48
31
|
from ._collections import HTTPHeaderDict
|
@@ -163,11 +146,15 @@ if brotli is not None:
|
|
163
146
|
return b""
|
164
147
|
|
165
148
|
|
166
|
-
|
149
|
+
try:
|
150
|
+
# Python 3.14+
|
151
|
+
from compression import zstd # type: ignore[import-not-found] # noqa: F401
|
152
|
+
|
153
|
+
HAS_ZSTD = True
|
167
154
|
|
168
155
|
class ZstdDecoder(ContentDecoder):
|
169
156
|
def __init__(self) -> None:
|
170
|
-
self._obj = zstd.ZstdDecompressor()
|
157
|
+
self._obj = zstd.ZstdDecompressor()
|
171
158
|
|
172
159
|
def decompress(self, data: bytes) -> bytes:
|
173
160
|
if not data:
|
@@ -175,15 +162,53 @@ if HAS_ZSTD:
|
|
175
162
|
data_parts = [self._obj.decompress(data)]
|
176
163
|
while self._obj.eof and self._obj.unused_data:
|
177
164
|
unused_data = self._obj.unused_data
|
178
|
-
self._obj = zstd.ZstdDecompressor()
|
165
|
+
self._obj = zstd.ZstdDecompressor()
|
179
166
|
data_parts.append(self._obj.decompress(unused_data))
|
180
167
|
return b"".join(data_parts)
|
181
168
|
|
182
169
|
def flush(self) -> bytes:
|
183
|
-
ret = self._obj.flush() # note: this is a no-op
|
184
170
|
if not self._obj.eof:
|
185
171
|
raise DecodeError("Zstandard data is incomplete")
|
186
|
-
return
|
172
|
+
return b""
|
173
|
+
|
174
|
+
except ImportError:
|
175
|
+
try:
|
176
|
+
# Python 3.13 and earlier require the 'zstandard' module.
|
177
|
+
import zstandard as zstd
|
178
|
+
|
179
|
+
# The package 'zstandard' added the 'eof' property starting
|
180
|
+
# in v0.18.0 which we require to ensure a complete and
|
181
|
+
# valid zstd stream was fed into the ZstdDecoder.
|
182
|
+
# See: https://github.com/urllib3/urllib3/pull/2624
|
183
|
+
_zstd_version = tuple(
|
184
|
+
map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr]
|
185
|
+
)
|
186
|
+
if _zstd_version < (0, 18): # Defensive:
|
187
|
+
raise ImportError("zstandard module doesn't have eof")
|
188
|
+
except (AttributeError, ImportError, ValueError): # Defensive:
|
189
|
+
HAS_ZSTD = False
|
190
|
+
else:
|
191
|
+
HAS_ZSTD = True
|
192
|
+
|
193
|
+
class ZstdDecoder(ContentDecoder): # type: ignore[no-redef]
|
194
|
+
def __init__(self) -> None:
|
195
|
+
self._obj = zstd.ZstdDecompressor().decompressobj()
|
196
|
+
|
197
|
+
def decompress(self, data: bytes) -> bytes:
|
198
|
+
if not data:
|
199
|
+
return b""
|
200
|
+
data_parts = [self._obj.decompress(data)]
|
201
|
+
while self._obj.eof and self._obj.unused_data:
|
202
|
+
unused_data = self._obj.unused_data
|
203
|
+
self._obj = zstd.ZstdDecompressor().decompressobj()
|
204
|
+
data_parts.append(self._obj.decompress(unused_data))
|
205
|
+
return b"".join(data_parts)
|
206
|
+
|
207
|
+
def flush(self) -> bytes:
|
208
|
+
ret = self._obj.flush() # note: this is a no-op
|
209
|
+
if not self._obj.eof:
|
210
|
+
raise DecodeError("Zstandard data is incomplete")
|
211
|
+
return ret # type: ignore[no-any-return]
|
187
212
|
|
188
213
|
|
189
214
|
class MultiDecoder(ContentDecoder):
|
@@ -518,7 +543,7 @@ class BaseHTTPResponse(io.IOBase):
|
|
518
543
|
def getheaders(self) -> HTTPHeaderDict:
|
519
544
|
warnings.warn(
|
520
545
|
"HTTPResponse.getheaders() is deprecated and will be removed "
|
521
|
-
"in urllib3 v2.
|
546
|
+
"in urllib3 v2.6.0. Instead access HTTPResponse.headers directly.",
|
522
547
|
category=DeprecationWarning,
|
523
548
|
stacklevel=2,
|
524
549
|
)
|
@@ -527,7 +552,7 @@ class BaseHTTPResponse(io.IOBase):
|
|
527
552
|
def getheader(self, name: str, default: str | None = None) -> str | None:
|
528
553
|
warnings.warn(
|
529
554
|
"HTTPResponse.getheader() is deprecated and will be removed "
|
530
|
-
"in urllib3 v2.
|
555
|
+
"in urllib3 v2.6.0. Instead use HTTPResponse.headers.get(name, default).",
|
531
556
|
category=DeprecationWarning,
|
532
557
|
stacklevel=2,
|
533
558
|
)
|
@@ -1075,6 +1100,10 @@ class HTTPResponse(BaseHTTPResponse):
|
|
1075
1100
|
def shutdown(self) -> None:
|
1076
1101
|
if not self._sock_shutdown:
|
1077
1102
|
raise ValueError("Cannot shutdown socket as self._sock_shutdown is not set")
|
1103
|
+
if self._connection is None:
|
1104
|
+
raise RuntimeError(
|
1105
|
+
"Cannot shutdown as connection has already been released to the pool"
|
1106
|
+
)
|
1078
1107
|
self._sock_shutdown(socket.SHUT_RD)
|
1079
1108
|
|
1080
1109
|
def close(self) -> None:
|
@@ -28,12 +28,20 @@ except ImportError:
|
|
28
28
|
pass
|
29
29
|
else:
|
30
30
|
ACCEPT_ENCODING += ",br"
|
31
|
+
|
31
32
|
try:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
from compression import ( # type: ignore[import-not-found] # noqa: F401
|
34
|
+
zstd as _unused_module_zstd,
|
35
|
+
)
|
36
|
+
|
36
37
|
ACCEPT_ENCODING += ",zstd"
|
38
|
+
except ImportError:
|
39
|
+
try:
|
40
|
+
import zstandard as _unused_module_zstd # noqa: F401
|
41
|
+
|
42
|
+
ACCEPT_ENCODING += ",zstd"
|
43
|
+
except ImportError:
|
44
|
+
pass
|
37
45
|
|
38
46
|
|
39
47
|
class _TYPE_FAILEDTELL(Enum):
|
@@ -289,7 +289,7 @@ def create_urllib3_context(
|
|
289
289
|
# keep the maximum version to be it's default value: 'TLSVersion.MAXIMUM_SUPPORTED'
|
290
290
|
warnings.warn(
|
291
291
|
"'ssl_version' option is deprecated and will be "
|
292
|
-
"removed in urllib3 v2.
|
292
|
+
"removed in urllib3 v2.6.0. Instead use 'ssl_minimum_version'",
|
293
293
|
category=DeprecationWarning,
|
294
294
|
stacklevel=2,
|
295
295
|
)
|
@@ -200,7 +200,7 @@ class AsyncPipeline(
|
|
200
200
|
|
201
201
|
# Not happy to make this code asyncio specific, but that's multipart only for now
|
202
202
|
# If we need trio and multipart, let's reinvesitgate that later
|
203
|
-
import asyncio
|
203
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
204
204
|
|
205
205
|
await asyncio.gather(*[prepare_requests(req) for req in requests])
|
206
206
|
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#
|
25
25
|
# --------------------------------------------------------------------------
|
26
26
|
from __future__ import annotations
|
27
|
-
import asyncio
|
28
27
|
import abc
|
29
28
|
from collections.abc import AsyncIterator
|
30
29
|
from typing import (
|
@@ -168,4 +167,6 @@ class AsyncHttpTransport(
|
|
168
167
|
|
169
168
|
:param float duration: The number of seconds to sleep.
|
170
169
|
"""
|
170
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
171
|
+
|
171
172
|
await asyncio.sleep(duration)
|
@@ -23,7 +23,7 @@
|
|
23
23
|
# IN THE SOFTWARE.
|
24
24
|
#
|
25
25
|
# --------------------------------------------------------------------------
|
26
|
-
import asyncio
|
26
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
27
27
|
from collections.abc import AsyncIterator
|
28
28
|
import functools
|
29
29
|
import logging
|
@@ -24,7 +24,7 @@
|
|
24
24
|
#
|
25
25
|
# --------------------------------------------------------------------------
|
26
26
|
import collections.abc
|
27
|
-
import asyncio
|
27
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
28
28
|
from itertools import groupby
|
29
29
|
from typing import Iterator, cast
|
30
30
|
from multidict import CIMultiDict
|
@@ -132,7 +132,7 @@ class _CIMultiDict(CIMultiDict):
|
|
132
132
|
def __getitem__(self, key: str) -> str:
|
133
133
|
return ", ".join(self.getall(key, []))
|
134
134
|
|
135
|
-
def get(self, key, default=None):
|
135
|
+
def get(self, key, /, default=None):
|
136
136
|
values = self.getall(key, None)
|
137
137
|
if values:
|
138
138
|
values = ", ".join(values)
|
@@ -23,7 +23,7 @@
|
|
23
23
|
# IN THE SOFTWARE.
|
24
24
|
#
|
25
25
|
# --------------------------------------------------------------------------
|
26
|
-
import asyncio
|
26
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
27
27
|
from ._http_response_impl_async import AsyncHttpResponseImpl
|
28
28
|
from ._requests_basic import _RestRequestsTransportResponseBase
|
29
29
|
from ..pipeline.transport._requests_asyncio import AsyncioStreamDownloadGenerator
|
@@ -12,6 +12,7 @@ from opentelemetry.trace import (
|
|
12
12
|
Span,
|
13
13
|
SpanKind as OpenTelemetrySpanKind,
|
14
14
|
Link as OpenTelemetryLink,
|
15
|
+
StatusCode,
|
15
16
|
)
|
16
17
|
from opentelemetry.trace.propagation import get_current_span as get_current_span_otel
|
17
18
|
from opentelemetry.propagate import extract, inject
|
@@ -92,7 +93,7 @@ class OpenTelemetryTracer:
|
|
92
93
|
:keyword links: Links to add to the span.
|
93
94
|
:paramtype links: list[~azure.core.tracing.Link]
|
94
95
|
:return: The span that was started
|
95
|
-
:rtype: ~
|
96
|
+
:rtype: ~opentelemetry.trace.Span
|
96
97
|
"""
|
97
98
|
otel_kind = _KIND_MAPPINGS.get(kind, OpenTelemetrySpanKind.INTERNAL)
|
98
99
|
otel_links = self._parse_links(links)
|
@@ -161,6 +162,17 @@ class OpenTelemetryTracer:
|
|
161
162
|
) as active_span:
|
162
163
|
yield active_span
|
163
164
|
|
165
|
+
@staticmethod
|
166
|
+
def set_span_error_status(span: Span, description: Optional[str] = None) -> None:
|
167
|
+
"""Set the status of a span to ERROR with the provided description, if any.
|
168
|
+
|
169
|
+
:param span: The span to set the ERROR status on.
|
170
|
+
:type span: ~opentelemetry.trace.Span
|
171
|
+
:param description: An optional description of the error.
|
172
|
+
:type description: str
|
173
|
+
"""
|
174
|
+
span.set_status(StatusCode.ERROR, description=description)
|
175
|
+
|
164
176
|
def _parse_links(self, links: Optional[Sequence[Link]]) -> Optional[Sequence[OpenTelemetryLink]]:
|
165
177
|
if not links:
|
166
178
|
return None
|
py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
# Licensed under the MIT License. See License.txt in the project root for
|
5
5
|
# license information.
|
6
6
|
# --------------------------------------------------------------------------
|
7
|
-
import asyncio
|
8
7
|
from typing import (
|
9
8
|
TYPE_CHECKING,
|
10
9
|
List,
|
@@ -57,6 +56,8 @@ class _PartGenerator(AsyncIterator[HttpResponseType], Generic[HttpResponseType])
|
|
57
56
|
|
58
57
|
# Not happy to make this code asyncio specific, but that's multipart only for now
|
59
58
|
# If we need trio and multipart, let's reinvesitgate that later
|
59
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
60
|
+
|
60
61
|
await asyncio.gather(*[parse_responses(res) for res in responses])
|
61
62
|
|
62
63
|
return responses
|
@@ -64,4 +64,5 @@ class EnvironmentVariables:
|
|
64
64
|
AZURE_REGIONAL_AUTHORITY_NAME = "AZURE_REGIONAL_AUTHORITY_NAME"
|
65
65
|
|
66
66
|
AZURE_FEDERATED_TOKEN_FILE = "AZURE_FEDERATED_TOKEN_FILE"
|
67
|
+
AZURE_TOKEN_CREDENTIALS = "AZURE_TOKEN_CREDENTIALS"
|
67
68
|
WORKLOAD_IDENTITY_VARS = (AZURE_AUTHORITY_HOST, AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE)
|
@@ -133,6 +133,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
133
133
|
|
134
134
|
process_timeout = kwargs.pop("process_timeout", 10)
|
135
135
|
|
136
|
+
token_credentials_env = os.environ.get(EnvironmentVariables.AZURE_TOKEN_CREDENTIALS, "").strip().lower()
|
136
137
|
exclude_workload_identity_credential = kwargs.pop("exclude_workload_identity_credential", False)
|
137
138
|
exclude_environment_credential = kwargs.pop("exclude_environment_credential", False)
|
138
139
|
exclude_managed_identity_credential = kwargs.pop("exclude_managed_identity_credential", False)
|
@@ -143,6 +144,26 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
143
144
|
exclude_interactive_browser_credential = kwargs.pop("exclude_interactive_browser_credential", True)
|
144
145
|
exclude_powershell_credential = kwargs.pop("exclude_powershell_credential", False)
|
145
146
|
|
147
|
+
if token_credentials_env == "dev":
|
148
|
+
# In dev mode, use only developer credentials
|
149
|
+
exclude_environment_credential = True
|
150
|
+
exclude_managed_identity_credential = True
|
151
|
+
exclude_workload_identity_credential = True
|
152
|
+
elif token_credentials_env == "prod":
|
153
|
+
# In prod mode, use only production credentials
|
154
|
+
exclude_shared_token_cache_credential = True
|
155
|
+
exclude_visual_studio_code_credential = True
|
156
|
+
exclude_cli_credential = True
|
157
|
+
exclude_developer_cli_credential = True
|
158
|
+
exclude_powershell_credential = True
|
159
|
+
exclude_interactive_browser_credential = True
|
160
|
+
elif token_credentials_env != "":
|
161
|
+
# If the environment variable is set to something other than dev or prod, raise an error
|
162
|
+
raise ValueError(
|
163
|
+
f"Invalid value for {EnvironmentVariables.AZURE_TOKEN_CREDENTIALS}: {token_credentials_env}. "
|
164
|
+
"Valid values are 'dev' or 'prod'."
|
165
|
+
)
|
166
|
+
|
146
167
|
credentials: List[SupportsTokenInfo] = []
|
147
168
|
within_dac.set(True)
|
148
169
|
if not exclude_environment_credential:
|
@@ -155,7 +176,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
155
176
|
client_id=cast(str, client_id),
|
156
177
|
tenant_id=workload_identity_tenant_id,
|
157
178
|
token_file_path=os.environ[EnvironmentVariables.AZURE_FEDERATED_TOKEN_FILE],
|
158
|
-
**kwargs
|
179
|
+
**kwargs,
|
159
180
|
)
|
160
181
|
)
|
161
182
|
if not exclude_managed_identity_credential:
|
@@ -163,7 +184,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
163
184
|
ManagedIdentityCredential(
|
164
185
|
client_id=managed_identity_client_id,
|
165
186
|
_exclude_workload_identity_credential=exclude_workload_identity_credential,
|
166
|
-
**kwargs
|
187
|
+
**kwargs,
|
167
188
|
)
|
168
189
|
)
|
169
190
|
if not exclude_shared_token_cache_credential and SharedTokenCacheCredential.supported():
|
@@ -5,10 +5,12 @@
|
|
5
5
|
import logging
|
6
6
|
import os
|
7
7
|
from typing import Optional, Union, Any, cast
|
8
|
+
import warnings
|
8
9
|
from azure.core.credentials import AccessToken, AccessTokenInfo, TokenRequestOptions, SupportsTokenInfo
|
9
10
|
|
10
11
|
from .. import CredentialUnavailableError
|
11
12
|
from .._constants import EnvironmentVariables
|
13
|
+
from .._internal import within_dac
|
12
14
|
from .._internal.decorators import log_get_token
|
13
15
|
from .certificate import CertificateCredential
|
14
16
|
from .client_secret import ClientSecretCredential
|
@@ -22,8 +24,8 @@ _LOGGER = logging.getLogger(__name__)
|
|
22
24
|
class EnvironmentCredential:
|
23
25
|
"""A credential configured by environment variables.
|
24
26
|
|
25
|
-
This credential is capable of authenticating as a service principal using a client secret or a certificate
|
26
|
-
|
27
|
+
This credential is capable of authenticating as a service principal using a client secret or a certificate.
|
28
|
+
Configuration is attempted in this order, using these environment variables:
|
27
29
|
|
28
30
|
Service principal with secret:
|
29
31
|
- **AZURE_TENANT_ID**: ID of the service principal's tenant. Also called its 'directory' ID.
|
@@ -45,20 +47,6 @@ class EnvironmentCredential:
|
|
45
47
|
"login.microsoftonline.com", the authority for Azure Public Cloud, which is the default
|
46
48
|
when no value is given.
|
47
49
|
|
48
|
-
User with username and password:
|
49
|
-
**Deprecated**: Username and password authentication doesn't support multifactor authentication (MFA).
|
50
|
-
For more details on Microsoft Entra MFA enforcement, see https://aka.ms/azsdk/identity/mfa.
|
51
|
-
|
52
|
-
- **AZURE_CLIENT_ID**: the application's client ID
|
53
|
-
- **AZURE_USERNAME**: a username (usually an email address)
|
54
|
-
- **AZURE_PASSWORD**: that user's password
|
55
|
-
- **AZURE_TENANT_ID**: (optional) ID of the service principal's tenant. Also called its 'directory' ID.
|
56
|
-
If not provided, defaults to the 'organizations' tenant, which supports only Microsoft Entra work or
|
57
|
-
school accounts.
|
58
|
-
- **AZURE_AUTHORITY_HOST**: authority of a Microsoft Entra endpoint, for example
|
59
|
-
"login.microsoftonline.com", the authority for Azure Public Cloud, which is the default
|
60
|
-
when no value is given.
|
61
|
-
|
62
50
|
.. admonition:: Example:
|
63
51
|
|
64
52
|
.. literalinclude:: ../samples/credential_creation_code_snippets.py
|
@@ -96,8 +84,16 @@ class EnvironmentCredential:
|
|
96
84
|
username=os.environ[EnvironmentVariables.AZURE_USERNAME],
|
97
85
|
password=os.environ[EnvironmentVariables.AZURE_PASSWORD],
|
98
86
|
tenant_id=os.environ.get(EnvironmentVariables.AZURE_TENANT_ID), # optional for username/password auth
|
87
|
+
_silence_deprecation_warning=True, # avoid duplicate warning
|
99
88
|
**kwargs
|
100
89
|
)
|
90
|
+
warnings.warn(
|
91
|
+
"Environment is configured to use username and password authentication. "
|
92
|
+
"This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). "
|
93
|
+
"For more details, see https://aka.ms/azsdk/identity/mfa.",
|
94
|
+
DeprecationWarning,
|
95
|
+
stacklevel=3 if within_dac.get() else 2,
|
96
|
+
)
|
101
97
|
|
102
98
|
if self._credential:
|
103
99
|
_LOGGER.info("Environment is configured for %s", self._credential.__class__.__name__)
|