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
@@ -1,108 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
ELF file parser.
|
3
|
-
|
4
|
-
This provides a class ``ELFFile`` that parses an ELF executable in a similar
|
5
|
-
interface to ``ZipFile``. Only the read interface is implemented.
|
6
|
-
|
7
|
-
Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca
|
8
|
-
ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
|
9
|
-
"""
|
10
|
-
|
11
|
-
import enum
|
12
|
-
import os
|
13
|
-
import struct
|
14
|
-
from typing import IO, Optional, Tuple
|
15
|
-
|
16
|
-
|
17
|
-
class ELFInvalid(ValueError):
|
18
|
-
pass
|
19
|
-
|
20
|
-
|
21
|
-
class EIClass(enum.IntEnum):
|
22
|
-
C32 = 1
|
23
|
-
C64 = 2
|
24
|
-
|
25
|
-
|
26
|
-
class EIData(enum.IntEnum):
|
27
|
-
Lsb = 1
|
28
|
-
Msb = 2
|
29
|
-
|
30
|
-
|
31
|
-
class EMachine(enum.IntEnum):
|
32
|
-
I386 = 3
|
33
|
-
S390 = 22
|
34
|
-
Arm = 40
|
35
|
-
X8664 = 62
|
36
|
-
AArc64 = 183
|
37
|
-
|
38
|
-
|
39
|
-
class ELFFile:
|
40
|
-
"""
|
41
|
-
Representation of an ELF executable.
|
42
|
-
"""
|
43
|
-
|
44
|
-
def __init__(self, f: IO[bytes]) -> None:
|
45
|
-
self._f = f
|
46
|
-
|
47
|
-
try:
|
48
|
-
ident = self._read("16B")
|
49
|
-
except struct.error:
|
50
|
-
raise ELFInvalid("unable to parse identification")
|
51
|
-
magic = bytes(ident[:4])
|
52
|
-
if magic != b"\x7fELF":
|
53
|
-
raise ELFInvalid(f"invalid magic: {magic!r}")
|
54
|
-
|
55
|
-
self.capacity = ident[4] # Format for program header (bitness).
|
56
|
-
self.encoding = ident[5] # Data structure encoding (endianness).
|
57
|
-
|
58
|
-
try:
|
59
|
-
# e_fmt: Format for program header.
|
60
|
-
# p_fmt: Format for section header.
|
61
|
-
# p_idx: Indexes to find p_type, p_offset, and p_filesz.
|
62
|
-
e_fmt, self._p_fmt, self._p_idx = {
|
63
|
-
(1, 1): ("<HHIIIIIHHH", "<IIIIIIII", (0, 1, 4)), # 32-bit LSB.
|
64
|
-
(1, 2): (">HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB.
|
65
|
-
(2, 1): ("<HHIQQQIHHH", "<IIQQQQQQ", (0, 2, 5)), # 64-bit LSB.
|
66
|
-
(2, 2): (">HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB.
|
67
|
-
}[(self.capacity, self.encoding)]
|
68
|
-
except KeyError:
|
69
|
-
raise ELFInvalid(
|
70
|
-
f"unrecognized capacity ({self.capacity}) or "
|
71
|
-
f"encoding ({self.encoding})"
|
72
|
-
)
|
73
|
-
|
74
|
-
try:
|
75
|
-
(
|
76
|
-
_,
|
77
|
-
self.machine, # Architecture type.
|
78
|
-
_,
|
79
|
-
_,
|
80
|
-
self._e_phoff, # Offset of program header.
|
81
|
-
_,
|
82
|
-
self.flags, # Processor-specific flags.
|
83
|
-
_,
|
84
|
-
self._e_phentsize, # Size of section.
|
85
|
-
self._e_phnum, # Number of sections.
|
86
|
-
) = self._read(e_fmt)
|
87
|
-
except struct.error as e:
|
88
|
-
raise ELFInvalid("unable to parse machine and section information") from e
|
89
|
-
|
90
|
-
def _read(self, fmt: str) -> Tuple[int, ...]:
|
91
|
-
return struct.unpack(fmt, self._f.read(struct.calcsize(fmt)))
|
92
|
-
|
93
|
-
@property
|
94
|
-
def interpreter(self) -> Optional[str]:
|
95
|
-
"""
|
96
|
-
The path recorded in the ``PT_INTERP`` section header.
|
97
|
-
"""
|
98
|
-
for index in range(self._e_phnum):
|
99
|
-
self._f.seek(self._e_phoff + self._e_phentsize * index)
|
100
|
-
try:
|
101
|
-
data = self._read(self._p_fmt)
|
102
|
-
except struct.error:
|
103
|
-
continue
|
104
|
-
if data[self._p_idx[0]] != 3: # Not PT_INTERP.
|
105
|
-
continue
|
106
|
-
self._f.seek(data[self._p_idx[1]])
|
107
|
-
return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0")
|
108
|
-
return None
|
@@ -1,356 +0,0 @@
|
|
1
|
-
"""Handwritten parser of dependency specifiers.
|
2
|
-
|
3
|
-
The docstring for each __parse_* function contains EBNF-inspired grammar representing
|
4
|
-
the implementation.
|
5
|
-
"""
|
6
|
-
|
7
|
-
import ast
|
8
|
-
from typing import Any, List, NamedTuple, Optional, Tuple, Union
|
9
|
-
|
10
|
-
from ._tokenizer import DEFAULT_RULES, Tokenizer
|
11
|
-
|
12
|
-
|
13
|
-
class Node:
|
14
|
-
def __init__(self, value: str) -> None:
|
15
|
-
self.value = value
|
16
|
-
|
17
|
-
def __str__(self) -> str:
|
18
|
-
return self.value
|
19
|
-
|
20
|
-
def __repr__(self) -> str:
|
21
|
-
return f"<{self.__class__.__name__}('{self}')>"
|
22
|
-
|
23
|
-
def serialize(self) -> str:
|
24
|
-
raise NotImplementedError
|
25
|
-
|
26
|
-
|
27
|
-
class Variable(Node):
|
28
|
-
def serialize(self) -> str:
|
29
|
-
return str(self)
|
30
|
-
|
31
|
-
|
32
|
-
class Value(Node):
|
33
|
-
def serialize(self) -> str:
|
34
|
-
return f'"{self}"'
|
35
|
-
|
36
|
-
|
37
|
-
class Op(Node):
|
38
|
-
def serialize(self) -> str:
|
39
|
-
return str(self)
|
40
|
-
|
41
|
-
|
42
|
-
MarkerVar = Union[Variable, Value]
|
43
|
-
MarkerItem = Tuple[MarkerVar, Op, MarkerVar]
|
44
|
-
# MarkerAtom = Union[MarkerItem, List["MarkerAtom"]]
|
45
|
-
# MarkerList = List[Union["MarkerList", MarkerAtom, str]]
|
46
|
-
# mypy does not support recursive type definition
|
47
|
-
# https://github.com/python/mypy/issues/731
|
48
|
-
MarkerAtom = Any
|
49
|
-
MarkerList = List[Any]
|
50
|
-
|
51
|
-
|
52
|
-
class ParsedRequirement(NamedTuple):
|
53
|
-
name: str
|
54
|
-
url: str
|
55
|
-
extras: List[str]
|
56
|
-
specifier: str
|
57
|
-
marker: Optional[MarkerList]
|
58
|
-
|
59
|
-
|
60
|
-
# --------------------------------------------------------------------------------------
|
61
|
-
# Recursive descent parser for dependency specifier
|
62
|
-
# --------------------------------------------------------------------------------------
|
63
|
-
def parse_requirement(source: str) -> ParsedRequirement:
|
64
|
-
return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
|
65
|
-
|
66
|
-
|
67
|
-
def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement:
|
68
|
-
"""
|
69
|
-
requirement = WS? IDENTIFIER WS? extras WS? requirement_details
|
70
|
-
"""
|
71
|
-
tokenizer.consume("WS")
|
72
|
-
|
73
|
-
name_token = tokenizer.expect(
|
74
|
-
"IDENTIFIER", expected="package name at the start of dependency specifier"
|
75
|
-
)
|
76
|
-
name = name_token.text
|
77
|
-
tokenizer.consume("WS")
|
78
|
-
|
79
|
-
extras = _parse_extras(tokenizer)
|
80
|
-
tokenizer.consume("WS")
|
81
|
-
|
82
|
-
url, specifier, marker = _parse_requirement_details(tokenizer)
|
83
|
-
tokenizer.expect("END", expected="end of dependency specifier")
|
84
|
-
|
85
|
-
return ParsedRequirement(name, url, extras, specifier, marker)
|
86
|
-
|
87
|
-
|
88
|
-
def _parse_requirement_details(
|
89
|
-
tokenizer: Tokenizer,
|
90
|
-
) -> Tuple[str, str, Optional[MarkerList]]:
|
91
|
-
"""
|
92
|
-
requirement_details = AT URL (WS requirement_marker?)?
|
93
|
-
| specifier WS? (requirement_marker)?
|
94
|
-
"""
|
95
|
-
|
96
|
-
specifier = ""
|
97
|
-
url = ""
|
98
|
-
marker = None
|
99
|
-
|
100
|
-
if tokenizer.check("AT"):
|
101
|
-
tokenizer.read()
|
102
|
-
tokenizer.consume("WS")
|
103
|
-
|
104
|
-
url_start = tokenizer.position
|
105
|
-
url = tokenizer.expect("URL", expected="URL after @").text
|
106
|
-
if tokenizer.check("END", peek=True):
|
107
|
-
return (url, specifier, marker)
|
108
|
-
|
109
|
-
tokenizer.expect("WS", expected="whitespace after URL")
|
110
|
-
|
111
|
-
# The input might end after whitespace.
|
112
|
-
if tokenizer.check("END", peek=True):
|
113
|
-
return (url, specifier, marker)
|
114
|
-
|
115
|
-
marker = _parse_requirement_marker(
|
116
|
-
tokenizer, span_start=url_start, after="URL and whitespace"
|
117
|
-
)
|
118
|
-
else:
|
119
|
-
specifier_start = tokenizer.position
|
120
|
-
specifier = _parse_specifier(tokenizer)
|
121
|
-
tokenizer.consume("WS")
|
122
|
-
|
123
|
-
if tokenizer.check("END", peek=True):
|
124
|
-
return (url, specifier, marker)
|
125
|
-
|
126
|
-
marker = _parse_requirement_marker(
|
127
|
-
tokenizer,
|
128
|
-
span_start=specifier_start,
|
129
|
-
after=(
|
130
|
-
"version specifier"
|
131
|
-
if specifier
|
132
|
-
else "name and no valid version specifier"
|
133
|
-
),
|
134
|
-
)
|
135
|
-
|
136
|
-
return (url, specifier, marker)
|
137
|
-
|
138
|
-
|
139
|
-
def _parse_requirement_marker(
|
140
|
-
tokenizer: Tokenizer, *, span_start: int, after: str
|
141
|
-
) -> MarkerList:
|
142
|
-
"""
|
143
|
-
requirement_marker = SEMICOLON marker WS?
|
144
|
-
"""
|
145
|
-
|
146
|
-
if not tokenizer.check("SEMICOLON"):
|
147
|
-
tokenizer.raise_syntax_error(
|
148
|
-
f"Expected end or semicolon (after {after})",
|
149
|
-
span_start=span_start,
|
150
|
-
)
|
151
|
-
tokenizer.read()
|
152
|
-
|
153
|
-
marker = _parse_marker(tokenizer)
|
154
|
-
tokenizer.consume("WS")
|
155
|
-
|
156
|
-
return marker
|
157
|
-
|
158
|
-
|
159
|
-
def _parse_extras(tokenizer: Tokenizer) -> List[str]:
|
160
|
-
"""
|
161
|
-
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
|
162
|
-
"""
|
163
|
-
if not tokenizer.check("LEFT_BRACKET", peek=True):
|
164
|
-
return []
|
165
|
-
|
166
|
-
with tokenizer.enclosing_tokens(
|
167
|
-
"LEFT_BRACKET",
|
168
|
-
"RIGHT_BRACKET",
|
169
|
-
around="extras",
|
170
|
-
):
|
171
|
-
tokenizer.consume("WS")
|
172
|
-
extras = _parse_extras_list(tokenizer)
|
173
|
-
tokenizer.consume("WS")
|
174
|
-
|
175
|
-
return extras
|
176
|
-
|
177
|
-
|
178
|
-
def _parse_extras_list(tokenizer: Tokenizer) -> List[str]:
|
179
|
-
"""
|
180
|
-
extras_list = identifier (wsp* ',' wsp* identifier)*
|
181
|
-
"""
|
182
|
-
extras: List[str] = []
|
183
|
-
|
184
|
-
if not tokenizer.check("IDENTIFIER"):
|
185
|
-
return extras
|
186
|
-
|
187
|
-
extras.append(tokenizer.read().text)
|
188
|
-
|
189
|
-
while True:
|
190
|
-
tokenizer.consume("WS")
|
191
|
-
if tokenizer.check("IDENTIFIER", peek=True):
|
192
|
-
tokenizer.raise_syntax_error("Expected comma between extra names")
|
193
|
-
elif not tokenizer.check("COMMA"):
|
194
|
-
break
|
195
|
-
|
196
|
-
tokenizer.read()
|
197
|
-
tokenizer.consume("WS")
|
198
|
-
|
199
|
-
extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma")
|
200
|
-
extras.append(extra_token.text)
|
201
|
-
|
202
|
-
return extras
|
203
|
-
|
204
|
-
|
205
|
-
def _parse_specifier(tokenizer: Tokenizer) -> str:
|
206
|
-
"""
|
207
|
-
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
|
208
|
-
| WS? version_many WS?
|
209
|
-
"""
|
210
|
-
with tokenizer.enclosing_tokens(
|
211
|
-
"LEFT_PARENTHESIS",
|
212
|
-
"RIGHT_PARENTHESIS",
|
213
|
-
around="version specifier",
|
214
|
-
):
|
215
|
-
tokenizer.consume("WS")
|
216
|
-
parsed_specifiers = _parse_version_many(tokenizer)
|
217
|
-
tokenizer.consume("WS")
|
218
|
-
|
219
|
-
return parsed_specifiers
|
220
|
-
|
221
|
-
|
222
|
-
def _parse_version_many(tokenizer: Tokenizer) -> str:
|
223
|
-
"""
|
224
|
-
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
|
225
|
-
"""
|
226
|
-
parsed_specifiers = ""
|
227
|
-
while tokenizer.check("SPECIFIER"):
|
228
|
-
span_start = tokenizer.position
|
229
|
-
parsed_specifiers += tokenizer.read().text
|
230
|
-
if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True):
|
231
|
-
tokenizer.raise_syntax_error(
|
232
|
-
".* suffix can only be used with `==` or `!=` operators",
|
233
|
-
span_start=span_start,
|
234
|
-
span_end=tokenizer.position + 1,
|
235
|
-
)
|
236
|
-
if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True):
|
237
|
-
tokenizer.raise_syntax_error(
|
238
|
-
"Local version label can only be used with `==` or `!=` operators",
|
239
|
-
span_start=span_start,
|
240
|
-
span_end=tokenizer.position,
|
241
|
-
)
|
242
|
-
tokenizer.consume("WS")
|
243
|
-
if not tokenizer.check("COMMA"):
|
244
|
-
break
|
245
|
-
parsed_specifiers += tokenizer.read().text
|
246
|
-
tokenizer.consume("WS")
|
247
|
-
|
248
|
-
return parsed_specifiers
|
249
|
-
|
250
|
-
|
251
|
-
# --------------------------------------------------------------------------------------
|
252
|
-
# Recursive descent parser for marker expression
|
253
|
-
# --------------------------------------------------------------------------------------
|
254
|
-
def parse_marker(source: str) -> MarkerList:
|
255
|
-
return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES))
|
256
|
-
|
257
|
-
|
258
|
-
def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList:
|
259
|
-
retval = _parse_marker(tokenizer)
|
260
|
-
tokenizer.expect("END", expected="end of marker expression")
|
261
|
-
return retval
|
262
|
-
|
263
|
-
|
264
|
-
def _parse_marker(tokenizer: Tokenizer) -> MarkerList:
|
265
|
-
"""
|
266
|
-
marker = marker_atom (BOOLOP marker_atom)+
|
267
|
-
"""
|
268
|
-
expression = [_parse_marker_atom(tokenizer)]
|
269
|
-
while tokenizer.check("BOOLOP"):
|
270
|
-
token = tokenizer.read()
|
271
|
-
expr_right = _parse_marker_atom(tokenizer)
|
272
|
-
expression.extend((token.text, expr_right))
|
273
|
-
return expression
|
274
|
-
|
275
|
-
|
276
|
-
def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom:
|
277
|
-
"""
|
278
|
-
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
|
279
|
-
| WS? marker_item WS?
|
280
|
-
"""
|
281
|
-
|
282
|
-
tokenizer.consume("WS")
|
283
|
-
if tokenizer.check("LEFT_PARENTHESIS", peek=True):
|
284
|
-
with tokenizer.enclosing_tokens(
|
285
|
-
"LEFT_PARENTHESIS",
|
286
|
-
"RIGHT_PARENTHESIS",
|
287
|
-
around="marker expression",
|
288
|
-
):
|
289
|
-
tokenizer.consume("WS")
|
290
|
-
marker: MarkerAtom = _parse_marker(tokenizer)
|
291
|
-
tokenizer.consume("WS")
|
292
|
-
else:
|
293
|
-
marker = _parse_marker_item(tokenizer)
|
294
|
-
tokenizer.consume("WS")
|
295
|
-
return marker
|
296
|
-
|
297
|
-
|
298
|
-
def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem:
|
299
|
-
"""
|
300
|
-
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
|
301
|
-
"""
|
302
|
-
tokenizer.consume("WS")
|
303
|
-
marker_var_left = _parse_marker_var(tokenizer)
|
304
|
-
tokenizer.consume("WS")
|
305
|
-
marker_op = _parse_marker_op(tokenizer)
|
306
|
-
tokenizer.consume("WS")
|
307
|
-
marker_var_right = _parse_marker_var(tokenizer)
|
308
|
-
tokenizer.consume("WS")
|
309
|
-
return (marker_var_left, marker_op, marker_var_right)
|
310
|
-
|
311
|
-
|
312
|
-
def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar:
|
313
|
-
"""
|
314
|
-
marker_var = VARIABLE | QUOTED_STRING
|
315
|
-
"""
|
316
|
-
if tokenizer.check("VARIABLE"):
|
317
|
-
return process_env_var(tokenizer.read().text.replace(".", "_"))
|
318
|
-
elif tokenizer.check("QUOTED_STRING"):
|
319
|
-
return process_python_str(tokenizer.read().text)
|
320
|
-
else:
|
321
|
-
tokenizer.raise_syntax_error(
|
322
|
-
message="Expected a marker variable or quoted string"
|
323
|
-
)
|
324
|
-
|
325
|
-
|
326
|
-
def process_env_var(env_var: str) -> Variable:
|
327
|
-
if env_var in ("platform_python_implementation", "python_implementation"):
|
328
|
-
return Variable("platform_python_implementation")
|
329
|
-
else:
|
330
|
-
return Variable(env_var)
|
331
|
-
|
332
|
-
|
333
|
-
def process_python_str(python_str: str) -> Value:
|
334
|
-
value = ast.literal_eval(python_str)
|
335
|
-
return Value(str(value))
|
336
|
-
|
337
|
-
|
338
|
-
def _parse_marker_op(tokenizer: Tokenizer) -> Op:
|
339
|
-
"""
|
340
|
-
marker_op = IN | NOT IN | OP
|
341
|
-
"""
|
342
|
-
if tokenizer.check("IN"):
|
343
|
-
tokenizer.read()
|
344
|
-
return Op("in")
|
345
|
-
elif tokenizer.check("NOT"):
|
346
|
-
tokenizer.read()
|
347
|
-
tokenizer.expect("WS", expected="whitespace after 'not'")
|
348
|
-
tokenizer.expect("IN", expected="'in' after 'not'")
|
349
|
-
return Op("not in")
|
350
|
-
elif tokenizer.check("OP"):
|
351
|
-
return Op(tokenizer.read().text)
|
352
|
-
else:
|
353
|
-
return tokenizer.raise_syntax_error(
|
354
|
-
"Expected marker operator, one of "
|
355
|
-
"<=, <, !=, ==, >=, >, ~=, ===, in, not in"
|
356
|
-
)
|