pip 24.2__tar.gz → 24.3__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.
Files changed (575) hide show
  1. {pip-24.2 → pip-24.3}/AUTHORS.txt +3 -0
  2. {pip-24.2 → pip-24.3}/NEWS.rst +31 -0
  3. {pip-24.2 → pip-24.3}/PKG-INFO +2 -1
  4. {pip-24.2 → pip-24.3}/docs/html/development/ci.rst +21 -7
  5. {pip-24.2 → pip-24.3}/docs/html/installation.md +1 -1
  6. {pip-24.2 → pip-24.3}/docs/requirements.txt +3 -1
  7. {pip-24.2 → pip-24.3}/pyproject.toml +15 -4
  8. {pip-24.2 → pip-24.3}/src/pip/__init__.py +1 -1
  9. {pip-24.2 → pip-24.3}/src/pip/_internal/build_env.py +4 -0
  10. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/index_command.py +1 -1
  11. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/parser.py +2 -2
  12. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/progress_bars.py +1 -1
  13. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/list.py +1 -1
  14. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/search.py +1 -1
  15. {pip-24.2 → pip-24.3}/src/pip/_internal/exceptions.py +33 -1
  16. {pip-24.2 → pip-24.3}/src/pip/_internal/index/sources.py +2 -3
  17. {pip-24.2 → pip-24.3}/src/pip/_internal/locations/_distutils.py +3 -3
  18. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/importlib/_envs.py +1 -1
  19. {pip-24.2 → pip-24.3}/src/pip/_internal/models/wheel.py +28 -3
  20. {pip-24.2 → pip-24.3}/src/pip/_internal/network/lazy_wheel.py +1 -1
  21. {pip-24.2 → pip-24.3}/src/pip/_internal/req/constructors.py +1 -1
  22. {pip-24.2 → pip-24.3}/src/pip/_internal/req/req_file.py +22 -4
  23. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/candidates.py +7 -2
  24. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/factory.py +11 -5
  25. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/compatibility_tags.py +25 -2
  26. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/misc.py +2 -7
  27. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/__init__.py +1 -1
  28. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/cacert.pem +131 -0
  29. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/__init__.py +1 -1
  30. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/compat.py +1 -2
  31. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/database.py +30 -60
  32. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/locators.py +57 -65
  33. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/markers.py +7 -12
  34. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/metadata.py +72 -109
  35. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/scripts.py +36 -55
  36. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/util.py +41 -82
  37. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/version.py +1 -2
  38. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/wheel.py +65 -64
  39. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/tags.py +64 -5
  40. pip-24.3/src/pip/_vendor/truststore/__init__.py +36 -0
  41. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/_api.py +3 -0
  42. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/_macos.py +136 -64
  43. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/_windows.py +5 -2
  44. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/_version.py +1 -1
  45. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/connection.py +2 -2
  46. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/connectionpool.py +5 -2
  47. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/retry.py +3 -1
  48. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/ssl_.py +13 -4
  49. {pip-24.2 → pip-24.3}/src/pip/_vendor/vendor.txt +4 -4
  50. {pip-24.2 → pip-24.3}/src/pip.egg-info/PKG-INFO +2 -1
  51. pip-24.2/src/pip/_vendor/truststore/__init__.py +0 -13
  52. {pip-24.2 → pip-24.3}/LICENSE.txt +0 -0
  53. {pip-24.2 → pip-24.3}/MANIFEST.in +0 -0
  54. {pip-24.2 → pip-24.3}/README.rst +0 -0
  55. {pip-24.2 → pip-24.3}/SECURITY.md +0 -0
  56. {pip-24.2 → pip-24.3}/docs/html/cli/index.md +0 -0
  57. {pip-24.2 → pip-24.3}/docs/html/cli/pip.rst +0 -0
  58. {pip-24.2 → pip-24.3}/docs/html/cli/pip_cache.rst +0 -0
  59. {pip-24.2 → pip-24.3}/docs/html/cli/pip_check.rst +0 -0
  60. {pip-24.2 → pip-24.3}/docs/html/cli/pip_config.rst +0 -0
  61. {pip-24.2 → pip-24.3}/docs/html/cli/pip_debug.rst +0 -0
  62. {pip-24.2 → pip-24.3}/docs/html/cli/pip_download.rst +0 -0
  63. {pip-24.2 → pip-24.3}/docs/html/cli/pip_freeze.rst +0 -0
  64. {pip-24.2 → pip-24.3}/docs/html/cli/pip_hash.rst +0 -0
  65. {pip-24.2 → pip-24.3}/docs/html/cli/pip_inspect.rst +0 -0
  66. {pip-24.2 → pip-24.3}/docs/html/cli/pip_install.rst +0 -0
  67. {pip-24.2 → pip-24.3}/docs/html/cli/pip_list.rst +0 -0
  68. {pip-24.2 → pip-24.3}/docs/html/cli/pip_search.rst +0 -0
  69. {pip-24.2 → pip-24.3}/docs/html/cli/pip_show.rst +0 -0
  70. {pip-24.2 → pip-24.3}/docs/html/cli/pip_uninstall.rst +0 -0
  71. {pip-24.2 → pip-24.3}/docs/html/cli/pip_wheel.rst +0 -0
  72. {pip-24.2 → pip-24.3}/docs/html/conf.py +0 -0
  73. {pip-24.2 → pip-24.3}/docs/html/copyright.rst +0 -0
  74. {pip-24.2 → pip-24.3}/docs/html/development/architecture/anatomy.rst +0 -0
  75. {pip-24.2 → pip-24.3}/docs/html/development/architecture/command-line-interface.rst +0 -0
  76. {pip-24.2 → pip-24.3}/docs/html/development/architecture/configuration-files.rst +0 -0
  77. {pip-24.2 → pip-24.3}/docs/html/development/architecture/index.rst +0 -0
  78. {pip-24.2 → pip-24.3}/docs/html/development/architecture/overview.rst +0 -0
  79. {pip-24.2 → pip-24.3}/docs/html/development/architecture/package-finding.rst +0 -0
  80. {pip-24.2 → pip-24.3}/docs/html/development/architecture/upgrade-options.rst +0 -0
  81. {pip-24.2 → pip-24.3}/docs/html/development/contributing.rst +0 -0
  82. {pip-24.2 → pip-24.3}/docs/html/development/conventions.rst +0 -0
  83. {pip-24.2 → pip-24.3}/docs/html/development/getting-started.rst +0 -0
  84. {pip-24.2 → pip-24.3}/docs/html/development/index.rst +0 -0
  85. {pip-24.2 → pip-24.3}/docs/html/development/issue-triage.md +0 -0
  86. {pip-24.2 → pip-24.3}/docs/html/development/release-process.rst +0 -0
  87. {pip-24.2 → pip-24.3}/docs/html/development/vendoring-policy.rst +0 -0
  88. {pip-24.2 → pip-24.3}/docs/html/getting-started.md +0 -0
  89. {pip-24.2 → pip-24.3}/docs/html/index.md +0 -0
  90. {pip-24.2 → pip-24.3}/docs/html/installing.rst +0 -0
  91. {pip-24.2 → pip-24.3}/docs/html/news.rst +0 -0
  92. {pip-24.2 → pip-24.3}/docs/html/quickstart.rst +0 -0
  93. {pip-24.2 → pip-24.3}/docs/html/reference/build-system/index.md +0 -0
  94. {pip-24.2 → pip-24.3}/docs/html/reference/build-system/pyproject-toml.md +0 -0
  95. {pip-24.2 → pip-24.3}/docs/html/reference/build-system/setup-py.md +0 -0
  96. {pip-24.2 → pip-24.3}/docs/html/reference/index.md +0 -0
  97. {pip-24.2 → pip-24.3}/docs/html/reference/inspect-report.md +0 -0
  98. {pip-24.2 → pip-24.3}/docs/html/reference/installation-report.md +0 -0
  99. {pip-24.2 → pip-24.3}/docs/html/reference/pip.rst +0 -0
  100. {pip-24.2 → pip-24.3}/docs/html/reference/pip_cache.rst +0 -0
  101. {pip-24.2 → pip-24.3}/docs/html/reference/pip_check.rst +0 -0
  102. {pip-24.2 → pip-24.3}/docs/html/reference/pip_config.rst +0 -0
  103. {pip-24.2 → pip-24.3}/docs/html/reference/pip_debug.rst +0 -0
  104. {pip-24.2 → pip-24.3}/docs/html/reference/pip_download.rst +0 -0
  105. {pip-24.2 → pip-24.3}/docs/html/reference/pip_freeze.rst +0 -0
  106. {pip-24.2 → pip-24.3}/docs/html/reference/pip_hash.rst +0 -0
  107. {pip-24.2 → pip-24.3}/docs/html/reference/pip_install.rst +0 -0
  108. {pip-24.2 → pip-24.3}/docs/html/reference/pip_list.rst +0 -0
  109. {pip-24.2 → pip-24.3}/docs/html/reference/pip_search.rst +0 -0
  110. {pip-24.2 → pip-24.3}/docs/html/reference/pip_show.rst +0 -0
  111. {pip-24.2 → pip-24.3}/docs/html/reference/pip_uninstall.rst +0 -0
  112. {pip-24.2 → pip-24.3}/docs/html/reference/pip_wheel.rst +0 -0
  113. {pip-24.2 → pip-24.3}/docs/html/reference/requirement-specifiers.md +0 -0
  114. {pip-24.2 → pip-24.3}/docs/html/reference/requirements-file-format.md +0 -0
  115. {pip-24.2 → pip-24.3}/docs/html/topics/authentication.md +0 -0
  116. {pip-24.2 → pip-24.3}/docs/html/topics/caching.md +0 -0
  117. {pip-24.2 → pip-24.3}/docs/html/topics/configuration.md +0 -0
  118. {pip-24.2 → pip-24.3}/docs/html/topics/dependency-resolution.md +0 -0
  119. {pip-24.2 → pip-24.3}/docs/html/topics/deps.dot +0 -0
  120. {pip-24.2 → pip-24.3}/docs/html/topics/deps.png +0 -0
  121. {pip-24.2 → pip-24.3}/docs/html/topics/https-certificates.md +0 -0
  122. {pip-24.2 → pip-24.3}/docs/html/topics/index.md +0 -0
  123. {pip-24.2 → pip-24.3}/docs/html/topics/local-project-installs.md +0 -0
  124. {pip-24.2 → pip-24.3}/docs/html/topics/more-dependency-resolution.md +0 -0
  125. {pip-24.2 → pip-24.3}/docs/html/topics/python-option.md +0 -0
  126. {pip-24.2 → pip-24.3}/docs/html/topics/repeatable-installs.md +0 -0
  127. {pip-24.2 → pip-24.3}/docs/html/topics/secure-installs.md +0 -0
  128. {pip-24.2 → pip-24.3}/docs/html/topics/vcs-support.md +0 -0
  129. {pip-24.2 → pip-24.3}/docs/html/topics/workflow.md +0 -0
  130. {pip-24.2 → pip-24.3}/docs/html/user_guide.rst +0 -0
  131. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/contribute.md +0 -0
  132. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/guidance.md +0 -0
  133. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/index.md +0 -0
  134. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/about-our-users.md +0 -0
  135. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/ci-cd.md +0 -0
  136. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/improving-pips-documentation.md +0 -0
  137. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/index.md +0 -0
  138. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/mental-models.md +0 -0
  139. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/override-conflicting-dependencies.md +0 -0
  140. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/personas.md +0 -0
  141. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/pip-force-reinstall.md +0 -0
  142. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/pip-search.md +0 -0
  143. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/pip-upgrade-conflict.md +0 -0
  144. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/prioritizing-features.md +0 -0
  145. {pip-24.2 → pip-24.3}/docs/html/ux-research-design/research-results/users-and-security.md +0 -0
  146. {pip-24.2 → pip-24.3}/docs/man/commands/cache.rst +0 -0
  147. {pip-24.2 → pip-24.3}/docs/man/commands/check.rst +0 -0
  148. {pip-24.2 → pip-24.3}/docs/man/commands/config.rst +0 -0
  149. {pip-24.2 → pip-24.3}/docs/man/commands/debug.rst +0 -0
  150. {pip-24.2 → pip-24.3}/docs/man/commands/download.rst +0 -0
  151. {pip-24.2 → pip-24.3}/docs/man/commands/freeze.rst +0 -0
  152. {pip-24.2 → pip-24.3}/docs/man/commands/hash.rst +0 -0
  153. {pip-24.2 → pip-24.3}/docs/man/commands/help.rst +0 -0
  154. {pip-24.2 → pip-24.3}/docs/man/commands/install.rst +0 -0
  155. {pip-24.2 → pip-24.3}/docs/man/commands/list.rst +0 -0
  156. {pip-24.2 → pip-24.3}/docs/man/commands/search.rst +0 -0
  157. {pip-24.2 → pip-24.3}/docs/man/commands/show.rst +0 -0
  158. {pip-24.2 → pip-24.3}/docs/man/commands/uninstall.rst +0 -0
  159. {pip-24.2 → pip-24.3}/docs/man/commands/wheel.rst +0 -0
  160. {pip-24.2 → pip-24.3}/docs/man/index.rst +0 -0
  161. {pip-24.2 → pip-24.3}/docs/pip_sphinxext.py +0 -0
  162. {pip-24.2 → pip-24.3}/setup.cfg +0 -0
  163. {pip-24.2 → pip-24.3}/src/pip/__main__.py +0 -0
  164. {pip-24.2 → pip-24.3}/src/pip/__pip-runner__.py +0 -0
  165. {pip-24.2 → pip-24.3}/src/pip/_internal/__init__.py +0 -0
  166. {pip-24.2 → pip-24.3}/src/pip/_internal/cache.py +0 -0
  167. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/__init__.py +0 -0
  168. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/autocompletion.py +0 -0
  169. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/base_command.py +0 -0
  170. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/cmdoptions.py +0 -0
  171. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/command_context.py +0 -0
  172. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/main.py +0 -0
  173. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/main_parser.py +0 -0
  174. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/req_command.py +0 -0
  175. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/spinners.py +0 -0
  176. {pip-24.2 → pip-24.3}/src/pip/_internal/cli/status_codes.py +0 -0
  177. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/__init__.py +0 -0
  178. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/cache.py +0 -0
  179. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/check.py +0 -0
  180. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/completion.py +0 -0
  181. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/configuration.py +0 -0
  182. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/debug.py +0 -0
  183. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/download.py +0 -0
  184. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/freeze.py +0 -0
  185. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/hash.py +0 -0
  186. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/help.py +0 -0
  187. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/index.py +0 -0
  188. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/inspect.py +0 -0
  189. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/install.py +0 -0
  190. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/show.py +0 -0
  191. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/uninstall.py +0 -0
  192. {pip-24.2 → pip-24.3}/src/pip/_internal/commands/wheel.py +0 -0
  193. {pip-24.2 → pip-24.3}/src/pip/_internal/configuration.py +0 -0
  194. {pip-24.2 → pip-24.3}/src/pip/_internal/distributions/__init__.py +0 -0
  195. {pip-24.2 → pip-24.3}/src/pip/_internal/distributions/base.py +0 -0
  196. {pip-24.2 → pip-24.3}/src/pip/_internal/distributions/installed.py +0 -0
  197. {pip-24.2 → pip-24.3}/src/pip/_internal/distributions/sdist.py +0 -0
  198. {pip-24.2 → pip-24.3}/src/pip/_internal/distributions/wheel.py +0 -0
  199. {pip-24.2 → pip-24.3}/src/pip/_internal/index/__init__.py +0 -0
  200. {pip-24.2 → pip-24.3}/src/pip/_internal/index/collector.py +0 -0
  201. {pip-24.2 → pip-24.3}/src/pip/_internal/index/package_finder.py +0 -0
  202. {pip-24.2 → pip-24.3}/src/pip/_internal/locations/__init__.py +0 -0
  203. {pip-24.2 → pip-24.3}/src/pip/_internal/locations/_sysconfig.py +0 -0
  204. {pip-24.2 → pip-24.3}/src/pip/_internal/locations/base.py +0 -0
  205. {pip-24.2 → pip-24.3}/src/pip/_internal/main.py +0 -0
  206. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/__init__.py +0 -0
  207. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/_json.py +0 -0
  208. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/base.py +0 -0
  209. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/importlib/__init__.py +0 -0
  210. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/importlib/_compat.py +0 -0
  211. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/importlib/_dists.py +0 -0
  212. {pip-24.2 → pip-24.3}/src/pip/_internal/metadata/pkg_resources.py +0 -0
  213. {pip-24.2 → pip-24.3}/src/pip/_internal/models/__init__.py +0 -0
  214. {pip-24.2 → pip-24.3}/src/pip/_internal/models/candidate.py +0 -0
  215. {pip-24.2 → pip-24.3}/src/pip/_internal/models/direct_url.py +0 -0
  216. {pip-24.2 → pip-24.3}/src/pip/_internal/models/format_control.py +0 -0
  217. {pip-24.2 → pip-24.3}/src/pip/_internal/models/index.py +0 -0
  218. {pip-24.2 → pip-24.3}/src/pip/_internal/models/installation_report.py +0 -0
  219. {pip-24.2 → pip-24.3}/src/pip/_internal/models/link.py +0 -0
  220. {pip-24.2 → pip-24.3}/src/pip/_internal/models/scheme.py +0 -0
  221. {pip-24.2 → pip-24.3}/src/pip/_internal/models/search_scope.py +0 -0
  222. {pip-24.2 → pip-24.3}/src/pip/_internal/models/selection_prefs.py +0 -0
  223. {pip-24.2 → pip-24.3}/src/pip/_internal/models/target_python.py +0 -0
  224. {pip-24.2 → pip-24.3}/src/pip/_internal/network/__init__.py +0 -0
  225. {pip-24.2 → pip-24.3}/src/pip/_internal/network/auth.py +0 -0
  226. {pip-24.2 → pip-24.3}/src/pip/_internal/network/cache.py +0 -0
  227. {pip-24.2 → pip-24.3}/src/pip/_internal/network/download.py +0 -0
  228. {pip-24.2 → pip-24.3}/src/pip/_internal/network/session.py +0 -0
  229. {pip-24.2 → pip-24.3}/src/pip/_internal/network/utils.py +0 -0
  230. {pip-24.2 → pip-24.3}/src/pip/_internal/network/xmlrpc.py +0 -0
  231. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/__init__.py +0 -0
  232. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/__init__.py +0 -0
  233. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/build_tracker.py +0 -0
  234. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/metadata.py +0 -0
  235. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/metadata_editable.py +0 -0
  236. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/metadata_legacy.py +0 -0
  237. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/wheel.py +0 -0
  238. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/wheel_editable.py +0 -0
  239. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/build/wheel_legacy.py +0 -0
  240. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/check.py +0 -0
  241. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/freeze.py +0 -0
  242. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/install/__init__.py +0 -0
  243. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/install/editable_legacy.py +0 -0
  244. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/install/wheel.py +0 -0
  245. {pip-24.2 → pip-24.3}/src/pip/_internal/operations/prepare.py +0 -0
  246. {pip-24.2 → pip-24.3}/src/pip/_internal/pyproject.py +0 -0
  247. {pip-24.2 → pip-24.3}/src/pip/_internal/req/__init__.py +0 -0
  248. {pip-24.2 → pip-24.3}/src/pip/_internal/req/req_install.py +0 -0
  249. {pip-24.2 → pip-24.3}/src/pip/_internal/req/req_set.py +0 -0
  250. {pip-24.2 → pip-24.3}/src/pip/_internal/req/req_uninstall.py +0 -0
  251. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/__init__.py +0 -0
  252. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/base.py +0 -0
  253. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/legacy/__init__.py +0 -0
  254. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/legacy/resolver.py +0 -0
  255. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  256. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/base.py +0 -0
  257. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  258. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/provider.py +0 -0
  259. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  260. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  261. {pip-24.2 → pip-24.3}/src/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  262. {pip-24.2 → pip-24.3}/src/pip/_internal/self_outdated_check.py +0 -0
  263. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/__init__.py +0 -0
  264. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/_jaraco_text.py +0 -0
  265. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/_log.py +0 -0
  266. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/appdirs.py +0 -0
  267. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/compat.py +0 -0
  268. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/datetime.py +0 -0
  269. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/deprecation.py +0 -0
  270. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/direct_url_helpers.py +0 -0
  271. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/egg_link.py +0 -0
  272. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/encoding.py +0 -0
  273. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/entrypoints.py +0 -0
  274. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/filesystem.py +0 -0
  275. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/filetypes.py +0 -0
  276. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/glibc.py +0 -0
  277. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/hashes.py +0 -0
  278. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/logging.py +0 -0
  279. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/packaging.py +0 -0
  280. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/retry.py +0 -0
  281. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/setuptools_build.py +0 -0
  282. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/subprocess.py +0 -0
  283. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/temp_dir.py +0 -0
  284. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/unpacking.py +0 -0
  285. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/urls.py +0 -0
  286. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/virtualenv.py +0 -0
  287. {pip-24.2 → pip-24.3}/src/pip/_internal/utils/wheel.py +0 -0
  288. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/__init__.py +0 -0
  289. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/bazaar.py +0 -0
  290. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/git.py +0 -0
  291. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/mercurial.py +0 -0
  292. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/subversion.py +0 -0
  293. {pip-24.2 → pip-24.3}/src/pip/_internal/vcs/versioncontrol.py +0 -0
  294. {pip-24.2 → pip-24.3}/src/pip/_internal/wheel_builder.py +0 -0
  295. {pip-24.2 → pip-24.3}/src/pip/_vendor/README.rst +0 -0
  296. {pip-24.2 → pip-24.3}/src/pip/_vendor/__init__.py +0 -0
  297. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/LICENSE.txt +0 -0
  298. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/__init__.py +0 -0
  299. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/_cmd.py +0 -0
  300. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/adapter.py +0 -0
  301. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/cache.py +0 -0
  302. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  303. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  304. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  305. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/controller.py +0 -0
  306. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  307. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/heuristics.py +0 -0
  308. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/py.typed +0 -0
  309. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/serialize.py +0 -0
  310. {pip-24.2 → pip-24.3}/src/pip/_vendor/cachecontrol/wrapper.py +0 -0
  311. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/LICENSE +0 -0
  312. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/__main__.py +0 -0
  313. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/core.py +0 -0
  314. {pip-24.2 → pip-24.3}/src/pip/_vendor/certifi/py.typed +0 -0
  315. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/LICENSE.txt +0 -0
  316. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/index.py +0 -0
  317. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/manifest.py +0 -0
  318. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/resources.py +0 -0
  319. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/t32.exe +0 -0
  320. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/t64-arm.exe +0 -0
  321. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/t64.exe +0 -0
  322. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/w32.exe +0 -0
  323. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/w64-arm.exe +0 -0
  324. {pip-24.2 → pip-24.3}/src/pip/_vendor/distlib/w64.exe +0 -0
  325. {pip-24.2 → pip-24.3}/src/pip/_vendor/distro/LICENSE +0 -0
  326. {pip-24.2 → pip-24.3}/src/pip/_vendor/distro/__init__.py +0 -0
  327. {pip-24.2 → pip-24.3}/src/pip/_vendor/distro/__main__.py +0 -0
  328. {pip-24.2 → pip-24.3}/src/pip/_vendor/distro/distro.py +0 -0
  329. {pip-24.2 → pip-24.3}/src/pip/_vendor/distro/py.typed +0 -0
  330. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/LICENSE.md +0 -0
  331. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/__init__.py +0 -0
  332. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/codec.py +0 -0
  333. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/compat.py +0 -0
  334. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/core.py +0 -0
  335. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/idnadata.py +0 -0
  336. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/intranges.py +0 -0
  337. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/package_data.py +0 -0
  338. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/py.typed +0 -0
  339. {pip-24.2 → pip-24.3}/src/pip/_vendor/idna/uts46data.py +0 -0
  340. {pip-24.2 → pip-24.3}/src/pip/_vendor/msgpack/COPYING +0 -0
  341. {pip-24.2 → pip-24.3}/src/pip/_vendor/msgpack/__init__.py +0 -0
  342. {pip-24.2 → pip-24.3}/src/pip/_vendor/msgpack/exceptions.py +0 -0
  343. {pip-24.2 → pip-24.3}/src/pip/_vendor/msgpack/ext.py +0 -0
  344. {pip-24.2 → pip-24.3}/src/pip/_vendor/msgpack/fallback.py +0 -0
  345. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/LICENSE +0 -0
  346. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/LICENSE.APACHE +0 -0
  347. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/LICENSE.BSD +0 -0
  348. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/__init__.py +0 -0
  349. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_elffile.py +0 -0
  350. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_manylinux.py +0 -0
  351. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_musllinux.py +0 -0
  352. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_parser.py +0 -0
  353. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_structures.py +0 -0
  354. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/_tokenizer.py +0 -0
  355. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/markers.py +0 -0
  356. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/metadata.py +0 -0
  357. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/py.typed +0 -0
  358. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/requirements.py +0 -0
  359. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/specifiers.py +0 -0
  360. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/utils.py +0 -0
  361. {pip-24.2 → pip-24.3}/src/pip/_vendor/packaging/version.py +0 -0
  362. {pip-24.2 → pip-24.3}/src/pip/_vendor/pkg_resources/LICENSE +0 -0
  363. {pip-24.2 → pip-24.3}/src/pip/_vendor/pkg_resources/__init__.py +0 -0
  364. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/LICENSE +0 -0
  365. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/__init__.py +0 -0
  366. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/__main__.py +0 -0
  367. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/android.py +0 -0
  368. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/api.py +0 -0
  369. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/macos.py +0 -0
  370. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/py.typed +0 -0
  371. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/unix.py +0 -0
  372. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/version.py +0 -0
  373. {pip-24.2 → pip-24.3}/src/pip/_vendor/platformdirs/windows.py +0 -0
  374. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/LICENSE +0 -0
  375. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/__init__.py +0 -0
  376. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/__main__.py +0 -0
  377. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/cmdline.py +0 -0
  378. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/console.py +0 -0
  379. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/filter.py +0 -0
  380. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/filters/__init__.py +0 -0
  381. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatter.py +0 -0
  382. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/__init__.py +0 -0
  383. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  384. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/bbcode.py +0 -0
  385. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/groff.py +0 -0
  386. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/html.py +0 -0
  387. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/img.py +0 -0
  388. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/irc.py +0 -0
  389. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/latex.py +0 -0
  390. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/other.py +0 -0
  391. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/pangomarkup.py +0 -0
  392. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/rtf.py +0 -0
  393. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/svg.py +0 -0
  394. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/terminal.py +0 -0
  395. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/formatters/terminal256.py +0 -0
  396. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/lexer.py +0 -0
  397. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/lexers/__init__.py +0 -0
  398. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  399. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/lexers/python.py +0 -0
  400. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/modeline.py +0 -0
  401. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/plugin.py +0 -0
  402. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/regexopt.py +0 -0
  403. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/scanner.py +0 -0
  404. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/sphinxext.py +0 -0
  405. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/style.py +0 -0
  406. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/styles/__init__.py +0 -0
  407. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/styles/_mapping.py +0 -0
  408. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/token.py +0 -0
  409. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/unistring.py +0 -0
  410. {pip-24.2 → pip-24.3}/src/pip/_vendor/pygments/util.py +0 -0
  411. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/LICENSE +0 -0
  412. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  413. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/_compat.py +0 -0
  414. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  415. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  416. {pip-24.2 → pip-24.3}/src/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  417. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/LICENSE +0 -0
  418. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/__init__.py +0 -0
  419. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/__version__.py +0 -0
  420. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/_internal_utils.py +0 -0
  421. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/adapters.py +0 -0
  422. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/api.py +0 -0
  423. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/auth.py +0 -0
  424. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/certs.py +0 -0
  425. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/compat.py +0 -0
  426. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/cookies.py +0 -0
  427. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/exceptions.py +0 -0
  428. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/help.py +0 -0
  429. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/hooks.py +0 -0
  430. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/models.py +0 -0
  431. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/packages.py +0 -0
  432. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/sessions.py +0 -0
  433. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/status_codes.py +0 -0
  434. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/structures.py +0 -0
  435. {pip-24.2 → pip-24.3}/src/pip/_vendor/requests/utils.py +0 -0
  436. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/LICENSE +0 -0
  437. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/__init__.py +0 -0
  438. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  439. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/compat/collections_abc.py +0 -0
  440. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/providers.py +0 -0
  441. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/py.typed +0 -0
  442. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/reporters.py +0 -0
  443. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/resolvers.py +0 -0
  444. {pip-24.2 → pip-24.3}/src/pip/_vendor/resolvelib/structs.py +0 -0
  445. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/LICENSE +0 -0
  446. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/__init__.py +0 -0
  447. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/__main__.py +0 -0
  448. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_cell_widths.py +0 -0
  449. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_emoji_codes.py +0 -0
  450. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_emoji_replace.py +0 -0
  451. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_export_format.py +0 -0
  452. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_extension.py +0 -0
  453. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_fileno.py +0 -0
  454. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_inspect.py +0 -0
  455. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_log_render.py +0 -0
  456. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_loop.py +0 -0
  457. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_null_file.py +0 -0
  458. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_palettes.py +0 -0
  459. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_pick.py +0 -0
  460. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_ratio.py +0 -0
  461. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_spinners.py +0 -0
  462. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_stack.py +0 -0
  463. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_timer.py +0 -0
  464. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_win32_console.py +0 -0
  465. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_windows.py +0 -0
  466. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_windows_renderer.py +0 -0
  467. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/_wrap.py +0 -0
  468. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/abc.py +0 -0
  469. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/align.py +0 -0
  470. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/ansi.py +0 -0
  471. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/bar.py +0 -0
  472. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/box.py +0 -0
  473. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/cells.py +0 -0
  474. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/color.py +0 -0
  475. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/color_triplet.py +0 -0
  476. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/columns.py +0 -0
  477. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/console.py +0 -0
  478. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/constrain.py +0 -0
  479. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/containers.py +0 -0
  480. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/control.py +0 -0
  481. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/default_styles.py +0 -0
  482. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/diagnose.py +0 -0
  483. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/emoji.py +0 -0
  484. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/errors.py +0 -0
  485. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/file_proxy.py +0 -0
  486. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/filesize.py +0 -0
  487. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/highlighter.py +0 -0
  488. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/json.py +0 -0
  489. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/jupyter.py +0 -0
  490. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/layout.py +0 -0
  491. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/live.py +0 -0
  492. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/live_render.py +0 -0
  493. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/logging.py +0 -0
  494. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/markup.py +0 -0
  495. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/measure.py +0 -0
  496. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/padding.py +0 -0
  497. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/pager.py +0 -0
  498. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/palette.py +0 -0
  499. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/panel.py +0 -0
  500. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/pretty.py +0 -0
  501. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/progress.py +0 -0
  502. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/progress_bar.py +0 -0
  503. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/prompt.py +0 -0
  504. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/protocol.py +0 -0
  505. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/py.typed +0 -0
  506. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/region.py +0 -0
  507. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/repr.py +0 -0
  508. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/rule.py +0 -0
  509. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/scope.py +0 -0
  510. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/screen.py +0 -0
  511. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/segment.py +0 -0
  512. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/spinner.py +0 -0
  513. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/status.py +0 -0
  514. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/style.py +0 -0
  515. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/styled.py +0 -0
  516. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/syntax.py +0 -0
  517. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/table.py +0 -0
  518. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/terminal_theme.py +0 -0
  519. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/text.py +0 -0
  520. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/theme.py +0 -0
  521. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/themes.py +0 -0
  522. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/traceback.py +0 -0
  523. {pip-24.2 → pip-24.3}/src/pip/_vendor/rich/tree.py +0 -0
  524. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/LICENSE +0 -0
  525. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/__init__.py +0 -0
  526. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/_parser.py +0 -0
  527. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/_re.py +0 -0
  528. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/_types.py +0 -0
  529. {pip-24.2 → pip-24.3}/src/pip/_vendor/tomli/py.typed +0 -0
  530. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/LICENSE +0 -0
  531. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/_openssl.py +0 -0
  532. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/_ssl_constants.py +0 -0
  533. {pip-24.2 → pip-24.3}/src/pip/_vendor/truststore/py.typed +0 -0
  534. {pip-24.2 → pip-24.3}/src/pip/_vendor/typing_extensions.LICENSE +0 -0
  535. {pip-24.2 → pip-24.3}/src/pip/_vendor/typing_extensions.py +0 -0
  536. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/LICENSE.txt +0 -0
  537. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/__init__.py +0 -0
  538. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/_collections.py +0 -0
  539. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  540. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  541. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  542. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  543. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  544. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  545. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  546. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  547. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  548. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/contrib/socks.py +0 -0
  549. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/exceptions.py +0 -0
  550. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/fields.py +0 -0
  551. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/filepost.py +0 -0
  552. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/packages/__init__.py +0 -0
  553. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  554. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  555. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  556. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/packages/six.py +0 -0
  557. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/poolmanager.py +0 -0
  558. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/request.py +0 -0
  559. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/response.py +0 -0
  560. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/__init__.py +0 -0
  561. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/connection.py +0 -0
  562. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/proxy.py +0 -0
  563. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/queue.py +0 -0
  564. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/request.py +0 -0
  565. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/response.py +0 -0
  566. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  567. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  568. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/timeout.py +0 -0
  569. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/url.py +0 -0
  570. {pip-24.2 → pip-24.3}/src/pip/_vendor/urllib3/util/wait.py +0 -0
  571. {pip-24.2 → pip-24.3}/src/pip/py.typed +0 -0
  572. {pip-24.2 → pip-24.3}/src/pip.egg-info/SOURCES.txt +0 -0
  573. {pip-24.2 → pip-24.3}/src/pip.egg-info/dependency_links.txt +0 -0
  574. {pip-24.2 → pip-24.3}/src/pip.egg-info/entry_points.txt +0 -0
  575. {pip-24.2 → pip-24.3}/src/pip.egg-info/top_level.txt +0 -0
@@ -57,6 +57,7 @@ Anthony Sottile
57
57
  Antoine Musso
58
58
  Anton Ovchinnikov
59
59
  Anton Patrushev
60
+ Anton Zelenov
60
61
  Antonio Alvarado Hernandez
61
62
  Antony Lee
62
63
  Antti Kaihola
@@ -225,6 +226,7 @@ Diego Ramirez
225
226
  DiegoCaraballo
226
227
  Dimitri Merejkowsky
227
228
  Dimitri Papadopoulos
229
+ Dimitri Papadopoulos Orfanos
228
230
  Dirk Stolle
229
231
  Dmitry Gladkov
230
232
  Dmitry Volodin
@@ -690,6 +692,7 @@ snook92
690
692
  socketubs
691
693
  Sorin Sbarnea
692
694
  Srinivas Nyayapati
695
+ Srishti Hegde
693
696
  Stavros Korokithakis
694
697
  Stefan Scherfke
695
698
  Stefano Rivera
@@ -9,6 +9,37 @@
9
9
 
10
10
  .. towncrier release notes start
11
11
 
12
+ 24.3 (2024-10-26)
13
+ =================
14
+
15
+ Deprecations and Removals
16
+ -------------------------
17
+
18
+ - Deprecate wheel filenames that are not compliant with :pep:`440`. (`#12918 <https://github.com/pypa/pip/issues/12918>`_)
19
+
20
+ Features
21
+ --------
22
+
23
+ - Detect recursively referencing requirements files and help users identify
24
+ the source. (`#12653 <https://github.com/pypa/pip/issues/12653>`_)
25
+ - Support for :pep:`730` iOS wheels. (`#12961 <https://github.com/pypa/pip/issues/12961>`_)
26
+
27
+ Bug Fixes
28
+ ---------
29
+
30
+ - Display a better error message when an already installed package has an invalid requirement. (`#12953 <https://github.com/pypa/pip/issues/12953>`_)
31
+ - Ignore ``PIP_TARGET`` and ``pip.conf`` ``global.target`` when preparing a build environment. (`#8438 <https://github.com/pypa/pip/issues/8438>`_)
32
+ - Restore support for macOS 10.12 and older (via truststore). (`#12901 <https://github.com/pypa/pip/issues/12901>`_)
33
+ - Allow installing pip in editable mode in a virtual environment on Windows. (`#12666 <https://github.com/pypa/pip/issues/12666>`_)
34
+
35
+ Vendored Libraries
36
+ ------------------
37
+
38
+ - Upgrade certifi to 2024.8.30
39
+ - Upgrade distlib to 0.3.9
40
+ - Upgrade truststore to 0.10.0
41
+ - Upgrade urllib3 to 1.26.20
42
+
12
43
  24.2 (2024-07-28)
13
44
  =================
14
45
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pip
3
- Version: 24.2
3
+ Version: 24.3
4
4
  Summary: The PyPA recommended tool for installing Python packages.
5
5
  Author-email: The pip developers <distutils-sig@python.org>
6
6
  License: MIT
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
23
24
  Classifier: Programming Language :: Python :: Implementation :: CPython
24
25
  Classifier: Programming Language :: Python :: Implementation :: PyPy
25
26
  Requires-Python: >=3.8
@@ -23,6 +23,7 @@ pip support a variety of Python interpreters:
23
23
  - CPython 3.10
24
24
  - CPython 3.11
25
25
  - CPython 3.12
26
+ - CPython 3.13
26
27
  - Latest PyPy3
27
28
 
28
29
  on different operating systems:
@@ -35,8 +36,9 @@ and on different architectures:
35
36
 
36
37
  - x64
37
38
  - x86
39
+ - arm64 (macOS only)
38
40
 
39
- so 42 hypothetical interpreters.
41
+ so 49 hypothetical interpreters.
40
42
 
41
43
 
42
44
  Checks
@@ -99,6 +101,8 @@ Actual testing
99
101
  | | +-------+---------------+-----------------+
100
102
  | | | CP3.12| | |
101
103
  | | +-------+---------------+-----------------+
104
+ | | | CP3.13| | |
105
+ | | +-------+---------------+-----------------+
102
106
  | | | PyPy3 | | |
103
107
  | Windows +----------+-------+---------------+-----------------+
104
108
  | | x64 | CP3.8 | GitHub | GitHub |
@@ -107,10 +111,12 @@ Actual testing
107
111
  | | +-------+---------------+-----------------+
108
112
  | | | CP3.10| | |
109
113
  | | +-------+---------------+-----------------+
110
- | | | CP3.11| GitHub | GitHub |
114
+ | | | CP3.11| | |
111
115
  | | +-------+---------------+-----------------+
112
116
  | | | CP3.12| | |
113
117
  | | +-------+---------------+-----------------+
118
+ | | | CP3.13| GitHub | GitHub |
119
+ | | +-------+---------------+-----------------+
114
120
  | | | PyPy3 | | |
115
121
  +-----------+----------+-------+---------------+-----------------+
116
122
  | | x86 | CP3.8 | | |
@@ -123,6 +129,8 @@ Actual testing
123
129
  | | +-------+---------------+-----------------+
124
130
  | | | CP3.12| | |
125
131
  | | +-------+---------------+-----------------+
132
+ | | | CP3.13| | |
133
+ | | +-------+---------------+-----------------+
126
134
  | | | PyPy3 | | |
127
135
  | Linux +----------+-------+---------------+-----------------+
128
136
  | | x64 | CP3.8 | GitHub | GitHub |
@@ -135,17 +143,21 @@ Actual testing
135
143
  | | +-------+---------------+-----------------+
136
144
  | | | CP3.12| GitHub | GitHub |
137
145
  | | +-------+---------------+-----------------+
146
+ | | | CP3.13| GitHub | GitHub |
147
+ | | +-------+---------------+-----------------+
138
148
  | | | PyPy3 | | |
139
149
  +-----------+----------+-------+---------------+-----------------+
140
- | | arm64 | CP3.8 | | |
150
+ | | arm64 | CP3.8 | GitHub | GitHub |
141
151
  | | +-------+---------------+-----------------+
142
- | | | CP3.9 | | |
152
+ | | | CP3.9 | GitHub | GitHub |
143
153
  | | +-------+---------------+-----------------+
144
- | | | CP3.10| | |
154
+ | | | CP3.10| GitHub | GitHub |
145
155
  | | +-------+---------------+-----------------+
146
- | | | CP3.11| | |
156
+ | | | CP3.11| GitHub | GitHub |
147
157
  | | +-------+---------------+-----------------+
148
- | | | CP3.12| | |
158
+ | | | CP3.12| GitHub | GitHub |
159
+ | | +-------+---------------+-----------------+
160
+ | | | CP3.13| GitHub | GitHub |
149
161
  | | +-------+---------------+-----------------+
150
162
  | | | PyPy3 | | |
151
163
  | macOS +----------+-------+---------------+-----------------+
@@ -159,5 +171,7 @@ Actual testing
159
171
  | | +-------+---------------+-----------------+
160
172
  | | | CP3.12| GitHub | GitHub |
161
173
  | | +-------+---------------+-----------------+
174
+ | | | CP3.13| GitHub | GitHub |
175
+ | | +-------+---------------+-----------------+
162
176
  | | | PyPy3 | | |
163
177
  +-----------+----------+-------+---------------+-----------------+
@@ -126,7 +126,7 @@ $ pip install --upgrade pip
126
126
  The current version of pip works on:
127
127
 
128
128
  - Windows, Linux and macOS.
129
- - CPython 3.8, 3.9, 3.10, 3.11, 3.12, and latest PyPy3.
129
+ - CPython 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, and latest PyPy3.
130
130
 
131
131
  pip is tested to work on the latest patch version of the Python interpreter,
132
132
  for each of the minor versions listed above. Previous patch versions are
@@ -1,5 +1,7 @@
1
1
  sphinx ~= 7.0
2
- towncrier
2
+ # currently incompatible with sphinxcontrib-towncrier
3
+ # https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92
4
+ towncrier < 24
3
5
  furo
4
6
  myst_parser
5
7
  sphinx-copybutton
@@ -18,6 +18,7 @@ classifiers = [
18
18
  "Programming Language :: Python :: 3.10",
19
19
  "Programming Language :: Python :: 3.11",
20
20
  "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
21
22
  "Programming Language :: Python :: Implementation :: CPython",
22
23
  "Programming Language :: Python :: Implementation :: PyPy",
23
24
  ]
@@ -181,13 +182,23 @@ select = [
181
182
  "PLR0",
182
183
  "W",
183
184
  "RUF100",
184
- "UP032",
185
+ "UP",
185
186
  ]
186
187
 
187
188
  [tool.ruff.lint.isort]
188
- # Explicitly make tests "first party" as it's not in the "src" directory
189
- known-first-party = ["tests"]
190
- known-third-party = ["pip._vendor"]
189
+ section-order = [
190
+ "future",
191
+ "standard-library",
192
+ "third-party",
193
+ "vendored",
194
+ "first-party",
195
+ "tests",
196
+ "local-folder",
197
+ ]
198
+
199
+ [tool.ruff.lint.isort.sections]
200
+ "vendored" = ["pip._vendor"]
201
+ "tests" = ["tests"]
191
202
 
192
203
  [tool.ruff.lint.mccabe]
193
204
  max-complexity = 33 # default is 10
@@ -1,6 +1,6 @@
1
1
  from typing import List, Optional
2
2
 
3
- __version__ = "24.2"
3
+ __version__ = "24.3"
4
4
 
5
5
 
6
6
  def main(args: Optional[List[str]] = None) -> int:
@@ -242,6 +242,10 @@ class BuildEnvironment:
242
242
  prefix.path,
243
243
  "--no-warn-script-location",
244
244
  "--disable-pip-version-check",
245
+ # The prefix specified two lines above, thus
246
+ # target from config file or env var should be ignored
247
+ "--target",
248
+ "",
245
249
  ]
246
250
  if logger.getEffectiveLevel() <= logging.DEBUG:
247
251
  args.append("-vv")
@@ -54,7 +54,7 @@ class SessionCommandMixin(CommandContextMixIn):
54
54
 
55
55
  def __init__(self) -> None:
56
56
  super().__init__()
57
- self._session: Optional["PipSession"] = None
57
+ self._session: Optional[PipSession] = None
58
58
 
59
59
  @classmethod
60
60
  def _get_index_urls(cls, options: Values) -> Optional[List[str]]:
@@ -6,7 +6,7 @@ import shutil
6
6
  import sys
7
7
  import textwrap
8
8
  from contextlib import suppress
9
- from typing import Any, Dict, Generator, List, Optional, Tuple
9
+ from typing import Any, Dict, Generator, List, NoReturn, Optional, Tuple
10
10
 
11
11
  from pip._internal.cli.status_codes import UNKNOWN_ERROR
12
12
  from pip._internal.configuration import Configuration, ConfigurationError
@@ -289,6 +289,6 @@ class ConfigOptionParser(CustomOptionParser):
289
289
  defaults[option.dest] = option.check_value(opt_str, default)
290
290
  return optparse.Values(defaults)
291
291
 
292
- def error(self, msg: str) -> None:
292
+ def error(self, msg: str) -> NoReturn:
293
293
  self.print_usage(sys.stderr)
294
294
  self.exit(UNKNOWN_ERROR, f"{msg}\n")
@@ -25,7 +25,7 @@ def _rich_progress_bar(
25
25
  iterable: Iterable[bytes],
26
26
  *,
27
27
  bar_type: str,
28
- size: int,
28
+ size: Optional[int],
29
29
  ) -> Generator[bytes, None, None]:
30
30
  assert bar_type == "on", "This should only be used in the default mode."
31
31
 
@@ -176,7 +176,7 @@ class ListCommand(IndexGroupCommand):
176
176
  if options.excludes:
177
177
  skip.update(canonicalize_name(n) for n in options.excludes)
178
178
 
179
- packages: "_ProcessedDists" = [
179
+ packages: _ProcessedDists = [
180
180
  cast("_DistWithLatestInfo", d)
181
181
  for d in get_environment(options.path).iter_installed_distributions(
182
182
  local_only=options.local,
@@ -89,7 +89,7 @@ def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]:
89
89
  packages with the list of versions stored inline. This converts the
90
90
  list from pypi into one we can use.
91
91
  """
92
- packages: Dict[str, "TransformedHit"] = OrderedDict()
92
+ packages: Dict[str, TransformedHit] = OrderedDict()
93
93
  for hit in hits:
94
94
  name = hit["name"]
95
95
  summary = hit["summary"]
@@ -15,6 +15,8 @@ import sys
15
15
  from itertools import chain, groupby, repeat
16
16
  from typing import TYPE_CHECKING, Dict, Iterator, List, Literal, Optional, Union
17
17
 
18
+ from pip._vendor.packaging.requirements import InvalidRequirement
19
+ from pip._vendor.packaging.version import InvalidVersion
18
20
  from pip._vendor.rich.console import Console, ConsoleOptions, RenderResult
19
21
  from pip._vendor.rich.markup import escape
20
22
  from pip._vendor.rich.text import Text
@@ -429,7 +431,7 @@ class HashErrors(InstallationError):
429
431
  """Multiple HashError instances rolled into one for reporting"""
430
432
 
431
433
  def __init__(self) -> None:
432
- self.errors: List["HashError"] = []
434
+ self.errors: List[HashError] = []
433
435
 
434
436
  def append(self, error: "HashError") -> None:
435
437
  self.errors.append(error)
@@ -775,3 +777,33 @@ class LegacyDistutilsInstall(DiagnosticPipError):
775
777
  ),
776
778
  hint_stmt=None,
777
779
  )
780
+
781
+
782
+ class InvalidInstalledPackage(DiagnosticPipError):
783
+ reference = "invalid-installed-package"
784
+
785
+ def __init__(
786
+ self,
787
+ *,
788
+ dist: "BaseDistribution",
789
+ invalid_exc: Union[InvalidRequirement, InvalidVersion],
790
+ ) -> None:
791
+ installed_location = dist.installed_location
792
+
793
+ if isinstance(invalid_exc, InvalidRequirement):
794
+ invalid_type = "requirement"
795
+ else:
796
+ invalid_type = "version"
797
+
798
+ super().__init__(
799
+ message=Text(
800
+ f"Cannot process installed package {dist} "
801
+ + (f"in {installed_location!r} " if installed_location else "")
802
+ + f"because it has an invalid {invalid_type}:\n{invalid_exc.args[0]}"
803
+ ),
804
+ context=(
805
+ "Starting with pip 24.1, packages with invalid "
806
+ f"{invalid_type}s can not be processed."
807
+ ),
808
+ hint_stmt="To proceed this package must be uninstalled.",
809
+ )
@@ -6,7 +6,6 @@ from typing import Callable, Dict, Iterable, List, Optional, Tuple
6
6
 
7
7
  from pip._vendor.packaging.utils import (
8
8
  InvalidSdistFilename,
9
- InvalidVersion,
10
9
  InvalidWheelFilename,
11
10
  canonicalize_name,
12
11
  parse_sdist_filename,
@@ -68,10 +67,10 @@ class _FlatDirectoryToUrls:
68
67
  # otherwise not worth considering as a package
69
68
  try:
70
69
  project_filename = parse_wheel_filename(entry.name)[0]
71
- except (InvalidWheelFilename, InvalidVersion):
70
+ except InvalidWheelFilename:
72
71
  try:
73
72
  project_filename = parse_sdist_filename(entry.name)[0]
74
- except (InvalidSdistFilename, InvalidVersion):
73
+ except InvalidSdistFilename:
75
74
  continue
76
75
 
77
76
  self._project_name_to_urls[project_filename].append(url)
@@ -21,7 +21,7 @@ from distutils.cmd import Command as DistutilsCommand
21
21
  from distutils.command.install import SCHEME_KEYS
22
22
  from distutils.command.install import install as distutils_install_command
23
23
  from distutils.sysconfig import get_python_lib
24
- from typing import Dict, List, Optional, Union, cast
24
+ from typing import Dict, List, Optional, Union
25
25
 
26
26
  from pip._internal.models.scheme import Scheme
27
27
  from pip._internal.utils.compat import WINDOWS
@@ -64,7 +64,7 @@ def distutils_scheme(
64
64
  obj: Optional[DistutilsCommand] = None
65
65
  obj = d.get_command_obj("install", create=True)
66
66
  assert obj is not None
67
- i = cast(distutils_install_command, obj)
67
+ i: distutils_install_command = obj
68
68
  # NOTE: setting user or home has the side-effect of creating the home dir
69
69
  # or user base for installations during finalize_options()
70
70
  # ideally, we'd prefer a scheme class that has no side-effects.
@@ -78,7 +78,7 @@ def distutils_scheme(
78
78
  i.root = root or i.root
79
79
  i.finalize_options()
80
80
 
81
- scheme = {}
81
+ scheme: Dict[str, str] = {}
82
82
  for key in SCHEME_KEYS:
83
83
  scheme[key] = getattr(i, "install_" + key)
84
84
 
@@ -150,7 +150,7 @@ def _emit_egg_deprecation(location: Optional[str]) -> None:
150
150
  deprecated(
151
151
  reason=f"Loading egg at {location} is deprecated.",
152
152
  replacement="to use pip for package installation",
153
- gone_in="24.3",
153
+ gone_in="25.1",
154
154
  issue=12330,
155
155
  )
156
156
 
@@ -6,8 +6,13 @@ import re
6
6
  from typing import Dict, Iterable, List
7
7
 
8
8
  from pip._vendor.packaging.tags import Tag
9
+ from pip._vendor.packaging.utils import (
10
+ InvalidWheelFilename as PackagingInvalidWheelName,
11
+ )
12
+ from pip._vendor.packaging.utils import parse_wheel_filename
9
13
 
10
14
  from pip._internal.exceptions import InvalidWheelFilename
15
+ from pip._internal.utils.deprecation import deprecated
11
16
 
12
17
 
13
18
  class Wheel:
@@ -29,9 +34,29 @@ class Wheel:
29
34
  raise InvalidWheelFilename(f"{filename} is not a valid wheel filename.")
30
35
  self.filename = filename
31
36
  self.name = wheel_info.group("name").replace("_", "-")
32
- # we'll assume "_" means "-" due to wheel naming scheme
33
- # (https://github.com/pypa/pip/issues/1150)
34
- self.version = wheel_info.group("ver").replace("_", "-")
37
+ _version = wheel_info.group("ver")
38
+ if "_" in _version:
39
+ try:
40
+ parse_wheel_filename(filename)
41
+ except PackagingInvalidWheelName as e:
42
+ deprecated(
43
+ reason=(
44
+ f"Wheel filename {filename!r} is not correctly normalised. "
45
+ "Future versions of pip will raise the following error:\n"
46
+ f"{e.args[0]}\n\n"
47
+ ),
48
+ replacement=(
49
+ "to rename the wheel to use a correctly normalised "
50
+ "name (this may require updating the version in "
51
+ "the project metadata)"
52
+ ),
53
+ gone_in="25.1",
54
+ issue=12938,
55
+ )
56
+
57
+ _version = _version.replace("_", "-")
58
+
59
+ self.version = _version
35
60
  self.build_tag = wheel_info.group("build")
36
61
  self.pyversions = wheel_info.group("pyver").split(".")
37
62
  self.abis = wheel_info.group("abi").split(".")
@@ -159,7 +159,7 @@ class LazyZipOverHTTP:
159
159
  try:
160
160
  # For read-only ZIP files, ZipFile only needs
161
161
  # methods read, seek, seekable and tell.
162
- ZipFile(self) # type: ignore
162
+ ZipFile(self)
163
163
  except BadZipFile:
164
164
  pass
165
165
  else:
@@ -80,7 +80,7 @@ def _set_requirement_extras(req: Requirement, new_extras: Set[str]) -> Requireme
80
80
  assert (
81
81
  pre is not None and post is not None
82
82
  ), f"regex group selection for requirement {req} failed, this should never happen"
83
- extras: str = "[%s]" % ",".join(sorted(new_extras)) if new_extras else ""
83
+ extras: str = "[{}]".format(",".join(sorted(new_extras)) if new_extras else "")
84
84
  return get_requirement(f"{pre}{extras}{post}")
85
85
 
86
86
 
@@ -324,11 +324,15 @@ class RequirementsFileParser:
324
324
  ) -> None:
325
325
  self._session = session
326
326
  self._line_parser = line_parser
327
+ self._parsed_files: dict[str, Optional[str]] = {}
327
328
 
328
329
  def parse(
329
330
  self, filename: str, constraint: bool
330
331
  ) -> Generator[ParsedLine, None, None]:
331
332
  """Parse a given file, yielding parsed lines."""
333
+ self._parsed_files[os.path.abspath(filename)] = (
334
+ None # The primary requirements file passed
335
+ )
332
336
  yield from self._parse_and_recurse(filename, constraint)
333
337
 
334
338
  def _parse_and_recurse(
@@ -353,11 +357,25 @@ class RequirementsFileParser:
353
357
  # original file and nested file are paths
354
358
  elif not SCHEME_RE.search(req_path):
355
359
  # do a join so relative paths work
356
- req_path = os.path.join(
357
- os.path.dirname(filename),
358
- req_path,
360
+ # and then abspath so that we can identify recursive references
361
+ req_path = os.path.abspath(
362
+ os.path.join(
363
+ os.path.dirname(filename),
364
+ req_path,
365
+ )
359
366
  )
360
-
367
+ if req_path in self._parsed_files:
368
+ initial_file = self._parsed_files[req_path]
369
+ tail = (
370
+ f" and again in {initial_file}"
371
+ if initial_file is not None
372
+ else ""
373
+ )
374
+ raise RequirementsFileParseError(
375
+ f"{req_path} recursively references itself in {filename}{tail}"
376
+ )
377
+ # Keeping a track where was each file first included in
378
+ self._parsed_files[req_path] = filename
361
379
  yield from self._parse_and_recurse(req_path, nested_constraint)
362
380
  else:
363
381
  yield line
@@ -9,6 +9,7 @@ from pip._vendor.packaging.version import Version
9
9
  from pip._internal.exceptions import (
10
10
  HashError,
11
11
  InstallationSubprocessError,
12
+ InvalidInstalledPackage,
12
13
  MetadataInconsistent,
13
14
  MetadataInvalid,
14
15
  )
@@ -398,8 +399,12 @@ class AlreadyInstalledCandidate(Candidate):
398
399
  def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]:
399
400
  if not with_requires:
400
401
  return
401
- for r in self.dist.iter_dependencies():
402
- yield from self._factory.make_requirements_from_spec(str(r), self._ireq)
402
+
403
+ try:
404
+ for r in self.dist.iter_dependencies():
405
+ yield from self._factory.make_requirements_from_spec(str(r), self._ireq)
406
+ except InvalidRequirement as exc:
407
+ raise InvalidInstalledPackage(dist=self.dist, invalid_exc=exc) from None
403
408
 
404
409
  def get_install_requirement(self) -> Optional[InstallRequirement]:
405
410
  return None
@@ -23,13 +23,14 @@ from typing import (
23
23
  from pip._vendor.packaging.requirements import InvalidRequirement
24
24
  from pip._vendor.packaging.specifiers import SpecifierSet
25
25
  from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
26
- from pip._vendor.packaging.version import Version
26
+ from pip._vendor.packaging.version import InvalidVersion, Version
27
27
  from pip._vendor.resolvelib import ResolutionImpossible
28
28
 
29
29
  from pip._internal.cache import CacheEntry, WheelCache
30
30
  from pip._internal.exceptions import (
31
31
  DistributionNotFound,
32
32
  InstallationError,
33
+ InvalidInstalledPackage,
33
34
  MetadataInconsistent,
34
35
  MetadataInvalid,
35
36
  UnsupportedPythonVersion,
@@ -283,10 +284,15 @@ class Factory:
283
284
  installed_dist = self._installed_dists[name]
284
285
  except KeyError:
285
286
  return None
286
- # Don't use the installed distribution if its version does not fit
287
- # the current dependency graph.
288
- if not specifier.contains(installed_dist.version, prereleases=True):
289
- return None
287
+
288
+ try:
289
+ # Don't use the installed distribution if its version
290
+ # does not fit the current dependency graph.
291
+ if not specifier.contains(installed_dist.version, prereleases=True):
292
+ return None
293
+ except InvalidVersion as e:
294
+ raise InvalidInstalledPackage(dist=installed_dist, invalid_exc=e)
295
+
290
296
  candidate = self._make_candidate_from_dist(
291
297
  dist=installed_dist,
292
298
  extras=extras,
@@ -12,10 +12,11 @@ from pip._vendor.packaging.tags import (
12
12
  generic_tags,
13
13
  interpreter_name,
14
14
  interpreter_version,
15
+ ios_platforms,
15
16
  mac_platforms,
16
17
  )
17
18
 
18
- _osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)")
19
+ _apple_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)")
19
20
 
20
21
 
21
22
  def version_info_to_nodot(version_info: Tuple[int, ...]) -> str:
@@ -24,7 +25,7 @@ def version_info_to_nodot(version_info: Tuple[int, ...]) -> str:
24
25
 
25
26
 
26
27
  def _mac_platforms(arch: str) -> List[str]:
27
- match = _osx_arch_pat.match(arch)
28
+ match = _apple_arch_pat.match(arch)
28
29
  if match:
29
30
  name, major, minor, actual_arch = match.groups()
30
31
  mac_version = (int(major), int(minor))
@@ -43,6 +44,26 @@ def _mac_platforms(arch: str) -> List[str]:
43
44
  return arches
44
45
 
45
46
 
47
+ def _ios_platforms(arch: str) -> List[str]:
48
+ match = _apple_arch_pat.match(arch)
49
+ if match:
50
+ name, major, minor, actual_multiarch = match.groups()
51
+ ios_version = (int(major), int(minor))
52
+ arches = [
53
+ # Since we have always only checked that the platform starts
54
+ # with "ios", for backwards-compatibility we extract the
55
+ # actual prefix provided by the user in case they provided
56
+ # something like "ioscustom_". It may be good to remove
57
+ # this as undocumented or deprecate it in the future.
58
+ "{}_{}".format(name, arch[len("ios_") :])
59
+ for arch in ios_platforms(ios_version, actual_multiarch)
60
+ ]
61
+ else:
62
+ # arch pattern didn't match (?!)
63
+ arches = [arch]
64
+ return arches
65
+
66
+
46
67
  def _custom_manylinux_platforms(arch: str) -> List[str]:
47
68
  arches = [arch]
48
69
  arch_prefix, arch_sep, arch_suffix = arch.partition("_")
@@ -68,6 +89,8 @@ def _get_custom_platforms(arch: str) -> List[str]:
68
89
  arch_prefix, arch_sep, arch_suffix = arch.partition("_")
69
90
  if arch.startswith("macosx"):
70
91
  arches = _mac_platforms(arch)
92
+ elif arch.startswith("ios"):
93
+ arches = _ios_platforms(arch)
71
94
  elif arch_prefix in ["manylinux2014", "manylinux2010"]:
72
95
  arches = _custom_manylinux_platforms(arch)
73
96
  else: