pip 25.1__tar.gz → 25.2__tar.gz
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.
- {pip-25.1 → pip-25.2}/AUTHORS.txt +12 -0
- {pip-25.1 → pip-25.2}/MANIFEST.in +0 -4
- {pip-25.1 → pip-25.2}/NEWS.rst +79 -0
- {pip-25.1 → pip-25.2}/PKG-INFO +26 -4
- {pip-25.1 → pip-25.2}/build-project/build-requirements.txt +3 -3
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_download.rst +3 -3
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_install.rst +1 -1
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_list.rst +5 -5
- {pip-25.1 → pip-25.2}/docs/html/conf.py +1 -2
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/overview.rst +5 -5
- {pip-25.1 → pip-25.2}/docs/html/development/ci.rst +14 -1
- {pip-25.1 → pip-25.2}/docs/html/development/contributing.rst +9 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/guidance.md +18 -0
- pip-25.2/docs/html/ux-research-design/resolution-impossible-example.md +92 -0
- {pip-25.1 → pip-25.2}/docs/pip_sphinxext.py +14 -14
- {pip-25.1 → pip-25.2}/pyproject.toml +57 -8
- {pip-25.1 → pip-25.2}/src/pip/__init__.py +3 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/__init__.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/build_env.py +118 -94
- {pip-25.1 → pip-25.2}/src/pip/_internal/cache.py +16 -14
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/autocompletion.py +13 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/base_command.py +18 -7
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/cmdoptions.py +14 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/command_context.py +4 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/index_command.py +11 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/main.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/main_parser.py +4 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/parser.py +26 -22
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/progress_bars.py +19 -12
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/req_command.py +16 -12
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/spinners.py +81 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/__init__.py +5 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/cache.py +18 -15
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/check.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/completion.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/configuration.py +26 -18
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/debug.py +8 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/download.py +2 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/freeze.py +2 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/hash.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/help.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/index.py +15 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/inspect.py +4 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/install.py +45 -40
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/list.py +35 -26
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/lock.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/search.py +14 -12
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/show.py +14 -11
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/uninstall.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/commands/wheel.py +2 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/configuration.py +39 -25
- {pip-25.1 → pip-25.2}/src/pip/_internal/distributions/base.py +6 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/distributions/installed.py +8 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/distributions/sdist.py +20 -13
- {pip-25.1 → pip-25.2}/src/pip/_internal/distributions/wheel.py +6 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/exceptions.py +58 -39
- {pip-25.1 → pip-25.2}/src/pip/_internal/index/collector.py +24 -29
- {pip-25.1 → pip-25.2}/src/pip/_internal/index/package_finder.py +70 -61
- {pip-25.1 → pip-25.2}/src/pip/_internal/index/sources.py +17 -14
- {pip-25.1 → pip-25.2}/src/pip/_internal/locations/__init__.py +18 -16
- {pip-25.1 → pip-25.2}/src/pip/_internal/locations/_distutils.py +12 -11
- {pip-25.1 → pip-25.2}/src/pip/_internal/locations/_sysconfig.py +5 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/locations/base.py +4 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/main.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/__init__.py +8 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/_json.py +5 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/base.py +22 -27
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/importlib/_compat.py +6 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/importlib/_dists.py +12 -17
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/importlib/_envs.py +9 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/pkg_resources.py +11 -14
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/direct_url.py +24 -21
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/format_control.py +5 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/installation_report.py +4 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/link.py +39 -34
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/pylock.py +27 -22
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/search_scope.py +6 -7
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/selection_prefs.py +3 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/target_python.py +10 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/wheel.py +7 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/auth.py +20 -22
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/cache.py +22 -6
- pip-25.2/src/pip/_internal/network/download.py +342 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/lazy_wheel.py +10 -7
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/session.py +32 -27
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/utils.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/xmlrpc.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/build_tracker.py +10 -8
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/wheel.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/wheel_editable.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/wheel_legacy.py +9 -8
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/check.py +21 -26
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/freeze.py +12 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/install/editable_legacy.py +5 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/install/wheel.py +53 -44
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/prepare.py +35 -30
- {pip-25.1 → pip-25.2}/src/pip/_internal/pyproject.py +7 -10
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/__init__.py +12 -10
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/constructors.py +33 -31
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/req_dependency_group.py +9 -8
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/req_file.py +32 -35
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/req_install.py +37 -34
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/req_set.py +4 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/req/req_uninstall.py +20 -17
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/base.py +3 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/legacy/resolver.py +21 -20
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/base.py +16 -13
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/candidates.py +29 -26
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/factory.py +41 -50
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/found_candidates.py +11 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/provider.py +15 -20
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/reporter.py +5 -3
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/requirements.py +8 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/resolver.py +39 -23
- {pip-25.1 → pip-25.2}/src/pip/_internal/self_outdated_check.py +8 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/appdirs.py +1 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/compat.py +7 -1
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/compatibility_tags.py +17 -16
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/deprecation.py +11 -9
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/direct_url_helpers.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/egg_link.py +6 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/entrypoints.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/filesystem.py +8 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/filetypes.py +4 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/glibc.py +6 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/hashes.py +9 -6
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/logging.py +8 -5
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/misc.py +54 -44
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/packaging.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/retry.py +7 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/setuptools_build.py +12 -10
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/subprocess.py +20 -17
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/temp_dir.py +10 -12
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/unpacking.py +6 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/urls.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/virtualenv.py +3 -2
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/wheel.py +3 -4
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/bazaar.py +26 -8
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/git.py +59 -24
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/mercurial.py +34 -11
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/subversion.py +27 -16
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/versioncontrol.py +56 -51
- {pip-25.1 → pip-25.2}/src/pip/_internal/wheel_builder.py +14 -12
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/__init__.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/__init__.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/cacert.pem +102 -221
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/core.py +1 -32
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/_implementation.py +7 -11
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/__init__.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/scripts.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/msgpack/__init__.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pkg_resources/__init__.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/version.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/__init__.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/__version__.py +2 -2
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/compat.py +12 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/models.py +3 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/utils.py +6 -16
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/__init__.py +3 -3
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/reporters.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/resolvers/resolution.py +91 -10
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/__main__.py +12 -40
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_inspect.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_ratio.py +1 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/align.py +1 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/box.py +1 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/console.py +25 -20
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/control.py +1 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/diagnose.py +1 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/emoji.py +1 -6
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/live.py +32 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/live_render.py +1 -7
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/logging.py +1 -1
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/panel.py +3 -4
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/progress.py +15 -15
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/spinner.py +7 -13
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/syntax.py +24 -5
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/traceback.py +32 -17
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/_api.py +1 -1
- pip-25.2/src/pip/_vendor/vendor.txt +19 -0
- {pip-25.1 → pip-25.2}/src/pip.egg-info/PKG-INFO +26 -4
- {pip-25.1 → pip-25.2}/src/pip.egg-info/SOURCES.txt +1 -10
- pip-25.1/src/pip/_internal/network/download.py +0 -314
- pip-25.1/src/pip/_vendor/distlib/database.py +0 -1329
- pip-25.1/src/pip/_vendor/distlib/index.py +0 -508
- pip-25.1/src/pip/_vendor/distlib/locators.py +0 -1295
- pip-25.1/src/pip/_vendor/distlib/manifest.py +0 -384
- pip-25.1/src/pip/_vendor/distlib/markers.py +0 -162
- pip-25.1/src/pip/_vendor/distlib/metadata.py +0 -1031
- pip-25.1/src/pip/_vendor/distlib/version.py +0 -750
- pip-25.1/src/pip/_vendor/distlib/wheel.py +0 -1100
- pip-25.1/src/pip/_vendor/typing_extensions.LICENSE +0 -279
- pip-25.1/src/pip/_vendor/typing_extensions.py +0 -4584
- pip-25.1/src/pip/_vendor/vendor.txt +0 -20
- {pip-25.1 → pip-25.2}/LICENSE.txt +0 -0
- {pip-25.1 → pip-25.2}/README.rst +0 -0
- {pip-25.1 → pip-25.2}/SECURITY.md +0 -0
- {pip-25.1 → pip-25.2}/build-project/.python-version +0 -0
- {pip-25.1 → pip-25.2}/build-project/build-project.py +0 -0
- {pip-25.1 → pip-25.2}/build-project/build-requirements.in +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_cache.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_check.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_config.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_debug.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_freeze.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_hash.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_inspect.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_lock.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_search.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_show.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_uninstall.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/cli/pip_wheel.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/copyright.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/anatomy.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/command-line-interface.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/configuration-files.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/package-finding.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/architecture/upgrade-options.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/conventions.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/getting-started.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/issue-triage.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/release-process.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/development/vendoring-policy.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/getting-started.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/installation.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/installing.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/news.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/quickstart.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/build-system/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/build-system/pyproject-toml.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/build-system/setup-py.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/inspect-report.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/installation-report.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_cache.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_check.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_config.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_debug.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_download.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_freeze.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_hash.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_install.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_list.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_search.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_show.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_uninstall.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/pip_wheel.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/requirement-specifiers.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/reference/requirements-file-format.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/authentication.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/caching.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/configuration.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/dependency-resolution.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/deps.dot +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/deps.png +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/https-certificates.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/local-project-installs.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/more-dependency-resolution.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/python-option.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/repeatable-installs.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/secure-installs.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/vcs-support.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/topics/workflow.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/user_guide.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/contribute.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/about-our-users.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/ci-cd.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/improving-pips-documentation.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/index.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/mental-models.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/override-conflicting-dependencies.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/personas.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/pip-force-reinstall.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/pip-search.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/pip-upgrade-conflict.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/prioritizing-features.md +0 -0
- {pip-25.1 → pip-25.2}/docs/html/ux-research-design/research-results/users-and-security.md +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/cache.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/check.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/config.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/debug.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/download.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/freeze.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/hash.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/help.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/install.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/list.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/lock.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/search.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/show.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/uninstall.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/commands/wheel.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/man/index.rst +0 -0
- {pip-25.1 → pip-25.2}/docs/requirements.txt +0 -0
- {pip-25.1 → pip-25.2}/setup.cfg +0 -0
- {pip-25.1 → pip-25.2}/src/pip/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/__pip-runner__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/cli/status_codes.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/distributions/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/index/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/metadata/importlib/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/candidate.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/index.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/models/scheme.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/network/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/metadata.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/metadata_editable.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/build/metadata_legacy.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/operations/install/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/legacy/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/_jaraco_text.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/_log.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/utils/datetime.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_internal/vcs/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/README.rst +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/LICENSE.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/_cmd.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/adapter.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/cache.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/controller.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/filewrapper.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/heuristics.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/serialize.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/cachecontrol/wrapper.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/certifi/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/LICENSE.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/dependency_groups/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/LICENSE.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/compat.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/resources.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/t32.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/t64-arm.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/t64.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/util.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/w32.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/w64-arm.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distlib/w64.exe +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distro/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distro/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distro/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distro/distro.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/distro/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/LICENSE.md +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/codec.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/compat.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/core.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/idnadata.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/intranges.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/package_data.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/idna/uts46data.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/msgpack/COPYING +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/msgpack/exceptions.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/msgpack/ext.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/msgpack/fallback.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/LICENSE.APACHE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/LICENSE.BSD +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_elffile.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_manylinux.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_musllinux.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_parser.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_structures.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/_tokenizer.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/licenses/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/licenses/_spdx.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/markers.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/metadata.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/requirements.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/specifiers.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/tags.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/utils.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/packaging/version.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pkg_resources/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/android.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/api.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/macos.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/unix.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/platformdirs/windows.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/__main__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/console.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/filter.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/filters/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/formatter.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/formatters/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/formatters/_mapping.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/lexer.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/lexers/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/lexers/_mapping.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/lexers/python.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/modeline.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/plugin.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/regexopt.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/scanner.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/sphinxext.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/style.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/styles/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/styles/_mapping.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/token.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/unistring.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pygments/util.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/_impl.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/pyproject_hooks/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/_internal_utils.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/adapters.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/api.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/auth.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/certs.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/cookies.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/exceptions.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/help.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/hooks.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/packages.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/sessions.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/status_codes.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/requests/structures.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/providers.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/resolvers/__init__.py +4 -4
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/resolvelib/structs.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_cell_widths.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_emoji_codes.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_emoji_replace.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_export_format.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_extension.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_fileno.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_log_render.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_loop.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_null_file.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_palettes.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_pick.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_spinners.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_stack.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_timer.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_win32_console.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_windows.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_windows_renderer.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/_wrap.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/abc.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/ansi.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/bar.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/cells.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/color.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/color_triplet.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/columns.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/constrain.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/containers.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/default_styles.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/errors.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/file_proxy.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/filesize.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/highlighter.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/json.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/jupyter.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/layout.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/markup.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/measure.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/padding.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/pager.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/palette.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/pretty.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/progress_bar.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/prompt.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/protocol.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/region.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/repr.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/rule.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/scope.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/screen.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/segment.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/status.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/style.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/styled.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/table.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/terminal_theme.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/text.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/theme.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/themes.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/rich/tree.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/LICENSE-HEADER +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/_parser.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/_re.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/_types.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli_w/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli_w/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli_w/_writer.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/tomli_w/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/LICENSE +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/_macos.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/_openssl.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/_ssl_constants.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/_windows.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/truststore/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/LICENSE.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/_collections.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/_version.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/connection.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/connectionpool.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/appengine.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/contrib/socks.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/exceptions.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/fields.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/filepost.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/packages/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/packages/six.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/poolmanager.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/request.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/response.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/__init__.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/connection.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/proxy.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/queue.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/request.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/response.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/retry.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/ssl_.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/ssltransport.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/timeout.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/url.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/_vendor/urllib3/util/wait.py +0 -0
- {pip-25.1 → pip-25.2}/src/pip/py.typed +0 -0
- {pip-25.1 → pip-25.2}/src/pip.egg-info/dependency_links.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip.egg-info/entry_points.txt +0 -0
- {pip-25.1 → pip-25.2}/src/pip.egg-info/top_level.txt +0 -0
|
@@ -220,11 +220,13 @@ Davidovich
|
|
|
220
220
|
ddelange
|
|
221
221
|
Deepak Sharma
|
|
222
222
|
Deepyaman Datta
|
|
223
|
+
Denis Roussel (ACSONE)
|
|
223
224
|
Denise Yu
|
|
224
225
|
dependabot[bot]
|
|
225
226
|
derwolfe
|
|
226
227
|
Desetude
|
|
227
228
|
developer
|
|
229
|
+
Devesh Kumar
|
|
228
230
|
Devesh Kumar Singh
|
|
229
231
|
devsagul
|
|
230
232
|
Diego Caraballo
|
|
@@ -295,6 +297,7 @@ Gabriel de Perthuis
|
|
|
295
297
|
Garry Polley
|
|
296
298
|
gavin
|
|
297
299
|
gdanielson
|
|
300
|
+
Gene Wood
|
|
298
301
|
Geoffrey Sneddon
|
|
299
302
|
George Margaritis
|
|
300
303
|
George Song
|
|
@@ -333,6 +336,7 @@ Hugo Lopes Tavares
|
|
|
333
336
|
Hugo van Kemenade
|
|
334
337
|
Hugues Bruant
|
|
335
338
|
Hynek Schlawack
|
|
339
|
+
iamsrp-deshaw
|
|
336
340
|
Ian Bicking
|
|
337
341
|
Ian Cordasco
|
|
338
342
|
Ian Lee
|
|
@@ -640,6 +644,7 @@ Pulkit Goyal
|
|
|
640
644
|
q0w
|
|
641
645
|
Qiangning Hong
|
|
642
646
|
Qiming Xu
|
|
647
|
+
qraqras
|
|
643
648
|
Quentin Lee
|
|
644
649
|
Quentin Pradet
|
|
645
650
|
R. David Murray
|
|
@@ -665,6 +670,7 @@ Robert McGibbon
|
|
|
665
670
|
Robert Pollak
|
|
666
671
|
Robert T. McGibbon
|
|
667
672
|
robin elisha robinson
|
|
673
|
+
Rodney, Tiara
|
|
668
674
|
Roey Berman
|
|
669
675
|
Rohan Jain
|
|
670
676
|
Roman Bogorodskiy
|
|
@@ -680,6 +686,7 @@ Russell Keith-Magee
|
|
|
680
686
|
Ryan Shepherd
|
|
681
687
|
Ryan Wooden
|
|
682
688
|
ryneeverett
|
|
689
|
+
Ryuma Asai
|
|
683
690
|
S. Guliaev
|
|
684
691
|
Sachi King
|
|
685
692
|
Salvatore Rinchiera
|
|
@@ -694,6 +701,8 @@ Sebastian Jordan
|
|
|
694
701
|
Sebastian Schaetz
|
|
695
702
|
Segev Finer
|
|
696
703
|
SeongSoo Cho
|
|
704
|
+
Sepehr Rasouli
|
|
705
|
+
sepehrrasooli
|
|
697
706
|
Sergey Vasilyev
|
|
698
707
|
Seth Michael Larson
|
|
699
708
|
Seth Woodworth
|
|
@@ -719,6 +728,7 @@ Stavros Korokithakis
|
|
|
719
728
|
Stefan Scherfke
|
|
720
729
|
Stefano Rivera
|
|
721
730
|
Stephan Erb
|
|
731
|
+
Stephen Payne
|
|
722
732
|
Stephen Rosen
|
|
723
733
|
stepshal
|
|
724
734
|
Steve (Gadget) Barnes
|
|
@@ -811,7 +821,9 @@ Yeray Diaz Diaz
|
|
|
811
821
|
Yoval P
|
|
812
822
|
Yu Jian
|
|
813
823
|
Yuan Jing Vincent Yan
|
|
824
|
+
Yuki Kobayashi
|
|
814
825
|
Yusuke Hayashi
|
|
826
|
+
zackzack38
|
|
815
827
|
Zearin
|
|
816
828
|
Zhiping Deng
|
|
817
829
|
ziebam
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
include AUTHORS.txt
|
|
2
|
-
include LICENSE.txt
|
|
3
1
|
include NEWS.rst
|
|
4
2
|
include README.rst
|
|
5
3
|
include SECURITY.md
|
|
@@ -12,8 +10,6 @@ include build-project/.python-version
|
|
|
12
10
|
|
|
13
11
|
include src/pip/_vendor/README.rst
|
|
14
12
|
include src/pip/_vendor/vendor.txt
|
|
15
|
-
recursive-include src/pip/_vendor *LICENSE*
|
|
16
|
-
recursive-include src/pip/_vendor *COPYING*
|
|
17
13
|
|
|
18
14
|
include docs/requirements.txt
|
|
19
15
|
|
{pip-25.1 → pip-25.2}/NEWS.rst
RENAMED
|
@@ -9,6 +9,85 @@
|
|
|
9
9
|
|
|
10
10
|
.. towncrier release notes start
|
|
11
11
|
|
|
12
|
+
25.2 (2025-07-30)
|
|
13
|
+
=================
|
|
14
|
+
|
|
15
|
+
Features
|
|
16
|
+
--------
|
|
17
|
+
|
|
18
|
+
- Declare support for Python 3.14 (`#13506 <https://github.com/pypa/pip/issues/13506>`_)
|
|
19
|
+
- Automatic download resumption and retrying is enabled by default. (`#13464 <https://github.com/pypa/pip/issues/13464>`_)
|
|
20
|
+
- Requires-Python error message displays version clauses in numerical order. (`#13367 <https://github.com/pypa/pip/issues/13367>`_)
|
|
21
|
+
- Minor performance improvement getting the order to install a very large number of interdependent packages. (`#13424 <https://github.com/pypa/pip/issues/13424>`_)
|
|
22
|
+
- Show time taken instead of ``eta 0:00:00`` at download completion. (`#13483 <https://github.com/pypa/pip/issues/13483>`_)
|
|
23
|
+
- Speed up small CLI tools by removing ``import re`` from the console
|
|
24
|
+
script executable template. (`#13165 <https://github.com/pypa/pip/issues/13165>`_)
|
|
25
|
+
- Remove warning when cloning from a Git reference that does not look like a commit hash. (`#12283 <https://github.com/pypa/pip/issues/12283>`_)
|
|
26
|
+
|
|
27
|
+
Bug Fixes
|
|
28
|
+
---------
|
|
29
|
+
|
|
30
|
+
- ``pip config debug`` now correctly separates options as set by the different files
|
|
31
|
+
at the same level. (`#12099 <https://github.com/pypa/pip/issues/12099>`_)
|
|
32
|
+
- Ensure truststore feature remains active even when a proxy is also in use. (`#13343 <https://github.com/pypa/pip/issues/13343>`_)
|
|
33
|
+
- Include sub-commands in tab completion. (`#13140 <https://github.com/pypa/pip/issues/13140>`_)
|
|
34
|
+
- ``pip list`` with the ``json`` or ``freeze`` format enabled will no longer
|
|
35
|
+
crash when encountering a package with an invalid version. (`#13345 <https://github.com/pypa/pip/issues/13345>`_)
|
|
36
|
+
- Provide a hint if a system error is raised involving long filenames or path segments on Windows. (`#13346 <https://github.com/pypa/pip/issues/13346>`_)
|
|
37
|
+
- Resumed downloads are saved to the HTTP cache like any other normal download. (`#13441 <https://github.com/pypa/pip/issues/13441>`_)
|
|
38
|
+
- Configured verbosity is consistently forwarded while calling Git during
|
|
39
|
+
VCS operations. (`#13329 <https://github.com/pypa/pip/issues/13329>`_)
|
|
40
|
+
- Suppress the progress bar, when running with ``--log`` and ``--quiet``.
|
|
41
|
+
|
|
42
|
+
Consequently, a new ``auto`` mode for ``--progress-bar`` has been added.
|
|
43
|
+
``auto`` will enable progress bars unless suppressed by ``--quiet``,
|
|
44
|
+
while ``on`` will always enable progress bars. (`#10915 <https://github.com/pypa/pip/issues/10915>`_)
|
|
45
|
+
- Fix normalization of local URLs with non-``file`` schemes. (`#13509 <https://github.com/pypa/pip/issues/13509>`_)
|
|
46
|
+
- Fix normalization of local file URLs on Windows in newer Python versions. (`#13510 <https://github.com/pypa/pip/issues/13510>`_)
|
|
47
|
+
- Fix remaining test failures in Python 3.14 by adjusting ``path_to_url`` and similar functions. (`#13423 <https://github.com/pypa/pip/issues/13423>`_)
|
|
48
|
+
- Fix missing ``network`` test markings, making the suite pass in offline
|
|
49
|
+
environments again. (`#13378 <https://github.com/pypa/pip/issues/13378>`_)
|
|
50
|
+
|
|
51
|
+
Vendored Libraries
|
|
52
|
+
------------------
|
|
53
|
+
|
|
54
|
+
- Upgrade CacheControl to 0.14.3
|
|
55
|
+
- Upgrade certifi to 2025.7.14
|
|
56
|
+
- Upgrade distlib to 0.4.0
|
|
57
|
+
- Upgrade msgpack to 1.1.1
|
|
58
|
+
- Upgrade platformdirs to 4.3.8
|
|
59
|
+
- Upgrade pygments to 2.19.2
|
|
60
|
+
- Upgrade requests to 2.32.4
|
|
61
|
+
- Upgrade resolvelib to 1.2.0
|
|
62
|
+
- Upgrade rich to 14.1.0
|
|
63
|
+
- Remove vendored typing-extensions.
|
|
64
|
+
|
|
65
|
+
Process
|
|
66
|
+
-------
|
|
67
|
+
|
|
68
|
+
- pip's own licensing metadata now follows :pep:`639`.
|
|
69
|
+
In addition, the licenses of pip's vendored dependencies are now included
|
|
70
|
+
in the ``License-File`` metadata field and in the wheel.
|
|
71
|
+
|
|
72
|
+
25.1.1 (2025-05-02)
|
|
73
|
+
===================
|
|
74
|
+
|
|
75
|
+
Bug Fixes
|
|
76
|
+
---------
|
|
77
|
+
|
|
78
|
+
- Fix ``req.source_dir`` AssertionError when using the legacy resolver. (`#13353 <https://github.com/pypa/pip/issues/13353>`_)
|
|
79
|
+
- Fix crash on Python 3.9.6 and lower when pip failed to compile a Python module
|
|
80
|
+
during installation. (`#13364 <https://github.com/pypa/pip/issues/13364>`_)
|
|
81
|
+
- Names in dependency group includes are now normalized before lookup, which
|
|
82
|
+
fixes incorrect ``Dependency group '...' not found`` errors. (`#13372 <https://github.com/pypa/pip/issues/13372>`_)
|
|
83
|
+
|
|
84
|
+
Vendored Libraries
|
|
85
|
+
------------------
|
|
86
|
+
|
|
87
|
+
- Fix issues with using tomllib from the stdlib if available, rather than tomli
|
|
88
|
+
- Upgrade dependency-groups to 1.3.1
|
|
89
|
+
|
|
90
|
+
|
|
12
91
|
25.1 (2025-04-26)
|
|
13
92
|
=================
|
|
14
93
|
|
{pip-25.1 → pip-25.2}/PKG-INFO
RENAMED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pip
|
|
3
|
-
Version: 25.
|
|
3
|
+
Version: 25.2
|
|
4
4
|
Summary: The PyPA recommended tool for installing Python packages.
|
|
5
5
|
Author-email: The pip developers <distutils-sig@python.org>
|
|
6
|
-
License: MIT
|
|
6
|
+
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://pip.pypa.io/
|
|
8
8
|
Project-URL: Documentation, https://pip.pypa.io
|
|
9
9
|
Project-URL: Source, https://github.com/pypa/pip
|
|
10
10
|
Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
13
|
Classifier: Topic :: Software Development :: Build Tools
|
|
15
14
|
Classifier: Programming Language :: Python
|
|
16
15
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -20,12 +19,35 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
23
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
24
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
25
25
|
Requires-Python: >=3.9
|
|
26
26
|
Description-Content-Type: text/x-rst
|
|
27
|
-
License-File: LICENSE.txt
|
|
28
27
|
License-File: AUTHORS.txt
|
|
28
|
+
License-File: LICENSE.txt
|
|
29
|
+
License-File: src/pip/_vendor/msgpack/COPYING
|
|
30
|
+
License-File: src/pip/_vendor/cachecontrol/LICENSE.txt
|
|
31
|
+
License-File: src/pip/_vendor/certifi/LICENSE
|
|
32
|
+
License-File: src/pip/_vendor/dependency_groups/LICENSE.txt
|
|
33
|
+
License-File: src/pip/_vendor/distlib/LICENSE.txt
|
|
34
|
+
License-File: src/pip/_vendor/distro/LICENSE
|
|
35
|
+
License-File: src/pip/_vendor/idna/LICENSE.md
|
|
36
|
+
License-File: src/pip/_vendor/packaging/LICENSE
|
|
37
|
+
License-File: src/pip/_vendor/packaging/LICENSE.APACHE
|
|
38
|
+
License-File: src/pip/_vendor/packaging/LICENSE.BSD
|
|
39
|
+
License-File: src/pip/_vendor/pkg_resources/LICENSE
|
|
40
|
+
License-File: src/pip/_vendor/platformdirs/LICENSE
|
|
41
|
+
License-File: src/pip/_vendor/pygments/LICENSE
|
|
42
|
+
License-File: src/pip/_vendor/pyproject_hooks/LICENSE
|
|
43
|
+
License-File: src/pip/_vendor/requests/LICENSE
|
|
44
|
+
License-File: src/pip/_vendor/resolvelib/LICENSE
|
|
45
|
+
License-File: src/pip/_vendor/rich/LICENSE
|
|
46
|
+
License-File: src/pip/_vendor/tomli/LICENSE
|
|
47
|
+
License-File: src/pip/_vendor/tomli/LICENSE-HEADER
|
|
48
|
+
License-File: src/pip/_vendor/tomli_w/LICENSE
|
|
49
|
+
License-File: src/pip/_vendor/truststore/LICENSE
|
|
50
|
+
License-File: src/pip/_vendor/urllib3/LICENSE.txt
|
|
29
51
|
Dynamic: license-file
|
|
30
52
|
|
|
31
53
|
pip - The Python Package Installer
|
|
@@ -18,7 +18,7 @@ pyproject-hooks==1.2.0 \
|
|
|
18
18
|
# via build
|
|
19
19
|
|
|
20
20
|
# The following packages are considered to be unsafe in a requirements file:
|
|
21
|
-
setuptools==
|
|
22
|
-
--hash=sha256:
|
|
23
|
-
--hash=sha256:
|
|
21
|
+
setuptools==80.9.0 \
|
|
22
|
+
--hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
|
|
23
|
+
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
|
|
24
24
|
# via -r build-requirements.in
|
|
@@ -204,9 +204,9 @@ Examples
|
|
|
204
204
|
pip-8.1.1-py2.py3-none-any.whl
|
|
205
205
|
|
|
206
206
|
#. Download a package supporting one of several ABIs and platforms.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
This is useful when fetching wheels for a well-defined interpreter, whose
|
|
208
|
+
supported ABIs and platforms are known and fixed, different than the one pip is
|
|
209
|
+
running under.
|
|
210
210
|
|
|
211
211
|
.. tab:: Unix/macOS
|
|
212
212
|
|
|
@@ -142,10 +142,10 @@ Examples
|
|
|
142
142
|
|
|
143
143
|
#. List packages installed in editable mode
|
|
144
144
|
|
|
145
|
-
When some packages are installed in editable mode, ``pip list`` outputs an
|
|
146
|
-
additional column that shows the directory where the editable project is
|
|
147
|
-
located (i.e. the directory that contains the ``pyproject.toml`` or
|
|
148
|
-
``setup.py`` file).
|
|
145
|
+
When some packages are installed in editable mode, ``pip list`` outputs an
|
|
146
|
+
additional column that shows the directory where the editable project is
|
|
147
|
+
located (i.e. the directory that contains the ``pyproject.toml`` or
|
|
148
|
+
``setup.py`` file).
|
|
149
149
|
|
|
150
150
|
.. tab:: Unix/macOS
|
|
151
151
|
|
|
@@ -172,7 +172,7 @@ located (i.e. the directory that contains the ``pyproject.toml`` or
|
|
|
172
172
|
setuptools 57.4.0
|
|
173
173
|
wheel 0.36.2
|
|
174
174
|
|
|
175
|
-
The json format outputs an additional ``editable_project_location`` field.
|
|
175
|
+
The json format outputs an additional ``editable_project_location`` field.
|
|
176
176
|
|
|
177
177
|
.. tab:: Unix/macOS
|
|
178
178
|
|
|
@@ -5,7 +5,6 @@ import os
|
|
|
5
5
|
import pathlib
|
|
6
6
|
import re
|
|
7
7
|
import sys
|
|
8
|
-
from typing import List, Tuple
|
|
9
8
|
|
|
10
9
|
# Add the docs/ directory to sys.path, because pip_sphinxext.py is there.
|
|
11
10
|
docs_dir = os.path.dirname(os.path.dirname(__file__))
|
|
@@ -101,7 +100,7 @@ html_use_index = False
|
|
|
101
100
|
|
|
102
101
|
|
|
103
102
|
# List of manual pages generated
|
|
104
|
-
def determine_man_pages() ->
|
|
103
|
+
def determine_man_pages() -> list[tuple[str, str, str, str, int]]:
|
|
105
104
|
"""Determine which man pages need to be generated."""
|
|
106
105
|
|
|
107
106
|
def to_document_name(path: str, base_dir: str) -> str:
|
|
@@ -42,13 +42,13 @@ In sequence, what does pip do?:
|
|
|
42
42
|
user-given requirements, and where to get them from.
|
|
43
43
|
|
|
44
44
|
a. this step is convoluted - also exploratory, involves dependency
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
resolution -- we need to get to the index, see what versions
|
|
46
|
+
are available
|
|
47
47
|
|
|
48
48
|
b. Sometimes you need to build the package itself in order to get
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
dependency information, which means fetching the package from
|
|
50
|
+
package index, which means knowing whether it exists. For a
|
|
51
|
+
single package,
|
|
52
52
|
|
|
53
53
|
4. Install the actual items to be installed.
|
|
54
54
|
|
|
@@ -23,6 +23,7 @@ pip support a variety of Python interpreters:
|
|
|
23
23
|
- CPython 3.11
|
|
24
24
|
- CPython 3.12
|
|
25
25
|
- CPython 3.13
|
|
26
|
+
- CPython 3.14
|
|
26
27
|
- Latest PyPy3
|
|
27
28
|
|
|
28
29
|
on different operating systems:
|
|
@@ -37,7 +38,7 @@ and on different architectures:
|
|
|
37
38
|
- x86
|
|
38
39
|
- arm64 (macOS only)
|
|
39
40
|
|
|
40
|
-
so
|
|
41
|
+
so 56 hypothetical interpreters.
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
Checks
|
|
@@ -100,6 +101,8 @@ Actual testing
|
|
|
100
101
|
| | +-------+---------------+-----------------+
|
|
101
102
|
| | | CP3.13| | |
|
|
102
103
|
| | +-------+---------------+-----------------+
|
|
104
|
+
| | | CP3.14| | |
|
|
105
|
+
| | +-------+---------------+-----------------+
|
|
103
106
|
| | | PyPy3 | | |
|
|
104
107
|
| Windows +----------+-------+---------------+-----------------+
|
|
105
108
|
| | x64 | CP3.9 | GitHub | GitHub |
|
|
@@ -112,6 +115,8 @@ Actual testing
|
|
|
112
115
|
| | +-------+---------------+-----------------+
|
|
113
116
|
| | | CP3.13| GitHub | GitHub |
|
|
114
117
|
| | +-------+---------------+-----------------+
|
|
118
|
+
| | | CP3.14| GitHub | GitHub |
|
|
119
|
+
| | +-------+---------------+-----------------+
|
|
115
120
|
| | | PyPy3 | | |
|
|
116
121
|
+-----------+----------+-------+---------------+-----------------+
|
|
117
122
|
| | x86 | CP3.9 | | |
|
|
@@ -124,6 +129,8 @@ Actual testing
|
|
|
124
129
|
| | +-------+---------------+-----------------+
|
|
125
130
|
| | | CP3.13| | |
|
|
126
131
|
| | +-------+---------------+-----------------+
|
|
132
|
+
| | | CP3.14| | |
|
|
133
|
+
| | +-------+---------------+-----------------+
|
|
127
134
|
| | | PyPy3 | | |
|
|
128
135
|
| Linux +----------+-------+---------------+-----------------+
|
|
129
136
|
| | x64 | CP3.9 | GitHub | GitHub |
|
|
@@ -136,6 +143,8 @@ Actual testing
|
|
|
136
143
|
| | +-------+---------------+-----------------+
|
|
137
144
|
| | | CP3.13| GitHub | GitHub |
|
|
138
145
|
| | +-------+---------------+-----------------+
|
|
146
|
+
| | | CP3.14| GitHub | GitHub |
|
|
147
|
+
| | +-------+---------------+-----------------+
|
|
139
148
|
| | | PyPy3 | | |
|
|
140
149
|
+-----------+----------+-------+---------------+-----------------+
|
|
141
150
|
| | arm64 | CP3.9 | GitHub | GitHub |
|
|
@@ -148,6 +157,8 @@ Actual testing
|
|
|
148
157
|
| | +-------+---------------+-----------------+
|
|
149
158
|
| | | CP3.13| GitHub | GitHub |
|
|
150
159
|
| | +-------+---------------+-----------------+
|
|
160
|
+
| | | CP3.14| GitHub | GitHub |
|
|
161
|
+
| | +-------+---------------+-----------------+
|
|
151
162
|
| | | PyPy3 | | |
|
|
152
163
|
| macOS +----------+-------+---------------+-----------------+
|
|
153
164
|
| | x64 | CP3.9 | GitHub | GitHub |
|
|
@@ -160,5 +171,7 @@ Actual testing
|
|
|
160
171
|
| | +-------+---------------+-----------------+
|
|
161
172
|
| | | CP3.13| GitHub | GitHub |
|
|
162
173
|
| | +-------+---------------+-----------------+
|
|
174
|
+
| | | CP3.14| GitHub | GitHub |
|
|
175
|
+
| | +-------+---------------+-----------------+
|
|
163
176
|
| | | PyPy3 | | |
|
|
164
177
|
+-----------+----------+-------+---------------+-----------------+
|
|
@@ -35,6 +35,15 @@ Examples include re-flowing text in comments or documentation, or adding or
|
|
|
35
35
|
removing blank lines or whitespace within lines. Such changes can be made
|
|
36
36
|
separately, as a "formatting cleanup" PR, if needed.
|
|
37
37
|
|
|
38
|
+
.. attention::
|
|
39
|
+
|
|
40
|
+
While contributors may use whatever tools they like when developing a pull
|
|
41
|
+
request, it is the contributor's responsibility to ensure that submitted
|
|
42
|
+
code meets the project requirements, and that they understand the submitted
|
|
43
|
+
code well enough to respond to review comments.
|
|
44
|
+
|
|
45
|
+
In particular, we will mark LLM-generated slop as spam without additional
|
|
46
|
+
discussion.
|
|
38
47
|
|
|
39
48
|
Automated Testing
|
|
40
49
|
=================
|
|
@@ -344,6 +344,24 @@ Designing for pip includes:
|
|
|
344
344
|
- Writing pip's _output_ - establishing how pip responds to commands and what information it provides the user. This includes writing success and error messages.
|
|
345
345
|
- Providing supplemental materials - e.g. documentation that helps users understand pip's operation
|
|
346
346
|
|
|
347
|
+
### Error Message Format
|
|
348
|
+
|
|
349
|
+
A good error message should mention:
|
|
350
|
+
|
|
351
|
+
* what the user has tried to do
|
|
352
|
+
* possible next steps to try and solve the error
|
|
353
|
+
* possible steps need to go from "easiest" to "most complicated"
|
|
354
|
+
* why the error has happened - include a way to see more information
|
|
355
|
+
about the situation
|
|
356
|
+
|
|
357
|
+
A [sample `ResolutionImpossible` error that follows this guidance
|
|
358
|
+
is available](resolution-impossible-example).
|
|
359
|
+
|
|
360
|
+
**Further reading**
|
|
361
|
+
|
|
362
|
+
- <https://uxplanet.org/how-to-write-good-error-messages-858e4551cd4>
|
|
363
|
+
- <https://www.nngroup.com/articles/error-message-guidelines/>
|
|
364
|
+
|
|
347
365
|
### Design Principles / Usability Heuristics
|
|
348
366
|
|
|
349
367
|
There are many interaction design principles that help designers design great experiences. Nielsen Norman's [10 Usability Heuristics for User Interface Design](https://www.nngroup.com/articles/ten-usability-heuristics) is a great place to start. Here are some of the ways these principles apply to pip:
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
orphan:
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Example error: ResolutionImpossible
|
|
6
|
+
|
|
7
|
+
## What if there are user-provided pinned packages?
|
|
8
|
+
|
|
9
|
+
Where a user wants to install packages (with 1 or more pinned version)
|
|
10
|
+
with default verbose level
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
$ pip install peach=1.0 apple=2.0
|
|
14
|
+
|
|
15
|
+
Due to conflicting dependencies pip cannot install Peach1.0 and Apple2.0:
|
|
16
|
+
|
|
17
|
+
* Peach 1.0 depends on Banana 3.0
|
|
18
|
+
* Apple2.0 depends on Banana2.0
|
|
19
|
+
|
|
20
|
+
There are a number of possible solutions. You can try:
|
|
21
|
+
1. removing package versions from your requirements, and letting pip try to resolve the problem for you
|
|
22
|
+
2. Trying a version of Peach that depends on Banana2.0. Try `pip-search peach —dep banana2.0`
|
|
23
|
+
3. replacing Apple or Peach with a different package altogether
|
|
24
|
+
4. patching Apple2.0 to use Banana3.0
|
|
25
|
+
5. force installing (Be aware!)
|
|
26
|
+
|
|
27
|
+
For instructions on how to do these steps visit: https://pypa.io/SomeLink
|
|
28
|
+
To debug this further you can run `pip-tree` to see all of your dependencies.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**with verbose level -vv**
|
|
32
|
+
|
|
33
|
+
If a user ran the same pip command with more verbosity, what would they see?
|
|
34
|
+
|
|
35
|
+
**with verbose level -vvv**
|
|
36
|
+
|
|
37
|
+
If a user ran the same pip command with more verbosity, what would they see?
|
|
38
|
+
|
|
39
|
+
## What if there are no user-provided version restrictions?
|
|
40
|
+
|
|
41
|
+
NB: We are assuming this resolver behaviour gets implemented, based on [GH issues 8249](https://github.com/pypa/pip/issues/8249).
|
|
42
|
+
|
|
43
|
+
**with default verbose level**
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
$ pip install apple peach
|
|
47
|
+
|
|
48
|
+
Due to conflicting dependencies pip cannot install apple or peach. Both depend on banana, but pip can't find a version of either where they depend on the same banana version.
|
|
49
|
+
|
|
50
|
+
There are a number of possible solutions. You can try:
|
|
51
|
+
1. replacing apple or peach with a different package altogether
|
|
52
|
+
2. patching apple or peach to use the same version of banana
|
|
53
|
+
3. force installing (Be aware!)
|
|
54
|
+
|
|
55
|
+
To debug this further you can run pip-tree to see all of your dependencies.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**with verbose level -vv**
|
|
59
|
+
|
|
60
|
+
If a user ran the same pip command with more verbosity, what would they see?
|
|
61
|
+
|
|
62
|
+
**with verbose level -vvv**
|
|
63
|
+
|
|
64
|
+
If a user ran the same pip command with more verbosity, what would they see?
|
|
65
|
+
|
|
66
|
+
**What should be in the "documentation" page?**
|
|
67
|
+
|
|
68
|
+
* ways to swap a package for another
|
|
69
|
+
* how to patch a package to support a version (various ways)
|
|
70
|
+
|
|
71
|
+
## Recommendations
|
|
72
|
+
|
|
73
|
+
* Write official documentation / guide "How to resolve dependency conflicts" explaining:
|
|
74
|
+
* Why conflicts can exist
|
|
75
|
+
* How you can avoid them (pinning)
|
|
76
|
+
* How you can resolve them
|
|
77
|
+
* Use alternative package
|
|
78
|
+
* Use older version
|
|
79
|
+
* Patch package
|
|
80
|
+
* Introduce new commands to pip, inspired by poetry:
|
|
81
|
+
* Tree: Show full tree of dependencies
|
|
82
|
+
* Show `<package>` Show details of a package, including it's dependencies
|
|
83
|
+
* latest - shows latest vs installed versions
|
|
84
|
+
* outdated - shows only outdated versions
|
|
85
|
+
* Expose commands / help link in output??
|
|
86
|
+
* when particular issue happens provide ways to move on (ala pipenv), e.g.
|
|
87
|
+
* run this command to see X
|
|
88
|
+
* is it your internet connection?
|
|
89
|
+
* is it the pypi website?
|
|
90
|
+
* Aspirational commands
|
|
91
|
+
* `pip search PackageName —dep PackageNameVersion`
|
|
92
|
+
* a command that will search for a version of a package that has a dependency on another packageversion
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"""pip sphinx extensions"""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import optparse
|
|
4
6
|
import pathlib
|
|
5
7
|
import re
|
|
6
8
|
import sys
|
|
9
|
+
from collections.abc import Iterable, Iterator
|
|
7
10
|
from textwrap import dedent
|
|
8
|
-
from typing import Dict, Iterable, Iterator, List, Optional, Union
|
|
9
11
|
|
|
10
12
|
from docutils import nodes, statemachine
|
|
11
13
|
from docutils.parsers import rst
|
|
@@ -24,7 +26,7 @@ def convert_cli_option_to_envvar(opt_name: str) -> str:
|
|
|
24
26
|
return f"PIP_{normalized_opt_name}"
|
|
25
27
|
|
|
26
28
|
|
|
27
|
-
def convert_cli_opt_names_to_envvars(original_cli_opt_names:
|
|
29
|
+
def convert_cli_opt_names_to_envvars(original_cli_opt_names: list[str]) -> list[str]:
|
|
28
30
|
return [
|
|
29
31
|
convert_cli_option_to_envvar(opt_name) for opt_name in original_cli_opt_names
|
|
30
32
|
]
|
|
@@ -33,9 +35,7 @@ def convert_cli_opt_names_to_envvars(original_cli_opt_names: List[str]) -> List[
|
|
|
33
35
|
class PipNewsInclude(rst.Directive):
|
|
34
36
|
required_arguments = 1
|
|
35
37
|
|
|
36
|
-
def _is_version_section_title_underline(
|
|
37
|
-
self, prev: Optional[str], curr: str
|
|
38
|
-
) -> bool:
|
|
38
|
+
def _is_version_section_title_underline(self, prev: str | None, curr: str) -> bool:
|
|
39
39
|
"""Find a ==== line that marks the version section title."""
|
|
40
40
|
if prev is None:
|
|
41
41
|
return False
|
|
@@ -69,7 +69,7 @@ class PipNewsInclude(rst.Directive):
|
|
|
69
69
|
if prev is not None:
|
|
70
70
|
yield prev
|
|
71
71
|
|
|
72
|
-
def run(self) ->
|
|
72
|
+
def run(self) -> list[nodes.Node]:
|
|
73
73
|
source = self.state_machine.input_lines.source(
|
|
74
74
|
self.lineno - self.state_machine.input_offset - 1,
|
|
75
75
|
)
|
|
@@ -90,7 +90,7 @@ class PipCommandUsage(rst.Directive):
|
|
|
90
90
|
required_arguments = 1
|
|
91
91
|
optional_arguments = 3
|
|
92
92
|
|
|
93
|
-
def run(self) ->
|
|
93
|
+
def run(self) -> list[nodes.Node]:
|
|
94
94
|
cmd = create_command(self.arguments[0])
|
|
95
95
|
cmd_prefix = "python -m pip"
|
|
96
96
|
if len(self.arguments) > 1:
|
|
@@ -105,7 +105,7 @@ class PipCommandUsage(rst.Directive):
|
|
|
105
105
|
class PipCommandDescription(rst.Directive):
|
|
106
106
|
required_arguments = 1
|
|
107
107
|
|
|
108
|
-
def run(self) ->
|
|
108
|
+
def run(self) -> list[nodes.Node]:
|
|
109
109
|
node = nodes.paragraph()
|
|
110
110
|
node.document = self.state.document
|
|
111
111
|
desc = ViewList()
|
|
@@ -120,8 +120,8 @@ class PipCommandDescription(rst.Directive):
|
|
|
120
120
|
|
|
121
121
|
class PipOptions(rst.Directive):
|
|
122
122
|
def _format_option(
|
|
123
|
-
self, option: optparse.Option, cmd_name:
|
|
124
|
-
) ->
|
|
123
|
+
self, option: optparse.Option, cmd_name: str | None = None
|
|
124
|
+
) -> list[str]:
|
|
125
125
|
bookmark_line = (
|
|
126
126
|
f".. _`{cmd_name}_{option._long_opts[0]}`:"
|
|
127
127
|
if cmd_name
|
|
@@ -157,7 +157,7 @@ class PipOptions(rst.Directive):
|
|
|
157
157
|
]
|
|
158
158
|
|
|
159
159
|
def _format_options(
|
|
160
|
-
self, options: Iterable[optparse.Option], cmd_name:
|
|
160
|
+
self, options: Iterable[optparse.Option], cmd_name: str | None = None
|
|
161
161
|
) -> None:
|
|
162
162
|
for option in options:
|
|
163
163
|
if option.help == optparse.SUPPRESS_HELP:
|
|
@@ -165,7 +165,7 @@ class PipOptions(rst.Directive):
|
|
|
165
165
|
for line in self._format_option(option, cmd_name):
|
|
166
166
|
self.view_list.append(line, "")
|
|
167
167
|
|
|
168
|
-
def run(self) ->
|
|
168
|
+
def run(self) -> list[nodes.Node]:
|
|
169
169
|
node = nodes.paragraph()
|
|
170
170
|
node.document = self.state.document
|
|
171
171
|
self.view_list = ViewList()
|
|
@@ -242,7 +242,7 @@ class PipCLIDirective(rst.Directive):
|
|
|
242
242
|
has_content = True
|
|
243
243
|
optional_arguments = 1
|
|
244
244
|
|
|
245
|
-
def run(self) ->
|
|
245
|
+
def run(self) -> list[nodes.Node]:
|
|
246
246
|
node = nodes.paragraph()
|
|
247
247
|
node.document = self.state.document
|
|
248
248
|
|
|
@@ -310,7 +310,7 @@ class PipCLIDirective(rst.Directive):
|
|
|
310
310
|
return [node]
|
|
311
311
|
|
|
312
312
|
|
|
313
|
-
def setup(app: Sphinx) ->
|
|
313
|
+
def setup(app: Sphinx) -> dict[str, bool | str]:
|
|
314
314
|
app.add_directive("pip-command-usage", PipCommandUsage)
|
|
315
315
|
app.add_directive("pip-command-description", PipCommandDescription)
|
|
316
316
|
app.add_directive("pip-command-options", PipCommandOptions)
|