py2docfx 0.1.16.dev2051338__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.dev2051338.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/METADATA +2 -3
- {py2docfx-0.1.16.dev2051338.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/RECORD +263 -104
- {py2docfx-0.1.16.dev2051338.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.dev2051338.dist-info → py2docfx-0.1.16.dev2064350.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,184 @@
|
|
1
|
+
"""
|
2
|
+
Tools for converting old- to new-style metadata.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from __future__ import annotations
|
6
|
+
|
7
|
+
import functools
|
8
|
+
import itertools
|
9
|
+
import os.path
|
10
|
+
import re
|
11
|
+
import textwrap
|
12
|
+
from collections.abc import Generator, Iterable, Iterator
|
13
|
+
from email.message import Message
|
14
|
+
from email.parser import Parser
|
15
|
+
from typing import Literal
|
16
|
+
|
17
|
+
from packaging.requirements import Requirement
|
18
|
+
|
19
|
+
|
20
|
+
def _nonblank(str: str) -> bool | Literal[""]:
|
21
|
+
return str and not str.startswith("#")
|
22
|
+
|
23
|
+
|
24
|
+
@functools.singledispatch
|
25
|
+
def yield_lines(iterable: Iterable[str]) -> Iterator[str]:
|
26
|
+
r"""
|
27
|
+
Yield valid lines of a string or iterable.
|
28
|
+
>>> list(yield_lines(''))
|
29
|
+
[]
|
30
|
+
>>> list(yield_lines(['foo', 'bar']))
|
31
|
+
['foo', 'bar']
|
32
|
+
>>> list(yield_lines('foo\nbar'))
|
33
|
+
['foo', 'bar']
|
34
|
+
>>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
|
35
|
+
['foo', 'baz #comment']
|
36
|
+
>>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
|
37
|
+
['foo', 'bar', 'baz', 'bing']
|
38
|
+
"""
|
39
|
+
return itertools.chain.from_iterable(map(yield_lines, iterable))
|
40
|
+
|
41
|
+
|
42
|
+
@yield_lines.register(str)
|
43
|
+
def _(text: str) -> Iterator[str]:
|
44
|
+
return filter(_nonblank, map(str.strip, text.splitlines()))
|
45
|
+
|
46
|
+
|
47
|
+
def split_sections(
|
48
|
+
s: str | Iterator[str],
|
49
|
+
) -> Generator[tuple[str | None, list[str]], None, None]:
|
50
|
+
"""Split a string or iterable thereof into (section, content) pairs
|
51
|
+
Each ``section`` is a stripped version of the section header ("[section]")
|
52
|
+
and each ``content`` is a list of stripped lines excluding blank lines and
|
53
|
+
comment-only lines. If there are any such lines before the first section
|
54
|
+
header, they're returned in a first ``section`` of ``None``.
|
55
|
+
"""
|
56
|
+
section = None
|
57
|
+
content: list[str] = []
|
58
|
+
for line in yield_lines(s):
|
59
|
+
if line.startswith("["):
|
60
|
+
if line.endswith("]"):
|
61
|
+
if section or content:
|
62
|
+
yield section, content
|
63
|
+
section = line[1:-1].strip()
|
64
|
+
content = []
|
65
|
+
else:
|
66
|
+
raise ValueError("Invalid section heading", line)
|
67
|
+
else:
|
68
|
+
content.append(line)
|
69
|
+
|
70
|
+
# wrap up last segment
|
71
|
+
yield section, content
|
72
|
+
|
73
|
+
|
74
|
+
def safe_extra(extra: str) -> str:
|
75
|
+
"""Convert an arbitrary string to a standard 'extra' name
|
76
|
+
Any runs of non-alphanumeric characters are replaced with a single '_',
|
77
|
+
and the result is always lowercased.
|
78
|
+
"""
|
79
|
+
return re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()
|
80
|
+
|
81
|
+
|
82
|
+
def safe_name(name: str) -> str:
|
83
|
+
"""Convert an arbitrary string to a standard distribution name
|
84
|
+
Any runs of non-alphanumeric/. characters are replaced with a single '-'.
|
85
|
+
"""
|
86
|
+
return re.sub("[^A-Za-z0-9.]+", "-", name)
|
87
|
+
|
88
|
+
|
89
|
+
def requires_to_requires_dist(requirement: Requirement) -> str:
|
90
|
+
"""Return the version specifier for a requirement in PEP 345/566 fashion."""
|
91
|
+
if requirement.url:
|
92
|
+
return " @ " + requirement.url
|
93
|
+
|
94
|
+
requires_dist: list[str] = []
|
95
|
+
for spec in requirement.specifier:
|
96
|
+
requires_dist.append(spec.operator + spec.version)
|
97
|
+
|
98
|
+
if requires_dist:
|
99
|
+
return " " + ",".join(sorted(requires_dist))
|
100
|
+
else:
|
101
|
+
return ""
|
102
|
+
|
103
|
+
|
104
|
+
def convert_requirements(requirements: list[str]) -> Iterator[str]:
|
105
|
+
"""Yield Requires-Dist: strings for parsed requirements strings."""
|
106
|
+
for req in requirements:
|
107
|
+
parsed_requirement = Requirement(req)
|
108
|
+
spec = requires_to_requires_dist(parsed_requirement)
|
109
|
+
extras = ",".join(sorted(safe_extra(e) for e in parsed_requirement.extras))
|
110
|
+
if extras:
|
111
|
+
extras = f"[{extras}]"
|
112
|
+
|
113
|
+
yield safe_name(parsed_requirement.name) + extras + spec
|
114
|
+
|
115
|
+
|
116
|
+
def generate_requirements(
|
117
|
+
extras_require: dict[str | None, list[str]],
|
118
|
+
) -> Iterator[tuple[str, str]]:
|
119
|
+
"""
|
120
|
+
Convert requirements from a setup()-style dictionary to
|
121
|
+
('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.
|
122
|
+
|
123
|
+
extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
|
124
|
+
using the empty extra {'': [requirements]} to hold install_requires.
|
125
|
+
"""
|
126
|
+
for extra, depends in extras_require.items():
|
127
|
+
condition = ""
|
128
|
+
extra = extra or ""
|
129
|
+
if ":" in extra: # setuptools extra:condition syntax
|
130
|
+
extra, condition = extra.split(":", 1)
|
131
|
+
|
132
|
+
extra = safe_extra(extra)
|
133
|
+
if extra:
|
134
|
+
yield "Provides-Extra", extra
|
135
|
+
if condition:
|
136
|
+
condition = "(" + condition + ") and "
|
137
|
+
condition += f"extra == '{extra}'"
|
138
|
+
|
139
|
+
if condition:
|
140
|
+
condition = " ; " + condition
|
141
|
+
|
142
|
+
for new_req in convert_requirements(depends):
|
143
|
+
canonical_req = str(Requirement(new_req + condition))
|
144
|
+
yield "Requires-Dist", canonical_req
|
145
|
+
|
146
|
+
|
147
|
+
def pkginfo_to_metadata(egg_info_path: str, pkginfo_path: str) -> Message:
|
148
|
+
"""
|
149
|
+
Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
|
150
|
+
"""
|
151
|
+
with open(pkginfo_path, encoding="utf-8") as headers:
|
152
|
+
pkg_info = Parser().parse(headers)
|
153
|
+
|
154
|
+
pkg_info.replace_header("Metadata-Version", "2.1")
|
155
|
+
# Those will be regenerated from `requires.txt`.
|
156
|
+
del pkg_info["Provides-Extra"]
|
157
|
+
del pkg_info["Requires-Dist"]
|
158
|
+
requires_path = os.path.join(egg_info_path, "requires.txt")
|
159
|
+
if os.path.exists(requires_path):
|
160
|
+
with open(requires_path, encoding="utf-8") as requires_file:
|
161
|
+
requires = requires_file.read()
|
162
|
+
|
163
|
+
parsed_requirements = sorted(split_sections(requires), key=lambda x: x[0] or "")
|
164
|
+
for extra, reqs in parsed_requirements:
|
165
|
+
for key, value in generate_requirements({extra: reqs}):
|
166
|
+
if (key, value) not in pkg_info.items():
|
167
|
+
pkg_info[key] = value
|
168
|
+
|
169
|
+
description = pkg_info["Description"]
|
170
|
+
if description:
|
171
|
+
description_lines = pkg_info["Description"].splitlines()
|
172
|
+
dedented_description = "\n".join(
|
173
|
+
# if the first line of long_description is blank,
|
174
|
+
# the first line here will be indented.
|
175
|
+
(
|
176
|
+
description_lines[0].lstrip(),
|
177
|
+
textwrap.dedent("\n".join(description_lines[1:])),
|
178
|
+
"\n",
|
179
|
+
)
|
180
|
+
)
|
181
|
+
pkg_info.set_payload(dedented_description)
|
182
|
+
del pkg_info["Description"]
|
183
|
+
|
184
|
+
return pkg_info
|
@@ -1,26 +1,15 @@
|
|
1
|
-
from typing import TYPE_CHECKING
|
2
1
|
from warnings import warn
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
)
|
3
|
+
ERROR = """\
|
4
|
+
The 'wheel.bdist_wheel' module has been removed.
|
5
|
+
Please update your setuptools to v70.1 or later.
|
6
|
+
If you're explicitly importing 'wheel.bdist_wheel', please update your import to point \
|
7
|
+
to 'setuptools.command.bdist_wheel' instead.
|
8
|
+
"""
|
11
9
|
|
12
|
-
|
13
|
-
from .
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
# there is no need to backport them to the deprecated code base.
|
19
|
-
# This is useful in the case of old packages in the ecosystem
|
20
|
-
# that are still used but have low maintenance.
|
21
|
-
from setuptools.command.bdist_wheel import bdist_wheel
|
22
|
-
except ImportError:
|
23
|
-
# Only used in the case of old setuptools versions.
|
24
|
-
# If the user wants to get the latest fixes/PEPs,
|
25
|
-
# they are encouraged to address the deprecation warning.
|
26
|
-
from ._bdist_wheel import bdist_wheel as bdist_wheel
|
10
|
+
try:
|
11
|
+
from setuptools.command.bdist_wheel import bdist_wheel as bdist_wheel
|
12
|
+
except ModuleNotFoundError as exc:
|
13
|
+
raise ImportError(ERROR) from exc
|
14
|
+
|
15
|
+
warn(ERROR, DeprecationWarning, stacklevel=2)
|
@@ -1,183 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
from
|
6
|
-
|
7
|
-
import
|
8
|
-
import
|
9
|
-
import
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def _nonblank(str: str) -> bool | Literal[""]:
|
20
|
-
return str and not str.startswith("#")
|
21
|
-
|
22
|
-
|
23
|
-
@functools.singledispatch
|
24
|
-
def yield_lines(iterable: Iterable[str]) -> Iterator[str]:
|
25
|
-
r"""
|
26
|
-
Yield valid lines of a string or iterable.
|
27
|
-
>>> list(yield_lines(''))
|
28
|
-
[]
|
29
|
-
>>> list(yield_lines(['foo', 'bar']))
|
30
|
-
['foo', 'bar']
|
31
|
-
>>> list(yield_lines('foo\nbar'))
|
32
|
-
['foo', 'bar']
|
33
|
-
>>> list(yield_lines('\nfoo\n#bar\nbaz #comment'))
|
34
|
-
['foo', 'baz #comment']
|
35
|
-
>>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n']))
|
36
|
-
['foo', 'bar', 'baz', 'bing']
|
37
|
-
"""
|
38
|
-
return itertools.chain.from_iterable(map(yield_lines, iterable))
|
39
|
-
|
40
|
-
|
41
|
-
@yield_lines.register(str)
|
42
|
-
def _(text: str) -> Iterator[str]:
|
43
|
-
return filter(_nonblank, map(str.strip, text.splitlines()))
|
44
|
-
|
45
|
-
|
46
|
-
def split_sections(
|
47
|
-
s: str | Iterator[str],
|
48
|
-
) -> Generator[tuple[str | None, list[str]], None, None]:
|
49
|
-
"""Split a string or iterable thereof into (section, content) pairs
|
50
|
-
Each ``section`` is a stripped version of the section header ("[section]")
|
51
|
-
and each ``content`` is a list of stripped lines excluding blank lines and
|
52
|
-
comment-only lines. If there are any such lines before the first section
|
53
|
-
header, they're returned in a first ``section`` of ``None``.
|
54
|
-
"""
|
55
|
-
section = None
|
56
|
-
content: list[str] = []
|
57
|
-
for line in yield_lines(s):
|
58
|
-
if line.startswith("["):
|
59
|
-
if line.endswith("]"):
|
60
|
-
if section or content:
|
61
|
-
yield section, content
|
62
|
-
section = line[1:-1].strip()
|
63
|
-
content = []
|
64
|
-
else:
|
65
|
-
raise ValueError("Invalid section heading", line)
|
66
|
-
else:
|
67
|
-
content.append(line)
|
68
|
-
|
69
|
-
# wrap up last segment
|
70
|
-
yield section, content
|
71
|
-
|
72
|
-
|
73
|
-
def safe_extra(extra: str) -> str:
|
74
|
-
"""Convert an arbitrary string to a standard 'extra' name
|
75
|
-
Any runs of non-alphanumeric characters are replaced with a single '_',
|
76
|
-
and the result is always lowercased.
|
77
|
-
"""
|
78
|
-
return re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()
|
79
|
-
|
80
|
-
|
81
|
-
def safe_name(name: str) -> str:
|
82
|
-
"""Convert an arbitrary string to a standard distribution name
|
83
|
-
Any runs of non-alphanumeric/. characters are replaced with a single '-'.
|
84
|
-
"""
|
85
|
-
return re.sub("[^A-Za-z0-9.]+", "-", name)
|
86
|
-
|
87
|
-
|
88
|
-
def requires_to_requires_dist(requirement: Requirement) -> str:
|
89
|
-
"""Return the version specifier for a requirement in PEP 345/566 fashion."""
|
90
|
-
if requirement.url:
|
91
|
-
return " @ " + requirement.url
|
92
|
-
|
93
|
-
requires_dist: list[str] = []
|
94
|
-
for spec in requirement.specifier:
|
95
|
-
requires_dist.append(spec.operator + spec.version)
|
96
|
-
|
97
|
-
if requires_dist:
|
98
|
-
return " " + ",".join(sorted(requires_dist))
|
99
|
-
else:
|
100
|
-
return ""
|
101
|
-
|
102
|
-
|
103
|
-
def convert_requirements(requirements: list[str]) -> Iterator[str]:
|
104
|
-
"""Yield Requires-Dist: strings for parsed requirements strings."""
|
105
|
-
for req in requirements:
|
106
|
-
parsed_requirement = Requirement(req)
|
107
|
-
spec = requires_to_requires_dist(parsed_requirement)
|
108
|
-
extras = ",".join(sorted(safe_extra(e) for e in parsed_requirement.extras))
|
109
|
-
if extras:
|
110
|
-
extras = f"[{extras}]"
|
111
|
-
|
112
|
-
yield safe_name(parsed_requirement.name) + extras + spec
|
113
|
-
|
114
|
-
|
115
|
-
def generate_requirements(
|
116
|
-
extras_require: dict[str | None, list[str]],
|
117
|
-
) -> Iterator[tuple[str, str]]:
|
118
|
-
"""
|
119
|
-
Convert requirements from a setup()-style dictionary to
|
120
|
-
('Requires-Dist', 'requirement') and ('Provides-Extra', 'extra') tuples.
|
121
|
-
|
122
|
-
extras_require is a dictionary of {extra: [requirements]} as passed to setup(),
|
123
|
-
using the empty extra {'': [requirements]} to hold install_requires.
|
124
|
-
"""
|
125
|
-
for extra, depends in extras_require.items():
|
126
|
-
condition = ""
|
127
|
-
extra = extra or ""
|
128
|
-
if ":" in extra: # setuptools extra:condition syntax
|
129
|
-
extra, condition = extra.split(":", 1)
|
130
|
-
|
131
|
-
extra = safe_extra(extra)
|
132
|
-
if extra:
|
133
|
-
yield "Provides-Extra", extra
|
134
|
-
if condition:
|
135
|
-
condition = "(" + condition + ") and "
|
136
|
-
condition += f"extra == '{extra}'"
|
137
|
-
|
138
|
-
if condition:
|
139
|
-
condition = " ; " + condition
|
140
|
-
|
141
|
-
for new_req in convert_requirements(depends):
|
142
|
-
canonical_req = str(Requirement(new_req + condition))
|
143
|
-
yield "Requires-Dist", canonical_req
|
144
|
-
|
145
|
-
|
146
|
-
def pkginfo_to_metadata(egg_info_path: str, pkginfo_path: str) -> Message:
|
147
|
-
"""
|
148
|
-
Convert .egg-info directory with PKG-INFO to the Metadata 2.1 format
|
149
|
-
"""
|
150
|
-
with open(pkginfo_path, encoding="utf-8") as headers:
|
151
|
-
pkg_info = Parser().parse(headers)
|
152
|
-
|
153
|
-
pkg_info.replace_header("Metadata-Version", "2.1")
|
154
|
-
# Those will be regenerated from `requires.txt`.
|
155
|
-
del pkg_info["Provides-Extra"]
|
156
|
-
del pkg_info["Requires-Dist"]
|
157
|
-
requires_path = os.path.join(egg_info_path, "requires.txt")
|
158
|
-
if os.path.exists(requires_path):
|
159
|
-
with open(requires_path, encoding="utf-8") as requires_file:
|
160
|
-
requires = requires_file.read()
|
161
|
-
|
162
|
-
parsed_requirements = sorted(split_sections(requires), key=lambda x: x[0] or "")
|
163
|
-
for extra, reqs in parsed_requirements:
|
164
|
-
for key, value in generate_requirements({extra: reqs}):
|
165
|
-
if (key, value) not in pkg_info.items():
|
166
|
-
pkg_info[key] = value
|
167
|
-
|
168
|
-
description = pkg_info["Description"]
|
169
|
-
if description:
|
170
|
-
description_lines = pkg_info["Description"].splitlines()
|
171
|
-
dedented_description = "\n".join(
|
172
|
-
# if the first line of long_description is blank,
|
173
|
-
# the first line here will be indented.
|
174
|
-
(
|
175
|
-
description_lines[0].lstrip(),
|
176
|
-
textwrap.dedent("\n".join(description_lines[1:])),
|
177
|
-
"\n",
|
178
|
-
)
|
179
|
-
)
|
180
|
-
pkg_info.set_payload(dedented_description)
|
181
|
-
del pkg_info["Description"]
|
182
|
-
|
183
|
-
return pkg_info
|
1
|
+
from warnings import warn
|
2
|
+
|
3
|
+
from ._metadata import convert_requirements as convert_requirements
|
4
|
+
from ._metadata import generate_requirements as generate_requirements
|
5
|
+
from ._metadata import pkginfo_to_metadata as pkginfo_to_metadata
|
6
|
+
from ._metadata import requires_to_requires_dist as requires_to_requires_dist
|
7
|
+
from ._metadata import safe_extra as safe_extra
|
8
|
+
from ._metadata import safe_name as safe_name
|
9
|
+
from ._metadata import split_sections as split_sections
|
10
|
+
|
11
|
+
warn(
|
12
|
+
f"The {__name__!r} package has been made private and should no longer be imported. "
|
13
|
+
f"Please either copy the code or find an alternative library to import it from, as "
|
14
|
+
f"this warning will be removed in a future version of 'wheel'.",
|
15
|
+
DeprecationWarning,
|
16
|
+
stacklevel=2,
|
17
|
+
)
|
@@ -1,7 +1,11 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
__all__ = ["WHEEL_INFO_RE", "WheelFile", "WheelError"]
|
4
|
+
|
5
|
+
import base64
|
3
6
|
import csv
|
4
7
|
import hashlib
|
8
|
+
import logging
|
5
9
|
import os.path
|
6
10
|
import re
|
7
11
|
import stat
|
@@ -10,17 +14,8 @@ from io import StringIO, TextIOWrapper
|
|
10
14
|
from typing import IO, TYPE_CHECKING, Literal
|
11
15
|
from zipfile import ZIP_DEFLATED, ZipFile, ZipInfo
|
12
16
|
|
13
|
-
from wheel.cli import WheelError
|
14
|
-
from wheel.util import log, urlsafe_b64decode, urlsafe_b64encode
|
15
|
-
|
16
17
|
if TYPE_CHECKING:
|
17
|
-
from
|
18
|
-
|
19
|
-
from typing_extensions import Buffer
|
20
|
-
|
21
|
-
StrPath = Union[str, os.PathLike[str]]
|
22
|
-
|
23
|
-
class SizedBuffer(Sized, Buffer, Protocol): ...
|
18
|
+
from _typeshed import SizedBuffer, StrPath
|
24
19
|
|
25
20
|
|
26
21
|
# Non-greedy matching of an optional build number may be too clever (more
|
@@ -32,8 +27,27 @@ WHEEL_INFO_RE = re.compile(
|
|
32
27
|
)
|
33
28
|
MINIMUM_TIMESTAMP = 315532800 # 1980-01-01 00:00:00 UTC
|
34
29
|
|
30
|
+
log = logging.getLogger("wheel")
|
31
|
+
|
32
|
+
|
33
|
+
class WheelError(Exception):
|
34
|
+
pass
|
35
35
|
|
36
|
-
|
36
|
+
|
37
|
+
def urlsafe_b64encode(data: bytes) -> bytes:
|
38
|
+
"""urlsafe_b64encode without padding"""
|
39
|
+
return base64.urlsafe_b64encode(data).rstrip(b"=")
|
40
|
+
|
41
|
+
|
42
|
+
def urlsafe_b64decode(data: bytes) -> bytes:
|
43
|
+
"""urlsafe_b64decode without padding"""
|
44
|
+
pad = b"=" * (4 - (len(data) & 3))
|
45
|
+
return base64.urlsafe_b64decode(data + pad)
|
46
|
+
|
47
|
+
|
48
|
+
def get_zipinfo_datetime(
|
49
|
+
timestamp: float | None = None,
|
50
|
+
) -> tuple[int, int, int, int, int]:
|
37
51
|
# Some applications need reproducible .whl files, but they can't do this without
|
38
52
|
# forcing the timestamp of the individual ZipInfo objects. See issue #143.
|
39
53
|
timestamp = int(os.environ.get("SOURCE_DATE_EPOCH", timestamp or time.time()))
|
@@ -140,8 +154,8 @@ class WheelFile(ZipFile):
|
|
140
154
|
|
141
155
|
return ef
|
142
156
|
|
143
|
-
def write_files(self, base_dir: str):
|
144
|
-
log.info(
|
157
|
+
def write_files(self, base_dir: str) -> None:
|
158
|
+
log.info("creating %r and adding %r to it", self.filename, base_dir)
|
145
159
|
deferred: list[tuple[str, str]] = []
|
146
160
|
for root, dirnames, filenames in os.walk(base_dir):
|
147
161
|
# Sort the directory names so that `os.walk` will walk them in a
|
@@ -184,7 +198,7 @@ class WheelFile(ZipFile):
|
|
184
198
|
zinfo_or_arcname: str | ZipInfo,
|
185
199
|
data: SizedBuffer | str,
|
186
200
|
compress_type: int | None = None,
|
187
|
-
):
|
201
|
+
) -> None:
|
188
202
|
if isinstance(zinfo_or_arcname, str):
|
189
203
|
zinfo_or_arcname = ZipInfo(
|
190
204
|
zinfo_or_arcname, date_time=get_zipinfo_datetime()
|
@@ -201,7 +215,7 @@ class WheelFile(ZipFile):
|
|
201
215
|
if isinstance(zinfo_or_arcname, ZipInfo)
|
202
216
|
else zinfo_or_arcname
|
203
217
|
)
|
204
|
-
log.info(
|
218
|
+
log.info("adding %r", fname)
|
205
219
|
if fname != self.record_path:
|
206
220
|
hash_ = self._default_algorithm(data)
|
207
221
|
self._file_hashes[fname] = (
|
@@ -210,7 +224,7 @@ class WheelFile(ZipFile):
|
|
210
224
|
)
|
211
225
|
self._file_sizes[fname] = len(data)
|
212
226
|
|
213
|
-
def close(self):
|
227
|
+
def close(self) -> None:
|
214
228
|
# Write RECORD
|
215
229
|
if self.fp is not None and self.mode == "w" and self._file_hashes:
|
216
230
|
data = StringIO()
|
@@ -147,7 +147,7 @@ class AzureKeyCredential:
|
|
147
147
|
It provides the ability to update the key without creating a new client.
|
148
148
|
|
149
149
|
:param str key: The key used to authenticate to an Azure service
|
150
|
-
:raises:
|
150
|
+
:raises TypeError: If the key is not a string.
|
151
151
|
"""
|
152
152
|
|
153
153
|
def __init__(self, key: str) -> None:
|
@@ -185,7 +185,7 @@ class AzureSasCredential:
|
|
185
185
|
It provides the ability to update the shared access signature without creating a new client.
|
186
186
|
|
187
187
|
:param str signature: The shared access signature used to authenticate to an Azure service
|
188
|
-
:raises:
|
188
|
+
:raises TypeError: If the signature is not a string.
|
189
189
|
"""
|
190
190
|
|
191
191
|
def __init__(self, signature: str) -> None:
|
@@ -209,7 +209,8 @@ class AzureSasCredential:
|
|
209
209
|
to update long-lived clients.
|
210
210
|
|
211
211
|
:param str signature: The shared access signature used to authenticate to an Azure service
|
212
|
-
:raises
|
212
|
+
:raises ValueError: If the signature is None or empty.
|
213
|
+
:raises TypeError: If the signature is not a string.
|
213
214
|
"""
|
214
215
|
if not signature:
|
215
216
|
raise ValueError("The signature used for updating can not be None or empty")
|
@@ -224,7 +225,7 @@ class AzureNamedKeyCredential:
|
|
224
225
|
|
225
226
|
:param str name: The name of the credential used to authenticate to an Azure service.
|
226
227
|
:param str key: The key used to authenticate to an Azure service.
|
227
|
-
:raises:
|
228
|
+
:raises TypeError: If the name or key is not a string.
|
228
229
|
"""
|
229
230
|
|
230
231
|
def __init__(self, name: str, key: str) -> None:
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# ------------------------------------
|
2
|
+
# Copyright (c) Microsoft Corporation.
|
3
|
+
# Licensed under the MIT License.
|
4
|
+
# ------------------------------------
|
5
|
+
from typing import Optional, Union, Mapping, TYPE_CHECKING
|
6
|
+
from functools import lru_cache
|
7
|
+
|
8
|
+
if TYPE_CHECKING:
|
9
|
+
from .tracing.opentelemetry import OpenTelemetryTracer
|
10
|
+
|
11
|
+
|
12
|
+
def _get_tracer_impl():
|
13
|
+
# Check if OpenTelemetry is available/installed.
|
14
|
+
try:
|
15
|
+
from .tracing.opentelemetry import OpenTelemetryTracer
|
16
|
+
|
17
|
+
return OpenTelemetryTracer
|
18
|
+
except ImportError:
|
19
|
+
return None
|
20
|
+
|
21
|
+
|
22
|
+
@lru_cache
|
23
|
+
def _get_tracer_cached(
|
24
|
+
library_name: Optional[str],
|
25
|
+
library_version: Optional[str],
|
26
|
+
schema_url: Optional[str],
|
27
|
+
attributes_key: Optional[frozenset],
|
28
|
+
) -> Optional["OpenTelemetryTracer"]:
|
29
|
+
tracer_impl = _get_tracer_impl()
|
30
|
+
if tracer_impl:
|
31
|
+
# Convert attributes_key back to dict if needed
|
32
|
+
attributes = dict(attributes_key) if attributes_key else None
|
33
|
+
return tracer_impl(
|
34
|
+
library_name=library_name,
|
35
|
+
library_version=library_version,
|
36
|
+
schema_url=schema_url,
|
37
|
+
attributes=attributes,
|
38
|
+
)
|
39
|
+
return None
|
40
|
+
|
41
|
+
|
42
|
+
def get_tracer(
|
43
|
+
*,
|
44
|
+
library_name: Optional[str] = None,
|
45
|
+
library_version: Optional[str] = None,
|
46
|
+
schema_url: Optional[str] = None,
|
47
|
+
attributes: Optional[Mapping[str, Union[str, bool, int, float]]] = None,
|
48
|
+
) -> Optional["OpenTelemetryTracer"]:
|
49
|
+
"""Get the OpenTelemetry tracer instance if available.
|
50
|
+
|
51
|
+
If OpenTelemetry is not available, this method will return None. This method caches
|
52
|
+
the tracer instance for each unique set of parameters.
|
53
|
+
|
54
|
+
:keyword library_name: The name of the library to use in the tracer.
|
55
|
+
:paramtype library_name: str
|
56
|
+
:keyword library_version: The version of the library to use in the tracer.
|
57
|
+
:paramtype library_version: str
|
58
|
+
:keyword schema_url: Specifies the Schema URL of the emitted spans. Defaults to
|
59
|
+
"https://opentelemetry.io/schemas/1.23.1".
|
60
|
+
:paramtype schema_url: str
|
61
|
+
:keyword attributes: Attributes to add to the emitted spans.
|
62
|
+
:paramtype attributes: Mapping[str, Union[str, bool, int, float]]
|
63
|
+
:return: The OpenTelemetry tracer instance if available.
|
64
|
+
:rtype: Optional[~azure.core.tracing.opentelemetry.OpenTelemetryTracer]
|
65
|
+
"""
|
66
|
+
attributes_key = frozenset(attributes.items()) if attributes else None
|
67
|
+
return _get_tracer_cached(library_name, library_version, schema_url, attributes_key)
|
@@ -53,6 +53,7 @@ _LOGGER = logging.getLogger(__name__)
|
|
53
53
|
|
54
54
|
def cleanup_kwargs_for_transport(kwargs: Dict[str, str]) -> None:
|
55
55
|
"""Remove kwargs that are not meant for the transport layer.
|
56
|
+
|
56
57
|
:param kwargs: The keyword arguments.
|
57
58
|
:type kwargs: dict
|
58
59
|
|
@@ -62,8 +63,9 @@ def cleanup_kwargs_for_transport(kwargs: Dict[str, str]) -> None:
|
|
62
63
|
to the transport layer. This code is needed to handle the case that the
|
63
64
|
SensitiveHeaderCleanupPolicy is not added into the pipeline and "insecure_domain_change" is not popped.
|
64
65
|
"enable_cae" is added to the `get_token` method of the `TokenCredential` protocol.
|
66
|
+
"tracing_options" is used in the DistributedTracingPolicy and tracing decorators.
|
65
67
|
"""
|
66
|
-
kwargs_to_remove = ["insecure_domain_change", "enable_cae"]
|
68
|
+
kwargs_to_remove = ["insecure_domain_change", "enable_cae", "tracing_options"]
|
67
69
|
if not kwargs:
|
68
70
|
return
|
69
71
|
for key in kwargs_to_remove:
|
@@ -44,7 +44,7 @@ def await_result(func: Callable[P, T], *args: P.args, **kwargs: P.kwargs) -> T:
|
|
44
44
|
:type args: list
|
45
45
|
:rtype: any
|
46
46
|
:return: The result of the function
|
47
|
-
:raises:
|
47
|
+
:raises TypeError: If the function returns an awaitable object.
|
48
48
|
"""
|
49
49
|
result = func(*args, **kwargs)
|
50
50
|
if hasattr(result, "__await__"):
|