py2docfx 0.1.9.dev1897607__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/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.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/METADATA +1 -1
- {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/RECORD +293 -353
- {py2docfx-0.1.9.dev1897607.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.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/top_level.txt +0 -0
@@ -18,9 +18,9 @@ from .utils import canonicalize_name
|
|
18
18
|
|
19
19
|
__all__ = [
|
20
20
|
"InvalidMarker",
|
21
|
+
"Marker",
|
21
22
|
"UndefinedComparison",
|
22
23
|
"UndefinedEnvironmentName",
|
23
|
-
"Marker",
|
24
24
|
"default_environment",
|
25
25
|
]
|
26
26
|
|
@@ -232,7 +232,7 @@ def _evaluate_markers(markers: MarkerList, environment: dict[str, str]) -> bool:
|
|
232
232
|
|
233
233
|
|
234
234
|
def format_full_version(info: sys._version_info) -> str:
|
235
|
-
version = "{
|
235
|
+
version = f"{info.major}.{info.minor}.{info.micro}"
|
236
236
|
kind = info.releaselevel
|
237
237
|
if kind != "final":
|
238
238
|
version += kind[0] + str(info.serial)
|
@@ -309,12 +309,6 @@ class Marker:
|
|
309
309
|
"""
|
310
310
|
current_environment = cast("dict[str, str]", default_environment())
|
311
311
|
current_environment["extra"] = ""
|
312
|
-
# Work around platform.python_version() returning something that is not PEP 440
|
313
|
-
# compliant for non-tagged Python builds. We preserve default_environment()'s
|
314
|
-
# behavior of returning platform.python_version() verbatim, and leave it to the
|
315
|
-
# caller to provide a syntactically valid version if they want to override it.
|
316
|
-
if current_environment["python_full_version"].endswith("+"):
|
317
|
-
current_environment["python_full_version"] += "local"
|
318
312
|
if environment is not None:
|
319
313
|
current_environment.update(environment)
|
320
314
|
# The API used to allow setting extra to None. We need to handle this
|
@@ -322,4 +316,16 @@ class Marker:
|
|
322
316
|
if current_environment["extra"] is None:
|
323
317
|
current_environment["extra"] = ""
|
324
318
|
|
325
|
-
return _evaluate_markers(
|
319
|
+
return _evaluate_markers(
|
320
|
+
self._markers, _repair_python_full_version(current_environment)
|
321
|
+
)
|
322
|
+
|
323
|
+
|
324
|
+
def _repair_python_full_version(env: dict[str, str]) -> dict[str, str]:
|
325
|
+
"""
|
326
|
+
Work around platform.python_version() returning something that is not PEP 440
|
327
|
+
compliant for non-tagged Python builds.
|
328
|
+
"""
|
329
|
+
if env["python_full_version"].endswith("+"):
|
330
|
+
env["python_full_version"] += "local"
|
331
|
+
return env
|
@@ -5,6 +5,8 @@ import email.header
|
|
5
5
|
import email.message
|
6
6
|
import email.parser
|
7
7
|
import email.policy
|
8
|
+
import pathlib
|
9
|
+
import sys
|
8
10
|
import typing
|
9
11
|
from typing import (
|
10
12
|
Any,
|
@@ -15,15 +17,16 @@ from typing import (
|
|
15
17
|
cast,
|
16
18
|
)
|
17
19
|
|
18
|
-
from . import requirements, specifiers, utils
|
20
|
+
from . import licenses, requirements, specifiers, utils
|
19
21
|
from . import version as version_module
|
22
|
+
from .licenses import NormalizedLicenseExpression
|
20
23
|
|
21
24
|
T = typing.TypeVar("T")
|
22
25
|
|
23
26
|
|
24
|
-
|
25
|
-
ExceptionGroup
|
26
|
-
|
27
|
+
if sys.version_info >= (3, 11): # pragma: no cover
|
28
|
+
ExceptionGroup = ExceptionGroup
|
29
|
+
else: # pragma: no cover
|
27
30
|
|
28
31
|
class ExceptionGroup(Exception):
|
29
32
|
"""A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11.
|
@@ -42,9 +45,6 @@ except NameError: # pragma: no cover
|
|
42
45
|
def __repr__(self) -> str:
|
43
46
|
return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})"
|
44
47
|
|
45
|
-
else: # pragma: no cover
|
46
|
-
ExceptionGroup = ExceptionGroup
|
47
|
-
|
48
48
|
|
49
49
|
class InvalidMetadata(ValueError):
|
50
50
|
"""A metadata field contains invalid data."""
|
@@ -128,6 +128,10 @@ class RawMetadata(TypedDict, total=False):
|
|
128
128
|
# No new fields were added in PEP 685, just some edge case were
|
129
129
|
# tightened up to provide better interoptability.
|
130
130
|
|
131
|
+
# Metadata 2.4 - PEP 639
|
132
|
+
license_expression: str
|
133
|
+
license_files: list[str]
|
134
|
+
|
131
135
|
|
132
136
|
_STRING_FIELDS = {
|
133
137
|
"author",
|
@@ -137,6 +141,7 @@ _STRING_FIELDS = {
|
|
137
141
|
"download_url",
|
138
142
|
"home_page",
|
139
143
|
"license",
|
144
|
+
"license_expression",
|
140
145
|
"maintainer",
|
141
146
|
"maintainer_email",
|
142
147
|
"metadata_version",
|
@@ -149,6 +154,7 @@ _STRING_FIELDS = {
|
|
149
154
|
_LIST_FIELDS = {
|
150
155
|
"classifiers",
|
151
156
|
"dynamic",
|
157
|
+
"license_files",
|
152
158
|
"obsoletes",
|
153
159
|
"obsoletes_dist",
|
154
160
|
"platforms",
|
@@ -167,7 +173,7 @@ _DICT_FIELDS = {
|
|
167
173
|
|
168
174
|
|
169
175
|
def _parse_keywords(data: str) -> list[str]:
|
170
|
-
"""Split a string of comma-
|
176
|
+
"""Split a string of comma-separated keywords into a list of keywords."""
|
171
177
|
return [k.strip() for k in data.split(",")]
|
172
178
|
|
173
179
|
|
@@ -216,16 +222,18 @@ def _get_payload(msg: email.message.Message, source: bytes | str) -> str:
|
|
216
222
|
# If our source is a str, then our caller has managed encodings for us,
|
217
223
|
# and we don't need to deal with it.
|
218
224
|
if isinstance(source, str):
|
219
|
-
payload
|
225
|
+
payload = msg.get_payload()
|
226
|
+
assert isinstance(payload, str)
|
220
227
|
return payload
|
221
228
|
# If our source is a bytes, then we're managing the encoding and we need
|
222
229
|
# to deal with it.
|
223
230
|
else:
|
224
|
-
bpayload
|
231
|
+
bpayload = msg.get_payload(decode=True)
|
232
|
+
assert isinstance(bpayload, bytes)
|
225
233
|
try:
|
226
234
|
return bpayload.decode("utf8", "strict")
|
227
|
-
except UnicodeDecodeError:
|
228
|
-
raise ValueError("payload in an invalid encoding")
|
235
|
+
except UnicodeDecodeError as exc:
|
236
|
+
raise ValueError("payload in an invalid encoding") from exc
|
229
237
|
|
230
238
|
|
231
239
|
# The various parse_FORMAT functions here are intended to be as lenient as
|
@@ -251,6 +259,8 @@ _EMAIL_TO_RAW_MAPPING = {
|
|
251
259
|
"home-page": "home_page",
|
252
260
|
"keywords": "keywords",
|
253
261
|
"license": "license",
|
262
|
+
"license-expression": "license_expression",
|
263
|
+
"license-file": "license_files",
|
254
264
|
"maintainer": "maintainer",
|
255
265
|
"maintainer-email": "maintainer_email",
|
256
266
|
"metadata-version": "metadata_version",
|
@@ -426,7 +436,7 @@ def parse_email(data: bytes | str) -> tuple[RawMetadata, dict[str, list[str]]]:
|
|
426
436
|
payload = _get_payload(parsed, data)
|
427
437
|
except ValueError:
|
428
438
|
unparsed.setdefault("description", []).append(
|
429
|
-
parsed.get_payload(decode=isinstance(data, bytes))
|
439
|
+
parsed.get_payload(decode=isinstance(data, bytes)) # type: ignore[call-overload]
|
430
440
|
)
|
431
441
|
else:
|
432
442
|
if payload:
|
@@ -453,8 +463,8 @@ _NOT_FOUND = object()
|
|
453
463
|
|
454
464
|
|
455
465
|
# Keep the two values in sync.
|
456
|
-
_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"]
|
457
|
-
_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"]
|
466
|
+
_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"]
|
467
|
+
_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3", "2.4"]
|
458
468
|
|
459
469
|
_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"])
|
460
470
|
|
@@ -535,7 +545,7 @@ class _Validator(Generic[T]):
|
|
535
545
|
except utils.InvalidName as exc:
|
536
546
|
raise self._invalid_metadata(
|
537
547
|
f"{value!r} is invalid for {{field}}", cause=exc
|
538
|
-
)
|
548
|
+
) from exc
|
539
549
|
else:
|
540
550
|
return value
|
541
551
|
|
@@ -547,7 +557,7 @@ class _Validator(Generic[T]):
|
|
547
557
|
except version_module.InvalidVersion as exc:
|
548
558
|
raise self._invalid_metadata(
|
549
559
|
f"{value!r} is invalid for {{field}}", cause=exc
|
550
|
-
)
|
560
|
+
) from exc
|
551
561
|
|
552
562
|
def _process_summary(self, value: str) -> str:
|
553
563
|
"""Check the field contains no newlines."""
|
@@ -591,10 +601,12 @@ class _Validator(Generic[T]):
|
|
591
601
|
for dynamic_field in map(str.lower, value):
|
592
602
|
if dynamic_field in {"name", "version", "metadata-version"}:
|
593
603
|
raise self._invalid_metadata(
|
594
|
-
f"{
|
604
|
+
f"{dynamic_field!r} is not allowed as a dynamic field"
|
595
605
|
)
|
596
606
|
elif dynamic_field not in _EMAIL_TO_RAW_MAPPING:
|
597
|
-
raise self._invalid_metadata(
|
607
|
+
raise self._invalid_metadata(
|
608
|
+
f"{dynamic_field!r} is not a valid dynamic field"
|
609
|
+
)
|
598
610
|
return list(map(str.lower, value))
|
599
611
|
|
600
612
|
def _process_provides_extra(
|
@@ -608,7 +620,7 @@ class _Validator(Generic[T]):
|
|
608
620
|
except utils.InvalidName as exc:
|
609
621
|
raise self._invalid_metadata(
|
610
622
|
f"{name!r} is invalid for {{field}}", cause=exc
|
611
|
-
)
|
623
|
+
) from exc
|
612
624
|
else:
|
613
625
|
return normalized_names
|
614
626
|
|
@@ -618,7 +630,7 @@ class _Validator(Generic[T]):
|
|
618
630
|
except specifiers.InvalidSpecifier as exc:
|
619
631
|
raise self._invalid_metadata(
|
620
632
|
f"{value!r} is invalid for {{field}}", cause=exc
|
621
|
-
)
|
633
|
+
) from exc
|
622
634
|
|
623
635
|
def _process_requires_dist(
|
624
636
|
self,
|
@@ -629,10 +641,49 @@ class _Validator(Generic[T]):
|
|
629
641
|
for req in value:
|
630
642
|
reqs.append(requirements.Requirement(req))
|
631
643
|
except requirements.InvalidRequirement as exc:
|
632
|
-
raise self._invalid_metadata(
|
644
|
+
raise self._invalid_metadata(
|
645
|
+
f"{req!r} is invalid for {{field}}", cause=exc
|
646
|
+
) from exc
|
633
647
|
else:
|
634
648
|
return reqs
|
635
649
|
|
650
|
+
def _process_license_expression(
|
651
|
+
self, value: str
|
652
|
+
) -> NormalizedLicenseExpression | None:
|
653
|
+
try:
|
654
|
+
return licenses.canonicalize_license_expression(value)
|
655
|
+
except ValueError as exc:
|
656
|
+
raise self._invalid_metadata(
|
657
|
+
f"{value!r} is invalid for {{field}}", cause=exc
|
658
|
+
) from exc
|
659
|
+
|
660
|
+
def _process_license_files(self, value: list[str]) -> list[str]:
|
661
|
+
paths = []
|
662
|
+
for path in value:
|
663
|
+
if ".." in path:
|
664
|
+
raise self._invalid_metadata(
|
665
|
+
f"{path!r} is invalid for {{field}}, "
|
666
|
+
"parent directory indicators are not allowed"
|
667
|
+
)
|
668
|
+
if "*" in path:
|
669
|
+
raise self._invalid_metadata(
|
670
|
+
f"{path!r} is invalid for {{field}}, paths must be resolved"
|
671
|
+
)
|
672
|
+
if (
|
673
|
+
pathlib.PurePosixPath(path).is_absolute()
|
674
|
+
or pathlib.PureWindowsPath(path).is_absolute()
|
675
|
+
):
|
676
|
+
raise self._invalid_metadata(
|
677
|
+
f"{path!r} is invalid for {{field}}, paths must be relative"
|
678
|
+
)
|
679
|
+
if pathlib.PureWindowsPath(path).as_posix() != path:
|
680
|
+
raise self._invalid_metadata(
|
681
|
+
f"{path!r} is invalid for {{field}}, "
|
682
|
+
"paths must use '/' delimiter"
|
683
|
+
)
|
684
|
+
paths.append(path)
|
685
|
+
return paths
|
686
|
+
|
636
687
|
|
637
688
|
class Metadata:
|
638
689
|
"""Representation of distribution metadata.
|
@@ -688,8 +739,8 @@ class Metadata:
|
|
688
739
|
field = _RAW_TO_EMAIL_MAPPING[key]
|
689
740
|
exc = InvalidMetadata(
|
690
741
|
field,
|
691
|
-
"{field} introduced in metadata version "
|
692
|
-
"{field_metadata_version}, not {metadata_version}",
|
742
|
+
f"{field} introduced in metadata version "
|
743
|
+
f"{field_metadata_version}, not {metadata_version}",
|
693
744
|
)
|
694
745
|
exceptions.append(exc)
|
695
746
|
continue
|
@@ -733,6 +784,8 @@ class Metadata:
|
|
733
784
|
metadata_version: _Validator[_MetadataVersion] = _Validator()
|
734
785
|
""":external:ref:`core-metadata-metadata-version`
|
735
786
|
(required; validated to be a valid metadata version)"""
|
787
|
+
# `name` is not normalized/typed to NormalizedName so as to provide access to
|
788
|
+
# the original/raw name.
|
736
789
|
name: _Validator[str] = _Validator()
|
737
790
|
""":external:ref:`core-metadata-name`
|
738
791
|
(required; validated using :func:`~packaging.utils.canonicalize_name` and its
|
@@ -770,6 +823,12 @@ class Metadata:
|
|
770
823
|
""":external:ref:`core-metadata-maintainer-email`"""
|
771
824
|
license: _Validator[str | None] = _Validator()
|
772
825
|
""":external:ref:`core-metadata-license`"""
|
826
|
+
license_expression: _Validator[NormalizedLicenseExpression | None] = _Validator(
|
827
|
+
added="2.4"
|
828
|
+
)
|
829
|
+
""":external:ref:`core-metadata-license-expression`"""
|
830
|
+
license_files: _Validator[list[str] | None] = _Validator(added="2.4")
|
831
|
+
""":external:ref:`core-metadata-license-file`"""
|
773
832
|
classifiers: _Validator[list[str] | None] = _Validator(added="1.1")
|
774
833
|
""":external:ref:`core-metadata-classifier`"""
|
775
834
|
requires_dist: _Validator[list[requirements.Requirement] | None] = _Validator(
|
@@ -234,7 +234,7 @@ class Specifier(BaseSpecifier):
|
|
234
234
|
"""
|
235
235
|
match = self._regex.search(spec)
|
236
236
|
if not match:
|
237
|
-
raise InvalidSpecifier(f"Invalid specifier:
|
237
|
+
raise InvalidSpecifier(f"Invalid specifier: {spec!r}")
|
238
238
|
|
239
239
|
self._spec: tuple[str, str] = (
|
240
240
|
match.group("operator").strip(),
|
@@ -256,7 +256,7 @@ class Specifier(BaseSpecifier):
|
|
256
256
|
# operators, and if they are if they are including an explicit
|
257
257
|
# prerelease.
|
258
258
|
operator, version = self._spec
|
259
|
-
if operator in ["==", ">=", "<=", "~=", "==="]:
|
259
|
+
if operator in ["==", ">=", "<=", "~=", "===", ">", "<"]:
|
260
260
|
# The == specifier can include a trailing .*, if it does we
|
261
261
|
# want to remove before parsing.
|
262
262
|
if operator == "==" and version.endswith(".*"):
|
@@ -694,12 +694,18 @@ class SpecifierSet(BaseSpecifier):
|
|
694
694
|
specifiers (``>=3.0,!=3.1``), or no specifier at all.
|
695
695
|
"""
|
696
696
|
|
697
|
-
def __init__(
|
697
|
+
def __init__(
|
698
|
+
self,
|
699
|
+
specifiers: str | Iterable[Specifier] = "",
|
700
|
+
prereleases: bool | None = None,
|
701
|
+
) -> None:
|
698
702
|
"""Initialize a SpecifierSet instance.
|
699
703
|
|
700
704
|
:param specifiers:
|
701
705
|
The string representation of a specifier or a comma-separated list of
|
702
706
|
specifiers which will be parsed and normalized before use.
|
707
|
+
May also be an iterable of ``Specifier`` instances, which will be used
|
708
|
+
as is.
|
703
709
|
:param prereleases:
|
704
710
|
This tells the SpecifierSet if it should accept prerelease versions if
|
705
711
|
applicable or not. The default of ``None`` will autodetect it from the
|
@@ -710,12 +716,17 @@ class SpecifierSet(BaseSpecifier):
|
|
710
716
|
raised.
|
711
717
|
"""
|
712
718
|
|
713
|
-
|
714
|
-
|
715
|
-
|
719
|
+
if isinstance(specifiers, str):
|
720
|
+
# Split on `,` to break each individual specifier into its own item, and
|
721
|
+
# strip each item to remove leading/trailing whitespace.
|
722
|
+
split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()]
|
716
723
|
|
717
|
-
|
718
|
-
|
724
|
+
# Make each individual specifier a Specifier and save in a frozen set
|
725
|
+
# for later.
|
726
|
+
self._specs = frozenset(map(Specifier, split_specifiers))
|
727
|
+
else:
|
728
|
+
# Save the supplied specifiers in a frozen set.
|
729
|
+
self._specs = frozenset(specifiers)
|
719
730
|
|
720
731
|
# Store our prereleases value so we can use it later to determine if
|
721
732
|
# we accept prereleases or not.
|
@@ -25,7 +25,7 @@ from . import _manylinux, _musllinux
|
|
25
25
|
logger = logging.getLogger(__name__)
|
26
26
|
|
27
27
|
PythonVersion = Sequence[int]
|
28
|
-
|
28
|
+
AppleVersion = Tuple[int, int]
|
29
29
|
|
30
30
|
INTERPRETER_SHORT_NAMES: dict[str, str] = {
|
31
31
|
"python": "py", # Generic.
|
@@ -47,7 +47,7 @@ class Tag:
|
|
47
47
|
is also supported.
|
48
48
|
"""
|
49
49
|
|
50
|
-
__slots__ = ["
|
50
|
+
__slots__ = ["_abi", "_hash", "_interpreter", "_platform"]
|
51
51
|
|
52
52
|
def __init__(self, interpreter: str, abi: str, platform: str) -> None:
|
53
53
|
self._interpreter = interpreter.lower()
|
@@ -235,9 +235,8 @@ def cpython_tags(
|
|
235
235
|
if use_abi3:
|
236
236
|
for minor_version in range(python_version[1] - 1, 1, -1):
|
237
237
|
for platform_ in platforms:
|
238
|
-
|
239
|
-
|
240
|
-
)
|
238
|
+
version = _version_nodot((python_version[0], minor_version))
|
239
|
+
interpreter = f"cp{version}"
|
241
240
|
yield Tag(interpreter, "abi3", platform_)
|
242
241
|
|
243
242
|
|
@@ -363,7 +362,7 @@ def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str:
|
|
363
362
|
return "i386"
|
364
363
|
|
365
364
|
|
366
|
-
def _mac_binary_formats(version:
|
365
|
+
def _mac_binary_formats(version: AppleVersion, cpu_arch: str) -> list[str]:
|
367
366
|
formats = [cpu_arch]
|
368
367
|
if cpu_arch == "x86_64":
|
369
368
|
if version < (10, 4):
|
@@ -396,7 +395,7 @@ def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> list[str]:
|
|
396
395
|
|
397
396
|
|
398
397
|
def mac_platforms(
|
399
|
-
version:
|
398
|
+
version: AppleVersion | None = None, arch: str | None = None
|
400
399
|
) -> Iterator[str]:
|
401
400
|
"""
|
402
401
|
Yields the platform tags for a macOS system.
|
@@ -408,7 +407,7 @@ def mac_platforms(
|
|
408
407
|
"""
|
409
408
|
version_str, _, cpu_arch = platform.mac_ver()
|
410
409
|
if version is None:
|
411
|
-
version = cast("
|
410
|
+
version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2])))
|
412
411
|
if version == (10, 16):
|
413
412
|
# When built against an older macOS SDK, Python will report macOS 10.16
|
414
413
|
# instead of the real version.
|
@@ -424,7 +423,7 @@ def mac_platforms(
|
|
424
423
|
stdout=subprocess.PIPE,
|
425
424
|
text=True,
|
426
425
|
).stdout
|
427
|
-
version = cast("
|
426
|
+
version = cast("AppleVersion", tuple(map(int, version_str.split(".")[:2])))
|
428
427
|
else:
|
429
428
|
version = version
|
430
429
|
if arch is None:
|
@@ -435,24 +434,22 @@ def mac_platforms(
|
|
435
434
|
if (10, 0) <= version and version < (11, 0):
|
436
435
|
# Prior to Mac OS 11, each yearly release of Mac OS bumped the
|
437
436
|
# "minor" version number. The major version was always 10.
|
437
|
+
major_version = 10
|
438
438
|
for minor_version in range(version[1], -1, -1):
|
439
|
-
compat_version =
|
439
|
+
compat_version = major_version, minor_version
|
440
440
|
binary_formats = _mac_binary_formats(compat_version, arch)
|
441
441
|
for binary_format in binary_formats:
|
442
|
-
yield "macosx_{
|
443
|
-
major=10, minor=minor_version, binary_format=binary_format
|
444
|
-
)
|
442
|
+
yield f"macosx_{major_version}_{minor_version}_{binary_format}"
|
445
443
|
|
446
444
|
if version >= (11, 0):
|
447
445
|
# Starting with Mac OS 11, each yearly release bumps the major version
|
448
446
|
# number. The minor versions are now the midyear updates.
|
447
|
+
minor_version = 0
|
449
448
|
for major_version in range(version[0], 10, -1):
|
450
|
-
compat_version = major_version,
|
449
|
+
compat_version = major_version, minor_version
|
451
450
|
binary_formats = _mac_binary_formats(compat_version, arch)
|
452
451
|
for binary_format in binary_formats:
|
453
|
-
yield "macosx_{
|
454
|
-
major=major_version, minor=0, binary_format=binary_format
|
455
|
-
)
|
452
|
+
yield f"macosx_{major_version}_{minor_version}_{binary_format}"
|
456
453
|
|
457
454
|
if version >= (11, 0):
|
458
455
|
# Mac OS 11 on x86_64 is compatible with binaries from previous releases.
|
@@ -462,25 +459,75 @@ def mac_platforms(
|
|
462
459
|
# However, the "universal2" binary format can have a
|
463
460
|
# macOS version earlier than 11.0 when the x86_64 part of the binary supports
|
464
461
|
# that version of macOS.
|
462
|
+
major_version = 10
|
465
463
|
if arch == "x86_64":
|
466
464
|
for minor_version in range(16, 3, -1):
|
467
|
-
compat_version =
|
465
|
+
compat_version = major_version, minor_version
|
468
466
|
binary_formats = _mac_binary_formats(compat_version, arch)
|
469
467
|
for binary_format in binary_formats:
|
470
|
-
yield "macosx_{
|
471
|
-
major=compat_version[0],
|
472
|
-
minor=compat_version[1],
|
473
|
-
binary_format=binary_format,
|
474
|
-
)
|
468
|
+
yield f"macosx_{major_version}_{minor_version}_{binary_format}"
|
475
469
|
else:
|
476
470
|
for minor_version in range(16, 3, -1):
|
477
|
-
compat_version =
|
471
|
+
compat_version = major_version, minor_version
|
478
472
|
binary_format = "universal2"
|
479
|
-
yield "macosx_{
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
473
|
+
yield f"macosx_{major_version}_{minor_version}_{binary_format}"
|
474
|
+
|
475
|
+
|
476
|
+
def ios_platforms(
|
477
|
+
version: AppleVersion | None = None, multiarch: str | None = None
|
478
|
+
) -> Iterator[str]:
|
479
|
+
"""
|
480
|
+
Yields the platform tags for an iOS system.
|
481
|
+
|
482
|
+
:param version: A two-item tuple specifying the iOS version to generate
|
483
|
+
platform tags for. Defaults to the current iOS version.
|
484
|
+
:param multiarch: The CPU architecture+ABI to generate platform tags for -
|
485
|
+
(the value used by `sys.implementation._multiarch` e.g.,
|
486
|
+
`arm64_iphoneos` or `x84_64_iphonesimulator`). Defaults to the current
|
487
|
+
multiarch value.
|
488
|
+
"""
|
489
|
+
if version is None:
|
490
|
+
# if iOS is the current platform, ios_ver *must* be defined. However,
|
491
|
+
# it won't exist for CPython versions before 3.13, which causes a mypy
|
492
|
+
# error.
|
493
|
+
_, release, _, _ = platform.ios_ver() # type: ignore[attr-defined, unused-ignore]
|
494
|
+
version = cast("AppleVersion", tuple(map(int, release.split(".")[:2])))
|
495
|
+
|
496
|
+
if multiarch is None:
|
497
|
+
multiarch = sys.implementation._multiarch
|
498
|
+
multiarch = multiarch.replace("-", "_")
|
499
|
+
|
500
|
+
ios_platform_template = "ios_{major}_{minor}_{multiarch}"
|
501
|
+
|
502
|
+
# Consider any iOS major.minor version from the version requested, down to
|
503
|
+
# 12.0. 12.0 is the first iOS version that is known to have enough features
|
504
|
+
# to support CPython. Consider every possible minor release up to X.9. There
|
505
|
+
# highest the minor has ever gone is 8 (14.8 and 15.8) but having some extra
|
506
|
+
# candidates that won't ever match doesn't really hurt, and it saves us from
|
507
|
+
# having to keep an explicit list of known iOS versions in the code. Return
|
508
|
+
# the results descending order of version number.
|
509
|
+
|
510
|
+
# If the requested major version is less than 12, there won't be any matches.
|
511
|
+
if version[0] < 12:
|
512
|
+
return
|
513
|
+
|
514
|
+
# Consider the actual X.Y version that was requested.
|
515
|
+
yield ios_platform_template.format(
|
516
|
+
major=version[0], minor=version[1], multiarch=multiarch
|
517
|
+
)
|
518
|
+
|
519
|
+
# Consider every minor version from X.0 to the minor version prior to the
|
520
|
+
# version requested by the platform.
|
521
|
+
for minor in range(version[1] - 1, -1, -1):
|
522
|
+
yield ios_platform_template.format(
|
523
|
+
major=version[0], minor=minor, multiarch=multiarch
|
524
|
+
)
|
525
|
+
|
526
|
+
for major in range(version[0] - 1, 11, -1):
|
527
|
+
for minor in range(9, -1, -1):
|
528
|
+
yield ios_platform_template.format(
|
529
|
+
major=major, minor=minor, multiarch=multiarch
|
530
|
+
)
|
484
531
|
|
485
532
|
|
486
533
|
def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]:
|
@@ -512,6 +559,8 @@ def platform_tags() -> Iterator[str]:
|
|
512
559
|
"""
|
513
560
|
if platform.system() == "Darwin":
|
514
561
|
return mac_platforms()
|
562
|
+
elif platform.system() == "iOS":
|
563
|
+
return ios_platforms()
|
515
564
|
elif platform.system() == "Linux":
|
516
565
|
return _linux_platforms()
|
517
566
|
else:
|