py2docfx 0.1.16.dev2052678__py3-none-any.whl → 0.1.16.dev2064350__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 +3 -1
- py2docfx/convert_prepare/get_source.py +6 -1
- py2docfx/convert_prepare/package_info.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/babel/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/markupsafe/_speedups.pyi +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/markupsafe/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/pip/py.typed +4 -0
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinx/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/applehelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/htmlhelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/qthelp/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/sphinxcontrib/serializinghtml/py.typed +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/_version.py +9 -4
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/exceptions.py +12 -4
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/http2/connection.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/py.typed +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_.py +21 -1
- py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/__main__.py +7 -5
- py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/__init__.py +3 -5
- py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/convert.py +14 -9
- py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/pack.py +1 -2
- py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_metadata.py +184 -0
- py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +12 -23
- py2docfx/venv/basevenv/Lib/site-packages/wheel/macosx_libfile.py +4 -0
- py2docfx/venv/basevenv/Lib/site-packages/wheel/metadata.py +17 -183
- py2docfx/venv/basevenv/Lib/site-packages/wheel/wheelfile.py +30 -16
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/instrumentation.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +152 -29
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +3 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +3 -10
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +3 -8
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl_async.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_rest_py3.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +27 -21
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/__init__.py +3 -7
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +2 -35
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_models.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +12 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +66 -13
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +62 -23
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +244 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_connection_string_parser.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_messaging_shared.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/certifi/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +28 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +8 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +7 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +17 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +117 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +72 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +103 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +38 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +18 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +51 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +52 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +12 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +12 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +19 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +21 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +43 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +33 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +55 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +12 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +12 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +46 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +49 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +22 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +246 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/annotations_pb2.pyi +24 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/auth_pb2.pyi +120 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/backend_pb2.pyi +102 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/billing_pb2.pyi +50 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.pyi +405 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/config_change_pb2.pyi +65 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/consumer_pb2.pyi +62 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/context_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/control_pb2.pyi +43 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/distribution_pb2.pyi +144 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/documentation_pb2.pyi +86 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/endpoint_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.pyi +90 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_behavior_pb2.pyi +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_info_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/http_pb2.pyi +94 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/label_pb2.pyi +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/launch_stage_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/log_pb2.pyi +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/logging_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.pyi +186 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitored_resource_pb2.pyi +104 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitoring_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/policy_pb2.pyi +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/quota_pb2.pyi +116 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/resource_pb2.pyi +93 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/routing_pb2.pyi +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/service_pb2.pyi +170 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/source_info_pb2.pyi +34 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/system_parameter_pb2.pyi +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/usage_pb2.pyi +55 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/visibility_pb2.pyi +56 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/extended_operations_pb2.pyi +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/location/locations_pb2.pyi +96 -0
- py2docfx/venv/venv1/Lib/site-packages/google/gapic/metadata/gapic_metadata_pb2.pyi +118 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/http_request_pb2.pyi +91 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/log_severity_pb2.pyi +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto_pb2.pyi +126 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/code_pb2.pyi +58 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/attribute_context_pb2.pyi +309 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/audit_context_pb2.pyi +51 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +207 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/http_pb2.pyi +71 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/status_pb2.pyi +41 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/calendar_period_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/color_pb2.pyi +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/date_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/datetime_pb2.pyi +77 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/dayofweek_pb2.pyi +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/decimal_pb2.pyi +27 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/expr_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/fraction_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/interval_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/latlng_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/localized_text_pb2.pyi +31 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/money_pb2.pyi +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/month_pb2.pyi +50 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/phone_number_pb2.pyi +48 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/postal_address_pb2.pyi +74 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/quaternion_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/timeofday_pb2.pyi +39 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/packaging/__init__.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_elffile.py +9 -7
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_manylinux.py +12 -9
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_musllinux.py +5 -3
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/_parser.py +11 -13
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_tokenizer.py +10 -8
- py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/markers.py +103 -25
- py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +863 -0
- py2docfx/venv/venv1/Lib/site-packages/packaging/py.typed +0 -0
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/requirements.py +5 -4
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/specifiers.py +40 -31
- py2docfx/venv/venv1/Lib/site-packages/{wheel/vendored/packaging → packaging}/tags.py +96 -50
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/utils.py +39 -48
- py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/version.py +53 -32
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/chardet/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/pyparsing/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tenacity/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pip/py.typed +4 -0
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
- py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +30 -12
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +9 -4
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/response.py +8 -16
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/pyopenssl.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/exceptions.py +12 -4
- py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/connection.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/urllib3/py.typed +2 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +21 -1
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_match_hostname.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/wheel/__main__.py +7 -5
- py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/__init__.py +3 -5
- py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/convert.py +14 -9
- py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/pack.py +1 -2
- py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/tags.py +4 -3
- py2docfx/venv/venv1/Lib/site-packages/wheel/_metadata.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +12 -23
- py2docfx/venv/venv1/Lib/site-packages/wheel/macosx_libfile.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/metadata.py +17 -183
- py2docfx/venv/venv1/Lib/site-packages/wheel/wheelfile.py +30 -16
- {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/METADATA +2 -3
- {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/RECORD +263 -104
- {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/WHEEL +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
- py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -17
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -108
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -356
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -253
- py2docfx/venv/basevenv/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -571
- py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +0 -613
- py2docfx/venv/venv1/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -17
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -260
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -61
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -192
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -90
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -1011
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -172
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/version.py +0 -561
- /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/__init__.py → certifi/py.typed} +0 -0
- /py2docfx/venv/basevenv/Lib/site-packages/{wheel/vendored/packaging/__init__.py → charset_normalizer/py.typed} +0 -0
- /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/__init__.py → basevenv/Lib/site-packages/idna/py.typed} +0 -0
- /py2docfx/venv/{venv1/Lib/site-packages/wheel/vendored/packaging/__init__.py → basevenv/Lib/site-packages/jinja2/py.typed} +0 -0
- /py2docfx/venv/basevenv/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
- /py2docfx/venv/{basevenv/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages}/packaging/_structures.py +0 -0
- /py2docfx/venv/venv1/Lib/site-packages/wheel/{cli → _commands}/unpack.py +0 -0
- {py2docfx-0.1.16.dev2052678.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/top_level.txt +0 -0
@@ -116,7 +116,7 @@ class BearerTokenCredentialPolicy(_BearerTokenCredentialPolicyBase, HTTPPolicy[H
|
|
116
116
|
:param str scopes: Lets you specify the type of access needed.
|
117
117
|
:keyword bool enable_cae: Indicates whether to enable Continuous Access Evaluation (CAE) on all requested
|
118
118
|
tokens. Defaults to False.
|
119
|
-
:raises
|
119
|
+
:raises ~azure.core.exceptions.ServiceRequestError: If the request fails.
|
120
120
|
"""
|
121
121
|
|
122
122
|
def on_request(self, request: PipelineRequest[HTTPRequestType]) -> None:
|
@@ -194,7 +194,6 @@ class BearerTokenCredentialPolicy(_BearerTokenCredentialPolicyBase, HTTPPolicy[H
|
|
194
194
|
:returns: a bool indicating whether the policy should send the request
|
195
195
|
:rtype: bool
|
196
196
|
"""
|
197
|
-
# pylint:disable=unused-argument
|
198
197
|
headers = response.http_response.headers
|
199
198
|
error = get_challenge_parameter(headers, "Bearer", "error")
|
200
199
|
if error == "insufficient_claims":
|
@@ -245,7 +244,8 @@ class AzureKeyCredentialPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseTyp
|
|
245
244
|
:type credential: ~azure.core.credentials.AzureKeyCredential
|
246
245
|
:param str name: The name of the key header used for the credential.
|
247
246
|
:keyword str prefix: The name of the prefix for the header value if any.
|
248
|
-
:raises
|
247
|
+
:raises ValueError: if name is None or empty.
|
248
|
+
:raises TypeError: if name is not a string or if credential is not an instance of AzureKeyCredential.
|
249
249
|
"""
|
250
250
|
|
251
251
|
def __init__( # pylint: disable=unused-argument
|
@@ -276,7 +276,7 @@ class AzureSasCredentialPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseTyp
|
|
276
276
|
|
277
277
|
:param credential: The credential used to authenticate requests.
|
278
278
|
:type credential: ~azure.core.credentials.AzureSasCredential
|
279
|
-
:raises
|
279
|
+
:raises ValueError: if credential is None.
|
280
280
|
"""
|
281
281
|
|
282
282
|
def __init__(
|
@@ -61,7 +61,7 @@ class AsyncBearerTokenCredentialPolicy(AsyncHTTPPolicy[HTTPRequestType, AsyncHTT
|
|
61
61
|
|
62
62
|
:param request: The pipeline request object to be modified.
|
63
63
|
:type request: ~azure.core.pipeline.PipelineRequest
|
64
|
-
:raises
|
64
|
+
:raises ~azure.core.exceptions.ServiceRequestError: If the request fails.
|
65
65
|
"""
|
66
66
|
_BearerTokenCredentialPolicyBase._enforce_https(request) # pylint:disable=protected-access
|
67
67
|
|
@@ -139,7 +139,6 @@ class AsyncBearerTokenCredentialPolicy(AsyncHTTPPolicy[HTTPRequestType, AsyncHTT
|
|
139
139
|
:returns: a bool indicating whether the policy should send the request
|
140
140
|
:rtype: bool
|
141
141
|
"""
|
142
|
-
# pylint:disable=unused-argument
|
143
142
|
headers = response.http_response.headers
|
144
143
|
error = get_challenge_parameter(headers, "Bearer", "error")
|
145
144
|
if error == "insufficient_claims":
|
@@ -27,7 +27,7 @@
|
|
27
27
|
import logging
|
28
28
|
import sys
|
29
29
|
import urllib.parse
|
30
|
-
from typing import TYPE_CHECKING, Optional, Tuple, TypeVar, Union, Any, Type
|
30
|
+
from typing import TYPE_CHECKING, Optional, Tuple, TypeVar, Union, Any, Type, Mapping, Dict
|
31
31
|
from types import TracebackType
|
32
32
|
|
33
33
|
from azure.core.pipeline import PipelineRequest, PipelineResponse
|
@@ -39,11 +39,12 @@ from azure.core.pipeline.transport import (
|
|
39
39
|
from azure.core.rest import HttpResponse, HttpRequest
|
40
40
|
from azure.core.settings import settings
|
41
41
|
from azure.core.tracing import SpanKind
|
42
|
+
from azure.core.tracing.common import change_context
|
43
|
+
from azure.core.instrumentation import get_tracer
|
44
|
+
from azure.core.tracing._models import TracingOptions
|
42
45
|
|
43
46
|
if TYPE_CHECKING:
|
44
|
-
from
|
45
|
-
AbstractSpan,
|
46
|
-
)
|
47
|
+
from opentelemetry.trace import Span
|
47
48
|
|
48
49
|
HTTPResponseType = TypeVar("HTTPResponseType", HttpResponse, LegacyHttpResponse)
|
49
50
|
HTTPRequestType = TypeVar("HTTPRequestType", HttpRequest, LegacyHttpRequest)
|
@@ -61,10 +62,7 @@ def _default_network_span_namer(http_request: HTTPRequestType) -> str:
|
|
61
62
|
:returns: The string to use as network span name
|
62
63
|
:rtype: str
|
63
64
|
"""
|
64
|
-
|
65
|
-
if not path:
|
66
|
-
path = "/"
|
67
|
-
return path
|
65
|
+
return http_request.method
|
68
66
|
|
69
67
|
|
70
68
|
class DistributedTracingPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseType]):
|
@@ -74,37 +72,95 @@ class DistributedTracingPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseTyp
|
|
74
72
|
:type network_span_namer: callable[[~azure.core.pipeline.transport.HttpRequest], str]
|
75
73
|
:keyword tracing_attributes: Attributes to set on all created spans
|
76
74
|
:type tracing_attributes: dict[str, str]
|
75
|
+
:keyword instrumentation_config: Configuration for the instrumentation providers
|
76
|
+
:type instrumentation_config: dict[str, Any]
|
77
77
|
"""
|
78
78
|
|
79
79
|
TRACING_CONTEXT = "TRACING_CONTEXT"
|
80
|
+
_SUPPRESSION_TOKEN = "SUPPRESSION_TOKEN"
|
81
|
+
|
82
|
+
# Current stable HTTP semantic conventions
|
83
|
+
_HTTP_RESEND_COUNT = "http.request.resend_count"
|
84
|
+
_USER_AGENT_ORIGINAL = "user_agent.original"
|
85
|
+
_HTTP_REQUEST_METHOD = "http.request.method"
|
86
|
+
_URL_FULL = "url.full"
|
87
|
+
_HTTP_RESPONSE_STATUS_CODE = "http.response.status_code"
|
88
|
+
_SERVER_ADDRESS = "server.address"
|
89
|
+
_SERVER_PORT = "server.port"
|
90
|
+
_ERROR_TYPE = "error.type"
|
91
|
+
|
92
|
+
# Azure attributes
|
80
93
|
_REQUEST_ID = "x-ms-client-request-id"
|
94
|
+
_REQUEST_ID_ATTR = "az.client_request_id"
|
81
95
|
_RESPONSE_ID = "x-ms-request-id"
|
82
|
-
|
96
|
+
_RESPONSE_ID_ATTR = "az.service_request_id"
|
83
97
|
|
84
|
-
def __init__(self, **kwargs: Any):
|
98
|
+
def __init__(self, *, instrumentation_config: Optional[Mapping[str, Any]] = None, **kwargs: Any):
|
85
99
|
self._network_span_namer = kwargs.get("network_span_namer", _default_network_span_namer)
|
86
100
|
self._tracing_attributes = kwargs.get("tracing_attributes", {})
|
101
|
+
self._instrumentation_config = instrumentation_config
|
87
102
|
|
88
103
|
def on_request(self, request: PipelineRequest[HTTPRequestType]) -> None:
|
89
104
|
ctxt = request.context.options
|
90
105
|
try:
|
91
|
-
|
92
|
-
|
106
|
+
tracing_options: TracingOptions = ctxt.pop("tracing_options", {})
|
107
|
+
tracing_enabled = settings.tracing_enabled()
|
108
|
+
|
109
|
+
# User can explicitly disable tracing for this request.
|
110
|
+
user_enabled = tracing_options.get("enabled")
|
111
|
+
if user_enabled is False:
|
112
|
+
return
|
113
|
+
|
114
|
+
# If tracing is disabled globally and user didn't explicitly enable it, don't trace.
|
115
|
+
if not tracing_enabled and user_enabled is None:
|
93
116
|
return
|
94
117
|
|
118
|
+
span_impl_type = settings.tracing_implementation()
|
95
119
|
namer = ctxt.pop("network_span_namer", self._network_span_namer)
|
96
120
|
tracing_attributes = ctxt.pop("tracing_attributes", self._tracing_attributes)
|
97
121
|
span_name = namer(request.http_request)
|
98
122
|
|
99
|
-
|
100
|
-
for attr, value in tracing_attributes.items():
|
101
|
-
span.add_attribute(attr, value)
|
102
|
-
span.start()
|
123
|
+
span_attributes = {**tracing_attributes, **tracing_options.get("attributes", {})}
|
103
124
|
|
104
|
-
|
105
|
-
|
125
|
+
if span_impl_type:
|
126
|
+
# If the plugin is enabled, prioritize it over the core tracing.
|
127
|
+
span = span_impl_type(name=span_name, kind=SpanKind.CLIENT)
|
128
|
+
for attr, value in span_attributes.items():
|
129
|
+
span.add_attribute(attr, value) # type: ignore
|
130
|
+
|
131
|
+
with change_context(span.span_instance):
|
132
|
+
headers = span.to_header()
|
133
|
+
request.http_request.headers.update(headers)
|
134
|
+
request.context[self.TRACING_CONTEXT] = span
|
135
|
+
else:
|
136
|
+
# Otherwise, use the core tracing.
|
137
|
+
config = self._instrumentation_config or {}
|
138
|
+
tracer = get_tracer(
|
139
|
+
library_name=config.get("library_name"),
|
140
|
+
library_version=config.get("library_version"),
|
141
|
+
attributes=config.get("attributes"),
|
142
|
+
)
|
143
|
+
if not tracer:
|
144
|
+
_LOGGER.warning(
|
145
|
+
"Tracing is enabled, but not able to get an OpenTelemetry tracer. "
|
146
|
+
"Please ensure that `opentelemetry-api` is installed."
|
147
|
+
)
|
148
|
+
return
|
149
|
+
|
150
|
+
otel_span = tracer.start_span(
|
151
|
+
name=span_name,
|
152
|
+
kind=SpanKind.CLIENT,
|
153
|
+
attributes=span_attributes,
|
154
|
+
)
|
155
|
+
|
156
|
+
with tracer.use_span(otel_span, end_on_exit=False):
|
157
|
+
trace_context_headers = tracer.get_trace_context()
|
158
|
+
request.http_request.headers.update(trace_context_headers)
|
159
|
+
|
160
|
+
request.context[self.TRACING_CONTEXT] = otel_span
|
161
|
+
token = tracer._suppress_auto_http_instrumentation() # pylint: disable=protected-access
|
162
|
+
request.context[self._SUPPRESSION_TOKEN] = token
|
106
163
|
|
107
|
-
request.context[self.TRACING_CONTEXT] = span
|
108
164
|
except Exception as err: # pylint: disable=broad-except
|
109
165
|
_LOGGER.warning("Unable to start network span: %s", err)
|
110
166
|
|
@@ -126,21 +182,52 @@ class DistributedTracingPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseTyp
|
|
126
182
|
if self.TRACING_CONTEXT not in request.context:
|
127
183
|
return
|
128
184
|
|
129
|
-
span
|
185
|
+
span = request.context[self.TRACING_CONTEXT]
|
186
|
+
if not span:
|
187
|
+
return
|
188
|
+
|
130
189
|
http_request: Union[HttpRequest, LegacyHttpRequest] = request.http_request
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
190
|
+
|
191
|
+
attributes: Dict[str, Any] = {}
|
192
|
+
if request.context.get("retry_count"):
|
193
|
+
attributes[self._HTTP_RESEND_COUNT] = request.context["retry_count"]
|
194
|
+
if http_request.headers.get(self._REQUEST_ID):
|
195
|
+
attributes[self._REQUEST_ID_ATTR] = http_request.headers[self._REQUEST_ID]
|
196
|
+
if response and self._RESPONSE_ID in response.headers:
|
197
|
+
attributes[self._RESPONSE_ID_ATTR] = response.headers[self._RESPONSE_ID]
|
198
|
+
|
199
|
+
# We'll determine if the span is from a plugin or the core tracing library based on the presence of the
|
200
|
+
# `set_http_attributes` method.
|
201
|
+
if hasattr(span, "set_http_attributes"):
|
202
|
+
# Plugin-based tracing
|
203
|
+
span.set_http_attributes(request=http_request, response=response)
|
204
|
+
for key, value in attributes.items():
|
205
|
+
span.add_attribute(key, value)
|
140
206
|
if exc_info:
|
141
207
|
span.__exit__(*exc_info)
|
142
208
|
else:
|
143
209
|
span.finish()
|
210
|
+
else:
|
211
|
+
# Native tracing
|
212
|
+
self._set_http_client_span_attributes(span, request=http_request, response=response)
|
213
|
+
span.set_attributes(attributes)
|
214
|
+
if exc_info:
|
215
|
+
# If there was an exception, set the error.type attribute.
|
216
|
+
exception_type = exc_info[0]
|
217
|
+
if exception_type:
|
218
|
+
module = exception_type.__module__ if exception_type.__module__ != "builtins" else ""
|
219
|
+
error_type = f"{module}.{exception_type.__qualname__}" if module else exception_type.__qualname__
|
220
|
+
span.set_attribute(self._ERROR_TYPE, error_type)
|
221
|
+
|
222
|
+
span.__exit__(*exc_info)
|
223
|
+
else:
|
224
|
+
span.end()
|
225
|
+
|
226
|
+
suppression_token = request.context.get(self._SUPPRESSION_TOKEN)
|
227
|
+
if suppression_token:
|
228
|
+
tracer = get_tracer()
|
229
|
+
if tracer:
|
230
|
+
tracer._detach_from_context(suppression_token) # pylint: disable=protected-access
|
144
231
|
|
145
232
|
def on_response(
|
146
233
|
self,
|
@@ -151,3 +238,39 @@ class DistributedTracingPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseTyp
|
|
151
238
|
|
152
239
|
def on_exception(self, request: PipelineRequest[HTTPRequestType]) -> None:
|
153
240
|
self.end_span(request, exc_info=sys.exc_info())
|
241
|
+
|
242
|
+
def _set_http_client_span_attributes(
|
243
|
+
self,
|
244
|
+
span: "Span",
|
245
|
+
request: Union[HttpRequest, LegacyHttpRequest],
|
246
|
+
response: Optional[HTTPResponseType] = None,
|
247
|
+
) -> None:
|
248
|
+
"""Add attributes to an HTTP client span.
|
249
|
+
|
250
|
+
:param span: The span to add attributes to.
|
251
|
+
:type span: ~opentelemetry.trace.Span
|
252
|
+
:param request: The request made
|
253
|
+
:type request: ~azure.core.rest.HttpRequest
|
254
|
+
:param response: The response received from the server. Is None if no response received.
|
255
|
+
:type response: ~azure.core.rest.HTTPResponse or ~azure.core.pipeline.transport.HttpResponse
|
256
|
+
"""
|
257
|
+
attributes: Dict[str, Any] = {
|
258
|
+
self._HTTP_REQUEST_METHOD: request.method,
|
259
|
+
self._URL_FULL: request.url,
|
260
|
+
}
|
261
|
+
|
262
|
+
parsed_url = urllib.parse.urlparse(request.url)
|
263
|
+
if parsed_url.hostname:
|
264
|
+
attributes[self._SERVER_ADDRESS] = parsed_url.hostname
|
265
|
+
if parsed_url.port:
|
266
|
+
attributes[self._SERVER_PORT] = parsed_url.port
|
267
|
+
|
268
|
+
user_agent = request.headers.get("User-Agent")
|
269
|
+
if user_agent:
|
270
|
+
attributes[self._USER_AGENT_ORIGINAL] = user_agent
|
271
|
+
if response and response.status_code:
|
272
|
+
attributes[self._HTTP_RESPONSE_STATUS_CODE] = response.status_code
|
273
|
+
if response.status_code >= 400:
|
274
|
+
attributes[self._ERROR_TYPE] = str(response.status_code)
|
275
|
+
|
276
|
+
span.set_attributes(attributes)
|
@@ -58,6 +58,7 @@ _LOGGER = logging.getLogger(__name__)
|
|
58
58
|
|
59
59
|
def domain_changed(original_domain: Optional[str], url: str) -> bool:
|
60
60
|
"""Checks if the domain has changed.
|
61
|
+
|
61
62
|
:param str original_domain: The original domain.
|
62
63
|
:param str url: The new url.
|
63
64
|
:rtype: bool
|
@@ -193,9 +194,9 @@ class RedirectPolicy(RedirectPolicyBase, HTTPPolicy[HTTPRequestType, HTTPRespons
|
|
193
194
|
|
194
195
|
:param request: The PipelineRequest object
|
195
196
|
:type request: ~azure.core.pipeline.PipelineRequest
|
196
|
-
:return:
|
197
|
+
:return: The PipelineResponse.
|
197
198
|
:rtype: ~azure.core.pipeline.PipelineResponse
|
198
|
-
:raises
|
199
|
+
:raises ~azure.core.exceptions.TooManyRedirectsError: if maximum redirects exceeded.
|
199
200
|
"""
|
200
201
|
retryable: bool = True
|
201
202
|
redirect_settings = self.configure_redirects(request.context.options)
|
@@ -65,9 +65,9 @@ class AsyncRedirectPolicy(RedirectPolicyBase, AsyncHTTPPolicy[HTTPRequestType, A
|
|
65
65
|
|
66
66
|
:param request: The PipelineRequest object
|
67
67
|
:type request: ~azure.core.pipeline.PipelineRequest
|
68
|
-
:return:
|
68
|
+
:return: the PipelineResponse.
|
69
69
|
:rtype: ~azure.core.pipeline.PipelineResponse
|
70
|
-
:raises
|
70
|
+
:raises ~azure.core.exceptions.TooManyRedirectsError: if maximum redirects exceeded.
|
71
71
|
"""
|
72
72
|
redirects_remaining = True
|
73
73
|
redirect_settings = self.configure_redirects(request.context.options)
|
@@ -422,28 +422,21 @@ class RetryPolicy(RetryPolicyBase, HTTPPolicy[HTTPRequestType, HTTPResponseType]
|
|
422
422
|
|
423
423
|
:keyword int retry_total: Total number of retries to allow. Takes precedence over other counts.
|
424
424
|
Default value is 10.
|
425
|
-
|
426
425
|
:keyword int retry_connect: How many connection-related errors to retry on.
|
427
426
|
These are errors raised before the request is sent to the remote server,
|
428
427
|
which we assume has not triggered the server to process the request. Default value is 3.
|
429
|
-
|
430
428
|
:keyword int retry_read: How many times to retry on read errors.
|
431
429
|
These errors are raised after the request was sent to the server, so the
|
432
430
|
request may have side-effects. Default value is 3.
|
433
|
-
|
434
431
|
:keyword int retry_status: How many times to retry on bad status codes. Default value is 3.
|
435
|
-
|
436
432
|
:keyword float retry_backoff_factor: A backoff factor to apply between attempts after the second try
|
437
433
|
(most errors are resolved immediately by a second try without a delay).
|
438
434
|
In fixed mode, retry policy will always sleep for {backoff factor}.
|
439
435
|
In 'exponential' mode, retry policy will sleep for: `{backoff factor} * (2 ** ({number of total retries} - 1))`
|
440
436
|
seconds. If the backoff_factor is 0.1, then the retry will sleep
|
441
437
|
for [0.0s, 0.2s, 0.4s, ...] between retries. The default value is 0.8.
|
442
|
-
|
443
438
|
:keyword int retry_backoff_max: The maximum back off time. Default value is 120 seconds (2 minutes).
|
444
|
-
|
445
439
|
:keyword RetryMode retry_mode: Fixed or exponential delay between attemps, default is exponential.
|
446
|
-
|
447
440
|
:keyword int timeout: Timeout setting for the operation in seconds, default is 604800s (7 days).
|
448
441
|
|
449
442
|
.. admonition:: Example:
|
@@ -522,10 +515,10 @@ class RetryPolicy(RetryPolicyBase, HTTPPolicy[HTTPRequestType, HTTPResponseType]
|
|
522
515
|
|
523
516
|
:param request: The PipelineRequest object
|
524
517
|
:type request: ~azure.core.pipeline.PipelineRequest
|
525
|
-
:return:
|
518
|
+
:return: The PipelineResponse.
|
526
519
|
:rtype: ~azure.core.pipeline.PipelineResponse
|
527
|
-
:raises
|
528
|
-
:raises
|
520
|
+
:raises ~azure.core.exceptions.AzureError: if maximum retries exceeded.
|
521
|
+
:raises ~azure.core.exceptions.ClientAuthenticationError: if authentication fails.
|
529
522
|
"""
|
530
523
|
retry_active = True
|
531
524
|
response = None
|
@@ -57,23 +57,18 @@ class AsyncRetryPolicy(RetryPolicyBase, AsyncHTTPPolicy[HTTPRequestType, AsyncHT
|
|
57
57
|
|
58
58
|
:keyword int retry_total: Total number of retries to allow. Takes precedence over other counts.
|
59
59
|
Default value is 10.
|
60
|
-
|
61
60
|
:keyword int retry_connect: How many connection-related errors to retry on.
|
62
61
|
These are errors raised before the request is sent to the remote server,
|
63
62
|
which we assume has not triggered the server to process the request. Default value is 3.
|
64
|
-
|
65
63
|
:keyword int retry_read: How many times to retry on read errors.
|
66
64
|
These errors are raised after the request was sent to the server, so the
|
67
65
|
request may have side-effects. Default value is 3.
|
68
|
-
|
69
66
|
:keyword int retry_status: How many times to retry on bad status codes. Default value is 3.
|
70
|
-
|
71
67
|
:keyword float retry_backoff_factor: A backoff factor to apply between attempts after the second try
|
72
68
|
(most errors are resolved immediately by a second try without a delay).
|
73
69
|
Retry policy will sleep for: `{backoff factor} * (2 ** ({number of total retries} - 1))`
|
74
70
|
seconds. If the backoff_factor is 0.1, then the retry will sleep
|
75
71
|
for [0.0s, 0.2s, 0.4s, ...] between retries. The default value is 0.8.
|
76
|
-
|
77
72
|
:keyword int retry_backoff_max: The maximum back off time. Default value is 120 seconds (2 minutes).
|
78
73
|
|
79
74
|
.. admonition:: Example:
|
@@ -154,10 +149,10 @@ class AsyncRetryPolicy(RetryPolicyBase, AsyncHTTPPolicy[HTTPRequestType, AsyncHT
|
|
154
149
|
|
155
150
|
:param request: The PipelineRequest object
|
156
151
|
:type request: ~azure.core.pipeline.PipelineRequest
|
157
|
-
:return:
|
152
|
+
:return: The PipelineResponse.
|
158
153
|
:rtype: ~azure.core.pipeline.PipelineResponse
|
159
|
-
:raise
|
160
|
-
:raise
|
154
|
+
:raise ~azure.core.exceptions.AzureError: if maximum retries exceeded.
|
155
|
+
:raise ~azure.core.exceptions.ClientAuthenticationError: if authentication fails
|
161
156
|
"""
|
162
157
|
retry_active = True
|
163
158
|
response = None
|
@@ -234,6 +234,7 @@ class UserAgentPolicy(SansIOHTTPPolicy[HTTPRequestType, HTTPResponseType]):
|
|
234
234
|
|
235
235
|
def add_user_agent(self, value: str) -> None:
|
236
236
|
"""Add value to current user agent with a space.
|
237
|
+
|
237
238
|
:param str value: value to add to user agent.
|
238
239
|
"""
|
239
240
|
self._user_agent = "{} {}".format(self._user_agent, value)
|
@@ -441,6 +442,7 @@ class HttpLoggingPolicy(
|
|
441
442
|
self, request: PipelineRequest[HTTPRequestType]
|
442
443
|
) -> None:
|
443
444
|
"""Logs HTTP method, url and headers.
|
445
|
+
|
444
446
|
:param request: The PipelineRequest object.
|
445
447
|
:type request: ~azure.core.pipeline.PipelineRequest
|
446
448
|
"""
|
@@ -85,7 +85,6 @@ class AioHttpTransport(AsyncHttpTransport):
|
|
85
85
|
:keyword session: The client session.
|
86
86
|
:paramtype session: ~aiohttp.ClientSession
|
87
87
|
:keyword bool session_owner: Session owner. Defaults True.
|
88
|
-
|
89
88
|
:keyword bool use_env_settings: Uses proxy settings from environment. Defaults to True.
|
90
89
|
|
91
90
|
.. admonition:: Example:
|
@@ -113,15 +113,15 @@ def _succeeded(status):
|
|
113
113
|
|
114
114
|
|
115
115
|
class BadStatus(Exception):
|
116
|
-
|
116
|
+
"""Exception raised when status is invalid."""
|
117
117
|
|
118
118
|
|
119
119
|
class BadResponse(Exception):
|
120
|
-
|
120
|
+
"""Exception raised when response is invalid."""
|
121
121
|
|
122
122
|
|
123
123
|
class OperationFailed(Exception):
|
124
|
-
|
124
|
+
"""Exception raised when operation failed or canceled."""
|
125
125
|
|
126
126
|
|
127
127
|
def _as_json(response: AllHttpResponseType) -> Dict[str, Any]:
|
File without changes
|
@@ -46,6 +46,7 @@ class AsyncHttpResponseBackcompatMixin(_HttpResponseBackcompatMixinBase):
|
|
46
46
|
def parts(self):
|
47
47
|
"""DEPRECATED: Assuming the content-type is multipart/mixed, will return the parts as an async iterator.
|
48
48
|
This is deprecated and will be removed in a later release.
|
49
|
+
|
49
50
|
:rtype: AsyncIterator
|
50
51
|
:return: The parts of the response
|
51
52
|
:raises ValueError: If the content is not multipart/mixed
|
@@ -95,6 +96,7 @@ class AsyncHttpResponseImpl(_HttpResponseBaseImpl, _AsyncHttpResponse, AsyncHttp
|
|
95
96
|
|
96
97
|
async def iter_raw(self, **kwargs: Any) -> AsyncIterator[bytes]:
|
97
98
|
"""Asynchronously iterates over the response's bytes. Will not decompress in the process
|
99
|
+
|
98
100
|
:return: An async iterator of bytes from the response
|
99
101
|
:rtype: AsyncIterator[bytes]
|
100
102
|
"""
|
@@ -105,6 +107,7 @@ class AsyncHttpResponseImpl(_HttpResponseBaseImpl, _AsyncHttpResponse, AsyncHttp
|
|
105
107
|
|
106
108
|
async def iter_bytes(self, **kwargs: Any) -> AsyncIterator[bytes]:
|
107
109
|
"""Asynchronously iterates over the response's bytes. Will decompress in the process
|
110
|
+
|
108
111
|
:return: An async iterator of bytes from the response
|
109
112
|
:rtype: AsyncIterator[bytes]
|
110
113
|
"""
|
@@ -303,7 +303,7 @@ class _HttpResponseBase(abc.ABC):
|
|
303
303
|
|
304
304
|
:return: The JSON deserialized response body
|
305
305
|
:rtype: any
|
306
|
-
:raises json.decoder.JSONDecodeError
|
306
|
+
:raises json.decoder.JSONDecodeError: if the body is not valid JSON.
|
307
307
|
"""
|
308
308
|
|
309
309
|
@abc.abstractmethod
|
@@ -312,7 +312,7 @@ class _HttpResponseBase(abc.ABC):
|
|
312
312
|
|
313
313
|
If response is good, does nothing.
|
314
314
|
|
315
|
-
:raises ~azure.core.HttpResponseError if the object has an error status code
|
315
|
+
:raises ~azure.core.HttpResponseError: if the object has an error status code.
|
316
316
|
"""
|
317
317
|
|
318
318
|
|
@@ -30,7 +30,6 @@ from collections import namedtuple
|
|
30
30
|
from enum import Enum
|
31
31
|
import logging
|
32
32
|
import os
|
33
|
-
import sys
|
34
33
|
from typing import (
|
35
34
|
Type,
|
36
35
|
Optional,
|
@@ -43,10 +42,13 @@ from typing import (
|
|
43
42
|
Generic,
|
44
43
|
Mapping,
|
45
44
|
List,
|
45
|
+
TYPE_CHECKING,
|
46
46
|
)
|
47
|
-
from azure.core.tracing import AbstractSpan
|
48
47
|
from ._azure_clouds import AzureClouds
|
49
48
|
|
49
|
+
if TYPE_CHECKING:
|
50
|
+
from azure.core.tracing import AbstractSpan
|
51
|
+
|
50
52
|
ValidInputType = TypeVar("ValidInputType")
|
51
53
|
ValueType = TypeVar("ValueType")
|
52
54
|
|
@@ -88,6 +90,24 @@ def convert_bool(value: Union[str, bool]) -> bool:
|
|
88
90
|
raise ValueError("Cannot convert {} to boolean value".format(value))
|
89
91
|
|
90
92
|
|
93
|
+
def convert_tracing_enabled(value: Optional[Union[str, bool]]) -> bool:
|
94
|
+
"""Convert tracing value to bool with regard to tracing implementation.
|
95
|
+
|
96
|
+
:param value: the value to convert
|
97
|
+
:type value: str or bool or None
|
98
|
+
:returns: A boolean value matching the intent of the input
|
99
|
+
:rtype: bool
|
100
|
+
:raises ValueError: If conversion to bool fails
|
101
|
+
"""
|
102
|
+
if value is None:
|
103
|
+
# If tracing_enabled was not explicitly set to a boolean, determine tracing enablement
|
104
|
+
# based on tracing_implementation being set.
|
105
|
+
if settings.tracing_implementation():
|
106
|
+
return True
|
107
|
+
return False
|
108
|
+
return convert_bool(value)
|
109
|
+
|
110
|
+
|
91
111
|
_levels = {
|
92
112
|
"CRITICAL": logging.CRITICAL,
|
93
113
|
"ERROR": logging.ERROR,
|
@@ -181,18 +201,6 @@ def _get_opentelemetry_span() -> Optional[Type[AbstractSpan]]:
|
|
181
201
|
return None
|
182
202
|
|
183
203
|
|
184
|
-
def _get_opencensus_span_if_opencensus_is_imported() -> Optional[Type[AbstractSpan]]:
|
185
|
-
if "opencensus" not in sys.modules:
|
186
|
-
return None
|
187
|
-
return _get_opencensus_span()
|
188
|
-
|
189
|
-
|
190
|
-
def _get_opentelemetry_span_if_opentelemetry_is_imported() -> Optional[Type[AbstractSpan]]:
|
191
|
-
if "opentelemetry" not in sys.modules:
|
192
|
-
return None
|
193
|
-
return _get_opentelemetry_span()
|
194
|
-
|
195
|
-
|
196
204
|
_tracing_implementation_dict: Dict[str, Callable[[], Optional[Type[AbstractSpan]]]] = {
|
197
205
|
"opencensus": _get_opencensus_span,
|
198
206
|
"opentelemetry": _get_opentelemetry_span,
|
@@ -215,9 +223,7 @@ def convert_tracing_impl(value: Optional[Union[str, Type[AbstractSpan]]]) -> Opt
|
|
215
223
|
|
216
224
|
"""
|
217
225
|
if value is None:
|
218
|
-
return
|
219
|
-
_get_opentelemetry_span_if_opentelemetry_is_imported() or _get_opencensus_span_if_opencensus_is_imported()
|
220
|
-
)
|
226
|
+
return None
|
221
227
|
|
222
228
|
if not isinstance(value, str):
|
223
229
|
return value
|
@@ -299,7 +305,7 @@ class PrioritizedSetting(Generic[ValidInputType, ValueType]):
|
|
299
305
|
:type value: str or int or float or None
|
300
306
|
:returns: the value of the setting
|
301
307
|
:rtype: str or int or float
|
302
|
-
:raises
|
308
|
+
:raises RuntimeError: if no value can be determined
|
303
309
|
"""
|
304
310
|
|
305
311
|
# 4. immediate values
|
@@ -501,11 +507,11 @@ class Settings:
|
|
501
507
|
default=logging.INFO,
|
502
508
|
)
|
503
509
|
|
504
|
-
tracing_enabled: PrioritizedSetting[Union[str, bool], bool] = PrioritizedSetting(
|
510
|
+
tracing_enabled: PrioritizedSetting[Optional[Union[str, bool]], bool] = PrioritizedSetting(
|
505
511
|
"tracing_enabled",
|
506
512
|
env_var="AZURE_TRACING_ENABLED",
|
507
|
-
convert=
|
508
|
-
default=
|
513
|
+
convert=convert_tracing_enabled,
|
514
|
+
default=None,
|
509
515
|
)
|
510
516
|
|
511
517
|
tracing_implementation: PrioritizedSetting[
|
@@ -2,11 +2,7 @@
|
|
2
2
|
# Copyright (c) Microsoft Corporation.
|
3
3
|
# Licensed under the MIT License.
|
4
4
|
# ------------------------------------
|
5
|
-
from
|
6
|
-
|
7
|
-
SpanKind,
|
8
|
-
HttpSpanMixin,
|
9
|
-
Link,
|
10
|
-
)
|
5
|
+
from ._abstract_span import AbstractSpan, HttpSpanMixin
|
6
|
+
from ._models import Link, SpanKind, TracingOptions
|
11
7
|
|
12
|
-
__all__ = ["AbstractSpan", "
|
8
|
+
__all__ = ["AbstractSpan", "HttpSpanMixin", "Link", "SpanKind", "TracingOptions"]
|