pip 25.1__py3-none-any.whl → 25.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. pip/__init__.py +3 -3
  2. pip/_internal/__init__.py +2 -2
  3. pip/_internal/build_env.py +118 -94
  4. pip/_internal/cache.py +16 -14
  5. pip/_internal/cli/autocompletion.py +13 -4
  6. pip/_internal/cli/base_command.py +18 -7
  7. pip/_internal/cli/cmdoptions.py +14 -9
  8. pip/_internal/cli/command_context.py +4 -3
  9. pip/_internal/cli/index_command.py +11 -9
  10. pip/_internal/cli/main.py +3 -2
  11. pip/_internal/cli/main_parser.py +4 -3
  12. pip/_internal/cli/parser.py +26 -22
  13. pip/_internal/cli/progress_bars.py +19 -12
  14. pip/_internal/cli/req_command.py +16 -12
  15. pip/_internal/cli/spinners.py +81 -5
  16. pip/_internal/commands/__init__.py +5 -3
  17. pip/_internal/commands/cache.py +18 -15
  18. pip/_internal/commands/check.py +1 -2
  19. pip/_internal/commands/completion.py +1 -2
  20. pip/_internal/commands/configuration.py +26 -18
  21. pip/_internal/commands/debug.py +8 -6
  22. pip/_internal/commands/download.py +2 -3
  23. pip/_internal/commands/freeze.py +2 -3
  24. pip/_internal/commands/hash.py +1 -2
  25. pip/_internal/commands/help.py +1 -2
  26. pip/_internal/commands/index.py +15 -9
  27. pip/_internal/commands/inspect.py +4 -4
  28. pip/_internal/commands/install.py +45 -40
  29. pip/_internal/commands/list.py +35 -26
  30. pip/_internal/commands/lock.py +1 -2
  31. pip/_internal/commands/search.py +14 -12
  32. pip/_internal/commands/show.py +14 -11
  33. pip/_internal/commands/uninstall.py +1 -2
  34. pip/_internal/commands/wheel.py +2 -3
  35. pip/_internal/configuration.py +39 -25
  36. pip/_internal/distributions/base.py +6 -4
  37. pip/_internal/distributions/installed.py +8 -4
  38. pip/_internal/distributions/sdist.py +20 -13
  39. pip/_internal/distributions/wheel.py +6 -4
  40. pip/_internal/exceptions.py +58 -39
  41. pip/_internal/index/collector.py +24 -29
  42. pip/_internal/index/package_finder.py +70 -61
  43. pip/_internal/index/sources.py +17 -14
  44. pip/_internal/locations/__init__.py +18 -16
  45. pip/_internal/locations/_distutils.py +12 -11
  46. pip/_internal/locations/_sysconfig.py +5 -4
  47. pip/_internal/locations/base.py +4 -3
  48. pip/_internal/main.py +2 -2
  49. pip/_internal/metadata/__init__.py +8 -6
  50. pip/_internal/metadata/_json.py +5 -4
  51. pip/_internal/metadata/base.py +22 -27
  52. pip/_internal/metadata/importlib/_compat.py +6 -4
  53. pip/_internal/metadata/importlib/_dists.py +12 -17
  54. pip/_internal/metadata/importlib/_envs.py +9 -6
  55. pip/_internal/metadata/pkg_resources.py +11 -14
  56. pip/_internal/models/direct_url.py +24 -21
  57. pip/_internal/models/format_control.py +5 -5
  58. pip/_internal/models/installation_report.py +4 -3
  59. pip/_internal/models/link.py +39 -34
  60. pip/_internal/models/pylock.py +27 -22
  61. pip/_internal/models/search_scope.py +6 -7
  62. pip/_internal/models/selection_prefs.py +3 -3
  63. pip/_internal/models/target_python.py +10 -9
  64. pip/_internal/models/wheel.py +7 -5
  65. pip/_internal/network/auth.py +20 -22
  66. pip/_internal/network/cache.py +22 -6
  67. pip/_internal/network/download.py +169 -141
  68. pip/_internal/network/lazy_wheel.py +10 -7
  69. pip/_internal/network/session.py +32 -27
  70. pip/_internal/network/utils.py +2 -2
  71. pip/_internal/network/xmlrpc.py +2 -2
  72. pip/_internal/operations/build/build_tracker.py +10 -8
  73. pip/_internal/operations/build/wheel.py +3 -2
  74. pip/_internal/operations/build/wheel_editable.py +3 -2
  75. pip/_internal/operations/build/wheel_legacy.py +9 -8
  76. pip/_internal/operations/check.py +21 -26
  77. pip/_internal/operations/freeze.py +12 -9
  78. pip/_internal/operations/install/editable_legacy.py +5 -3
  79. pip/_internal/operations/install/wheel.py +53 -44
  80. pip/_internal/operations/prepare.py +35 -30
  81. pip/_internal/pyproject.py +7 -10
  82. pip/_internal/req/__init__.py +12 -10
  83. pip/_internal/req/constructors.py +33 -31
  84. pip/_internal/req/req_dependency_group.py +9 -8
  85. pip/_internal/req/req_file.py +32 -35
  86. pip/_internal/req/req_install.py +37 -34
  87. pip/_internal/req/req_set.py +4 -5
  88. pip/_internal/req/req_uninstall.py +20 -17
  89. pip/_internal/resolution/base.py +3 -3
  90. pip/_internal/resolution/legacy/resolver.py +21 -20
  91. pip/_internal/resolution/resolvelib/base.py +16 -13
  92. pip/_internal/resolution/resolvelib/candidates.py +29 -26
  93. pip/_internal/resolution/resolvelib/factory.py +41 -50
  94. pip/_internal/resolution/resolvelib/found_candidates.py +11 -9
  95. pip/_internal/resolution/resolvelib/provider.py +15 -20
  96. pip/_internal/resolution/resolvelib/reporter.py +5 -3
  97. pip/_internal/resolution/resolvelib/requirements.py +8 -6
  98. pip/_internal/resolution/resolvelib/resolver.py +39 -23
  99. pip/_internal/self_outdated_check.py +8 -6
  100. pip/_internal/utils/appdirs.py +1 -2
  101. pip/_internal/utils/compat.py +7 -1
  102. pip/_internal/utils/compatibility_tags.py +17 -16
  103. pip/_internal/utils/deprecation.py +11 -9
  104. pip/_internal/utils/direct_url_helpers.py +2 -2
  105. pip/_internal/utils/egg_link.py +6 -5
  106. pip/_internal/utils/entrypoints.py +3 -2
  107. pip/_internal/utils/filesystem.py +8 -5
  108. pip/_internal/utils/filetypes.py +4 -6
  109. pip/_internal/utils/glibc.py +6 -5
  110. pip/_internal/utils/hashes.py +9 -6
  111. pip/_internal/utils/logging.py +8 -5
  112. pip/_internal/utils/misc.py +54 -44
  113. pip/_internal/utils/packaging.py +3 -2
  114. pip/_internal/utils/retry.py +7 -4
  115. pip/_internal/utils/setuptools_build.py +12 -10
  116. pip/_internal/utils/subprocess.py +20 -17
  117. pip/_internal/utils/temp_dir.py +10 -12
  118. pip/_internal/utils/unpacking.py +6 -4
  119. pip/_internal/utils/urls.py +1 -1
  120. pip/_internal/utils/virtualenv.py +3 -2
  121. pip/_internal/utils/wheel.py +3 -4
  122. pip/_internal/vcs/bazaar.py +26 -8
  123. pip/_internal/vcs/git.py +59 -24
  124. pip/_internal/vcs/mercurial.py +34 -11
  125. pip/_internal/vcs/subversion.py +27 -16
  126. pip/_internal/vcs/versioncontrol.py +56 -51
  127. pip/_internal/wheel_builder.py +14 -12
  128. pip/_vendor/cachecontrol/__init__.py +1 -1
  129. pip/_vendor/certifi/__init__.py +1 -1
  130. pip/_vendor/certifi/cacert.pem +102 -221
  131. pip/_vendor/certifi/core.py +1 -32
  132. pip/_vendor/dependency_groups/_implementation.py +7 -11
  133. pip/_vendor/distlib/__init__.py +2 -2
  134. pip/_vendor/distlib/scripts.py +1 -1
  135. pip/_vendor/msgpack/__init__.py +2 -2
  136. pip/_vendor/pkg_resources/__init__.py +1 -1
  137. pip/_vendor/platformdirs/version.py +2 -2
  138. pip/_vendor/pygments/__init__.py +1 -1
  139. pip/_vendor/requests/__version__.py +2 -2
  140. pip/_vendor/requests/compat.py +12 -0
  141. pip/_vendor/requests/models.py +3 -1
  142. pip/_vendor/requests/utils.py +6 -16
  143. pip/_vendor/resolvelib/__init__.py +3 -3
  144. pip/_vendor/resolvelib/reporters.py +1 -1
  145. pip/_vendor/resolvelib/resolvers/__init__.py +4 -4
  146. pip/_vendor/resolvelib/resolvers/resolution.py +91 -10
  147. pip/_vendor/rich/__main__.py +12 -40
  148. pip/_vendor/rich/_inspect.py +1 -1
  149. pip/_vendor/rich/_ratio.py +1 -7
  150. pip/_vendor/rich/align.py +1 -7
  151. pip/_vendor/rich/box.py +1 -7
  152. pip/_vendor/rich/console.py +25 -20
  153. pip/_vendor/rich/control.py +1 -7
  154. pip/_vendor/rich/diagnose.py +1 -0
  155. pip/_vendor/rich/emoji.py +1 -6
  156. pip/_vendor/rich/live.py +32 -7
  157. pip/_vendor/rich/live_render.py +1 -7
  158. pip/_vendor/rich/logging.py +1 -1
  159. pip/_vendor/rich/panel.py +3 -4
  160. pip/_vendor/rich/progress.py +15 -15
  161. pip/_vendor/rich/spinner.py +7 -13
  162. pip/_vendor/rich/syntax.py +24 -5
  163. pip/_vendor/rich/traceback.py +32 -17
  164. pip/_vendor/truststore/_api.py +1 -1
  165. pip/_vendor/vendor.txt +10 -11
  166. {pip-25.1.dist-info → pip-25.2.dist-info}/METADATA +26 -4
  167. {pip-25.1.dist-info → pip-25.2.dist-info}/RECORD +194 -181
  168. {pip-25.1.dist-info → pip-25.2.dist-info}/WHEEL +1 -1
  169. {pip-25.1.dist-info → pip-25.2.dist-info}/licenses/AUTHORS.txt +12 -0
  170. pip-25.2.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  171. pip-25.2.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
  172. pip-25.2.dist-info/licenses/src/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  173. pip-25.2.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
  174. pip-25.2.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
  175. pip-25.2.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
  176. pip-25.2.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
  177. pip-25.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
  178. pip-25.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  179. pip-25.2.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
  180. pip-25.2.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
  181. pip-25.2.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
  182. pip-25.2.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
  183. pip-25.2.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  184. pip-25.2.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
  185. pip-25.2.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
  186. pip-25.2.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
  187. pip-25.2.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
  188. pip-25.2.dist-info/licenses/src/pip/_vendor/tomli/LICENSE-HEADER +3 -0
  189. pip-25.2.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
  190. pip-25.2.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
  191. pip-25.2.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
  192. pip/_vendor/distlib/database.py +0 -1329
  193. pip/_vendor/distlib/index.py +0 -508
  194. pip/_vendor/distlib/locators.py +0 -1295
  195. pip/_vendor/distlib/manifest.py +0 -384
  196. pip/_vendor/distlib/markers.py +0 -162
  197. pip/_vendor/distlib/metadata.py +0 -1031
  198. pip/_vendor/distlib/version.py +0 -750
  199. pip/_vendor/distlib/wheel.py +0 -1100
  200. pip/_vendor/typing_extensions.py +0 -4584
  201. {pip-25.1.dist-info → pip-25.2.dist-info}/entry_points.txt +0 -0
  202. {pip-25.1.dist-info → pip-25.2.dist-info}/licenses/LICENSE.txt +0 -0
  203. {pip-25.1.dist-info → pip-25.2.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- from typing import cast, List, Optional, TYPE_CHECKING, Union
1
+ from typing import TYPE_CHECKING, List, Optional, Union, cast
2
2
 
3
3
  from ._spinners import SPINNERS
4
4
  from .measure import Measurement
@@ -6,7 +6,7 @@ from .table import Table
6
6
  from .text import Text
7
7
 
8
8
  if TYPE_CHECKING:
9
- from .console import Console, ConsoleOptions, RenderResult, RenderableType
9
+ from .console import Console, ConsoleOptions, RenderableType, RenderResult
10
10
  from .style import StyleType
11
11
 
12
12
 
@@ -117,22 +117,16 @@ class Spinner:
117
117
  if __name__ == "__main__": # pragma: no cover
118
118
  from time import sleep
119
119
 
120
- from .columns import Columns
121
- from .panel import Panel
120
+ from .console import Group
122
121
  from .live import Live
123
122
 
124
- all_spinners = Columns(
125
- [
123
+ all_spinners = Group(
124
+ *[
126
125
  Spinner(spinner_name, text=Text(repr(spinner_name), style="green"))
127
126
  for spinner_name in sorted(SPINNERS.keys())
128
- ],
129
- column_first=True,
130
- expand=True,
127
+ ]
131
128
  )
132
129
 
133
- with Live(
134
- Panel(all_spinners, title="Spinners", border_style="blue"),
135
- refresh_per_second=20,
136
- ) as live:
130
+ with Live(all_spinners, refresh_per_second=20) as live:
137
131
  while True:
138
132
  sleep(0.1)
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import os.path
2
4
  import re
3
5
  import sys
@@ -224,6 +226,17 @@ class _SyntaxHighlightRange(NamedTuple):
224
226
  style_before: bool = False
225
227
 
226
228
 
229
+ class PaddingProperty:
230
+ """Descriptor to get and set padding."""
231
+
232
+ def __get__(self, obj: Syntax, objtype: Type[Syntax]) -> Tuple[int, int, int, int]:
233
+ """Space around the Syntax."""
234
+ return obj._padding
235
+
236
+ def __set__(self, obj: Syntax, padding: PaddingDimensions) -> None:
237
+ obj._padding = Padding.unpack(padding)
238
+
239
+
227
240
  class Syntax(JupyterMixin):
228
241
  """Construct a Syntax object to render syntax highlighted code.
229
242
 
@@ -293,11 +306,13 @@ class Syntax(JupyterMixin):
293
306
  Style(bgcolor=background_color) if background_color else Style()
294
307
  )
295
308
  self.indent_guides = indent_guides
296
- self.padding = padding
309
+ self._padding = Padding.unpack(padding)
297
310
 
298
311
  self._theme = self.get_theme(theme)
299
312
  self._stylized_ranges: List[_SyntaxHighlightRange] = []
300
313
 
314
+ padding = PaddingProperty()
315
+
301
316
  @classmethod
302
317
  def from_path(
303
318
  cls,
@@ -371,8 +386,8 @@ class Syntax(JupyterMixin):
371
386
  is supplied, the lexer will be chosen based on the file extension..
372
387
 
373
388
  Args:
374
- path (AnyStr): The path to the file containing the code you wish to know the lexer for.
375
- code (str, optional): Optional string of code that will be used as a fallback if no lexer
389
+ path (AnyStr): The path to the file containing the code you wish to know the lexer for.
390
+ code (str, optional): Optional string of code that will be used as a fallback if no lexer
376
391
  is found for the supplied path.
377
392
 
378
393
  Returns:
@@ -607,7 +622,7 @@ class Syntax(JupyterMixin):
607
622
  def __rich_measure__(
608
623
  self, console: "Console", options: "ConsoleOptions"
609
624
  ) -> "Measurement":
610
- _, right, _, left = Padding.unpack(self.padding)
625
+ _, right, _, left = self.padding
611
626
  padding = left + right
612
627
  if self.code_width is not None:
613
628
  width = self.code_width + self._numbers_column_width + padding + 1
@@ -626,7 +641,7 @@ class Syntax(JupyterMixin):
626
641
  self, console: Console, options: ConsoleOptions
627
642
  ) -> RenderResult:
628
643
  segments = Segments(self._get_syntax(console, options))
629
- if self.padding:
644
+ if any(self.padding):
630
645
  yield Padding(segments, style=self._get_base_style(), pad=self.padding)
631
646
  else:
632
647
  yield segments
@@ -640,15 +655,19 @@ class Syntax(JupyterMixin):
640
655
  Get the Segments for the Syntax object, excluding any vertical/horizontal padding
641
656
  """
642
657
  transparent_background = self._get_base_style().transparent_background
658
+ _pad_top, pad_right, _pad_bottom, pad_left = self.padding
659
+ horizontal_padding = pad_left + pad_right
643
660
  code_width = (
644
661
  (
645
662
  (options.max_width - self._numbers_column_width - 1)
646
663
  if self.line_numbers
647
664
  else options.max_width
648
665
  )
666
+ - horizontal_padding
649
667
  if self.code_width is None
650
668
  else self.code_width
651
669
  )
670
+ code_width = max(0, code_width)
652
671
 
653
672
  ends_on_nl, processed_code = self._process_code(self.code)
654
673
  text = self.highlight(processed_code, self.line_range)
@@ -14,6 +14,7 @@ from typing import (
14
14
  List,
15
15
  Optional,
16
16
  Sequence,
17
+ Set,
17
18
  Tuple,
18
19
  Type,
19
20
  Union,
@@ -177,7 +178,9 @@ def install(
177
178
 
178
179
  # determine correct tb_offset
179
180
  compiled = tb_data.get("running_compiled_code", False)
180
- tb_offset = tb_data.get("tb_offset", 1 if compiled else 0)
181
+ tb_offset = tb_data.get("tb_offset")
182
+ if tb_offset is None:
183
+ tb_offset = 1 if compiled else 0
181
184
  # remove ipython internal frames from trace with tb_offset
182
185
  for _ in range(tb_offset):
183
186
  if tb is None:
@@ -418,6 +421,7 @@ class Traceback:
418
421
  locals_max_string: int = LOCALS_MAX_STRING,
419
422
  locals_hide_dunder: bool = True,
420
423
  locals_hide_sunder: bool = False,
424
+ _visited_exceptions: Optional[Set[BaseException]] = None,
421
425
  ) -> Trace:
422
426
  """Extract traceback information.
423
427
 
@@ -443,6 +447,10 @@ class Traceback:
443
447
 
444
448
  notes: List[str] = getattr(exc_value, "__notes__", None) or []
445
449
 
450
+ grouped_exceptions: Set[BaseException] = (
451
+ set() if _visited_exceptions is None else _visited_exceptions
452
+ )
453
+
446
454
  def safe_str(_object: Any) -> str:
447
455
  """Don't allow exceptions from __str__ to propagate."""
448
456
  try:
@@ -462,6 +470,9 @@ class Traceback:
462
470
  if isinstance(exc_value, (BaseExceptionGroup, ExceptionGroup)):
463
471
  stack.is_group = True
464
472
  for exception in exc_value.exceptions:
473
+ if exception in grouped_exceptions:
474
+ continue
475
+ grouped_exceptions.add(exception)
465
476
  stack.exceptions.append(
466
477
  Traceback.extract(
467
478
  type(exception),
@@ -471,6 +482,7 @@ class Traceback:
471
482
  locals_max_length=locals_max_length,
472
483
  locals_hide_dunder=locals_hide_dunder,
473
484
  locals_hide_sunder=locals_hide_sunder,
485
+ _visited_exceptions=grouped_exceptions,
474
486
  )
475
487
  )
476
488
 
@@ -561,23 +573,26 @@ class Traceback:
561
573
  if frame_summary.f_locals.get("_rich_traceback_guard", False):
562
574
  del stack.frames[:]
563
575
 
564
- cause = getattr(exc_value, "__cause__", None)
565
- if cause:
566
- exc_type = cause.__class__
567
- exc_value = cause
568
- # __traceback__ can be None, e.g. for exceptions raised by the
569
- # 'multiprocessing' module
570
- traceback = cause.__traceback__
571
- is_cause = True
572
- continue
576
+ if not grouped_exceptions:
577
+ cause = getattr(exc_value, "__cause__", None)
578
+ if cause is not None and cause is not exc_value:
579
+ exc_type = cause.__class__
580
+ exc_value = cause
581
+ # __traceback__ can be None, e.g. for exceptions raised by the
582
+ # 'multiprocessing' module
583
+ traceback = cause.__traceback__
584
+ is_cause = True
585
+ continue
573
586
 
574
- cause = exc_value.__context__
575
- if cause and not getattr(exc_value, "__suppress_context__", False):
576
- exc_type = cause.__class__
577
- exc_value = cause
578
- traceback = cause.__traceback__
579
- is_cause = False
580
- continue
587
+ cause = exc_value.__context__
588
+ if cause is not None and not getattr(
589
+ exc_value, "__suppress_context__", False
590
+ ):
591
+ exc_type = cause.__class__
592
+ exc_value = cause
593
+ traceback = cause.__traceback__
594
+ is_cause = False
595
+ continue
581
596
  # No cover, code is reached but coverage doesn't recognize it.
582
597
  break # pragma: no cover
583
598
 
@@ -22,7 +22,7 @@ else:
22
22
  from ._openssl import _configure_context, _verify_peercerts_impl
23
23
 
24
24
  if typing.TYPE_CHECKING:
25
- from pip._vendor.typing_extensions import Buffer
25
+ from typing_extensions import Buffer
26
26
 
27
27
  # From typeshed/stdlib/ssl.pyi
28
28
  _StrOrBytesPath: typing.TypeAlias = str | bytes | os.PathLike[str] | os.PathLike[bytes]
pip/_vendor/vendor.txt CHANGED
@@ -1,20 +1,19 @@
1
- CacheControl==0.14.2
2
- distlib==0.3.9
1
+ CacheControl==0.14.3
2
+ distlib==0.4.0
3
3
  distro==1.9.0
4
- msgpack==1.1.0
4
+ msgpack==1.1.1
5
5
  packaging==25.0
6
- platformdirs==4.3.7
6
+ platformdirs==4.3.8
7
7
  pyproject-hooks==1.2.0
8
- requests==2.32.3
9
- certifi==2025.1.31
8
+ requests==2.32.4
9
+ certifi==2025.7.14
10
10
  idna==3.10
11
11
  urllib3==1.26.20
12
- rich==14.0.0
13
- pygments==2.19.1
14
- typing_extensions==4.13.2
15
- resolvelib==1.1.0
12
+ rich==14.1.0
13
+ pygments==2.19.2
14
+ resolvelib==1.2.0
16
15
  setuptools==70.3.0
17
16
  tomli==2.2.1
18
17
  tomli-w==1.2.0
19
18
  truststore==0.10.1
20
- dependency-groups==1.3.0
19
+ dependency-groups==1.3.1
@@ -1,16 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pip
3
- Version: 25.1
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