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
@@ -13,12 +13,15 @@ import json
|
|
13
13
|
import os
|
14
14
|
import os.path
|
15
15
|
import platform
|
16
|
-
from typing import TYPE_CHECKING
|
16
|
+
from typing import TYPE_CHECKING, TypedDict
|
17
17
|
|
18
18
|
from more_itertools import unique_everseen
|
19
19
|
|
20
20
|
import distutils.errors
|
21
21
|
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from typing_extensions import NotRequired
|
24
|
+
|
22
25
|
# https://github.com/python/mypy/issues/8166
|
23
26
|
if not TYPE_CHECKING and platform.system() == 'Windows':
|
24
27
|
import winreg
|
@@ -47,7 +50,7 @@ class PlatformInfo:
|
|
47
50
|
|
48
51
|
current_cpu = environ.get('processor_architecture', '').lower()
|
49
52
|
|
50
|
-
def __init__(self, arch):
|
53
|
+
def __init__(self, arch) -> None:
|
51
54
|
self.arch = arch.lower().replace('x64', 'amd64')
|
52
55
|
|
53
56
|
@property
|
@@ -84,7 +87,7 @@ class PlatformInfo:
|
|
84
87
|
"""
|
85
88
|
return self.current_cpu == 'x86'
|
86
89
|
|
87
|
-
def current_dir(self, hidex86=False, x64=False):
|
90
|
+
def current_dir(self, hidex86=False, x64=False) -> str:
|
88
91
|
"""
|
89
92
|
Current platform specific subfolder.
|
90
93
|
|
@@ -108,7 +111,7 @@ class PlatformInfo:
|
|
108
111
|
else r'\%s' % self.current_cpu
|
109
112
|
)
|
110
113
|
|
111
|
-
def target_dir(self, hidex86=False, x64=False):
|
114
|
+
def target_dir(self, hidex86=False, x64=False) -> str:
|
112
115
|
r"""
|
113
116
|
Target platform specific subfolder.
|
114
117
|
|
@@ -173,11 +176,11 @@ class RegistryInfo:
|
|
173
176
|
winreg.HKEY_CLASSES_ROOT,
|
174
177
|
)
|
175
178
|
|
176
|
-
def __init__(self, platform_info):
|
179
|
+
def __init__(self, platform_info) -> None:
|
177
180
|
self.pi = platform_info
|
178
181
|
|
179
182
|
@property
|
180
|
-
def visualstudio(self):
|
183
|
+
def visualstudio(self) -> str:
|
181
184
|
"""
|
182
185
|
Microsoft Visual Studio root registry key.
|
183
186
|
|
@@ -225,7 +228,7 @@ class RegistryInfo:
|
|
225
228
|
return os.path.join(self.sxs, 'VS7')
|
226
229
|
|
227
230
|
@property
|
228
|
-
def vc_for_python(self):
|
231
|
+
def vc_for_python(self) -> str:
|
229
232
|
"""
|
230
233
|
Microsoft Visual C++ for Python registry key.
|
231
234
|
|
@@ -237,7 +240,7 @@ class RegistryInfo:
|
|
237
240
|
return r'DevDiv\VCForPython'
|
238
241
|
|
239
242
|
@property
|
240
|
-
def microsoft_sdk(self):
|
243
|
+
def microsoft_sdk(self) -> str:
|
241
244
|
"""
|
242
245
|
Microsoft SDK registry key.
|
243
246
|
|
@@ -273,7 +276,7 @@ class RegistryInfo:
|
|
273
276
|
return os.path.join(self.microsoft_sdk, 'NETFXSDK')
|
274
277
|
|
275
278
|
@property
|
276
|
-
def windows_kits_roots(self):
|
279
|
+
def windows_kits_roots(self) -> str:
|
277
280
|
"""
|
278
281
|
Microsoft Windows Kits Roots registry key.
|
279
282
|
|
@@ -363,7 +366,7 @@ class SystemInfo:
|
|
363
366
|
ProgramFiles = environ.get('ProgramFiles', '')
|
364
367
|
ProgramFilesx86 = environ.get('ProgramFiles(x86)', ProgramFiles)
|
365
368
|
|
366
|
-
def __init__(self, registry_info, vc_ver=None):
|
369
|
+
def __init__(self, registry_info, vc_ver=None) -> None:
|
367
370
|
self.ri = registry_info
|
368
371
|
self.pi = self.ri.pi
|
369
372
|
|
@@ -876,6 +879,14 @@ class SystemInfo:
|
|
876
879
|
return next(matching_dirs, None) or ''
|
877
880
|
|
878
881
|
|
882
|
+
class _EnvironmentDict(TypedDict):
|
883
|
+
include: str
|
884
|
+
lib: str
|
885
|
+
libpath: str
|
886
|
+
path: str
|
887
|
+
py_vcruntime_redist: NotRequired[str | None]
|
888
|
+
|
889
|
+
|
879
890
|
class EnvironmentInfo:
|
880
891
|
"""
|
881
892
|
Return environment variables for specified Microsoft Visual C++ version
|
@@ -900,7 +911,7 @@ class EnvironmentInfo:
|
|
900
911
|
# Variables and properties in this class use originals CamelCase variables
|
901
912
|
# names from Microsoft source files for more easy comparison.
|
902
913
|
|
903
|
-
def __init__(self, arch, vc_ver=None, vc_min_ver=0):
|
914
|
+
def __init__(self, arch, vc_ver=None, vc_min_ver=0) -> None:
|
904
915
|
self.pi = PlatformInfo(arch)
|
905
916
|
self.ri = RegistryInfo(self.pi)
|
906
917
|
self.si = SystemInfo(self.ri, vc_ver)
|
@@ -1418,9 +1429,9 @@ class EnvironmentInfo:
|
|
1418
1429
|
os.path.join(prefix, arch_subdir, crt_dir, vcruntime)
|
1419
1430
|
for (prefix, crt_dir) in itertools.product(prefixes, crt_dirs)
|
1420
1431
|
)
|
1421
|
-
return next(filter(os.path.isfile, candidate_paths), None)
|
1432
|
+
return next(filter(os.path.isfile, candidate_paths), None) # type: ignore[arg-type] #python/mypy#12682
|
1422
1433
|
|
1423
|
-
def return_env(self, exists=True):
|
1434
|
+
def return_env(self, exists: bool = True) -> _EnvironmentDict:
|
1424
1435
|
"""
|
1425
1436
|
Return environment dict.
|
1426
1437
|
|
@@ -1434,7 +1445,7 @@ class EnvironmentInfo:
|
|
1434
1445
|
dict
|
1435
1446
|
environment
|
1436
1447
|
"""
|
1437
|
-
env =
|
1448
|
+
env = _EnvironmentDict(
|
1438
1449
|
include=self._build_paths(
|
1439
1450
|
'include',
|
1440
1451
|
[
|
@@ -11,7 +11,7 @@ flatten = itertools.chain.from_iterable
|
|
11
11
|
class Installer:
|
12
12
|
nspkg_ext = '-nspkg.pth'
|
13
13
|
|
14
|
-
def install_namespaces(self):
|
14
|
+
def install_namespaces(self) -> None:
|
15
15
|
nsp = self._get_all_ns_packages()
|
16
16
|
if not nsp:
|
17
17
|
return
|
@@ -30,7 +30,7 @@ class Installer:
|
|
30
30
|
# See: python/cpython#77102
|
31
31
|
f.writelines(lines)
|
32
32
|
|
33
|
-
def uninstall_namespaces(self):
|
33
|
+
def uninstall_namespaces(self) -> None:
|
34
34
|
filename = self._get_nspkg_file()
|
35
35
|
if not os.path.exists(filename):
|
36
36
|
return
|
@@ -1,5 +1,7 @@
|
|
1
1
|
"""PyPI and direct package downloading."""
|
2
2
|
|
3
|
+
from __future__ import annotations
|
4
|
+
|
3
5
|
import base64
|
4
6
|
import configparser
|
5
7
|
import hashlib
|
@@ -64,10 +66,7 @@ __all__ = [
|
|
64
66
|
|
65
67
|
_SOCKET_TIMEOUT = 15
|
66
68
|
|
67
|
-
|
68
|
-
user_agent = _tmpl.format(
|
69
|
-
py_major='{}.{}'.format(*sys.version_info), setuptools=setuptools
|
70
|
-
)
|
69
|
+
user_agent = f"setuptools/{setuptools.__version__} Python-urllib/{sys.version_info.major}.{sys.version_info.minor}"
|
71
70
|
|
72
71
|
|
73
72
|
def parse_requirement_arg(spec):
|
@@ -105,7 +104,7 @@ def parse_bdist_wininst(name):
|
|
105
104
|
|
106
105
|
def egg_info_for_url(url):
|
107
106
|
parts = urllib.parse.urlparse(url)
|
108
|
-
|
107
|
+
_scheme, server, path, _parameters, _query, fragment = parts
|
109
108
|
base = urllib.parse.unquote(path.split('/')[-1])
|
110
109
|
if server == 'sourceforge.net' and base == 'download': # XXX Yuck
|
111
110
|
base = urllib.parse.unquote(path.split('/')[-2])
|
@@ -271,7 +270,7 @@ class HashChecker(ContentChecker):
|
|
271
270
|
r'(?P<expected>[a-f0-9]+)'
|
272
271
|
)
|
273
272
|
|
274
|
-
def __init__(self, hash_name, expected):
|
273
|
+
def __init__(self, hash_name, expected) -> None:
|
275
274
|
self.hash_name = hash_name
|
276
275
|
self.hash = hashlib.new(hash_name)
|
277
276
|
self.expected = expected
|
@@ -303,20 +302,20 @@ class PackageIndex(Environment):
|
|
303
302
|
|
304
303
|
def __init__(
|
305
304
|
self,
|
306
|
-
index_url="https://pypi.org/simple/",
|
305
|
+
index_url: str = "https://pypi.org/simple/",
|
307
306
|
hosts=('*',),
|
308
307
|
ca_bundle=None,
|
309
|
-
verify_ssl=True,
|
308
|
+
verify_ssl: bool = True,
|
310
309
|
*args,
|
311
310
|
**kw,
|
312
|
-
):
|
311
|
+
) -> None:
|
313
312
|
super().__init__(*args, **kw)
|
314
313
|
self.index_url = index_url + "/"[: not index_url.endswith('/')]
|
315
|
-
self.scanned_urls = {}
|
316
|
-
self.fetched_urls = {}
|
317
|
-
self.package_pages = {}
|
314
|
+
self.scanned_urls: dict = {}
|
315
|
+
self.fetched_urls: dict = {}
|
316
|
+
self.package_pages: dict = {}
|
318
317
|
self.allows = re.compile('|'.join(map(translate, hosts))).match
|
319
|
-
self.to_scan = []
|
318
|
+
self.to_scan: list = []
|
320
319
|
self.opener = urllib.request.urlopen
|
321
320
|
|
322
321
|
def add(self, dist):
|
@@ -328,7 +327,7 @@ class PackageIndex(Environment):
|
|
328
327
|
return super().add(dist)
|
329
328
|
|
330
329
|
# FIXME: 'PackageIndex.process_url' is too complex (14)
|
331
|
-
def process_url(self, url, retrieve=False): # noqa: C901
|
330
|
+
def process_url(self, url, retrieve: bool = False) -> None: # noqa: C901
|
332
331
|
"""Evaluate a URL as a possible download, and maybe retrieve it"""
|
333
332
|
if url in self.scanned_urls and not retrieve:
|
334
333
|
return
|
@@ -381,7 +380,7 @@ class PackageIndex(Environment):
|
|
381
380
|
if url.startswith(self.index_url) and getattr(f, 'code', None) != 404:
|
382
381
|
page = self.process_index(url, page)
|
383
382
|
|
384
|
-
def process_filename(self, fn, nested=False):
|
383
|
+
def process_filename(self, fn, nested: bool = False) -> None:
|
385
384
|
# process filenames or directories
|
386
385
|
if not os.path.exists(fn):
|
387
386
|
self.warn("Not found: %s", fn)
|
@@ -397,7 +396,7 @@ class PackageIndex(Environment):
|
|
397
396
|
self.debug("Found: %s", fn)
|
398
397
|
list(map(self.add, dists))
|
399
398
|
|
400
|
-
def url_ok(self, url, fatal=False):
|
399
|
+
def url_ok(self, url, fatal: bool = False) -> bool:
|
401
400
|
s = URL_SCHEME(url)
|
402
401
|
is_file = s and s.group(1).lower() == 'file'
|
403
402
|
if is_file or self.allows(urllib.parse.urlparse(url)[1]):
|
@@ -413,7 +412,7 @@ class PackageIndex(Environment):
|
|
413
412
|
self.warn(msg, url)
|
414
413
|
return False
|
415
414
|
|
416
|
-
def scan_egg_links(self, search_path):
|
415
|
+
def scan_egg_links(self, search_path) -> None:
|
417
416
|
dirs = filter(os.path.isdir, search_path)
|
418
417
|
egg_links = (
|
419
418
|
(path, entry)
|
@@ -423,7 +422,7 @@ class PackageIndex(Environment):
|
|
423
422
|
)
|
424
423
|
list(itertools.starmap(self.scan_egg_link, egg_links))
|
425
424
|
|
426
|
-
def scan_egg_link(self, path, entry):
|
425
|
+
def scan_egg_link(self, path, entry) -> None:
|
427
426
|
content = _read_utf8_with_fallback(os.path.join(path, entry))
|
428
427
|
# filter non-empty lines
|
429
428
|
lines = list(filter(None, map(str.strip, content.splitlines())))
|
@@ -432,7 +431,7 @@ class PackageIndex(Environment):
|
|
432
431
|
# format is not recognized; punt
|
433
432
|
return
|
434
433
|
|
435
|
-
egg_path,
|
434
|
+
egg_path, _setup_path = lines
|
436
435
|
|
437
436
|
for dist in find_distributions(os.path.join(path, egg_path)):
|
438
437
|
dist.location = os.path.join(path, *lines)
|
@@ -484,21 +483,21 @@ class PackageIndex(Environment):
|
|
484
483
|
lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1, 3, 2), page
|
485
484
|
)
|
486
485
|
|
487
|
-
def need_version_info(self, url):
|
486
|
+
def need_version_info(self, url) -> None:
|
488
487
|
self.scan_all(
|
489
488
|
"Page at %s links to .py file(s) without version info; an index "
|
490
489
|
"scan is required.",
|
491
490
|
url,
|
492
491
|
)
|
493
492
|
|
494
|
-
def scan_all(self, msg=None, *args):
|
493
|
+
def scan_all(self, msg=None, *args) -> None:
|
495
494
|
if self.index_url not in self.fetched_urls:
|
496
495
|
if msg:
|
497
496
|
self.warn(msg, *args)
|
498
497
|
self.info("Scanning index of all packages (this may take a while)")
|
499
498
|
self.scan_url(self.index_url)
|
500
499
|
|
501
|
-
def find_packages(self, requirement):
|
500
|
+
def find_packages(self, requirement) -> None:
|
502
501
|
self.scan_url(self.index_url + requirement.unsafe_name + '/')
|
503
502
|
|
504
503
|
if not self.package_pages.get(requirement.key):
|
@@ -522,7 +521,7 @@ class PackageIndex(Environment):
|
|
522
521
|
self.debug("%s does not match %s", requirement, dist)
|
523
522
|
return super().obtain(requirement, installer)
|
524
523
|
|
525
|
-
def check_hash(self, checker, filename, tfp):
|
524
|
+
def check_hash(self, checker, filename, tfp) -> None:
|
526
525
|
"""
|
527
526
|
checker is a ContentChecker
|
528
527
|
"""
|
@@ -536,7 +535,7 @@ class PackageIndex(Environment):
|
|
536
535
|
% (checker.hash.name, os.path.basename(filename))
|
537
536
|
)
|
538
537
|
|
539
|
-
def add_find_links(self, urls):
|
538
|
+
def add_find_links(self, urls) -> None:
|
540
539
|
"""Add `urls` to the list that will be prescanned for searches"""
|
541
540
|
for url in urls:
|
542
541
|
if (
|
@@ -557,14 +556,11 @@ class PackageIndex(Environment):
|
|
557
556
|
list(map(self.scan_url, self.to_scan))
|
558
557
|
self.to_scan = None # from now on, go ahead and process immediately
|
559
558
|
|
560
|
-
def not_found_in_index(self, requirement):
|
559
|
+
def not_found_in_index(self, requirement) -> None:
|
561
560
|
if self[requirement.key]: # we've seen at least one distro
|
562
561
|
meth, msg = self.info, "Couldn't retrieve index page for %r"
|
563
562
|
else: # no distros seen for this name, might be misspelled
|
564
|
-
meth, msg = (
|
565
|
-
self.warn,
|
566
|
-
"Couldn't find index page for %r (maybe misspelled?)",
|
567
|
-
)
|
563
|
+
meth, msg = self.warn, "Couldn't find index page for %r (maybe misspelled?)"
|
568
564
|
meth(msg, requirement.unsafe_name)
|
569
565
|
self.scan_all()
|
570
566
|
|
@@ -606,11 +602,11 @@ class PackageIndex(Environment):
|
|
606
602
|
self,
|
607
603
|
requirement,
|
608
604
|
tmpdir,
|
609
|
-
force_scan=False,
|
610
|
-
source=False,
|
611
|
-
develop_ok=False,
|
605
|
+
force_scan: bool = False,
|
606
|
+
source: bool = False,
|
607
|
+
develop_ok: bool = False,
|
612
608
|
local_index=None,
|
613
|
-
):
|
609
|
+
) -> Distribution | None:
|
614
610
|
"""Obtain a distribution suitable for fulfilling `requirement`
|
615
611
|
|
616
612
|
`requirement` must be a ``pkg_resources.Requirement`` instance.
|
@@ -632,7 +628,7 @@ class PackageIndex(Environment):
|
|
632
628
|
skipped = set()
|
633
629
|
dist = None
|
634
630
|
|
635
|
-
def find(req, env=None):
|
631
|
+
def find(req, env: Environment | None = None):
|
636
632
|
if env is None:
|
637
633
|
env = self
|
638
634
|
# Find a matching distribution; may be called more than once
|
@@ -684,7 +680,9 @@ class PackageIndex(Environment):
|
|
684
680
|
self.info("Best match: %s", dist)
|
685
681
|
return dist.clone(location=dist.download_location)
|
686
682
|
|
687
|
-
def fetch(
|
683
|
+
def fetch(
|
684
|
+
self, requirement, tmpdir, force_scan: bool = False, source: bool = False
|
685
|
+
) -> str | None:
|
688
686
|
"""Obtain a file suitable for fulfilling `requirement`
|
689
687
|
|
690
688
|
DEPRECATED; use the ``fetch_distribution()`` method now instead. For
|
@@ -781,7 +779,7 @@ class PackageIndex(Environment):
|
|
781
779
|
if fp:
|
782
780
|
fp.close()
|
783
781
|
|
784
|
-
def reporthook(self, url, filename, blocknum, blksize, size):
|
782
|
+
def reporthook(self, url, filename, blocknum, blksize, size) -> None:
|
785
783
|
pass # no-op
|
786
784
|
|
787
785
|
# FIXME:
|
@@ -822,7 +820,7 @@ class PackageIndex(Environment):
|
|
822
820
|
def _download_url(self, url, tmpdir):
|
823
821
|
# Determine download filename
|
824
822
|
#
|
825
|
-
name,
|
823
|
+
name, _fragment = egg_info_for_url(url)
|
826
824
|
if name:
|
827
825
|
while '..' in name:
|
828
826
|
name = name.replace('..', '.').replace('\\', '_')
|
@@ -850,7 +848,7 @@ class PackageIndex(Environment):
|
|
850
848
|
>>> rvcs('http://foo/bar')
|
851
849
|
"""
|
852
850
|
scheme = urllib.parse.urlsplit(url).scheme
|
853
|
-
pre, sep,
|
851
|
+
pre, sep, _post = scheme.partition('+')
|
854
852
|
# svn and git have their own protocol; hg does not
|
855
853
|
allowed = set(['svn', 'git'] + ['hg'] * bool(sep))
|
856
854
|
return next(iter({pre} & allowed), None)
|
@@ -888,7 +886,7 @@ class PackageIndex(Environment):
|
|
888
886
|
self.url_ok(url, True)
|
889
887
|
return self._attempt_download(url, filename)
|
890
888
|
|
891
|
-
def scan_url(self, url):
|
889
|
+
def scan_url(self, url) -> None:
|
892
890
|
self.process_url(url, True)
|
893
891
|
|
894
892
|
def _attempt_download(self, url, filename):
|
@@ -934,13 +932,13 @@ class PackageIndex(Environment):
|
|
934
932
|
|
935
933
|
return resolved, rev
|
936
934
|
|
937
|
-
def debug(self, msg, *args):
|
935
|
+
def debug(self, msg, *args) -> None:
|
938
936
|
log.debug(msg, *args)
|
939
937
|
|
940
|
-
def info(self, msg, *args):
|
938
|
+
def info(self, msg, *args) -> None:
|
941
939
|
log.info(msg, *args)
|
942
940
|
|
943
|
-
def warn(self, msg, *args):
|
941
|
+
def warn(self, msg, *args) -> None:
|
944
942
|
log.warn(msg, *args)
|
945
943
|
|
946
944
|
|
@@ -1105,6 +1103,7 @@ def open_with_auth(url, opener=urllib.request.urlopen):
|
|
1105
1103
|
|
1106
1104
|
|
1107
1105
|
# copy of urllib.parse._splituser from Python 3.8
|
1106
|
+
# See https://github.com/python/cpython/issues/80072.
|
1108
1107
|
def _splituser(host):
|
1109
1108
|
"""splituser('user[:passwd]@host[:port]')
|
1110
1109
|
--> 'user[:passwd]', 'host[:port]'."""
|
@@ -1122,7 +1121,7 @@ def fix_sf_url(url):
|
|
1122
1121
|
|
1123
1122
|
def local_open(url):
|
1124
1123
|
"""Read a local path, with special support for directories"""
|
1125
|
-
|
1124
|
+
_scheme, _server, path, _param, _query, _frag = urllib.parse.urlparse(url)
|
1126
1125
|
filename = urllib.request.url2pathname(path)
|
1127
1126
|
if os.path.isfile(filename):
|
1128
1127
|
return urllib.request.urlopen(url)
|
@@ -12,14 +12,16 @@ import sys
|
|
12
12
|
import tempfile
|
13
13
|
import textwrap
|
14
14
|
from types import TracebackType
|
15
|
-
from typing import TYPE_CHECKING
|
15
|
+
from typing import TYPE_CHECKING, Any, ClassVar
|
16
16
|
|
17
17
|
import pkg_resources
|
18
18
|
from pkg_resources import working_set
|
19
19
|
|
20
20
|
from distutils.errors import DistutilsError
|
21
21
|
|
22
|
-
if
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
import os as _os
|
24
|
+
elif sys.platform.startswith('java'):
|
23
25
|
import org.python.modules.posix.PosixModule as _os # pyright: ignore[reportMissingImports]
|
24
26
|
else:
|
25
27
|
_os = sys.modules[os.name]
|
@@ -148,7 +150,7 @@ class ExceptionSaver:
|
|
148
150
|
if '_saved' not in vars(self):
|
149
151
|
return
|
150
152
|
|
151
|
-
|
153
|
+
_type, exc = map(pickle.loads, self._saved)
|
152
154
|
raise exc.with_traceback(self._tb)
|
153
155
|
|
154
156
|
|
@@ -277,7 +279,7 @@ class AbstractSandbox:
|
|
277
279
|
|
278
280
|
_active = False
|
279
281
|
|
280
|
-
def __init__(self):
|
282
|
+
def __init__(self) -> None:
|
281
283
|
self._attrs = [
|
282
284
|
name
|
283
285
|
for name in dir(_os)
|
@@ -295,10 +297,10 @@ class AbstractSandbox:
|
|
295
297
|
|
296
298
|
def __exit__(
|
297
299
|
self,
|
298
|
-
exc_type:
|
299
|
-
exc_value:
|
300
|
-
traceback:
|
301
|
-
)
|
300
|
+
exc_type: type[BaseException] | None,
|
301
|
+
exc_value: BaseException | None,
|
302
|
+
traceback: TracebackType | None,
|
303
|
+
):
|
302
304
|
self._active = False
|
303
305
|
builtins.open = _open
|
304
306
|
self._copy(_os)
|
@@ -406,6 +408,11 @@ class AbstractSandbox:
|
|
406
408
|
self._remap_input(operation + '-to', dst, *args, **kw),
|
407
409
|
)
|
408
410
|
|
411
|
+
if TYPE_CHECKING:
|
412
|
+
# This is a catch-all for all the dynamically created attributes.
|
413
|
+
# This isn't public API anyway
|
414
|
+
def __getattribute__(self, name: str) -> Any: ...
|
415
|
+
|
409
416
|
|
410
417
|
if hasattr(os, 'devnull'):
|
411
418
|
_EXCEPTIONS = [os.devnull]
|
@@ -416,7 +423,7 @@ else:
|
|
416
423
|
class DirectorySandbox(AbstractSandbox):
|
417
424
|
"""Restrict operations to a single subdirectory - pseudo-chroot"""
|
418
425
|
|
419
|
-
write_ops = dict.fromkeys([
|
426
|
+
write_ops: ClassVar[dict[str, None]] = dict.fromkeys([
|
420
427
|
"open",
|
421
428
|
"chmod",
|
422
429
|
"chown",
|
@@ -435,7 +442,7 @@ class DirectorySandbox(AbstractSandbox):
|
|
435
442
|
_exception_patterns: list[str | re.Pattern] = []
|
436
443
|
"exempt writing to paths that match the pattern"
|
437
444
|
|
438
|
-
def __init__(self, sandbox, exceptions=_EXCEPTIONS):
|
445
|
+
def __init__(self, sandbox, exceptions=_EXCEPTIONS) -> None:
|
439
446
|
self._sandbox = os.path.normcase(os.path.realpath(sandbox))
|
440
447
|
self._prefix = os.path.join(self._sandbox, '')
|
441
448
|
self._exceptions = [
|
@@ -453,7 +460,7 @@ class DirectorySandbox(AbstractSandbox):
|
|
453
460
|
self._violation("open", path, mode, *args, **kw)
|
454
461
|
return _open(path, mode, *args, **kw)
|
455
462
|
|
456
|
-
def tmpnam(self):
|
463
|
+
def tmpnam(self) -> None:
|
457
464
|
self._violation("tmpnam")
|
458
465
|
|
459
466
|
def _ok(self, path):
|
@@ -491,7 +498,7 @@ class DirectorySandbox(AbstractSandbox):
|
|
491
498
|
self._violation(operation, src, dst, *args, **kw)
|
492
499
|
return (src, dst)
|
493
500
|
|
494
|
-
def open(self, file, flags, mode=0o777, *args, **kw):
|
501
|
+
def open(self, file, flags, mode: int = 0o777, *args, **kw) -> int:
|
495
502
|
"""Called for low-level os.open()"""
|
496
503
|
if flags & WRITE_FLAGS and not self._ok(file):
|
497
504
|
self._violation("os.open", file, flags, mode, *args, **kw)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
1
3
|
import re
|
2
4
|
import time
|
3
5
|
from pathlib import Path
|
@@ -16,14 +18,14 @@ DOWNLOAD_DIR = Path(__file__).parent
|
|
16
18
|
# ----------------------------------------------------------------------
|
17
19
|
|
18
20
|
|
19
|
-
def output_file(url: str, download_dir: Path = DOWNLOAD_DIR):
|
21
|
+
def output_file(url: str, download_dir: Path = DOWNLOAD_DIR) -> Path:
|
20
22
|
file_name = url.strip()
|
21
23
|
for part in NAME_REMOVE:
|
22
24
|
file_name = file_name.replace(part, '').strip().strip('/:').strip()
|
23
25
|
return Path(download_dir, re.sub(r"[^\-_\.\w\d]+", "_", file_name))
|
24
26
|
|
25
27
|
|
26
|
-
def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5):
|
28
|
+
def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5) -> Path:
|
27
29
|
path = output_file(url, download_dir)
|
28
30
|
if path.exists():
|
29
31
|
print(f"Skipping {url} (already exists: {path})")
|
@@ -38,7 +40,7 @@ def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5):
|
|
38
40
|
return path
|
39
41
|
|
40
42
|
|
41
|
-
def urls_from_file(list_file: Path):
|
43
|
+
def urls_from_file(list_file: Path) -> list[str]:
|
42
44
|
"""``list_file`` should be a text file where each line corresponds to a URL to
|
43
45
|
download.
|
44
46
|
"""
|
@@ -17,7 +17,7 @@ import pytest
|
|
17
17
|
from ini2toml.api import LiteTranslator
|
18
18
|
from packaging.metadata import Metadata
|
19
19
|
|
20
|
-
import setuptools # noqa ensure monkey patch to metadata
|
20
|
+
import setuptools # noqa: F401 # ensure monkey patch to metadata
|
21
21
|
from setuptools.command.egg_info import write_requirements
|
22
22
|
from setuptools.config import expand, pyprojecttoml, setupcfg
|
23
23
|
from setuptools.config._apply_pyprojecttoml import _MissingDynamic, _some_attrgetter
|
@@ -183,7 +183,7 @@ def test_pep621_example(tmp_path):
|
|
183
183
|
|
184
184
|
|
185
185
|
@pytest.mark.parametrize(
|
186
|
-
"readme, ctype",
|
186
|
+
("readme", "ctype"),
|
187
187
|
[
|
188
188
|
("Readme.txt", "text/plain"),
|
189
189
|
("readme.md", "text/markdown"),
|
@@ -209,7 +209,7 @@ def test_no_explicit_content_type_for_missing_extension(tmp_path):
|
|
209
209
|
|
210
210
|
|
211
211
|
@pytest.mark.parametrize(
|
212
|
-
(
|
212
|
+
("pyproject_text", "expected_maintainers_meta_value"),
|
213
213
|
(
|
214
214
|
pytest.param(
|
215
215
|
PEP621_EXAMPLE,
|
@@ -370,7 +370,7 @@ class TestPresetField:
|
|
370
370
|
return file
|
371
371
|
|
372
372
|
@pytest.mark.parametrize(
|
373
|
-
"attr, field, value",
|
373
|
+
("attr", "field", "value"),
|
374
374
|
[
|
375
375
|
("classifiers", "classifiers", ["Private :: Classifier"]),
|
376
376
|
("entry_points", "scripts", {"console_scripts": ["foobar=foobar:main"]}),
|
@@ -395,7 +395,7 @@ class TestPresetField:
|
|
395
395
|
assert not dist_value
|
396
396
|
|
397
397
|
@pytest.mark.parametrize(
|
398
|
-
"attr, field, value",
|
398
|
+
("attr", "field", "value"),
|
399
399
|
[
|
400
400
|
("install_requires", "dependencies", []),
|
401
401
|
("extras_require", "optional-dependencies", {}),
|
@@ -442,7 +442,8 @@ class TestPresetField:
|
|
442
442
|
assert ':python_version < "3.7"' in reqs
|
443
443
|
|
444
444
|
@pytest.mark.parametrize(
|
445
|
-
"field
|
445
|
+
("field", "group"),
|
446
|
+
[("scripts", "console_scripts"), ("gui-scripts", "gui_scripts")],
|
446
447
|
)
|
447
448
|
@pytest.mark.filterwarnings("error")
|
448
449
|
def test_scripts_dont_require_dynamic_entry_points(self, tmp_path, field, group):
|
@@ -141,7 +141,7 @@ class TestReadAttr:
|
|
141
141
|
|
142
142
|
|
143
143
|
@pytest.mark.parametrize(
|
144
|
-
|
144
|
+
("package_dir", "file", "module", "return_value"),
|
145
145
|
[
|
146
146
|
({"": "src"}, "src/pkg/main.py", "pkg.main", 42),
|
147
147
|
({"pkg": "lib"}, "lib/main.py", "pkg.main", 13),
|
@@ -158,7 +158,7 @@ def test_resolve_class(monkeypatch, tmp_path, package_dir, file, module, return_
|
|
158
158
|
|
159
159
|
|
160
160
|
@pytest.mark.parametrize(
|
161
|
-
|
161
|
+
("args", "pkgs"),
|
162
162
|
[
|
163
163
|
({"where": ["."], "namespaces": False}, {"pkg", "other"}),
|
164
164
|
({"where": [".", "dir1"], "namespaces": False}, {"pkg", "other", "dir2"}),
|
@@ -192,7 +192,7 @@ def test_find_packages(tmp_path, args, pkgs):
|
|
192
192
|
|
193
193
|
|
194
194
|
@pytest.mark.parametrize(
|
195
|
-
"files, where, expected_package_dir",
|
195
|
+
("files", "where", "expected_package_dir"),
|
196
196
|
[
|
197
197
|
(["pkg1/__init__.py", "pkg1/other.py"], ["."], {}),
|
198
198
|
(["pkg1/__init__.py", "pkg2/__init__.py"], ["."], {}),
|
@@ -17,6 +17,7 @@ from setuptools.config.pyprojecttoml import (
|
|
17
17
|
)
|
18
18
|
from setuptools.dist import Distribution
|
19
19
|
from setuptools.errors import OptionError
|
20
|
+
from setuptools.warnings import SetuptoolsWarning
|
20
21
|
|
21
22
|
import distutils.core
|
22
23
|
|
@@ -149,7 +150,7 @@ def test_read_configuration(tmp_path):
|
|
149
150
|
|
150
151
|
|
151
152
|
@pytest.mark.parametrize(
|
152
|
-
"pkg_root, opts",
|
153
|
+
("pkg_root", "opts"),
|
153
154
|
[
|
154
155
|
(".", {}),
|
155
156
|
("src", {}),
|
@@ -308,7 +309,7 @@ def test_ignore_unrelated_config(tmp_path, example):
|
|
308
309
|
|
309
310
|
|
310
311
|
@pytest.mark.parametrize(
|
311
|
-
"example, error_msg",
|
312
|
+
("example", "error_msg"),
|
312
313
|
[
|
313
314
|
(
|
314
315
|
"""
|
@@ -394,3 +395,9 @@ def test_warn_tools_typo(tmp_path):
|
|
394
395
|
|
395
396
|
with pytest.warns(_ToolsTypoInMetadata):
|
396
397
|
read_configuration(pyproject)
|
398
|
+
|
399
|
+
|
400
|
+
def test_warn_skipping_validation(monkeypatch):
|
401
|
+
monkeypatch.setenv("SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION", "true")
|
402
|
+
with pytest.warns(SetuptoolsWarning, match="Skipping the validation"):
|
403
|
+
assert validate({"completely-wrong": "data"}, "pyproject.toml") is True
|