pex 2.59.1__py2.py3-none-any.whl → 2.59.3__py2.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.

Potentially problematic release.


This version of pex might be problematic. Click here for more details.

Files changed (40) hide show
  1. pex/cli/commands/lock.py +126 -101
  2. pex/docs/html/_pagefind/fragment/en_1ba1105.pf_fragment +0 -0
  3. pex/docs/html/_pagefind/fragment/en_44f43ef.pf_fragment +0 -0
  4. pex/docs/html/_pagefind/fragment/en_632829c.pf_fragment +0 -0
  5. pex/docs/html/_pagefind/fragment/en_69aa49c.pf_fragment +0 -0
  6. pex/docs/html/_pagefind/fragment/en_8dd77f4.pf_fragment +0 -0
  7. pex/docs/html/_pagefind/fragment/en_b4ba902.pf_fragment +0 -0
  8. pex/docs/html/_pagefind/fragment/en_cdf12df.pf_fragment +0 -0
  9. pex/docs/html/_pagefind/fragment/en_f3c1826.pf_fragment +0 -0
  10. pex/docs/html/_pagefind/index/{en_106262d.pf_index → en_401edef.pf_index} +0 -0
  11. pex/docs/html/_pagefind/pagefind-entry.json +1 -1
  12. pex/docs/html/_pagefind/pagefind.en_1fbf4014cc.pf_meta +0 -0
  13. pex/docs/html/_static/documentation_options.js +1 -1
  14. pex/docs/html/api/vars.html +5 -5
  15. pex/docs/html/buildingpex.html +5 -5
  16. pex/docs/html/genindex.html +5 -5
  17. pex/docs/html/index.html +5 -5
  18. pex/docs/html/recipes.html +5 -5
  19. pex/docs/html/scie.html +5 -5
  20. pex/docs/html/search.html +5 -5
  21. pex/docs/html/whatispex.html +5 -5
  22. pex/resolve/target_system.py +11 -18
  23. pex/version.py +1 -1
  24. pex/wheel.py +10 -1
  25. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/METADATA +4 -4
  26. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/RECORD +31 -31
  27. pex/docs/html/_pagefind/fragment/en_1664623.pf_fragment +0 -0
  28. pex/docs/html/_pagefind/fragment/en_1ebfe82.pf_fragment +0 -0
  29. pex/docs/html/_pagefind/fragment/en_368bf05.pf_fragment +0 -0
  30. pex/docs/html/_pagefind/fragment/en_389a79a.pf_fragment +0 -0
  31. pex/docs/html/_pagefind/fragment/en_4c5cc0e.pf_fragment +0 -0
  32. pex/docs/html/_pagefind/fragment/en_92da226.pf_fragment +0 -0
  33. pex/docs/html/_pagefind/fragment/en_b99d99b.pf_fragment +0 -0
  34. pex/docs/html/_pagefind/fragment/en_eccd471.pf_fragment +0 -0
  35. pex/docs/html/_pagefind/pagefind.en_1c6ca7a059.pf_meta +0 -0
  36. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/WHEEL +0 -0
  37. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/entry_points.txt +0 -0
  38. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/licenses/LICENSE +0 -0
  39. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/pylock/pylock.toml +0 -0
  40. {pex-2.59.1.dist-info → pex-2.59.3.dist-info}/top_level.txt +0 -0
pex/cli/commands/lock.py CHANGED
@@ -76,7 +76,7 @@ from pex.resolve.resolver_options import parse_lockfile
76
76
  from pex.resolve.resolvers import Resolver
77
77
  from pex.resolve.script_metadata import ScriptMetadataApplication, apply_script_metadata
78
78
  from pex.resolve.target_configuration import InterpreterConstraintsNotSatisfied, TargetConfiguration
79
- from pex.resolve.target_system import TargetSystem
79
+ from pex.resolve.target_system import TargetSystem, UniversalTarget
80
80
  from pex.result import Error, Ok, Result, try_
81
81
  from pex.sorted_tuple import SortedTuple
82
82
  from pex.targets import LocalInterpreter, Target, Targets
@@ -535,6 +535,110 @@ class RootRequirements(object):
535
535
  return iter(self._root_requirements)
536
536
 
537
537
 
538
+ def subset_locked_resolve(
539
+ locked_resolve, # type: LockedResolve
540
+ root_requirements, # type: RootRequirements
541
+ constraint_by_project_name, # type: Mapping[ProjectName, Constraint]
542
+ lock_file_description, # type: str
543
+ universal_target=None, # type: Optional[UniversalTarget]
544
+ ):
545
+ # type: (...) -> Union[LockedResolve, Error]
546
+
547
+ available = {
548
+ locked_req.pin.project_name: (
549
+ ProjectNameAndVersion(locked_req.pin.project_name.raw, locked_req.pin.version.raw),
550
+ locked_req,
551
+ )
552
+ for locked_req in locked_resolve.locked_requirements
553
+ }
554
+ retain = set()
555
+ to_resolve = deque(root_requirements) # type: Deque[Union[RootRequirement, Requirement]]
556
+ while to_resolve:
557
+ req = to_resolve.popleft()
558
+ if req.project_name in retain:
559
+ continue
560
+ retain.add(req.project_name)
561
+
562
+ dep = available.get(req.project_name)
563
+ if not dep:
564
+ return Error(
565
+ "There is no lock entry for {project} in {lock_file} to satisfy the "
566
+ "{transitive}{req} requirement.".format(
567
+ project=req.project_name,
568
+ lock_file=lock_file_description,
569
+ transitive="" if isinstance(req, RootRequirement) else "transitive ",
570
+ req=(req if isinstance(req, RootRequirement) else "'{req}'".format(req=req)),
571
+ )
572
+ )
573
+
574
+ pnav, locked_req = dep
575
+ if isinstance(req, RootRequirement):
576
+ reqs = req.select(pnav)
577
+ if not reqs:
578
+ return Error(
579
+ "The locked version of {project} in {lock_file} is {version} which "
580
+ "does not satisfy the {req} requirement.".format(
581
+ project=pnav.project_name,
582
+ lock_file=lock_file_description,
583
+ version=pnav.version,
584
+ req=req,
585
+ )
586
+ )
587
+ elif pnav not in req:
588
+ production_assert(
589
+ isinstance(req, RootRequirement),
590
+ "Transitive requirements in a lock should always match existing lock "
591
+ "entries. Found {project} {version} in {lock_file}, which does not satisfy "
592
+ "transitive requirement '{req}' found in the same lock.",
593
+ project=pnav.project_name,
594
+ version=pnav.version,
595
+ lock_file=lock_file_description,
596
+ req=req,
597
+ )
598
+ return Error(
599
+ "The locked version of {project} in {lock_file} is {version} which does "
600
+ "not satisfy the '{req}' requirement.".format(
601
+ project=pnav.project_name,
602
+ lock_file=lock_file_description,
603
+ version=pnav.version,
604
+ req=req,
605
+ )
606
+ )
607
+ elif (
608
+ req.project_name in constraint_by_project_name
609
+ and pnav not in constraint_by_project_name[req.project_name]
610
+ ):
611
+ return Error(
612
+ "The locked version of {project} in {lock_file} is {version} which does "
613
+ "not satisfy the '{constraint}' constraint.".format(
614
+ project=pnav.project_name,
615
+ lock_file=lock_file_description,
616
+ version=pnav.version,
617
+ constraint=constraint_by_project_name[req.project_name],
618
+ )
619
+ )
620
+ else:
621
+ reqs = (req,)
622
+
623
+ for req in reqs:
624
+ to_resolve.extend(
625
+ requires_dist.filter_dependencies(
626
+ req,
627
+ locked_req,
628
+ universal_target=universal_target,
629
+ )
630
+ )
631
+
632
+ return attr.evolve(
633
+ locked_resolve,
634
+ locked_requirements=SortedTuple(
635
+ locked_requirement
636
+ for locked_requirement in locked_resolve.locked_requirements
637
+ if locked_requirement.pin.project_name in retain
638
+ ),
639
+ )
640
+
641
+
538
642
  class Lock(OutputMixin, JsonMixin, BuildTimeCommand):
539
643
  """Operate on PEX lock files."""
540
644
 
@@ -1587,6 +1691,7 @@ class Lock(OutputMixin, JsonMixin, BuildTimeCommand):
1587
1691
  )
1588
1692
 
1589
1693
  resolve_subsets = [] # type: List[LockedResolve]
1694
+ errors = [] # type: List[Error]
1590
1695
  for index, locked_resolve in enumerate(lock_file.locked_resolves, start=0):
1591
1696
  if len(lock_file.locked_resolves) == 1:
1592
1697
  lock_file_description = lockfile_path
@@ -1595,107 +1700,27 @@ class Lock(OutputMixin, JsonMixin, BuildTimeCommand):
1595
1700
  index=index, lock_file=lockfile_path
1596
1701
  )
1597
1702
 
1598
- available = {
1599
- locked_req.pin.project_name: (
1600
- ProjectNameAndVersion(
1601
- locked_req.pin.project_name.raw, locked_req.pin.version.raw
1602
- ),
1603
- locked_req,
1604
- )
1605
- for locked_req in locked_resolve.locked_requirements
1606
- }
1607
- retain = set()
1608
- to_resolve = deque(
1609
- root_requirements
1610
- ) # type: Deque[Union[RootRequirement, Requirement]]
1611
- while to_resolve:
1612
- req = to_resolve.popleft()
1613
- if req.project_name in retain:
1614
- continue
1615
- retain.add(req.project_name)
1616
-
1617
- dep = available.get(req.project_name)
1618
- if not dep:
1619
- return Error(
1620
- "There is no lock entry for {project} in {lock_file} to satisfy the "
1621
- "{transitive}{req} requirement.".format(
1622
- project=req.project_name,
1623
- lock_file=lock_file_description,
1624
- transitive="" if isinstance(req, RootRequirement) else "transitive ",
1625
- req=(
1626
- req
1627
- if isinstance(req, RootRequirement)
1628
- else "'{req}'".format(req=req)
1629
- ),
1630
- )
1631
- )
1632
-
1633
- pnav, locked_req = dep
1634
- if isinstance(req, RootRequirement):
1635
- reqs = req.select(pnav)
1636
- if not reqs:
1637
- return Error(
1638
- "The locked version of {project} in {lock_file} is {version} which "
1639
- "does not satisfy the {req} requirement.".format(
1640
- project=pnav.project_name,
1641
- lock_file=lock_file_description,
1642
- version=pnav.version,
1643
- req=req,
1644
- )
1645
- )
1646
- elif pnav not in req:
1647
- production_assert(
1648
- isinstance(req, RootRequirement),
1649
- "Transitive requirements in a lock should always match existing lock "
1650
- "entries. Found {project} {version} in {lock_file}, which does not satisfy "
1651
- "transitive requirement '{req}' found in the same lock.",
1652
- project=pnav.project_name,
1653
- version=pnav.version,
1654
- lock_file=lock_file_description,
1655
- req=req,
1656
- )
1657
- return Error(
1658
- "The locked version of {project} in {lock_file} is {version} which does "
1659
- "not satisfy the '{req}' requirement.".format(
1660
- project=pnav.project_name,
1661
- lock_file=lock_file_description,
1662
- version=pnav.version,
1663
- req=req,
1664
- )
1665
- )
1666
- elif (
1667
- req.project_name in constraint_by_project_name
1668
- and pnav not in constraint_by_project_name[req.project_name]
1669
- ):
1670
- return Error(
1671
- "The locked version of {project} in {lock_file} is {version} which does "
1672
- "not satisfy the '{constraint}' constraint.".format(
1673
- project=pnav.project_name,
1674
- lock_file=lock_file_description,
1675
- version=pnav.version,
1676
- constraint=constraint_by_project_name[req.project_name],
1677
- )
1678
- )
1679
- else:
1680
- reqs = (req,)
1681
-
1682
- for req in reqs:
1683
- to_resolve.extend(
1684
- requires_dist.filter_dependencies(
1685
- req,
1686
- locked_req,
1687
- universal_target=lock_file.configuration.universal_target,
1688
- )
1689
- )
1703
+ result = subset_locked_resolve(
1704
+ locked_resolve,
1705
+ root_requirements,
1706
+ constraint_by_project_name,
1707
+ lock_file_description=lock_file_description,
1708
+ universal_target=lock_file.configuration.universal_target,
1709
+ )
1710
+ if isinstance(result, LockedResolve):
1711
+ resolve_subsets.append(result)
1712
+ else:
1713
+ errors.append(result)
1690
1714
 
1691
- resolve_subsets.append(
1692
- attr.evolve(
1693
- locked_resolve,
1694
- locked_requirements=SortedTuple(
1695
- locked_requirement
1696
- for locked_requirement in locked_resolve.locked_requirements
1697
- if locked_requirement.pin.project_name in retain
1698
- ),
1715
+ if not resolve_subsets:
1716
+ if len(errors) == 1:
1717
+ return errors[0]
1718
+ return Error(
1719
+ "Failed to subset any of the {count} locked resolves contained in {lock_file}:\n"
1720
+ "{errors}".format(
1721
+ count=len(lock_file.locked_resolves),
1722
+ lock_file=lockfile_path,
1723
+ errors="\n".join(str(error) for error in errors),
1699
1724
  )
1700
1725
  )
1701
1726
 
@@ -1 +1 @@
1
- {"version":"1.3.0","languages":{"en":{"hash":"en_1c6ca7a059","wasm":"en","page_count":8}}}
1
+ {"version":"1.3.0","languages":{"en":{"hash":"en_1fbf4014cc","wasm":"en","page_count":8}}}
@@ -1,5 +1,5 @@
1
1
  const DOCUMENTATION_OPTIONS = {
2
- VERSION: '2.59.1',
2
+ VERSION: '2.59.3',
3
3
  LANGUAGE: 'en',
4
4
  COLLAPSE_INDEX: false,
5
5
  BUILDER: 'html',
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="../_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="../_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>PEX runtime environment variables - Pex Docs (v2.59.1)</title>
11
+ <title>PEX runtime environment variables - Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="../index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="../index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -643,12 +643,12 @@
643
643
  </div>
644
644
  <div class="right-details">
645
645
  <div class="icons">
646
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
646
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
647
647
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
648
648
  </path>
649
649
  </svg>
650
650
  </a>
651
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
651
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
652
652
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
653
653
  </path>
654
654
  </svg>
@@ -671,7 +671,7 @@
671
671
 
672
672
  </aside>
673
673
  </div>
674
- </div><script src="../_static/documentation_options.js?v=c16f6a54"></script>
674
+ </div><script src="../_static/documentation_options.js?v=52ef6427"></script>
675
675
  <script src="../_static/doctools.js?v=9bcbadda"></script>
676
676
  <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
677
677
  <script src="../_static/scripts/furo.js?v=46bd48cc"></script>
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>Building .pex files - Pex Docs (v2.59.1)</title>
11
+ <title>Building .pex files - Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -681,12 +681,12 @@ scary like <code class="docutils literal notranslate"><span class="pre">sudo</sp
681
681
  </div>
682
682
  <div class="right-details">
683
683
  <div class="icons">
684
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
684
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
685
685
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
686
686
  </path>
687
687
  </svg>
688
688
  </a>
689
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
689
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
690
690
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
691
691
  </path>
692
692
  </svg>
@@ -709,7 +709,7 @@ scary like <code class="docutils literal notranslate"><span class="pre">sudo</sp
709
709
 
710
710
  </aside>
711
711
  </div>
712
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
712
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
713
713
  <script src="_static/doctools.js?v=9bcbadda"></script>
714
714
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
715
715
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
@@ -6,7 +6,7 @@
6
6
  <link rel="prefetch" href="_static/pex-logo-light.png" as="image">
7
7
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
8
8
 
9
- <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 --><title>Index - Pex Docs (v2.59.1)</title>
9
+ <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 --><title>Index - Pex Docs (v2.59.3)</title>
10
10
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
12
12
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -161,7 +161,7 @@
161
161
  </label>
162
162
  </div>
163
163
  <div class="header-center">
164
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
164
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
165
165
  </div>
166
166
  <div class="header-right">
167
167
  <div class="theme-toggle-container theme-toggle-header">
@@ -260,12 +260,12 @@
260
260
  </div>
261
261
  <div class="right-details">
262
262
  <div class="icons">
263
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
263
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
264
264
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
265
265
  </path>
266
266
  </svg>
267
267
  </a>
268
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
268
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
269
269
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
270
270
  </path>
271
271
  </svg>
@@ -288,7 +288,7 @@
288
288
 
289
289
  </aside>
290
290
  </div>
291
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
291
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
292
292
  <script src="_static/doctools.js?v=9bcbadda"></script>
293
293
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
294
294
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/docs/html/index.html CHANGED
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>Pex Docs (v2.59.1)</title>
11
+ <title>Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="#"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="#"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -341,12 +341,12 @@ To go straight to building pex files, see <a class="reference internal" href="bu
341
341
  </div>
342
342
  <div class="right-details">
343
343
  <div class="icons">
344
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
344
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
345
345
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
346
346
  </path>
347
347
  </svg>
348
348
  </a>
349
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
349
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
350
350
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
351
351
  </path>
352
352
  </svg>
@@ -389,7 +389,7 @@ To go straight to building pex files, see <a class="reference internal" href="bu
389
389
 
390
390
  </aside>
391
391
  </div>
392
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
392
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
393
393
  <script src="_static/doctools.js?v=9bcbadda"></script>
394
394
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
395
395
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>PEX Recipes and Notes - Pex Docs (v2.59.1)</title>
11
+ <title>PEX Recipes and Notes - Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -430,12 +430,12 @@ $<span class="w"> </span><span class="nb">export</span><span class="w"> </span><
430
430
  </div>
431
431
  <div class="right-details">
432
432
  <div class="icons">
433
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
433
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
434
434
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
435
435
  </path>
436
436
  </svg>
437
437
  </a>
438
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
438
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
439
439
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
440
440
  </path>
441
441
  </svg>
@@ -482,7 +482,7 @@ $<span class="w"> </span><span class="nb">export</span><span class="w"> </span><
482
482
 
483
483
  </aside>
484
484
  </div>
485
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
485
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
486
486
  <script src="_static/doctools.js?v=9bcbadda"></script>
487
487
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
488
488
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/docs/html/scie.html CHANGED
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>PEX with included Python interpreter - Pex Docs (v2.59.1)</title>
11
+ <title>PEX with included Python interpreter - Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -623,12 +623,12 @@ uuid
623
623
  </div>
624
624
  <div class="right-details">
625
625
  <div class="icons">
626
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
626
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
627
627
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
628
628
  </path>
629
629
  </svg>
630
630
  </a>
631
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
631
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
632
632
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
633
633
  </path>
634
634
  </svg>
@@ -672,7 +672,7 @@ uuid
672
672
 
673
673
  </aside>
674
674
  </div>
675
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
675
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
676
676
  <script src="_static/doctools.js?v=9bcbadda"></script>
677
677
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
678
678
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/docs/html/search.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <link rel="prefetch" href="_static/pex-logo-light.png" as="image">
7
7
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
8
8
 
9
- <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 --><title>Search - Pex Docs (v2.59.1)</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
9
+ <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 --><title>Search - Pex Docs (v2.59.3)</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
10
10
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
12
12
 
@@ -176,7 +176,7 @@
176
176
  </label>
177
177
  </div>
178
178
  <div class="header-center">
179
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
179
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
180
180
  </div>
181
181
  <div class="header-right">
182
182
  <div class="theme-toggle-container theme-toggle-header">
@@ -273,12 +273,12 @@
273
273
  </div>
274
274
  <div class="right-details">
275
275
  <div class="icons">
276
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
276
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
277
277
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
278
278
  </path>
279
279
  </svg>
280
280
  </a>
281
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
281
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
282
282
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
283
283
  </path>
284
284
  </svg>
@@ -301,7 +301,7 @@
301
301
 
302
302
  </aside>
303
303
  </div>
304
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
304
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
305
305
  <script src="_static/doctools.js?v=9bcbadda"></script>
306
306
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
307
307
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
@@ -8,7 +8,7 @@
8
8
  <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
10
10
  <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
- <title>What are .pex files? - Pex Docs (v2.59.1)</title>
11
+ <title>What are .pex files? - Pex Docs (v2.59.3)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
13
  <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=580074bf" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -163,7 +163,7 @@
163
163
  </label>
164
164
  </div>
165
165
  <div class="header-center">
166
- <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.3)</div></a>
167
167
  </div>
168
168
  <div class="header-right">
169
169
  <div class="theme-toggle-container theme-toggle-header">
@@ -322,12 +322,12 @@ build executable .pex files. This is described more thoroughly in
322
322
  </div>
323
323
  <div class="right-details">
324
324
  <div class="icons">
325
- <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
325
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.3/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
326
326
  <path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z">
327
327
  </path>
328
328
  </svg>
329
329
  </a>
330
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
330
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.3/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
331
331
  <path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z">
332
332
  </path>
333
333
  </svg>
@@ -371,7 +371,7 @@ build executable .pex files. This is described more thoroughly in
371
371
 
372
372
  </aside>
373
373
  </div>
374
- </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
374
+ </div><script src="_static/documentation_options.js?v=52ef6427"></script>
375
375
  <script src="_static/doctools.js?v=9bcbadda"></script>
376
376
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
377
377
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
@@ -407,7 +407,7 @@ def _as_platform_system_marker(system):
407
407
 
408
408
 
409
409
  def _as_python_version_marker(specifier):
410
- # type: (SpecifierSet) -> str
410
+ # type: (SpecifierSet) -> Optional[str]
411
411
 
412
412
  clauses = [
413
413
  "python_full_version {operator} '{version}'".format(
@@ -416,7 +416,7 @@ def _as_python_version_marker(specifier):
416
416
  for spec in specifier
417
417
  ]
418
418
  if not clauses:
419
- return ""
419
+ return None
420
420
 
421
421
  if len(clauses) == 1:
422
422
  return clauses[0]
@@ -426,19 +426,10 @@ def _as_python_version_marker(specifier):
426
426
 
427
427
  @attr.s(frozen=True)
428
428
  class UniversalTarget(object):
429
- @classmethod
430
- def from_json(cls, data):
431
- # type: (Any) -> UniversalTarget
432
- return cls()
433
-
434
429
  implementation = attr.ib(default=None) # type: Optional[InterpreterImplementation.Value]
435
430
  requires_python = attr.ib(default=()) # type: Tuple[SpecifierSet, ...]
436
431
  systems = attr.ib(default=()) # type: Tuple[TargetSystem.Value, ...]
437
432
 
438
- def as_json(self):
439
- # type: () -> Any
440
- return {}
441
-
442
433
  def iter_interpreter_constraints(self):
443
434
  # type: () -> Iterator[InterpreterConstraint]
444
435
  for specifier in self.requires_python:
@@ -509,14 +500,16 @@ class UniversalTarget(object):
509
500
  )
510
501
  )
511
502
  if len(self.requires_python) == 1:
512
- clauses.append(_as_python_version_marker(self.requires_python[0]))
503
+ python_version_marker = _as_python_version_marker(self.requires_python[0])
504
+ if python_version_marker:
505
+ clauses.append(python_version_marker)
513
506
  elif self.requires_python:
507
+ python_version_markers = [] # type: List[str]
508
+ for requires_python in self.requires_python:
509
+ python_version_marker = _as_python_version_marker(requires_python)
510
+ if python_version_marker:
511
+ python_version_markers.append(python_version_marker)
514
512
  clauses.append(
515
- "({requires_pythons})".format(
516
- requires_pythons=" or ".join(
517
- _as_python_version_marker(requires_python)
518
- for requires_python in self.requires_python
519
- )
520
- )
513
+ "({requires_pythons})".format(requires_pythons=" or ".join(python_version_markers))
521
514
  )
522
515
  return Marker(" and ".join(clauses)) if clauses else None
pex/version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright 2015 Pex project contributors.
2
2
  # Licensed under the Apache License, Version 2.0 (see LICENSE).
3
3
 
4
- __version__ = "2.59.1"
4
+ __version__ = "2.59.3"
pex/wheel.py CHANGED
@@ -87,7 +87,16 @@ class WHEEL(object):
87
87
  # type: () -> Tuple[tags.Tag, ...]
88
88
  return tuple(
89
89
  itertools.chain.from_iterable(
90
- tags.parse_tag(tag) for tag in self.metadata.get_all("Tag", ())
90
+ # N.B.: There should be just 1 tag per Tag entry per items 7 and 11 in
91
+ # https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-contents
92
+ # There are wheels in the wild though with WHEEL metadata Tag entries that contain
93
+ # compressed tags instead of having the tags expanded to 1 per Tag. Although
94
+ # `tags.parse_tag` handles expansion of the compressed tags, it collects them in
95
+ # a frozenset with unstable order which can cause issues when attempting to
96
+ # construct stable wheel names from these tags; as such, we do the sort here as a
97
+ # defense against this style of bad WHEEL Tag metadata.
98
+ sorted(tags.parse_tag(tag), key=lambda tag: str(tag))
99
+ for tag in self.metadata.get_all("Tag", ())
91
100
  )
92
101
  )
93
102
 
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pex
3
- Version: 2.59.1
3
+ Version: 2.59.3
4
4
  Summary: The PEX packaging toolchain.
5
5
  Home-page: https://github.com/pex-tool/pex
6
- Download-URL: https://github.com/pex-tool/pex/releases/download/v2.59.1/pex
6
+ Download-URL: https://github.com/pex-tool/pex/releases/download/v2.59.3/pex
7
7
  Author: The PEX developers
8
8
  Author-email: developers@pex-tool.org
9
9
  License-Expression: Apache-2.0
10
- Project-URL: Changelog, https://github.com/pex-tool/pex/blob/v2.59.1/CHANGES.md
10
+ Project-URL: Changelog, https://github.com/pex-tool/pex/blob/v2.59.3/CHANGES.md
11
11
  Project-URL: Documentation, https://docs.pex-tool.org/
12
- Project-URL: Source, https://github.com/pex-tool/pex/tree/v2.59.1
12
+ Project-URL: Source, https://github.com/pex-tool/pex/tree/v2.59.3
13
13
  Keywords: package,executable,virtualenv,lock,freeze
14
14
  Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Intended Audience :: Developers
@@ -67,8 +67,8 @@ pex/tracer.py,sha256=nob_hNooCYWZev7_ABhAVyO4HBZ8Q_OajQUvNnr82Rc,4481
67
67
  pex/typing.py,sha256=J1JTB1V48zIWmhWRHEMDHWMaFPMzsEonWJ9s57Ev43Q,3050
68
68
  pex/util.py,sha256=TxTxpdDmrDTLVXt9e2XuRq9c3N6jRYNCce87QBFkCVo,5491
69
69
  pex/variables.py,sha256=h3-JeMzXfRzEsWqTYsoU-6vt5W4Kr0VvbfSDAYtuZOU,34728
70
- pex/version.py,sha256=XSHJnDJZq0MJhwWr3dPSw0C10tIdFZ9ubi5A_KgA4qg,131
71
- pex/wheel.py,sha256=BVs55zm3F-W3wS60-fsliPqEqkgtNmgY6Y4Vi37lG_Y,7547
70
+ pex/version.py,sha256=oTaMtrnzeFCMM0ljfFh9e9m2oEOTXIYZd-ocGOD_6-4,131
71
+ pex/wheel.py,sha256=1o1yUfbgCEPLyfFiCUpR245myC_p3rEhkgqdW9AfBMw,8349
72
72
  pex/ziputils.py,sha256=thUrto9vEdG9mFCIJ59Js3d1y6bSfFdl7pb1lSb7KAQ,9620
73
73
  pex/bin/__init__.py,sha256=Kb2dGrZYVtb0cd9ngKHuLShndNU1GSWdeDzN-u_L6Io,107
74
74
  pex/bin/pex.py,sha256=K8rx3V05GpDej5dHggTBH-3IYjm1XSSZW7ueSqBUTfg,56056
@@ -92,7 +92,7 @@ pex/cli/commands/__init__.py,sha256=-Fyj3MBVt0FcsvtAago3E_YYTDte9Cv_PIfw50OnarU,
92
92
  pex/cli/commands/cache_aware.py,sha256=MkR7bypyDyZwRxESJJ6I4wd3zeNJl2gTaB9pg5AEyr8,4009
93
93
  pex/cli/commands/docs.py,sha256=z4KWsTlVZqOda-RrxfMn34JwLtmSHTBFh-w7AuG45KE,2615
94
94
  pex/cli/commands/interpreter.py,sha256=grgIqFkWlv5c1Bf38CgdXRJ0IqsvKrn_OxQFIbejsQY,7684
95
- pex/cli/commands/lock.py,sha256=0FaZnJsrUO0gwPslqYQPgPnIe-rPdwzPT0jdaG-GNCo,101322
95
+ pex/cli/commands/lock.py,sha256=h3VIzbtXO8Nx9NwLMXxu7rGLbj5UIDwDHZUZ2r1Gltk,101638
96
96
  pex/cli/commands/run.py,sha256=gWkuaxPFnGqFi-kr7ROkBG-YvSddWbj0UtKRk9QzcEU,34997
97
97
  pex/cli/commands/venv.py,sha256=SCmqIjwQhgKZ-4MQFNmRGBHIT0oS23a3Ml4TMjmoxLE,17823
98
98
  pex/cli/commands/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -110,33 +110,33 @@ pex/distutils/commands/__init__.py,sha256=uASB5OU996Jax-h3kMmeZjG5Jdy9BYDR6A1swk
110
110
  pex/distutils/commands/bdist_pex.py,sha256=SLwBj0ALpArhKQT94X0niKWfyLaySjOZuZrGXG332K0,5117
111
111
  pex/docs/__init__.py,sha256=u9hPOij1fpo1yPBLTQTdSCnSIUuRCSXHomCkEAaCciA,439
112
112
  pex/docs/command.py,sha256=uQyD8bO_DBNIlkPd6F7SFZbZUVh1Xn6gT8OmVxP4qxk,3046
113
- pex/docs/html/buildingpex.html,sha256=3u3PYCoFJsTQdGBggWYIAHIvxLXwBaZvC7cjXCERtRY,57407
114
- pex/docs/html/genindex.html,sha256=r6IHSe9reLu-AE8huBEp6efVIXqmFBZr_4SFtYZEdok,17198
115
- pex/docs/html/index.html,sha256=fnZnxWJKxU64ykk-jqnHomubeyrnkDqSM146zPLfqi8,25028
116
- pex/docs/html/recipes.html,sha256=oMqTF9o-JwnzYU8TRKqY-KbjrmfojAcGqo-UQl-fC6g,35192
117
- pex/docs/html/scie.html,sha256=FxNTyHhmGTFwyjLB-1Gfe9olr2SIvwDunR6hVlbxJrQ,62182
118
- pex/docs/html/search.html,sha256=bkNa4XKm87r98cSwFzBt6h079prSkdUWTlu0TBb6AXI,18169
113
+ pex/docs/html/buildingpex.html,sha256=l4goj7uKuspYFN2zhWhyWEiQiZTAk5X68RckREczad0,57407
114
+ pex/docs/html/genindex.html,sha256=WpHK3JZ3mexbBDgqrxUhHX76CoQCM5_0fLqYumEcZac,17198
115
+ pex/docs/html/index.html,sha256=TK8NpZS_bToGpDUIgW2uk-LLciegm6Cq7eo30I07mJg,25028
116
+ pex/docs/html/recipes.html,sha256=BjxE8-J5Lzc384IG-IAgak03hzrRL7NlrgLIDJaEeFc,35192
117
+ pex/docs/html/scie.html,sha256=E7IuEX8PfMryrs8D1Z8_dDhmX-kPRaZuPeDR7m6HMAg,62182
118
+ pex/docs/html/search.html,sha256=CP5MsIGiUmpbNZs7ieh4JZi1Oj8FguH7ke5DkxHQQSE,18169
119
119
  pex/docs/html/searchindex.js,sha256=R_L6Oveik_wlK5CmaE7YwRvmu81r6fd7jtnZUjfk1sA,18009
120
- pex/docs/html/whatispex.html,sha256=0r__d1Hc1KnKKosDk6yl9ggzN77BXeAWAfVNSjm5qis,22754
121
- pex/docs/html/_pagefind/pagefind-entry.json,sha256=5dExYyLUTcKeC_7cDFUGZmr_Ko7Sr8Q08irKlKAWf98,90
120
+ pex/docs/html/whatispex.html,sha256=A_zDiGo3lW_8W1PbAN8rsSe2u5oh81wYBqm1ORZ67nU,22754
121
+ pex/docs/html/_pagefind/pagefind-entry.json,sha256=m8ByXDHc6X3FCLWVI4YTy048XktKzndLJmyIqUCCf3w,90
122
122
  pex/docs/html/_pagefind/pagefind-highlight.js,sha256=5hRyi7gOMY9tlTe-tbmDrVJpoxbnYxhbJeoGwtmCfXA,43944
123
123
  pex/docs/html/_pagefind/pagefind-modular-ui.css,sha256=ZTqynk3lYp9t319vzfXSs-tTmowH__ila4ziFWpXB4g,7336
124
124
  pex/docs/html/_pagefind/pagefind-modular-ui.js,sha256=-DCEOJ2cInrvjEGZFxCuYy81EMWbKHhMu4wivlJmUzE,14486
125
125
  pex/docs/html/_pagefind/pagefind-ui.css,sha256=GL61nVezuyVA4ynNRJejhEwUBxhBtx4rDYVlAgI_W1U,14486
126
126
  pex/docs/html/_pagefind/pagefind-ui.js,sha256=WQ3yec_CMkBKswl16Ig5N_zJzeCgL4z9y344TcJeKAQ,78367
127
- pex/docs/html/_pagefind/pagefind.en_1c6ca7a059.pf_meta,sha256=khhj-LnKcbOCN0y-w3G7dE37SX91SRXS4RUNS65nvE4,155
127
+ pex/docs/html/_pagefind/pagefind.en_1fbf4014cc.pf_meta,sha256=ASJqfE7NT3xv-MVxdBATAXtTxCpEore5KCmKQdXiTrw,155
128
128
  pex/docs/html/_pagefind/pagefind.js,sha256=Q-4jKyPif6awDU9x8IoWXTWoJJR1JZicegUYQ-QI4MA,32912
129
129
  pex/docs/html/_pagefind/wasm.en.pagefind,sha256=mG0TKIE7WXynsyg-tpiMZiVG2Hwebbt2UqFqlqdTTsE,70873
130
130
  pex/docs/html/_pagefind/wasm.unknown.pagefind,sha256=eAREknqQnc_y96pbl8eYz9zqfUXsqe64B7HwrQE2SkY,67202
131
- pex/docs/html/_pagefind/fragment/en_1664623.pf_fragment,sha256=kCuyu08fDyiTBjDGSTvh6HZ1UBHo-KJDOOwVUfa9-jk,361
132
- pex/docs/html/_pagefind/fragment/en_1ebfe82.pf_fragment,sha256=GTjTPtobPaXyMifZ1oxdhyIv6IFwkEZBRLpbLdL-ZOA,3648
133
- pex/docs/html/_pagefind/fragment/en_368bf05.pf_fragment,sha256=A4mtc4jYcIIqu1Yrg1U0_ZsYCwiOCdi8pUrMLJaGokU,3019
134
- pex/docs/html/_pagefind/fragment/en_389a79a.pf_fragment,sha256=nqOPuMpiuso8qLDAQYfAJdoUBJIrLE8rxmeeR764L1g,4847
135
- pex/docs/html/_pagefind/fragment/en_4c5cc0e.pf_fragment,sha256=xnfGYMpV1u8HuDvBZiXukkJ0frwDI4uVLWcRhFgCdc8,371
136
- pex/docs/html/_pagefind/fragment/en_92da226.pf_fragment,sha256=6jTl49VJBkMxq4HqTw5ufBPEgA-nwCrv5MceVuwQHLw,1143
137
- pex/docs/html/_pagefind/fragment/en_b99d99b.pf_fragment,sha256=Ddt4Ew72Qxs7o392VF7MPCcicbTt7X6DlyzVk2STMpA,6821
138
- pex/docs/html/_pagefind/fragment/en_eccd471.pf_fragment,sha256=CsQEhhYKSpDDD8xg0PVjS_hCt-A16k_0TqK_QzDGk8w,1158
139
- pex/docs/html/_pagefind/index/en_106262d.pf_index,sha256=x1AQLP1h7Uc8vWmRWz6voHoBdJod7zAdsI7_oTh6eoI,28864
131
+ pex/docs/html/_pagefind/fragment/en_1ba1105.pf_fragment,sha256=M8kHMsgSdDKZKTvMyElCpIMt3TcW71zGcZOSyYv4hZ4,3018
132
+ pex/docs/html/_pagefind/fragment/en_44f43ef.pf_fragment,sha256=ILyLBn7uNrMet11TNWxaCxIj3uQwjoYq6WoUOcPDDF4,1143
133
+ pex/docs/html/_pagefind/fragment/en_632829c.pf_fragment,sha256=k-AAKrnvj9qduL-jHjHSVR_AfSNOy7esUggsF5Zp_7U,4848
134
+ pex/docs/html/_pagefind/fragment/en_69aa49c.pf_fragment,sha256=-NFSIoDKUr2t5Ibt1z1pbr2oIZWTcH8GZmRaN8HK8Bg,3648
135
+ pex/docs/html/_pagefind/fragment/en_8dd77f4.pf_fragment,sha256=uG4mVgVD7Ahkdw97462dOpq-wb_8IyVwKtLDyfxnTHY,360
136
+ pex/docs/html/_pagefind/fragment/en_b4ba902.pf_fragment,sha256=-efTUDdhr3LS7t-wi63KPO6QqBKPgbSsyhKlm40e1Ew,372
137
+ pex/docs/html/_pagefind/fragment/en_cdf12df.pf_fragment,sha256=OGAJKu-phm7vlU2Xvy-sBAHRNwolclVby-NTwAauQcI,1158
138
+ pex/docs/html/_pagefind/fragment/en_f3c1826.pf_fragment,sha256=TAw7QStDX5EhTvP7kePaFHfdeunvKBwVZ61KkRmG_qI,6821
139
+ pex/docs/html/_pagefind/index/en_401edef.pf_index,sha256=plZYZPNiYRva6qLkS1G3tfxoTKgJjRbFGd1EBIVhyWk,28864
140
140
  pex/docs/html/_sources/buildingpex.rst.txt,sha256=87P3ZO871MILL9pmpDM8_M7_YV1z5HjTYa9m8yuxTa4,19138
141
141
  pex/docs/html/_sources/index.rst.txt,sha256=vWt1s6dirYeR-9mFJY1SClwWvbWqIqJSFCAF1CdZojc,1468
142
142
  pex/docs/html/_sources/recipes.rst.txt,sha256=kerzvp8_t5io6eGl3YJODtNBQy7GmY2AA6RHaij9C-g,6958
@@ -146,7 +146,7 @@ pex/docs/html/_sources/api/vars.md.txt,sha256=C9gu5czyB-g788xRfYKF8P176ew_q97X6z
146
146
  pex/docs/html/_static/basic.css,sha256=ZW_xus1vJg_H1xuX-cLx_L9pLchL9GnNlSA078ue7-0,14685
147
147
  pex/docs/html/_static/debug.css,sha256=DQXNnnnVMjQwRmfAjwKXHeYZbA_8pZPDkDs2Z7QFWtY,1266
148
148
  pex/docs/html/_static/doctools.js,sha256=KZLAnfkYJqjTPjtItkXud-RXrc98cS13aoFOHixEi0M,4322
149
- pex/docs/html/_static/documentation_options.js,sha256=yr8urHEsCsyjYkjxCHncK2qcVYLle3D1pjQkKmxR6zU,329
149
+ pex/docs/html/_static/documentation_options.js,sha256=yXpsOe-c9FAZ_FE9Offd_gh15-XgDvhoa5tVl7LFcvU,329
150
150
  pex/docs/html/_static/file.png,sha256=XEvJoWrr84xLlQ9ZuOUByjZJUyjLnrYiIYvOkGSjXj4,286
151
151
  pex/docs/html/_static/language_data.js,sha256=O8MRVjt_xegPyrL4Ypd0vzy2swICAA3zbf-OaVqQI7c,4598
152
152
  pex/docs/html/_static/minus.png,sha256=R-f8UNs2mfHKQc6aL_ogLADF0dUYDFX2K6hZsb1swAg,90
@@ -166,7 +166,7 @@ pex/docs/html/_static/styles/furo-extensions.css,sha256=PSsCB3EaBzE9-2yLJyKV9fkx
166
166
  pex/docs/html/_static/styles/furo-extensions.css.map,sha256=CzW267gfKqH8ruMlwJbWg-MsGAipIgZwoaP4gwDGkVw,7762
167
167
  pex/docs/html/_static/styles/furo.css,sha256=666beINeSQtLZbSeNCMj62G7a13xiX1YwJVvij3jr-8,50749
168
168
  pex/docs/html/_static/styles/furo.css.map,sha256=0k0kb9TwrJYQRT-2cbjTcOz7PQykGWHdy2BSuVMtrnY,76038
169
- pex/docs/html/api/vars.html,sha256=LgFjfT8eM3OWbwGg8lO6-A5SRKQWQ9vuihGrPlnOE_c,34903
169
+ pex/docs/html/api/vars.html,sha256=_QwCzZQYK4ttvk45pR6d8wgJsFVxOCbNJW1YCA3TDfQ,34903
170
170
  pex/fs/__init__.py,sha256=ues2bnsufy1lYRyoWsiP-G4kuPrV-tXaZ0x-HFJFpwY,3605
171
171
  pex/fs/_posix.py,sha256=p-VkjEfRNXduBmkxcuEXWM1g6y6xrkufSYzEy93tqjA,1275
172
172
  pex/fs/_windows.py,sha256=apacgHpxNutF5HkU6cYOLHq7yqaijRMsFBdsdKSviDo,3304
@@ -218,7 +218,7 @@ pex/resolve/resolvers.py,sha256=0YFFukBDDTe0laT7at7wRMMbynaPzZhaZl55NgI1hS4,1015
218
218
  pex/resolve/script_metadata.py,sha256=6PdrBvUmKQGdTIPHfE-F07460drqjQB_HuBgz_35ql0,6903
219
219
  pex/resolve/target_configuration.py,sha256=FFrVHKgceCMlse2xOgxTtdnQ7ENw3A59t4IId0F1GDw,10349
220
220
  pex/resolve/target_options.py,sha256=6YoXvIWSyTKfkJ3fcEhqu7eDzF-TlUKhSoNlGoLApQI,12550
221
- pex/resolve/target_system.py,sha256=iar6NKzFoQNu05r6EQ8Jgw1XaMYRQAIcTbL69nb5o3c,17180
221
+ pex/resolve/target_system.py,sha256=R256UFgP7vZ9iBI5Zo45Bh224nkBom6Y8Z6UnJqloKk,17256
222
222
  pex/resolve/venv_resolver.py,sha256=TrxbnC85S-gTm3xGgH-H3RX9Xjz6B87WMTJPEWa_8qg,18294
223
223
  pex/resolve/lockfile/__init__.py,sha256=uASB5OU996Jax-h3kMmeZjG5Jdy9BYDR6A1swkBoFDg,107
224
224
  pex/resolve/lockfile/create.py,sha256=MnMb4e1opHvim_-gdXqb6xiNJAfXCVi7M0HnfMNExJg,27979
@@ -969,10 +969,10 @@ pex/windows/stubs/uv-trampoline-aarch64-console.exe,sha256=1S2aM-6CV7rKz-3ncM5X7
969
969
  pex/windows/stubs/uv-trampoline-aarch64-gui.exe,sha256=mb8x1FpyH-wy11X5YgWfqh_VUwBb62M4Zf9aFr5V4EE,40448
970
970
  pex/windows/stubs/uv-trampoline-x86_64-console.exe,sha256=nLopBrlCMMFjkKVRlY7Ke2zFGpQOyF5mSlLs0d7-HRQ,40960
971
971
  pex/windows/stubs/uv-trampoline-x86_64-gui.exe,sha256=icnp1oXrOZpc-dHTGvDbTHjr-D8M0eamvRrC9bPI_KI,41984
972
- pex-2.59.1.dist-info/METADATA,sha256=WEYhN1c_EX3LbPHoSgxeE8u808ofCWKb4KuI7REw9GQ,7425
973
- pex-2.59.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
974
- pex-2.59.1.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
975
- pex-2.59.1.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
976
- pex-2.59.1.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
977
- pex-2.59.1.dist-info/pylock/pylock.toml,sha256=ar9a6_myHcpeU4Ttsts2XQ15x6vs5aqDzjlRUATZHoI,7151
978
- pex-2.59.1.dist-info/RECORD,,
972
+ pex-2.59.3.dist-info/METADATA,sha256=LWQmmbZ0IYFUwPYCJ69puca5Zq4NKZVMXpx0sx3mUrM,7425
973
+ pex-2.59.3.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
974
+ pex-2.59.3.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
975
+ pex-2.59.3.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
976
+ pex-2.59.3.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
977
+ pex-2.59.3.dist-info/pylock/pylock.toml,sha256=ar9a6_myHcpeU4Ttsts2XQ15x6vs5aqDzjlRUATZHoI,7151
978
+ pex-2.59.3.dist-info/RECORD,,
File without changes