py2docfx 0.1.9.dev1897554__py3-none-any.whl → 0.1.9.dev1917798__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 +25 -6
- py2docfx/convert_prepare/tests/test_generate_document.py +4 -4
- py2docfx/convert_prepare/tests/test_get_source.py +6 -6
- py2docfx/convert_prepare/tests/test_params.py +1 -1
- py2docfx/convert_prepare/tests/test_sphinx_caller.py +3 -3
- py2docfx/venv/basevenv/Lib/site-packages/_distutils_hack/__init__.py +2 -3
- py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +145 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
- py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +15 -9
- py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +83 -24
- py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +19 -8
- py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +78 -29
- py2docfx/venv/basevenv/Lib/site-packages/packaging/utils.py +33 -44
- py2docfx/venv/basevenv/Lib/site-packages/packaging/version.py +26 -7
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +27 -32
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
- py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +7 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_importlib.py +1 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +5 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +2 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +53 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/archive_util.py +6 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +23 -17
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/__init__.py +9 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/alias.py +3 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +18 -45
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build.py +3 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_clib.py +2 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +13 -12
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_py.py +17 -16
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/dist_info.py +3 -7
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +55 -78
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +19 -21
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +29 -30
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +31 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_egg_info.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_lib.py +10 -7
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/rotate.py +6 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +9 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/setopt.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/expand.py +22 -16
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/pyprojecttoml.py +25 -10
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/depends.py +26 -7
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/discovery.py +21 -14
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +48 -45
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/errors.py +21 -26
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/extension.py +18 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/glob.py +35 -15
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +6 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/launch.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/logging.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/modified.py +16 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/monkey.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +25 -14
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/namespaces.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +42 -43
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +19 -12
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +9 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +3 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/warnings.py +5 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +4 -4
- py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
- py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +17 -2
- py2docfx/venv/basevenv/Lib/site-packages/wheel/cli/convert.py +280 -220
- py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -9
- py2docfx/venv/venv1/Lib/site-packages/_distutils_hack/__init__.py +2 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +5 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +6 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +13 -5
- py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +16 -5
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +15 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +20 -10
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +55 -19
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +46 -15
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +8 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +9 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +9 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +27 -8
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +6 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +6 -10
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +101 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +9 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +7 -5
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +11 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +11 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +5 -2
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +47 -16
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +15 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +15 -5
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +12 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +24 -4
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +119 -110
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +10 -1
- py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +41 -39
- py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +17 -11
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +17 -13
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +1 -3
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +25 -8
- py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +34 -16
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +2 -3
- py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +10 -2
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +1 -7
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +27 -32
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
- py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +3 -1
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +7 -2
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +18 -21
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +7 -3
- py2docfx/venv/venv1/Lib/site-packages/proto/message.py +6 -35
- py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +7 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_importlib.py +1 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +5 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
- py2docfx/venv/venv1/Lib/site-packages/setuptools/archive_util.py +6 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +23 -17
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/__init__.py +9 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/alias.py +3 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +18 -45
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_clib.py +2 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +13 -12
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_py.py +17 -16
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/dist_info.py +3 -7
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +55 -78
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +19 -21
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +29 -30
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +31 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_egg_info.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_lib.py +10 -7
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/rotate.py +6 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +9 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/setopt.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/expand.py +22 -16
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/pyprojecttoml.py +25 -10
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
- py2docfx/venv/venv1/Lib/site-packages/setuptools/depends.py +26 -7
- py2docfx/venv/venv1/Lib/site-packages/setuptools/discovery.py +21 -14
- py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +48 -45
- py2docfx/venv/venv1/Lib/site-packages/setuptools/errors.py +21 -26
- py2docfx/venv/venv1/Lib/site-packages/setuptools/extension.py +18 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/glob.py +35 -15
- py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +6 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/launch.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/logging.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/modified.py +16 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/monkey.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +25 -14
- py2docfx/venv/venv1/Lib/site-packages/setuptools/namespaces.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +42 -43
- py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +19 -12
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +9 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +3 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/warnings.py +5 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +17 -2
- py2docfx/venv/venv1/Lib/site-packages/wheel/cli/convert.py +280 -220
- py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -9
- {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/METADATA +1 -1
- {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/RECORD +307 -367
- {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/WHEEL +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
- {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/top_level.txt +0 -0
@@ -4,11 +4,12 @@
|
|
4
4
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
|
+
import functools
|
7
8
|
import re
|
8
9
|
from typing import NewType, Tuple, Union, cast
|
9
10
|
|
10
11
|
from .tags import Tag, parse_tag
|
11
|
-
from .version import InvalidVersion, Version
|
12
|
+
from .version import InvalidVersion, Version, _TrimmedRelease
|
12
13
|
|
13
14
|
BuildTag = Union[Tuple[()], Tuple[int, str]]
|
14
15
|
NormalizedName = NewType("NormalizedName", str)
|
@@ -54,52 +55,40 @@ def is_normalized_name(name: str) -> bool:
|
|
54
55
|
return _normalized_regex.match(name) is not None
|
55
56
|
|
56
57
|
|
58
|
+
@functools.singledispatch
|
57
59
|
def canonicalize_version(
|
58
60
|
version: Version | str, *, strip_trailing_zero: bool = True
|
59
61
|
) -> str:
|
60
62
|
"""
|
61
|
-
|
62
|
-
with the way it handles the release segment.
|
63
|
-
"""
|
64
|
-
if isinstance(version, str):
|
65
|
-
try:
|
66
|
-
parsed = Version(version)
|
67
|
-
except InvalidVersion:
|
68
|
-
# Legacy versions cannot be normalized
|
69
|
-
return version
|
70
|
-
else:
|
71
|
-
parsed = version
|
72
|
-
|
73
|
-
parts = []
|
63
|
+
Return a canonical form of a version as a string.
|
74
64
|
|
75
|
-
|
76
|
-
|
77
|
-
parts.append(f"{parsed.epoch}!")
|
65
|
+
>>> canonicalize_version('1.0.1')
|
66
|
+
'1.0.1'
|
78
67
|
|
79
|
-
|
80
|
-
|
81
|
-
if strip_trailing_zero:
|
82
|
-
# NB: This strips trailing '.0's to normalize
|
83
|
-
release_segment = re.sub(r"(\.0)+$", "", release_segment)
|
84
|
-
parts.append(release_segment)
|
68
|
+
Per PEP 625, versions may have multiple canonical forms, differing
|
69
|
+
only by trailing zeros.
|
85
70
|
|
86
|
-
|
87
|
-
|
88
|
-
|
71
|
+
>>> canonicalize_version('1.0.0')
|
72
|
+
'1'
|
73
|
+
>>> canonicalize_version('1.0.0', strip_trailing_zero=False)
|
74
|
+
'1.0.0'
|
89
75
|
|
90
|
-
|
91
|
-
if parsed.post is not None:
|
92
|
-
parts.append(f".post{parsed.post}")
|
76
|
+
Invalid versions are returned unaltered.
|
93
77
|
|
94
|
-
|
95
|
-
|
96
|
-
|
78
|
+
>>> canonicalize_version('foo bar baz')
|
79
|
+
'foo bar baz'
|
80
|
+
"""
|
81
|
+
return str(_TrimmedRelease(str(version)) if strip_trailing_zero else version)
|
97
82
|
|
98
|
-
# Local version segment
|
99
|
-
if parsed.local is not None:
|
100
|
-
parts.append(f"+{parsed.local}")
|
101
83
|
|
102
|
-
|
84
|
+
@canonicalize_version.register
|
85
|
+
def _(version: str, *, strip_trailing_zero: bool = True) -> str:
|
86
|
+
try:
|
87
|
+
parsed = Version(version)
|
88
|
+
except InvalidVersion:
|
89
|
+
# Legacy versions cannot be normalized
|
90
|
+
return version
|
91
|
+
return canonicalize_version(parsed, strip_trailing_zero=strip_trailing_zero)
|
103
92
|
|
104
93
|
|
105
94
|
def parse_wheel_filename(
|
@@ -107,28 +96,28 @@ def parse_wheel_filename(
|
|
107
96
|
) -> tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]:
|
108
97
|
if not filename.endswith(".whl"):
|
109
98
|
raise InvalidWheelFilename(
|
110
|
-
f"Invalid wheel filename (extension must be '.whl'): {filename}"
|
99
|
+
f"Invalid wheel filename (extension must be '.whl'): {filename!r}"
|
111
100
|
)
|
112
101
|
|
113
102
|
filename = filename[:-4]
|
114
103
|
dashes = filename.count("-")
|
115
104
|
if dashes not in (4, 5):
|
116
105
|
raise InvalidWheelFilename(
|
117
|
-
f"Invalid wheel filename (wrong number of parts): {filename}"
|
106
|
+
f"Invalid wheel filename (wrong number of parts): {filename!r}"
|
118
107
|
)
|
119
108
|
|
120
109
|
parts = filename.split("-", dashes - 2)
|
121
110
|
name_part = parts[0]
|
122
111
|
# See PEP 427 for the rules on escaping the project name.
|
123
112
|
if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None:
|
124
|
-
raise InvalidWheelFilename(f"Invalid project name: {filename}")
|
113
|
+
raise InvalidWheelFilename(f"Invalid project name: {filename!r}")
|
125
114
|
name = canonicalize_name(name_part)
|
126
115
|
|
127
116
|
try:
|
128
117
|
version = Version(parts[1])
|
129
118
|
except InvalidVersion as e:
|
130
119
|
raise InvalidWheelFilename(
|
131
|
-
f"Invalid wheel filename (invalid version): {filename}"
|
120
|
+
f"Invalid wheel filename (invalid version): {filename!r}"
|
132
121
|
) from e
|
133
122
|
|
134
123
|
if dashes == 5:
|
@@ -136,7 +125,7 @@ def parse_wheel_filename(
|
|
136
125
|
build_match = _build_tag_regex.match(build_part)
|
137
126
|
if build_match is None:
|
138
127
|
raise InvalidWheelFilename(
|
139
|
-
f"Invalid build number: {build_part} in
|
128
|
+
f"Invalid build number: {build_part} in {filename!r}"
|
140
129
|
)
|
141
130
|
build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2)))
|
142
131
|
else:
|
@@ -153,14 +142,14 @@ def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]:
|
|
153
142
|
else:
|
154
143
|
raise InvalidSdistFilename(
|
155
144
|
f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):"
|
156
|
-
f" {filename}"
|
145
|
+
f" {filename!r}"
|
157
146
|
)
|
158
147
|
|
159
148
|
# We are requiring a PEP 440 version, which cannot contain dashes,
|
160
149
|
# so we split on the last dash.
|
161
150
|
name_part, sep, version_part = file_stem.rpartition("-")
|
162
151
|
if not sep:
|
163
|
-
raise InvalidSdistFilename(f"Invalid sdist filename: {filename}")
|
152
|
+
raise InvalidSdistFilename(f"Invalid sdist filename: {filename!r}")
|
164
153
|
|
165
154
|
name = canonicalize_name(name_part)
|
166
155
|
|
@@ -168,7 +157,7 @@ def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]:
|
|
168
157
|
version = Version(version_part)
|
169
158
|
except InvalidVersion as e:
|
170
159
|
raise InvalidSdistFilename(
|
171
|
-
f"Invalid sdist filename (invalid version): {filename}"
|
160
|
+
f"Invalid sdist filename (invalid version): {filename!r}"
|
172
161
|
) from e
|
173
162
|
|
174
163
|
return (name, version)
|
@@ -15,7 +15,7 @@ from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union
|
|
15
15
|
|
16
16
|
from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType
|
17
17
|
|
18
|
-
__all__ = ["VERSION_PATTERN", "
|
18
|
+
__all__ = ["VERSION_PATTERN", "InvalidVersion", "Version", "parse"]
|
19
19
|
|
20
20
|
LocalType = Tuple[Union[int, str], ...]
|
21
21
|
|
@@ -199,7 +199,7 @@ class Version(_BaseVersion):
|
|
199
199
|
# Validate the version and parse it into pieces
|
200
200
|
match = self._regex.search(version)
|
201
201
|
if not match:
|
202
|
-
raise InvalidVersion(f"Invalid version:
|
202
|
+
raise InvalidVersion(f"Invalid version: {version!r}")
|
203
203
|
|
204
204
|
# Store the parsed out pieces of the version
|
205
205
|
self._version = _Version(
|
@@ -232,7 +232,7 @@ class Version(_BaseVersion):
|
|
232
232
|
return f"<Version('{self}')>"
|
233
233
|
|
234
234
|
def __str__(self) -> str:
|
235
|
-
"""A string representation of the version that can be
|
235
|
+
"""A string representation of the version that can be round-tripped.
|
236
236
|
|
237
237
|
>>> str(Version("1.0a5"))
|
238
238
|
'1.0a5'
|
@@ -350,8 +350,8 @@ class Version(_BaseVersion):
|
|
350
350
|
'1.2.3'
|
351
351
|
>>> Version("1.2.3+abc").public
|
352
352
|
'1.2.3'
|
353
|
-
>>> Version("1.2.
|
354
|
-
'1.2.3'
|
353
|
+
>>> Version("1!1.2.3dev1+abc").public
|
354
|
+
'1!1.2.3.dev1'
|
355
355
|
"""
|
356
356
|
return str(self).split("+", 1)[0]
|
357
357
|
|
@@ -363,7 +363,7 @@ class Version(_BaseVersion):
|
|
363
363
|
'1.2.3'
|
364
364
|
>>> Version("1.2.3+abc").base_version
|
365
365
|
'1.2.3'
|
366
|
-
>>> Version("1!1.2.
|
366
|
+
>>> Version("1!1.2.3dev1+abc").base_version
|
367
367
|
'1!1.2.3'
|
368
368
|
|
369
369
|
The "base version" is the public version of the project without any pre or post
|
@@ -451,6 +451,23 @@ class Version(_BaseVersion):
|
|
451
451
|
return self.release[2] if len(self.release) >= 3 else 0
|
452
452
|
|
453
453
|
|
454
|
+
class _TrimmedRelease(Version):
|
455
|
+
@property
|
456
|
+
def release(self) -> tuple[int, ...]:
|
457
|
+
"""
|
458
|
+
Release segment without any trailing zeros.
|
459
|
+
|
460
|
+
>>> _TrimmedRelease('1.0.0').release
|
461
|
+
(1,)
|
462
|
+
>>> _TrimmedRelease('0.0').release
|
463
|
+
(0,)
|
464
|
+
"""
|
465
|
+
rel = super().release
|
466
|
+
nonzeros = (index for index, val in enumerate(rel) if val)
|
467
|
+
last_nonzero = max(nonzeros, default=0)
|
468
|
+
return rel[: last_nonzero + 1]
|
469
|
+
|
470
|
+
|
454
471
|
def _parse_letter_version(
|
455
472
|
letter: str | None, number: str | bytes | SupportsInt | None
|
456
473
|
) -> tuple[str, int] | None:
|
@@ -476,7 +493,9 @@ def _parse_letter_version(
|
|
476
493
|
letter = "post"
|
477
494
|
|
478
495
|
return letter, int(number)
|
479
|
-
|
496
|
+
|
497
|
+
assert not letter
|
498
|
+
if number:
|
480
499
|
# We assume if we are given a number, but we are not given a letter
|
481
500
|
# then this is using the implicit post release syntax (e.g. 1.0-1)
|
482
501
|
letter = "post"
|
@@ -21,8 +21,8 @@ from __future__ import annotations
|
|
21
21
|
|
22
22
|
import sys
|
23
23
|
|
24
|
-
if sys.version_info < (3,
|
25
|
-
raise RuntimeError("Python 3.
|
24
|
+
if sys.version_info < (3, 9): # noqa: UP036 # Check for unsupported versions
|
25
|
+
raise RuntimeError("Python 3.9 or later is required")
|
26
26
|
|
27
27
|
import _imp
|
28
28
|
import collections
|
@@ -50,22 +50,17 @@ import types
|
|
50
50
|
import warnings
|
51
51
|
import zipfile
|
52
52
|
import zipimport
|
53
|
+
from collections.abc import Iterable, Iterator, Mapping, MutableSequence
|
53
54
|
from pkgutil import get_importer
|
54
55
|
from typing import (
|
55
56
|
TYPE_CHECKING,
|
56
57
|
Any,
|
57
58
|
BinaryIO,
|
58
59
|
Callable,
|
59
|
-
Dict,
|
60
|
-
Iterable,
|
61
|
-
Iterator,
|
62
60
|
Literal,
|
63
|
-
Mapping,
|
64
|
-
MutableSequence,
|
65
61
|
NamedTuple,
|
66
62
|
NoReturn,
|
67
63
|
Protocol,
|
68
|
-
Tuple,
|
69
64
|
TypeVar,
|
70
65
|
Union,
|
71
66
|
overload,
|
@@ -172,7 +167,7 @@ def _sget_dict(val):
|
|
172
167
|
return val.copy()
|
173
168
|
|
174
169
|
|
175
|
-
def _sset_dict(key, ob, state):
|
170
|
+
def _sset_dict(key, ob, state) -> None:
|
176
171
|
ob.clear()
|
177
172
|
ob.update(state)
|
178
173
|
|
@@ -181,7 +176,7 @@ def _sget_object(val):
|
|
181
176
|
return val.__getstate__()
|
182
177
|
|
183
178
|
|
184
|
-
def _sset_object(key, ob, state):
|
179
|
+
def _sset_object(key, ob, state) -> None:
|
185
180
|
ob.__setstate__(state)
|
186
181
|
|
187
182
|
|
@@ -387,7 +382,7 @@ class UnknownExtra(ResolutionError):
|
|
387
382
|
|
388
383
|
_provider_factories: dict[type[_ModuleLike], _ProviderFactoryType] = {}
|
389
384
|
|
390
|
-
PY_MAJOR = '{}.{
|
385
|
+
PY_MAJOR = f'{sys.version_info.major}.{sys.version_info.minor}'
|
391
386
|
EGG_DIST = 3
|
392
387
|
BINARY_DIST = 2
|
393
388
|
SOURCE_DIST = 1
|
@@ -424,7 +419,7 @@ def get_provider(moduleOrReq: str | Requirement) -> IResourceProvider | Distribu
|
|
424
419
|
return _find_adapter(_provider_factories, loader)(module)
|
425
420
|
|
426
421
|
|
427
|
-
@functools.
|
422
|
+
@functools.cache
|
428
423
|
def _macos_vers():
|
429
424
|
version = platform.mac_ver()[0]
|
430
425
|
# fallback for MacPorts
|
@@ -1090,7 +1085,7 @@ class WorkingSet:
|
|
1090
1085
|
for dist in self:
|
1091
1086
|
callback(dist)
|
1092
1087
|
|
1093
|
-
def _added_new(self, dist):
|
1088
|
+
def _added_new(self, dist) -> None:
|
1094
1089
|
for callback in self.callbacks:
|
1095
1090
|
callback(dist)
|
1096
1091
|
|
@@ -1120,7 +1115,7 @@ class WorkingSet:
|
|
1120
1115
|
self.callbacks = callbacks[:]
|
1121
1116
|
|
1122
1117
|
|
1123
|
-
class _ReqExtras(
|
1118
|
+
class _ReqExtras(dict["Requirement", tuple[str, ...]]):
|
1124
1119
|
"""
|
1125
1120
|
Map each requirement to the extras that demanded it.
|
1126
1121
|
"""
|
@@ -1463,7 +1458,7 @@ class ResourceManager:
|
|
1463
1458
|
return target_path
|
1464
1459
|
|
1465
1460
|
@staticmethod
|
1466
|
-
def _warn_unsafe_extraction_path(path):
|
1461
|
+
def _warn_unsafe_extraction_path(path) -> None:
|
1467
1462
|
"""
|
1468
1463
|
If the default extraction path is overridden and set to an insecure
|
1469
1464
|
location, such as /tmp, it opens up an opportunity for an attacker to
|
@@ -1577,7 +1572,7 @@ def safe_version(version: str) -> str:
|
|
1577
1572
|
return re.sub('[^A-Za-z0-9.]+', '-', version)
|
1578
1573
|
|
1579
1574
|
|
1580
|
-
def _forgiving_version(version):
|
1575
|
+
def _forgiving_version(version) -> str:
|
1581
1576
|
"""Fallback when ``safe_version`` is not safe enough
|
1582
1577
|
>>> parse_version(_forgiving_version('0.23ubuntu1'))
|
1583
1578
|
<Version('0.23.dev0+sanitized.ubuntu1')>
|
@@ -1779,7 +1774,7 @@ class NullProvider:
|
|
1779
1774
|
return base
|
1780
1775
|
|
1781
1776
|
@staticmethod
|
1782
|
-
def _validate_resource_path(path):
|
1777
|
+
def _validate_resource_path(path) -> None:
|
1783
1778
|
"""
|
1784
1779
|
Validate the resource paths according to the docs.
|
1785
1780
|
https://setuptools.pypa.io/en/latest/pkg_resources.html#basic-resource-access
|
@@ -1890,7 +1885,7 @@ class EggProvider(NullProvider):
|
|
1890
1885
|
egg = next(eggs, None)
|
1891
1886
|
egg and self._set_egg(egg)
|
1892
1887
|
|
1893
|
-
def _set_egg(self, path: str):
|
1888
|
+
def _set_egg(self, path: str) -> None:
|
1894
1889
|
self.egg_name = os.path.basename(path)
|
1895
1890
|
self.egg_info = os.path.join(path, 'EGG-INFO')
|
1896
1891
|
self.egg_root = path
|
@@ -1918,7 +1913,7 @@ class DefaultProvider(EggProvider):
|
|
1918
1913
|
return stream.read()
|
1919
1914
|
|
1920
1915
|
@classmethod
|
1921
|
-
def _register(cls):
|
1916
|
+
def _register(cls) -> None:
|
1922
1917
|
loader_names = (
|
1923
1918
|
'SourceFileLoader',
|
1924
1919
|
'SourcelessFileLoader',
|
@@ -1952,7 +1947,7 @@ class EmptyProvider(NullProvider):
|
|
1952
1947
|
empty_provider = EmptyProvider()
|
1953
1948
|
|
1954
1949
|
|
1955
|
-
class ZipManifests(
|
1950
|
+
class ZipManifests(dict[str, "MemoizedZipManifests.manifest_mod"]):
|
1956
1951
|
"""
|
1957
1952
|
zip manifest builder
|
1958
1953
|
"""
|
@@ -2069,7 +2064,7 @@ class ZipProvider(EggProvider):
|
|
2069
2064
|
# return the extracted directory name
|
2070
2065
|
return os.path.dirname(last)
|
2071
2066
|
|
2072
|
-
timestamp,
|
2067
|
+
timestamp, _size = self._get_date_and_size(self.zipinfo[zip_path])
|
2073
2068
|
|
2074
2069
|
if not WRITE_SUPPORT:
|
2075
2070
|
raise OSError(
|
@@ -2208,7 +2203,7 @@ class FileMetadata(EmptyProvider):
|
|
2208
2203
|
self._warn_on_replacement(metadata)
|
2209
2204
|
return metadata
|
2210
2205
|
|
2211
|
-
def _warn_on_replacement(self, metadata):
|
2206
|
+
def _warn_on_replacement(self, metadata) -> None:
|
2212
2207
|
replacement_char = '�'
|
2213
2208
|
if replacement_char in metadata:
|
2214
2209
|
tmpl = "{self.path} could not be properly decoded in UTF-8"
|
@@ -2505,7 +2500,7 @@ def _handle_ns(packageName, path_item):
|
|
2505
2500
|
return subpath
|
2506
2501
|
|
2507
2502
|
|
2508
|
-
def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType):
|
2503
|
+
def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType) -> None:
|
2509
2504
|
"""
|
2510
2505
|
Rebuild module.__path__ ensuring that all entries are ordered
|
2511
2506
|
corresponding to their sys.path order
|
@@ -2624,7 +2619,7 @@ def null_ns_handler(
|
|
2624
2619
|
path_item: str | None,
|
2625
2620
|
packageName: str | None,
|
2626
2621
|
module: _ModuleLike | None,
|
2627
|
-
):
|
2622
|
+
) -> None:
|
2628
2623
|
return None
|
2629
2624
|
|
2630
2625
|
|
@@ -2635,7 +2630,7 @@ register_namespace_handler(object, null_ns_handler)
|
|
2635
2630
|
def normalize_path(filename: StrPath) -> str: ...
|
2636
2631
|
@overload
|
2637
2632
|
def normalize_path(filename: BytesPath) -> bytes: ...
|
2638
|
-
def normalize_path(filename: StrOrBytesPath):
|
2633
|
+
def normalize_path(filename: StrOrBytesPath) -> str | bytes:
|
2639
2634
|
"""Normalize a file/dir name for comparison purposes"""
|
2640
2635
|
return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
|
2641
2636
|
|
@@ -2662,7 +2657,7 @@ if TYPE_CHECKING:
|
|
2662
2657
|
|
2663
2658
|
else:
|
2664
2659
|
|
2665
|
-
@functools.
|
2660
|
+
@functools.cache
|
2666
2661
|
def _normalize_cached(filename):
|
2667
2662
|
return normalize_path(filename)
|
2668
2663
|
|
@@ -2691,7 +2686,7 @@ def _is_unpacked_egg(path):
|
|
2691
2686
|
)
|
2692
2687
|
|
2693
2688
|
|
2694
|
-
def _set_parent_ns(packageName):
|
2689
|
+
def _set_parent_ns(packageName) -> None:
|
2695
2690
|
parts = packageName.split('.')
|
2696
2691
|
name = parts.pop()
|
2697
2692
|
if parts:
|
@@ -2777,7 +2772,7 @@ class EntryPoint:
|
|
2777
2772
|
if require:
|
2778
2773
|
# We could pass `env` and `installer` directly,
|
2779
2774
|
# but keeping `*args` and `**kwargs` for backwards compatibility
|
2780
|
-
self.require(*args, **kwargs) # type: ignore
|
2775
|
+
self.require(*args, **kwargs) # type: ignore[arg-type]
|
2781
2776
|
return self.resolve()
|
2782
2777
|
|
2783
2778
|
def resolve(self) -> _ResolvedEntryPoint:
|
@@ -3336,7 +3331,7 @@ class Distribution:
|
|
3336
3331
|
" to sys.path" % (modname, fn, self.location),
|
3337
3332
|
)
|
3338
3333
|
|
3339
|
-
def has_version(self):
|
3334
|
+
def has_version(self) -> bool:
|
3340
3335
|
try:
|
3341
3336
|
self.version
|
3342
3337
|
except ValueError:
|
@@ -3552,7 +3547,7 @@ def ensure_directory(path: StrOrBytesPath) -> None:
|
|
3552
3547
|
os.makedirs(dirname, exist_ok=True)
|
3553
3548
|
|
3554
3549
|
|
3555
|
-
def _bypass_ensure_directory(path):
|
3550
|
+
def _bypass_ensure_directory(path) -> None:
|
3556
3551
|
"""Sandbox-bypassing version of ensure_directory()"""
|
3557
3552
|
if not WRITE_SUPPORT:
|
3558
3553
|
raise OSError('"os.mkdir" not supported on this platform.')
|
@@ -3658,7 +3653,7 @@ def _call_aside(f, *args, **kwargs):
|
|
3658
3653
|
|
3659
3654
|
|
3660
3655
|
@_call_aside
|
3661
|
-
def _initialize(g=globals()):
|
3656
|
+
def _initialize(g=globals()) -> None:
|
3662
3657
|
"Set up global resource manager (deliberately not state-saved)"
|
3663
3658
|
manager = ResourceManager()
|
3664
3659
|
g['_manager'] = manager
|
@@ -3670,7 +3665,7 @@ def _initialize(g=globals()):
|
|
3670
3665
|
|
3671
3666
|
|
3672
3667
|
@_call_aside
|
3673
|
-
def _initialize_master_working_set():
|
3668
|
+
def _initialize_master_working_set() -> None:
|
3674
3669
|
"""
|
3675
3670
|
Prepare the master working set and make the ``require()``
|
3676
3671
|
API available.
|
@@ -236,7 +236,7 @@ def make_distribution_no_version(tmpdir, basename):
|
|
236
236
|
|
237
237
|
|
238
238
|
@pytest.mark.parametrize(
|
239
|
-
|
239
|
+
("suffix", "expected_filename", "expected_dist_type"),
|
240
240
|
[
|
241
241
|
('egg-info', 'PKG-INFO', EggInfoDistribution),
|
242
242
|
('dist-info', 'METADATA', DistInfoDistribution),
|
@@ -376,7 +376,7 @@ class TestDeepVersionLookupDistutils:
|
|
376
376
|
assert dist.version == version
|
377
377
|
|
378
378
|
@pytest.mark.parametrize(
|
379
|
-
|
379
|
+
("unnormalized", "normalized"),
|
380
380
|
[
|
381
381
|
('foo', 'foo'),
|
382
382
|
('foo/', 'foo'),
|
@@ -398,7 +398,7 @@ class TestDeepVersionLookupDistutils:
|
|
398
398
|
reason='Testing case-insensitive filesystems.',
|
399
399
|
)
|
400
400
|
@pytest.mark.parametrize(
|
401
|
-
|
401
|
+
("unnormalized", "normalized"),
|
402
402
|
[
|
403
403
|
('MiXeD/CasE', 'mixed/case'),
|
404
404
|
],
|
@@ -414,7 +414,7 @@ class TestDeepVersionLookupDistutils:
|
|
414
414
|
reason='Testing systems using backslashes as path separators.',
|
415
415
|
)
|
416
416
|
@pytest.mark.parametrize(
|
417
|
-
|
417
|
+
("unnormalized", "expected"),
|
418
418
|
[
|
419
419
|
('forward/slash', 'forward\\slash'),
|
420
420
|
('forward/slash/', 'forward\\slash'),
|
@@ -32,7 +32,7 @@ def pairwise(iterable):
|
|
32
32
|
class Metadata(pkg_resources.EmptyProvider):
|
33
33
|
"""Mock object to return metadata as if from an on-disk distribution"""
|
34
34
|
|
35
|
-
def __init__(self, *pairs):
|
35
|
+
def __init__(self, *pairs) -> None:
|
36
36
|
self.metadata = dict(pairs)
|
37
37
|
|
38
38
|
def has_metadata(self, name) -> bool:
|
@@ -119,7 +119,7 @@ class TestDistro:
|
|
119
119
|
self.checkFooPkg(d)
|
120
120
|
|
121
121
|
d = Distribution("/some/path")
|
122
|
-
assert d.py_version == '{}.{
|
122
|
+
assert d.py_version == f'{sys.version_info.major}.{sys.version_info.minor}'
|
123
123
|
assert d.platform is None
|
124
124
|
|
125
125
|
def testDistroParse(self):
|
@@ -693,14 +693,14 @@ class TestParsing:
|
|
693
693
|
) != Requirement.parse("name[foo,bar]==1.0;python_version=='3.6'")
|
694
694
|
|
695
695
|
def test_local_version(self):
|
696
|
-
|
696
|
+
parse_requirements('foo==1.0+org1')
|
697
697
|
|
698
698
|
def test_spaces_between_multiple_versions(self):
|
699
|
-
|
700
|
-
|
699
|
+
parse_requirements('foo>=1.0, <3')
|
700
|
+
parse_requirements('foo >= 1.0, < 3')
|
701
701
|
|
702
702
|
@pytest.mark.parametrize(
|
703
|
-
|
703
|
+
("lower", "upper"),
|
704
704
|
[
|
705
705
|
('1.2-rc1', '1.2rc1'),
|
706
706
|
('0.4', '0.4.0'),
|
@@ -724,7 +724,7 @@ class TestParsing:
|
|
724
724
|
"""
|
725
725
|
|
726
726
|
@pytest.mark.parametrize(
|
727
|
-
|
727
|
+
("lower", "upper"),
|
728
728
|
[
|
729
729
|
('2.1', '2.1.1'),
|
730
730
|
('2a1', '2b0'),
|
@@ -60,7 +60,7 @@ def _install_setup_requires(attrs):
|
|
60
60
|
fetch_build_eggs interface.
|
61
61
|
"""
|
62
62
|
|
63
|
-
def __init__(self, attrs: Mapping[str, object]):
|
63
|
+
def __init__(self, attrs: Mapping[str, object]) -> None:
|
64
64
|
_incl = 'dependency_links', 'setup_requires'
|
65
65
|
filtered = {k: attrs[k] for k in set(_incl) & set(attrs)}
|
66
66
|
super().__init__(filtered)
|
@@ -70,7 +70,7 @@ def _install_setup_requires(attrs):
|
|
70
70
|
def _get_project_config_files(self, filenames=None):
|
71
71
|
"""Ignore ``pyproject.toml``, they are not related to setup_requires"""
|
72
72
|
try:
|
73
|
-
cfg,
|
73
|
+
cfg, _toml = super()._split_standard_project_metadata(filenames)
|
74
74
|
except Exception:
|
75
75
|
return filenames, ()
|
76
76
|
return cfg, ()
|
@@ -89,7 +89,7 @@ def _install_setup_requires(attrs):
|
|
89
89
|
_fetch_build_eggs(dist)
|
90
90
|
|
91
91
|
|
92
|
-
def _fetch_build_eggs(dist):
|
92
|
+
def _fetch_build_eggs(dist: Distribution):
|
93
93
|
try:
|
94
94
|
dist.fetch_build_eggs(dist.setup_requires)
|
95
95
|
except Exception as ex:
|
@@ -120,10 +120,8 @@ def setup(**attrs):
|
|
120
120
|
setup.__doc__ = distutils.core.setup.__doc__
|
121
121
|
|
122
122
|
if TYPE_CHECKING:
|
123
|
-
from typing_extensions import TypeAlias
|
124
|
-
|
125
123
|
# Work around a mypy issue where type[T] can't be used as a base: https://github.com/python/mypy/issues/10962
|
126
|
-
|
124
|
+
from distutils.core import Command as _Command
|
127
125
|
else:
|
128
126
|
_Command = monkey.get_unpatched(distutils.core.Command)
|
129
127
|
|
@@ -169,7 +167,7 @@ class Command(_Command):
|
|
169
167
|
command_consumes_arguments = False
|
170
168
|
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
|
171
169
|
|
172
|
-
def __init__(self, dist: Distribution, **kw):
|
170
|
+
def __init__(self, dist: Distribution, **kw) -> None:
|
173
171
|
"""
|
174
172
|
Construct the command for dist, updating
|
175
173
|
vars(self) with any keyword parameters.
|
@@ -188,7 +186,7 @@ class Command(_Command):
|
|
188
186
|
)
|
189
187
|
return val
|
190
188
|
|
191
|
-
def ensure_string_list(self, option):
|
189
|
+
def ensure_string_list(self, option: str) -> None:
|
192
190
|
r"""Ensure that 'option' is a list of strings. If 'option' is
|
193
191
|
currently a string, we split it either on /,\s*/ or /\s+/, so
|
194
192
|
"foo bar baz", "foo,bar,baz", and "foo, bar baz" all become
|
@@ -228,7 +226,7 @@ class Command(_Command):
|
|
228
226
|
) -> _Command:
|
229
227
|
cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
|
230
228
|
vars(cmd).update(kw)
|
231
|
-
return cmd
|
229
|
+
return cmd # pyright: ignore[reportReturnType] # pypa/distutils#307
|
232
230
|
|
233
231
|
@abstractmethod
|
234
232
|
def initialize_options(self) -> None:
|