pex 2.57.0__py2.py3-none-any.whl → 2.58.1__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 (43) hide show
  1. pex/auth.py +1 -1
  2. pex/build_system/pep_517.py +4 -1
  3. pex/docs/html/_pagefind/fragment/en_1fd6283.pf_fragment +0 -0
  4. pex/docs/html/_pagefind/fragment/en_3981384.pf_fragment +0 -0
  5. pex/docs/html/_pagefind/fragment/en_5b3a816.pf_fragment +0 -0
  6. pex/docs/html/_pagefind/fragment/en_668cbbe.pf_fragment +0 -0
  7. pex/docs/html/_pagefind/fragment/{en_40d5577.pf_fragment → en_69b66dc.pf_fragment} +0 -0
  8. pex/docs/html/_pagefind/fragment/en_93e5ea3.pf_fragment +0 -0
  9. pex/docs/html/_pagefind/fragment/en_9ec1cdb.pf_fragment +0 -0
  10. pex/docs/html/_pagefind/fragment/en_edf644d.pf_fragment +0 -0
  11. pex/docs/html/_pagefind/index/{en_56ab7db.pf_index → en_b7cb935.pf_index} +0 -0
  12. pex/docs/html/_pagefind/pagefind-entry.json +1 -1
  13. pex/docs/html/_pagefind/pagefind.en_bc4997bc6d.pf_meta +0 -0
  14. pex/docs/html/_static/documentation_options.js +1 -1
  15. pex/docs/html/api/vars.html +5 -5
  16. pex/docs/html/buildingpex.html +5 -5
  17. pex/docs/html/genindex.html +5 -5
  18. pex/docs/html/index.html +5 -5
  19. pex/docs/html/recipes.html +5 -5
  20. pex/docs/html/scie.html +5 -5
  21. pex/docs/html/search.html +5 -5
  22. pex/docs/html/whatispex.html +5 -5
  23. pex/pip/tool.py +16 -4
  24. pex/requirements.py +85 -12
  25. pex/resolve/package_repository.py +79 -9
  26. pex/resolve/requirement_configuration.py +13 -2
  27. pex/resolve/resolver_options.py +15 -1
  28. pex/version.py +1 -1
  29. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/METADATA +4 -4
  30. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/RECORD +35 -35
  31. pex/docs/html/_pagefind/fragment/en_279c9ed.pf_fragment +0 -0
  32. pex/docs/html/_pagefind/fragment/en_789a214.pf_fragment +0 -0
  33. pex/docs/html/_pagefind/fragment/en_85eee42.pf_fragment +0 -0
  34. pex/docs/html/_pagefind/fragment/en_8eb3225.pf_fragment +0 -0
  35. pex/docs/html/_pagefind/fragment/en_9e74eab.pf_fragment +0 -0
  36. pex/docs/html/_pagefind/fragment/en_acb471b.pf_fragment +0 -0
  37. pex/docs/html/_pagefind/fragment/en_fb1d997.pf_fragment +0 -0
  38. pex/docs/html/_pagefind/pagefind.en_bda9565956.pf_meta +0 -0
  39. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/WHEEL +0 -0
  40. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/entry_points.txt +0 -0
  41. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/licenses/LICENSE +0 -0
  42. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/pylock/pylock.toml +0 -0
  43. {pex-2.57.0.dist-info → pex-2.58.1.dist-info}/top_level.txt +0 -0
pex/auth.py CHANGED
@@ -64,7 +64,7 @@ class Machine(object):
64
64
  class PasswordEntry(object):
65
65
  @classmethod
66
66
  def maybe_extract_from_url(cls, url):
67
- # type: (str) -> Optional[PasswordEntry]
67
+ # type: (Text) -> Optional[PasswordEntry]
68
68
  url_info = urlparse.urlparse(url)
69
69
  if not url_info.username or not url_info.password:
70
70
  return None
@@ -11,7 +11,7 @@ from textwrap import dedent
11
11
  from pex import third_party
12
12
  from pex.build_system import DEFAULT_BUILD_BACKEND
13
13
  from pex.build_system.pep_518 import BuildSystem, load_build_system
14
- from pex.common import safe_mkdtemp
14
+ from pex.common import safe_mkdir, safe_mkdtemp
15
15
  from pex.dist_metadata import DistMetadata, Distribution, MetadataType
16
16
  from pex.jobs import Job, SpawnedJob
17
17
  from pex.pip.version import PipVersion, PipVersionValue
@@ -227,6 +227,9 @@ def build_sdist(
227
227
  "{stderr}".format(project_directory=project_directory, err=e, stderr=e.stderr)
228
228
  )
229
229
 
230
+ # N.B.: Although it's not clear the spec mandates this, ensure the dist dir exists before
231
+ # handing it to the back end. See: https://github.com/pex-tool/pex/issues/2913 for motivation.
232
+ safe_mkdir(dist_dir)
230
233
  spawned_job_or_error = _invoke_build_hook(
231
234
  project_directory,
232
235
  target,
@@ -1 +1 @@
1
- {"version":"1.3.0","languages":{"en":{"hash":"en_bda9565956","wasm":"en","page_count":8}}}
1
+ {"version":"1.3.0","languages":{"en":{"hash":"en_bc4997bc6d","wasm":"en","page_count":8}}}
@@ -1,5 +1,5 @@
1
1
  const DOCUMENTATION_OPTIONS = {
2
- VERSION: '2.57.0',
2
+ VERSION: '2.58.1',
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.07.19 -->
11
- <title>PEX runtime environment variables - Pex Docs (v2.57.0)</title>
11
+ <title>PEX runtime environment variables - Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="../index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="../index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -652,12 +652,12 @@
652
652
  </div>
653
653
  <div class="right-details">
654
654
  <div class="icons">
655
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
655
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
656
656
  <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">
657
657
  </path>
658
658
  </svg>
659
659
  </a>
660
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
660
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
661
661
  <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">
662
662
  </path>
663
663
  </svg>
@@ -680,7 +680,7 @@
680
680
 
681
681
  </aside>
682
682
  </div>
683
- </div><script src="../_static/documentation_options.js?v=a2d10b90"></script>
683
+ </div><script src="../_static/documentation_options.js?v=b0ba200d"></script>
684
684
  <script src="../_static/doctools.js?v=9bcbadda"></script>
685
685
  <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
686
686
  <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.07.19 -->
11
- <title>Building .pex files - Pex Docs (v2.57.0)</title>
11
+ <title>Building .pex files - Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -690,12 +690,12 @@ scary like <code class="docutils literal notranslate"><span class="pre">sudo</sp
690
690
  </div>
691
691
  <div class="right-details">
692
692
  <div class="icons">
693
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
693
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
694
694
  <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">
695
695
  </path>
696
696
  </svg>
697
697
  </a>
698
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
698
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
699
699
  <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">
700
700
  </path>
701
701
  </svg>
@@ -718,7 +718,7 @@ scary like <code class="docutils literal notranslate"><span class="pre">sudo</sp
718
718
 
719
719
  </aside>
720
720
  </div>
721
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
721
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
722
722
  <script src="_static/doctools.js?v=9bcbadda"></script>
723
723
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
724
724
  <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.07.19 --><title>Index - Pex Docs (v2.57.0)</title>
9
+ <link rel="shortcut icon" href="_static/pex-icon.png"/><!-- Generated with Sphinx 8.2.3 and Furo 2025.07.19 --><title>Index - Pex Docs (v2.58.1)</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=25af2a20" />
12
12
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -166,7 +166,7 @@
166
166
  </label>
167
167
  </div>
168
168
  <div class="header-center">
169
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
169
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
170
170
  </div>
171
171
  <div class="header-right">
172
172
  <div class="theme-toggle-container theme-toggle-header">
@@ -269,12 +269,12 @@
269
269
  </div>
270
270
  <div class="right-details">
271
271
  <div class="icons">
272
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
272
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
273
273
  <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">
274
274
  </path>
275
275
  </svg>
276
276
  </a>
277
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
277
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
278
278
  <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">
279
279
  </path>
280
280
  </svg>
@@ -297,7 +297,7 @@
297
297
 
298
298
  </aside>
299
299
  </div>
300
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
300
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
301
301
  <script src="_static/doctools.js?v=9bcbadda"></script>
302
302
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
303
303
  <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.07.19 -->
11
- <title>Pex Docs (v2.57.0)</title>
11
+ <title>Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="#"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="#"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -350,12 +350,12 @@ To go straight to building pex files, see <a class="reference internal" href="bu
350
350
  </div>
351
351
  <div class="right-details">
352
352
  <div class="icons">
353
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
353
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
354
354
  <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">
355
355
  </path>
356
356
  </svg>
357
357
  </a>
358
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
358
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
359
359
  <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">
360
360
  </path>
361
361
  </svg>
@@ -398,7 +398,7 @@ To go straight to building pex files, see <a class="reference internal" href="bu
398
398
 
399
399
  </aside>
400
400
  </div>
401
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
401
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
402
402
  <script src="_static/doctools.js?v=9bcbadda"></script>
403
403
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
404
404
  <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.07.19 -->
11
- <title>PEX Recipes and Notes - Pex Docs (v2.57.0)</title>
11
+ <title>PEX Recipes and Notes - Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -439,12 +439,12 @@ $<span class="w"> </span><span class="nb">export</span><span class="w"> </span><
439
439
  </div>
440
440
  <div class="right-details">
441
441
  <div class="icons">
442
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
442
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
443
443
  <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">
444
444
  </path>
445
445
  </svg>
446
446
  </a>
447
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
447
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
448
448
  <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">
449
449
  </path>
450
450
  </svg>
@@ -491,7 +491,7 @@ $<span class="w"> </span><span class="nb">export</span><span class="w"> </span><
491
491
 
492
492
  </aside>
493
493
  </div>
494
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
494
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
495
495
  <script src="_static/doctools.js?v=9bcbadda"></script>
496
496
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
497
497
  <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.07.19 -->
11
- <title>PEX with included Python interpreter - Pex Docs (v2.57.0)</title>
11
+ <title>PEX with included Python interpreter - Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -632,12 +632,12 @@ uuid
632
632
  </div>
633
633
  <div class="right-details">
634
634
  <div class="icons">
635
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
635
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
636
636
  <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">
637
637
  </path>
638
638
  </svg>
639
639
  </a>
640
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
640
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
641
641
  <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">
642
642
  </path>
643
643
  </svg>
@@ -681,7 +681,7 @@ uuid
681
681
 
682
682
  </aside>
683
683
  </div>
684
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
684
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
685
685
  <script src="_static/doctools.js?v=9bcbadda"></script>
686
686
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
687
687
  <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.07.19 --><title>Search - Pex Docs (v2.57.0)</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.07.19 --><title>Search - Pex Docs (v2.58.1)</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=25af2a20" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
12
12
 
@@ -181,7 +181,7 @@
181
181
  </label>
182
182
  </div>
183
183
  <div class="header-center">
184
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
184
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
185
185
  </div>
186
186
  <div class="header-right">
187
187
  <div class="theme-toggle-container theme-toggle-header">
@@ -282,12 +282,12 @@
282
282
  </div>
283
283
  <div class="right-details">
284
284
  <div class="icons">
285
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
285
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
286
286
  <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">
287
287
  </path>
288
288
  </svg>
289
289
  </a>
290
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
290
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
291
291
  <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">
292
292
  </path>
293
293
  </svg>
@@ -310,7 +310,7 @@
310
310
 
311
311
  </aside>
312
312
  </div>
313
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
313
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
314
314
  <script src="_static/doctools.js?v=9bcbadda"></script>
315
315
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
316
316
  <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.07.19 -->
11
- <title>What are .pex files? - Pex Docs (v2.57.0)</title>
11
+ <title>What are .pex files? - Pex Docs (v2.58.1)</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=25af2a20" />
14
14
  <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=8dab3a3b" />
@@ -168,7 +168,7 @@
168
168
  </label>
169
169
  </div>
170
170
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.57.0)</div></a>
171
+ <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
172
172
  </div>
173
173
  <div class="header-right">
174
174
  <div class="theme-toggle-container theme-toggle-header">
@@ -331,12 +331,12 @@ build executable .pex files. This is described more thoroughly in
331
331
  </div>
332
332
  <div class="right-details">
333
333
  <div class="icons">
334
- <a class="muted-link " href="https://pypi.org/project/pex/2.57.0/" 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">
334
+ <a class="muted-link " href="https://pypi.org/project/pex/2.58.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">
335
335
  <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">
336
336
  </path>
337
337
  </svg>
338
338
  </a>
339
- <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.57.0/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">
339
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.58.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">
340
340
  <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">
341
341
  </path>
342
342
  </svg>
@@ -380,7 +380,7 @@ build executable .pex files. This is described more thoroughly in
380
380
 
381
381
  </aside>
382
382
  </div>
383
- </div><script src="_static/documentation_options.js?v=a2d10b90"></script>
383
+ </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
384
384
  <script src="_static/doctools.js?v=9bcbadda"></script>
385
385
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
386
386
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/pip/tool.py CHANGED
@@ -21,6 +21,7 @@ from pex.common import safe_mkdir, safe_mkdtemp
21
21
  from pex.compatibility import get_stderr_bytes_buffer, shlex_quote, urlparse
22
22
  from pex.dependency_configuration import DependencyConfiguration
23
23
  from pex.dist_metadata import Requirement
24
+ from pex.fetcher import URLFetcher
24
25
  from pex.interpreter import PythonInterpreter
25
26
  from pex.jobs import Job
26
27
  from pex.network_configuration import NetworkConfiguration
@@ -53,6 +54,7 @@ if TYPE_CHECKING:
53
54
  Match,
54
55
  Optional,
55
56
  Sequence,
57
+ Text,
56
58
  Tuple,
57
59
  Union,
58
60
  )
@@ -64,8 +66,8 @@ else:
64
66
 
65
67
  @attr.s(frozen=True)
66
68
  class PipArgs(object):
67
- indexes = attr.ib(default=None) # type: Optional[Sequence[str]]
68
- find_links = attr.ib(default=None) # type: Optional[Iterable[str]]
69
+ indexes = attr.ib(default=None) # type: Optional[Sequence[Text]]
70
+ find_links = attr.ib(default=None) # type: Optional[Iterable[Text]]
69
71
  network_configuration = attr.ib(default=None) # type: Optional[NetworkConfiguration]
70
72
 
71
73
  def iter(self, version):
@@ -217,9 +219,17 @@ class PackageIndexConfiguration(object):
217
219
  self,
218
220
  pip_version, # type: PipVersionValue
219
221
  target, # type: Union[UniversalTarget, MarkerEnvironment]
222
+ requirement_files=None, # type: Optional[Iterable[str]]
220
223
  ):
221
224
  # type: (...) -> Optional[DownloadObserver]
222
- return package_repositories.patch(self.repos_configuration, pip_version, target)
225
+ return package_repositories.patch(
226
+ repos_configuration=self.repos_configuration.with_contained_repos(
227
+ requirement_files,
228
+ fetcher=URLFetcher(network_configuration=self.network_configuration),
229
+ ),
230
+ pip_version=pip_version,
231
+ target=target,
232
+ )
223
233
 
224
234
 
225
235
  if TYPE_CHECKING:
@@ -640,7 +650,9 @@ class Pip(object):
640
650
  ),
641
651
  (
642
652
  package_index_configuration.patch(
643
- pip_version=self.version, target=universal_target or target.marker_environment
653
+ pip_version=self.version,
654
+ target=universal_target or target.marker_environment,
655
+ requirement_files=requirement_files,
644
656
  )
645
657
  if package_index_configuration
646
658
  else None
pex/requirements.py CHANGED
@@ -5,6 +5,9 @@ from __future__ import absolute_import
5
5
 
6
6
  import os
7
7
  import re
8
+ import shlex
9
+ import sys
10
+ from argparse import ArgumentParser
8
11
  from contextlib import contextmanager
9
12
 
10
13
  from pex import attrs, dist_metadata, pex_warnings
@@ -17,6 +20,7 @@ from pex.dist_metadata import (
17
20
  RequirementParseError,
18
21
  )
19
22
  from pex.fetcher import URLFetcher
23
+ from pex.orderedset import OrderedSet
20
24
  from pex.pep_503 import ProjectName
21
25
  from pex.third_party.packaging.markers import Marker
22
26
  from pex.third_party.packaging.specifiers import SpecifierSet
@@ -139,7 +143,7 @@ class Source(object):
139
143
 
140
144
 
141
145
  @attr.s(frozen=True)
142
- class _ParsedRequirement(object):
146
+ class _ParsedItem(object):
143
147
  line = attr.ib() # type: LogicalLine
144
148
 
145
149
  def __str__(self):
@@ -148,7 +152,22 @@ class _ParsedRequirement(object):
148
152
 
149
153
 
150
154
  @attr.s(frozen=True)
151
- class PyPIRequirement(_ParsedRequirement):
155
+ class _Repo(_ParsedItem):
156
+ location = attr.ib() # Text
157
+
158
+
159
+ @attr.s(frozen=True)
160
+ class FindLinks(_Repo):
161
+ pass
162
+
163
+
164
+ @attr.s(frozen=True)
165
+ class Index(_Repo):
166
+ pass
167
+
168
+
169
+ @attr.s(frozen=True)
170
+ class PyPIRequirement(_ParsedItem):
152
171
  """A requirement realized through a package index or find links repository."""
153
172
 
154
173
  requirement = attr.ib() # type: Requirement
@@ -169,7 +188,7 @@ class PyPIRequirement(_ParsedRequirement):
169
188
 
170
189
 
171
190
  @attr.s(frozen=True)
172
- class URLRequirement(_ParsedRequirement):
191
+ class URLRequirement(_ParsedItem):
173
192
  """A requirement realized through a distribution archive at a fixed URL."""
174
193
 
175
194
  url = attr.ib() # type: ArtifactURL
@@ -202,7 +221,7 @@ class URLRequirement(_ParsedRequirement):
202
221
 
203
222
 
204
223
  @attr.s(frozen=True)
205
- class VCSRequirement(_ParsedRequirement):
224
+ class VCSRequirement(_ParsedItem):
206
225
  """A requirement realized by building a distribution from sources retrieved from a VCS."""
207
226
 
208
227
  vcs = attr.ib() # type: VCS.Value
@@ -269,7 +288,7 @@ def parse_requirement_from_dist(
269
288
 
270
289
 
271
290
  @attr.s(frozen=True)
272
- class LocalProjectRequirement(_ParsedRequirement):
291
+ class LocalProjectRequirement(_ParsedItem):
273
292
  """A requirement realized by building a distribution from local sources."""
274
293
 
275
294
  path = attr.ib() # type: str
@@ -306,7 +325,7 @@ if TYPE_CHECKING:
306
325
 
307
326
 
308
327
  @attr.s(frozen=True)
309
- class Constraint(_ParsedRequirement):
328
+ class Constraint(_ParsedItem):
310
329
  requirement = attr.ib() # type: Requirement
311
330
 
312
331
  @property
@@ -630,11 +649,59 @@ def _get_parameter(line):
630
649
  return split_line[1]
631
650
 
632
651
 
652
+ _REPOS_PARSER = None # type: Optional[ArgumentParser]
653
+
654
+
655
+ def _parse_repos(line):
656
+ # type: (LogicalLine) -> Iterator[Union[FindLinks, Index]]
657
+
658
+ try:
659
+ # The arg-type type ignore is due to Python 2.7 shlex.split not being able to parse unicode
660
+ # strings; but we handle that with a useful error message.
661
+ args = shlex.split(line.processed_text) # type: ignore[arg-type]
662
+ except UnicodeEncodeError as e:
663
+ raise ParseError(
664
+ line,
665
+ "Options line has unicode characters which are not supported under Python {version}: "
666
+ "{err}".format(version=".".join(map(str, sys.version[:2])), err=e),
667
+ )
668
+
669
+ global _REPOS_PARSER
670
+ if _REPOS_PARSER is not None:
671
+ parser = _REPOS_PARSER
672
+ else:
673
+ parser = ArgumentParser()
674
+ # See:
675
+ # + https://pip.pypa.io/en/stable/reference/requirements-file-format/#global-options
676
+ # + https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-f
677
+ # + https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-i
678
+ # + https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-extra-index-url
679
+ parser.add_argument("-f", "--find-links", dest="find_links", action="append", default=[])
680
+ parser.add_argument("-i", "--index-url", dest="index_url")
681
+ parser.add_argument(
682
+ "--extra-index-url", dest="extra_index_urls", action="append", default=[]
683
+ )
684
+ _REPOS_PARSER = parser
685
+
686
+ options, _ = parser.parse_known_args(args)
687
+
688
+ for find_links in OrderedSet(options.find_links): # type: OrderedSet[str]
689
+ yield FindLinks(line, location=find_links)
690
+
691
+ index_locations = OrderedSet() # type: OrderedSet[str]
692
+ if options.index_url:
693
+ index_locations.add(options.index_url)
694
+ index_locations.update(options.extra_index_urls)
695
+
696
+ for index in index_locations:
697
+ yield Index(line, location=index)
698
+
699
+
633
700
  def parse_requirements(
634
701
  source, # type: Source
635
702
  fetcher=None, # type: Optional[URLFetcher]
636
703
  ):
637
- # type: (...) -> Iterator[Union[ParsedRequirement, Constraint]]
704
+ # type: (...) -> Iterator[Union[ParsedRequirement, Constraint, FindLinks, Index]]
638
705
 
639
706
  # For the format specification, see:
640
707
  # https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
@@ -686,11 +753,17 @@ def parse_requirements(
686
753
  yield requirement
687
754
  continue
688
755
 
689
- # Skip empty lines, comment lines and all Pip global options.
690
- if not processed_text or (
691
- processed_text.startswith("-")
692
- and not re.match(r"^(?:-e|--editable)\s.*", processed_text)
756
+ # Skip empty lines and comment lines.
757
+ if not processed_text:
758
+ continue
759
+
760
+ if processed_text.startswith("-") and not re.match(
761
+ # N.B.: We deal with editable when parsing requirement lines below.
762
+ r"^(?:-e|--editable)\s.*",
763
+ processed_text,
693
764
  ):
765
+ for repo in _parse_repos(logical_line):
766
+ yield repo
694
767
  continue
695
768
 
696
769
  # Only requirement lines remain.
@@ -721,7 +794,7 @@ def parse_requirement_file(
721
794
  is_constraints=False, # type: bool
722
795
  fetcher=None, # type: Optional[URLFetcher]
723
796
  ):
724
- # type: (...) -> Iterator[Union[ParsedRequirement, Constraint]]
797
+ # type: (...) -> Iterator[Union[ParsedRequirement, Constraint, FindLinks, Index]]
725
798
  def open_source():
726
799
  url = urlparse.urlparse(location)
727
800
  if url.scheme and url.netloc:
@@ -6,12 +6,23 @@ from __future__ import absolute_import
6
6
  import itertools
7
7
  import os
8
8
  import re
9
+ from collections import OrderedDict, defaultdict
9
10
 
10
11
  from pex.auth import PasswordEntry
11
12
  from pex.compatibility import string
12
13
  from pex.dist_metadata import Requirement, RequirementParseError
13
14
  from pex.exceptions import production_assert, reportable_unexpected_error_msg
15
+ from pex.fetcher import URLFetcher
16
+ from pex.orderedset import OrderedSet
14
17
  from pex.pep_503 import ProjectName
18
+ from pex.requirements import (
19
+ FindLinks,
20
+ Index,
21
+ PyPIRequirement,
22
+ URLRequirement,
23
+ VCSRequirement,
24
+ parse_requirement_file,
25
+ )
15
26
  from pex.resolve.target_system import MarkerEnv
16
27
  from pex.third_party.packaging.markers import InvalidMarker, Marker
17
28
  from pex.typing import TYPE_CHECKING, cast
@@ -19,7 +30,7 @@ from pex.typing import TYPE_CHECKING, cast
19
30
  if TYPE_CHECKING:
20
31
  # N.B.: The `re.Pattern` type is not available in all Python versions Pex supports.
21
32
  from re import Pattern # type: ignore[attr-defined]
22
- from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
33
+ from typing import Any, DefaultDict, Dict, Iterable, List, Mapping, Optional, Text, Tuple, Union
23
34
 
24
35
  import attr # vendor:skip
25
36
 
@@ -183,7 +194,7 @@ class Repo(object):
183
194
  location=data["location"], scopes=tuple(Scope.parse(scope) for scope in data["scopes"])
184
195
  )
185
196
 
186
- location = attr.ib() # type: str
197
+ location = attr.ib() # type: Text
187
198
  scopes = attr.ib(default=()) # type: Tuple[Scope, ...]
188
199
 
189
200
  def as_dict(self):
@@ -240,8 +251,8 @@ class PackageRepositories(object):
240
251
  _target_env = attr.ib() # type: Union[Dict[str, str], MarkerEnv]
241
252
  _scoped_indexes = attr.ib(default=()) # type: Tuple[Repo, ...]
242
253
  _scoped_find_links = attr.ib(default=()) # type: Tuple[Repo, ...]
243
- global_indexes = attr.ib(default=(Repo(PYPI),)) # type: Tuple[str, ...]
244
- global_find_links = attr.ib(default=()) # type: Tuple[str, ...]
254
+ global_indexes = attr.ib(default=(Repo(PYPI),)) # type: Tuple[Text, ...]
255
+ global_find_links = attr.ib(default=()) # type: Tuple[Text, ...]
245
256
 
246
257
  @property
247
258
  def has_scoped_repositories(self):
@@ -266,7 +277,7 @@ class PackageRepositories(object):
266
277
  scoped_repos, # type: Iterable[Repo]
267
278
  project_name, # type: ProjectName
268
279
  ):
269
- # type: (...) -> List[str]
280
+ # type: (...) -> List[Text]
270
281
  return [
271
282
  repo.location
272
283
  for repo in scoped_repos
@@ -274,11 +285,11 @@ class PackageRepositories(object):
274
285
  ]
275
286
 
276
287
  def in_scope_indexes(self, project_name):
277
- # type: (ProjectName) -> List[str]
288
+ # type: (ProjectName) -> List[Text]
278
289
  return self._in_scope_repos(scoped_repos=self._scoped_indexes, project_name=project_name)
279
290
 
280
291
  def in_scope_find_links(self, project_name):
281
- # type: (ProjectName) -> List[str]
292
+ # type: (ProjectName) -> List[Text]
282
293
  return self._in_scope_repos(scoped_repos=self._scoped_find_links, project_name=project_name)
283
294
 
284
295
 
@@ -289,6 +300,7 @@ class ReposConfiguration(object):
289
300
  cls,
290
301
  indexes=(), # type: Iterable[Repo]
291
302
  find_links=(), # type: Iterable[Repo]
303
+ derive_scopes_from_requirements_files=False, # type: bool
292
304
  ):
293
305
  # type: (...) -> ReposConfiguration
294
306
  password_entries = []
@@ -301,20 +313,78 @@ class ReposConfiguration(object):
301
313
  index_repos=tuple(indexes),
302
314
  find_links_repos=tuple(find_links),
303
315
  password_entries=tuple(password_entries),
316
+ derive_scopes_from_requirements_files=derive_scopes_from_requirements_files,
304
317
  )
305
318
 
306
319
  index_repos = attr.ib(default=(Repo(PYPI),)) # type: Tuple[Repo, ...]
307
320
  find_links_repos = attr.ib(default=()) # type: Tuple[Repo, ...]
308
321
  password_entries = attr.ib(default=()) # type: Tuple[PasswordEntry, ...]
322
+ derive_scopes_from_requirements_files = attr.ib(default=False) # type: bool
323
+
324
+ def with_contained_repos(
325
+ self,
326
+ requirement_files=None, # type: Optional[Iterable[Text]]
327
+ fetcher=None, # type: Optional[URLFetcher]
328
+ ):
329
+ # type: (...) -> ReposConfiguration
330
+
331
+ if not requirement_files:
332
+ return self
333
+
334
+ indexes_by_source = OrderedDict() # type: OrderedDict[Text, OrderedSet[Text]]
335
+ find_links_by_source = OrderedDict() # type: OrderedDict[Text, OrderedSet[Text]]
336
+ scopes_by_source = defaultdict(OrderedSet) # type: DefaultDict[Text, OrderedSet[Scope]]
337
+ for item in itertools.chain.from_iterable(
338
+ parse_requirement_file(requirement_file, fetcher=fetcher)
339
+ for requirement_file in requirement_files
340
+ ):
341
+ if self.derive_scopes_from_requirements_files and isinstance(
342
+ item, (PyPIRequirement, URLRequirement, VCSRequirement)
343
+ ):
344
+ scopes_by_source[item.line.source].add(
345
+ Scope(project=item.requirement.project_name, marker=item.requirement.marker)
346
+ )
347
+ elif isinstance(item, FindLinks):
348
+ find_links_by_source.setdefault(item.line.source, OrderedSet()).add(item.location)
349
+ elif isinstance(item, Index):
350
+ indexes_by_source.setdefault(item.line.source, OrderedSet()).add(item.location)
351
+
352
+ if not indexes_by_source and not find_links_by_source:
353
+ return self
354
+
355
+ def merge_scopes(
356
+ repos, # type: Iterable[Repo]
357
+ locations_by_source, # type: Mapping[Text, Iterable[Text]]
358
+ ):
359
+ scopes_by_location = OrderedDict(
360
+ (repo.location, OrderedSet(repo.scopes)) for repo in repos
361
+ )
362
+ for source, locations in locations_by_source.items():
363
+ for location in locations:
364
+ scopes_by_location.setdefault(location, OrderedSet()).update(
365
+ scopes_by_source[source]
366
+ )
367
+ return tuple(
368
+ Repo(location=location, scopes=tuple(scopes))
369
+ for location, scopes in scopes_by_location.items()
370
+ )
371
+
372
+ return attr.evolve(
373
+ self,
374
+ index_repos=merge_scopes(repos=self.index_repos, locations_by_source=indexes_by_source),
375
+ find_links_repos=merge_scopes(
376
+ repos=self.find_links_repos, locations_by_source=find_links_by_source
377
+ ),
378
+ )
309
379
 
310
380
  @property
311
381
  def indexes(self):
312
- # type: () -> Tuple[str, ...]
382
+ # type: () -> Tuple[Text, ...]
313
383
  return tuple(repo.location for repo in self.index_repos if not repo.scopes)
314
384
 
315
385
  @property
316
386
  def find_links(self):
317
- # type: () -> Tuple[str, ...]
387
+ # type: () -> Tuple[Text, ...]
318
388
  return tuple(repo.location for repo in self.find_links_repos if not repo.scopes)
319
389
 
320
390
  def scoped(self, target_env):
@@ -5,7 +5,15 @@ from __future__ import absolute_import
5
5
 
6
6
  from pex.fetcher import URLFetcher
7
7
  from pex.network_configuration import NetworkConfiguration
8
- from pex.requirements import Constraint, parse_requirement_file, parse_requirement_strings
8
+ from pex.requirements import (
9
+ Constraint,
10
+ LocalProjectRequirement,
11
+ PyPIRequirement,
12
+ URLRequirement,
13
+ VCSRequirement,
14
+ parse_requirement_file,
15
+ parse_requirement_strings,
16
+ )
9
17
  from pex.typing import TYPE_CHECKING
10
18
 
11
19
  if TYPE_CHECKING:
@@ -37,7 +45,10 @@ class RequirementConfiguration(object):
37
45
  for requirement_or_constraint in parse_requirement_file(
38
46
  requirement_file, is_constraints=False, fetcher=fetcher
39
47
  )
40
- if not isinstance(requirement_or_constraint, Constraint)
48
+ if isinstance(
49
+ requirement_or_constraint,
50
+ (PyPIRequirement, URLRequirement, VCSRequirement, LocalProjectRequirement),
51
+ )
41
52
  )
42
53
  return parsed_requirements
43
54
 
@@ -574,6 +574,17 @@ def register_repos_options(parser):
574
574
  "in a scope, you can use a regex instead."
575
575
  ),
576
576
  )
577
+ parser.add_argument(
578
+ "--derive-sources-from-requirements-files",
579
+ dest="derive_scopes_from_requirements_files",
580
+ action=HandleBoolAction,
581
+ default=False,
582
+ help=(
583
+ "If any requirements files are specified that contain `-f` / `--find-links`, `-i` / "
584
+ "`--index-url`, or `--extra-index-url` options, automatically map these repos as the "
585
+ "`--source` for the requirements (if any) declared in that same requirements file."
586
+ ),
587
+ )
577
588
 
578
589
 
579
590
  def register_network_options(parser):
@@ -871,6 +882,7 @@ def create_repos_configuration(options):
871
882
  return ReposConfiguration.create(
872
883
  indexes=tuple(indexes),
873
884
  find_links=tuple(Repo(find_links_repo) for find_links_repo in options.find_links),
885
+ derive_scopes_from_requirements_files=options.derive_scopes_from_requirements_files,
874
886
  )
875
887
 
876
888
  parsed_indexes = _parse_package_repositories("index", scopes_by_name, options.indexes)
@@ -890,7 +902,9 @@ def create_repos_configuration(options):
890
902
 
891
903
  indexes.update(parsed_indexes.values())
892
904
  return ReposConfiguration.create(
893
- indexes=tuple(indexes), find_links=tuple(parsed_find_links.values())
905
+ indexes=tuple(indexes),
906
+ find_links=tuple(parsed_find_links.values()),
907
+ derive_scopes_from_requirements_files=options.derive_scopes_from_requirements_files,
894
908
  )
895
909
 
896
910
 
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.57.0"
4
+ __version__ = "2.58.1"
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pex
3
- Version: 2.57.0
3
+ Version: 2.58.1
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.57.0/pex
6
+ Download-URL: https://github.com/pex-tool/pex/releases/download/v2.58.1/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.57.0/CHANGES.md
10
+ Project-URL: Changelog, https://github.com/pex-tool/pex/blob/v2.58.1/CHANGES.md
11
11
  Project-URL: Documentation, https://docs.pex-tool.org/
12
- Project-URL: Source, https://github.com/pex-tool/pex/tree/v2.57.0
12
+ Project-URL: Source, https://github.com/pex-tool/pex/tree/v2.58.1
13
13
  Keywords: package,executable,virtualenv,lock,freeze
14
14
  Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Intended Audience :: Developers
@@ -5,7 +5,7 @@ pex/artifact_url.py,sha256=U9hRE-N80hYTGBR88kh_0R9aNLkUUXqSdufBvSFTf8s,8029
5
5
  pex/atexit.py,sha256=pZIFdG1gEW_zWz9Vov61SnsB2TH0knSAF2EXDrT_tIA,1821
6
6
  pex/atomic_directory.py,sha256=9JxKfgp16vTMnXGinivU1NotIDWR1E94jKmw0VTEFKY,12771
7
7
  pex/attrs.py,sha256=MGqTSvDukv93di0GCP3B13-ByX7HsPg42VZzGU2eKow,459
8
- pex/auth.py,sha256=-jMagXQceBOghrUnS5Jjppm8XVgCrD8b92UqTVZlc8Q,5874
8
+ pex/auth.py,sha256=USbYTSbEuq4jpH3v9BZ7XypW11ASiwXDWn7UzDVoMoo,5875
9
9
  pex/bootstrap.py,sha256=XCmK2X5vdjJye4s6OUbE4nxWgZSM5_xT-Se1bMHKwoE,5462
10
10
  pex/cli_util.py,sha256=F67UHGT5xBGFQBy2D-mxxMBCJ2V_gDtekjWni9u_J84,1192
11
11
  pex/common.py,sha256=TukYFf-td_Gi0CRzWwiV8KICEDa1LybN03bi8aESBXw,32159
@@ -53,7 +53,7 @@ pex/platforms.py,sha256=_8FAoXWTjCFOUmM02nFtduwp2NCIWC6QmBAs3CE6H5w,8319
53
53
  pex/pth.py,sha256=YGiWmW99vPvPm5-iU_Kbvbu1NTtJyyTp32ilHyAJ_VQ,3402
54
54
  pex/pyenv.py,sha256=O5_Ec26J8GQpa5Xt_TtSB0A9rV62vYgciIwBlW4aiZ8,9276
55
55
  pex/rank.py,sha256=dNFi6Y7bBe8gwcKSon81EOs9Jw4uhUzoHgRnIDYV8lU,3901
56
- pex/requirements.py,sha256=UzehXDrnpQfnIBc7SoyS2LEYgMERB9eyzd3gpfRQDcg,26640
56
+ pex/requirements.py,sha256=NpseoFVrUfTDSd0JAoOnVstbvYC140ecDgiHeb39b3s,29007
57
57
  pex/resolver.py,sha256=rCHyQXTksLU5oYkhONS8lP3_hunOQuP7UQnm1UkpClI,68806
58
58
  pex/result.py,sha256=VTE_n-IffLf-FD4ENNbRvq_ebahh-IDYAna1y5Iw1WI,3090
59
59
  pex/sh_boot.py,sha256=IBpqPHnfYlImx8SMMYeeXD7BEmqnlFVAxmArieNMtU0,11217
@@ -67,7 +67,7 @@ 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=MElCMhkPID3b4O_JSAJOsFvHemaJvmkL5Pzu0-P0sHQ,131
70
+ pex/version.py,sha256=3mSxWXjMWE_n5e-iPcxpzBNLcMS-0xv7ZU-9z_on1UQ,131
71
71
  pex/wheel.py,sha256=lSVHtgWKcAhnTBL9q4oUQ5a4clLo0hSMCk18eaJZQpM,5531
72
72
  pex/ziputils.py,sha256=thUrto9vEdG9mFCIJ59Js3d1y6bSfFdl7pb1lSb7KAQ,9620
73
73
  pex/bin/__init__.py,sha256=Kb2dGrZYVtb0cd9ngKHuLShndNU1GSWdeDzN-u_L6Io,107
@@ -77,7 +77,7 @@ pex/build_backend/configuration.py,sha256=s95XQMc2P23GWrS8z8O6pyfUDYNlFlBkuegqTE
77
77
  pex/build_backend/pylock.py,sha256=xY9OO6pNPneqEQAxDTwHH5XNbU_aoM6MACuPOiT7jo0,8318
78
78
  pex/build_backend/wrap.py,sha256=DH1jJWQ9g2FGdLEvLLMny9koYEP0_9O_138SMVTB6YM,5504
79
79
  pex/build_system/__init__.py,sha256=JYbpW71Z5Jkft7b5VSMg2VQJUNWzRDXji-2DFyXUvmQ,564
80
- pex/build_system/pep_517.py,sha256=AxIR7Vo4HGimdAX2FbGg6t3X_P8JZIkfX7yh6u2nfbo,10228
80
+ pex/build_system/pep_517.py,sha256=ZGeDso2Pmv2JjB0dMBUcXHlCMhram7QhJneYskXtH4U,10458
81
81
  pex/build_system/pep_518.py,sha256=LMgvpHqcifQAHe6jgGBEGgPolMIk7BBcKBunN5u7jr4,8355
82
82
  pex/cache/__init__.py,sha256=yOeHhVmwd_TbkV62FglXwYaf6Hn2SpBbS9fGfHBRjx0,107
83
83
  pex/cache/access.py,sha256=_2Iq6NC0o-0IIjgljiOq1ajugiMUL7-V9NdrSXkkJWw,3847
@@ -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=65ccAdI0dVcMFRj1B9HAxuhdex_ek5ExuITUi73mODY,57743
114
- pex/docs/html/genindex.html,sha256=JVlkJmiT8qLpiQEwWIxnpXIcnmIvYLVB01VLxTJSdB4,17530
115
- pex/docs/html/index.html,sha256=EatxW4zzsYSU9Sm7FwGPqdA-FRQxblQ_74wNmeiisCw,25362
116
- pex/docs/html/recipes.html,sha256=SMVC9jqSL4P3NvGkMWZQuyS6XnhDIxQ7nT5pBNvhZ2s,35528
117
- pex/docs/html/scie.html,sha256=-poWe4JLi68IHRbOyjMKdSm9CMmVNUcC3GMgqdhVKIg,62518
118
- pex/docs/html/search.html,sha256=KDPVhOP5hJZwSf1VHfHUd465F-4cDk1M901YFru05YQ,18501
113
+ pex/docs/html/buildingpex.html,sha256=qV5rRBSVWMJYbx-8QJcCvJliU-8HWdvLXn-wxiizL0o,57743
114
+ pex/docs/html/genindex.html,sha256=HQnto7SE3_OqMrUZenK_c1Zu_WYOENqTxZAcZFqRB6E,17530
115
+ pex/docs/html/index.html,sha256=p-bRWrAWMI2sg6JeedAUb7ThfrqPhzAQnE-Ycz-LCHg,25362
116
+ pex/docs/html/recipes.html,sha256=xTiZ9KEKoHkLQdKzSkDMd1FP7CA_xYC91bxnzZXYNMc,35528
117
+ pex/docs/html/scie.html,sha256=8trlEYT9WHn43bJM4mzEhPiferGhiA8G_WHXQgNKPEc,62518
118
+ pex/docs/html/search.html,sha256=IIM-l58amBu7uOr3u6ch3WwGw0c4TsiWI2LhhSJ8kA8,18501
119
119
  pex/docs/html/searchindex.js,sha256=R_L6Oveik_wlK5CmaE7YwRvmu81r6fd7jtnZUjfk1sA,18009
120
- pex/docs/html/whatispex.html,sha256=d6LDSq-AVieGPIkv3pnNMUJnfy5TwnScGoYQM869ATA,23090
121
- pex/docs/html/_pagefind/pagefind-entry.json,sha256=Damd2c6D7h51xp3FGO5ewquIBQwZj6ANRXgIKfTo_SU,90
120
+ pex/docs/html/whatispex.html,sha256=7jm5bXIW2XGYaJZsBsrSDFjPotWA2uiGhJbkuUJN42Y,23090
121
+ pex/docs/html/_pagefind/pagefind-entry.json,sha256=krmjE-XnQvvWAcW0PXbLioeOJWxcRHIKq7MYzWK00NY,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_bda9565956.pf_meta,sha256=SXYWlM48WTlLFPOPYxX3oydbPCf4w3kLMJP_86GSPF8,151
127
+ pex/docs/html/_pagefind/pagefind.en_bc4997bc6d.pf_meta,sha256=mDV2Ugof_qo0k15WUwYTyZKinCKiBqvi5wIB54Tm28Y,150
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_279c9ed.pf_fragment,sha256=LVIyybRs7dFPlBcL6hro8MWi74kxNmGAMb60rOy2w9s,4884
132
- pex/docs/html/_pagefind/fragment/en_40d5577.pf_fragment,sha256=ZNr6YCRAgHFZuaBOWlnV7vhfcPx3tFY8Dmp7VOge3Dg,392
133
- pex/docs/html/_pagefind/fragment/en_789a214.pf_fragment,sha256=Fa03Q8qJTQlLIq94_ziv0e_PyRxtAN8rRtH9rlaX4W4,3053
134
- pex/docs/html/_pagefind/fragment/en_85eee42.pf_fragment,sha256=AiESq8oOKUBpJCr_ALpIUKkR6LHwJQPUUb8AJQzn7io,402
135
- pex/docs/html/_pagefind/fragment/en_8eb3225.pf_fragment,sha256=78r9GSA9vjZB2GmHOt-GwBMhghUNWVfIK1BJRgrSXAg,6844
136
- pex/docs/html/_pagefind/fragment/en_9e74eab.pf_fragment,sha256=izILpw8ZP1xHt7dTY5ovPzohn7HRcqeyt7LPH_uZuQk,3679
137
- pex/docs/html/_pagefind/fragment/en_acb471b.pf_fragment,sha256=zR8H21DBmfWBwW-nS0XLYxW6-B6F8vG9yIWPHSKM8U8,1172
138
- pex/docs/html/_pagefind/fragment/en_fb1d997.pf_fragment,sha256=f-oEMNuFYYZaKpYSktju84xvgoSUEUMXSPoETF_7_L0,1188
139
- pex/docs/html/_pagefind/index/en_56ab7db.pf_index,sha256=2RBck8jFnLK0nQK7ZgAc_7tl4MxJP9l4C-uZ-Lw6Rjs,29071
131
+ pex/docs/html/_pagefind/fragment/en_1fd6283.pf_fragment,sha256=XJgjXqGIfVPvah7Z31ipxw8HERoAKY7BK-nUTpkTlns,3679
132
+ pex/docs/html/_pagefind/fragment/en_3981384.pf_fragment,sha256=4GmV6XLt7TgVQv3Krq3vQF5GuM7YP6ODLdJdVQ2Mw1Y,1172
133
+ pex/docs/html/_pagefind/fragment/en_5b3a816.pf_fragment,sha256=tuZcvsiYOK79Uz0hurP7qyRpSACQW3HMsa_9LOZQ1l0,4884
134
+ pex/docs/html/_pagefind/fragment/en_668cbbe.pf_fragment,sha256=lsOOieX8IeB_03pGex7NaxK3dm_K-k1ncVw5vz3s1wQ,6845
135
+ pex/docs/html/_pagefind/fragment/en_69b66dc.pf_fragment,sha256=hH2bf_2Ris36H9nUhB4Ilj2IPmlXQowFp_qOrrhCzWk,392
136
+ pex/docs/html/_pagefind/fragment/en_93e5ea3.pf_fragment,sha256=RgTvbR6eiZ9NtRTGWBCiMzjHSu7wLJ26FlYvoPFuReQ,1188
137
+ pex/docs/html/_pagefind/fragment/en_9ec1cdb.pf_fragment,sha256=UWy1TNqG7mskUxVh7UPjsMQPNuAsZgredbZ_QflI1No,3054
138
+ pex/docs/html/_pagefind/fragment/en_edf644d.pf_fragment,sha256=3FNmGoQhcJ7N0klAIcohSfEJt2MKUDo-xXCK-M67VHg,402
139
+ pex/docs/html/_pagefind/index/en_b7cb935.pf_index,sha256=4OUJgNA0w2mM4MVGkcjxwSxzLNnUB7hiwuSRxX8qGB4,29071
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=ZtoMBFe3nZuyWS8ahgwxVZCEX0O7RgsMfPkd-yJkFGo,329
149
+ pex/docs/html/_static/documentation_options.js,sha256=pHkxuYTmix91_abPXHV7GgGmK4z51aEo_UTWjbP5yWU,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=_VadhXUHMzTBCFYkutwKheVkdQlyNZJYRa8uhVGcpZ4,51074
168
168
  pex/docs/html/_static/styles/furo.css.map,sha256=fsUcXMqaSwEFTorfGfQjJ8xnUzkkWIjGkGfAgxKj5lA,76865
169
- pex/docs/html/api/vars.html,sha256=p1VAzipWrvIJHwgjv9X2_28VWEdNSQzMmsuZzWYoSkY,35237
169
+ pex/docs/html/api/vars.html,sha256=tyCBeA2MjpRqkdm_V_SvLoK4Q4JS9WqNtnhnHwfbONw,35237
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
@@ -179,7 +179,7 @@ pex/pip/installation.py,sha256=xxME2rUG4ODUQ--AsdRRdzNWyWfEphA2G09oMaYWNdI,21306
179
179
  pex/pip/local_project.py,sha256=0HsnUgb0d1XX1TokVogF1xV-pTFNuBLDG-7K2j5VUVI,2040
180
180
  pex/pip/log_analyzer.py,sha256=YLecIWrjTBvDZA_OwvQlcR1gf6-rI_eBt_LFZTA2E-U,4362
181
181
  pex/pip/tailer.py,sha256=af7yJ1rxvtTltno1BEVgJ6lf1C0PPnCzCs6CWto7Y9s,4445
182
- pex/pip/tool.py,sha256=gYOPJpSo6VKo3_4MX6FrYwBU4isUJp6DRKqQw4T4Beg,34403
182
+ pex/pip/tool.py,sha256=pSymcCdNKs9A3DcU62Cd2wMYi1AqvnAYj7eaNMEbnxg,34840
183
183
  pex/pip/vcs.py,sha256=PWrS6pR2vm6rf08HCws4EVwX3kHAOyarMWj_KznoMoM,4041
184
184
  pex/pip/version.py,sha256=NADXFCx9g8D_QugtN7a6lTo_6YuBEpdicJvA8t7Mps4,12644
185
185
  pex/pip/dependencies/__init__.py,sha256=Hwrin59pqb2QPU4ysCPUhqzfsE1PHx56a-ED39eEV0Q,5126
@@ -204,16 +204,16 @@ pex/resolve/lock_resolver.py,sha256=b6UoqaXPNdWEt1JC8S6HSc4el5ows6kmIa5T87OsAm0,
204
204
  pex/resolve/locked_resolve.py,sha256=Vx9JQPe5SUW3A0IZ17pdd7Lhl8b6xa77nnGiBpJlfL0,40561
205
205
  pex/resolve/locker.py,sha256=NnSs60GxCVFyuxc5w-st4tzkC2xhYmJcxNUeRGp_UDQ,27049
206
206
  pex/resolve/locker_patches.py,sha256=t_30hjSYG570UJHgpf7i1L5ssvi1LZ2YbM4iHd44V6s,11294
207
- pex/resolve/package_repository.py,sha256=_zOULRNydlMag5SaHZCY9YuXC4Gq7_CXYuD9cIefXwQ,12122
207
+ pex/resolve/package_repository.py,sha256=xMU9aTxojS2sNmWp03jfMBTIGhq3eqNuNOacl8BiiGY,15123
208
208
  pex/resolve/path_mappings.py,sha256=d6JVzD0K342ELz3O8AcsaXoikLDF3xYrgbXkixMmf3Q,2073
209
209
  pex/resolve/pex_repository_resolver.py,sha256=xXsDpecTaBj06HY81Y6PNQKVKicjiLnKUlQvjC0jzXk,5528
210
210
  pex/resolve/pre_resolved_resolver.py,sha256=SVafV5U4TSkolV2mqfte6QX6VnBgTTlQ9ZMoY83KOTk,9943
211
211
  pex/resolve/project.py,sha256=BYy1m8-jUsiaBR1DF3eJiqpqvdqrzB-cQDPvcMD2v-0,14923
212
- pex/resolve/requirement_configuration.py,sha256=EPw3P7lkzlr3oNNIU-QOwqywqIKya3KeV2yPo-5xQAU,2653
212
+ pex/resolve/requirement_configuration.py,sha256=kK_si5GsaZUlaQMrwq6SWauk-0nWnwEbeeJB4V1qzfI,2891
213
213
  pex/resolve/requirement_options.py,sha256=4E5e_81ANZMg3-a1zYnJ--rixyqaEJ49197GjB3AYbA,2288
214
214
  pex/resolve/resolved_requirement.py,sha256=78dn81rEqnbkbhR9C6rAh_rTfQTLq-zUaZZVh9Z7ZAQ,2480
215
215
  pex/resolve/resolver_configuration.py,sha256=E7bkHBapJCzfFS5mjepkbA_k7CRB70GZy1cswzgHixY,9266
216
- pex/resolve/resolver_options.py,sha256=iWCSqPCpUJDJGE8k9NtZ5zHPMN2ZD7p-s4eXq1dZmdQ,40031
216
+ pex/resolve/resolver_options.py,sha256=Cq7JO6C9YPb1VSLqNKFTIcSIqtsZSIldX8N2j2YRbAU,40742
217
217
  pex/resolve/resolvers.py,sha256=gLulbbaBYhh_kGsKjiP1y43OHIb5PzfpRqf2jw6b6vc,10012
218
218
  pex/resolve/script_metadata.py,sha256=6PdrBvUmKQGdTIPHfE-F07460drqjQB_HuBgz_35ql0,6903
219
219
  pex/resolve/target_configuration.py,sha256=FFrVHKgceCMlse2xOgxTtdnQ7ENw3A59t4IId0F1GDw,10349
@@ -968,10 +968,10 @@ pex/windows/stubs/uv-trampoline-aarch64-console.exe,sha256=1S2aM-6CV7rKz-3ncM5X7
968
968
  pex/windows/stubs/uv-trampoline-aarch64-gui.exe,sha256=mb8x1FpyH-wy11X5YgWfqh_VUwBb62M4Zf9aFr5V4EE,40448
969
969
  pex/windows/stubs/uv-trampoline-x86_64-console.exe,sha256=nLopBrlCMMFjkKVRlY7Ke2zFGpQOyF5mSlLs0d7-HRQ,40960
970
970
  pex/windows/stubs/uv-trampoline-x86_64-gui.exe,sha256=icnp1oXrOZpc-dHTGvDbTHjr-D8M0eamvRrC9bPI_KI,41984
971
- pex-2.57.0.dist-info/METADATA,sha256=xS_tx4_QbaCG2xBwn9gcYKf4gWTGrxMs95iGTFMeqPk,7425
972
- pex-2.57.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
973
- pex-2.57.0.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
974
- pex-2.57.0.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
975
- pex-2.57.0.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
976
- pex-2.57.0.dist-info/pylock/pylock.toml,sha256=ar9a6_myHcpeU4Ttsts2XQ15x6vs5aqDzjlRUATZHoI,7151
977
- pex-2.57.0.dist-info/RECORD,,
971
+ pex-2.58.1.dist-info/METADATA,sha256=re_QwGkd88xKULg9V7GiTQaEIYRpNfbhfeP8VnoijA4,7425
972
+ pex-2.58.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
973
+ pex-2.58.1.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
974
+ pex-2.58.1.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
975
+ pex-2.58.1.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
976
+ pex-2.58.1.dist-info/pylock/pylock.toml,sha256=ar9a6_myHcpeU4Ttsts2XQ15x6vs5aqDzjlRUATZHoI,7151
977
+ pex-2.58.1.dist-info/RECORD,,
File without changes