pex 2.67.2__py2.py3-none-any.whl → 2.67.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 (42) hide show
  1. pex/build_backend/wrap.py +2 -4
  2. pex/cli/commands/run.py +2 -4
  3. pex/docs/html/_pagefind/fragment/{en_3e96e51.pf_fragment → en_124660d.pf_fragment} +0 -0
  4. pex/docs/html/_pagefind/fragment/en_38b2a67.pf_fragment +0 -0
  5. pex/docs/html/_pagefind/fragment/en_6b11cb6.pf_fragment +0 -0
  6. pex/docs/html/_pagefind/fragment/en_796ed92.pf_fragment +0 -0
  7. pex/docs/html/_pagefind/fragment/en_7d6b02f.pf_fragment +0 -0
  8. pex/docs/html/_pagefind/fragment/en_9281638.pf_fragment +0 -0
  9. pex/docs/html/_pagefind/fragment/en_a576e44.pf_fragment +0 -0
  10. pex/docs/html/_pagefind/fragment/en_ed824c8.pf_fragment +0 -0
  11. pex/docs/html/_pagefind/index/{en_18431e3.pf_index → en_d486c12.pf_index} +0 -0
  12. pex/docs/html/_pagefind/pagefind-entry.json +1 -1
  13. pex/docs/html/_pagefind/pagefind.en_93a1239562.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/interpreter_constraints.py +1 -1
  24. pex/pip/local_project.py +6 -8
  25. pex/resolver.py +2 -4
  26. pex/sdist.py +187 -0
  27. pex/version.py +1 -1
  28. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/METADATA +4 -4
  29. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/RECORD +34 -33
  30. pex/docs/html/_pagefind/fragment/en_10f15e2.pf_fragment +0 -0
  31. pex/docs/html/_pagefind/fragment/en_3045f7f.pf_fragment +0 -0
  32. pex/docs/html/_pagefind/fragment/en_621f4bc.pf_fragment +0 -0
  33. pex/docs/html/_pagefind/fragment/en_6359c48.pf_fragment +0 -0
  34. pex/docs/html/_pagefind/fragment/en_6c7c5cb.pf_fragment +0 -0
  35. pex/docs/html/_pagefind/fragment/en_e678236.pf_fragment +0 -0
  36. pex/docs/html/_pagefind/fragment/en_f725be5.pf_fragment +0 -0
  37. pex/docs/html/_pagefind/pagefind.en_c2d7798d1c.pf_meta +0 -0
  38. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/WHEEL +0 -0
  39. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/entry_points.txt +0 -0
  40. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/licenses/LICENSE +0 -0
  41. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/pylock/pylock.toml +0 -0
  42. {pex-2.67.2.dist-info → pex-2.67.3.dist-info}/top_level.txt +0 -0
pex/build_backend/wrap.py CHANGED
@@ -11,6 +11,7 @@ import io
11
11
  import os
12
12
  import tarfile
13
13
 
14
+ from pex import sdist
14
15
  from pex.build_backend import BuildError
15
16
  from pex.build_backend.configuration import load_config
16
17
  from pex.build_backend.pylock import ScriptLocks
@@ -63,10 +64,7 @@ def build_sdist(
63
64
 
64
65
  sdist_path = os.path.join(sdist_directory, sdist_name)
65
66
  build_dir = _build_dir("sdist")
66
-
67
- with tarfile.open(sdist_path) as tf:
68
- tf.extractall(build_dir)
69
-
67
+ sdist.extract_tarball(sdist_path, dest_dir=build_dir)
70
68
  entries = os.listdir(build_dir)
71
69
  if len(entries) != 1:
72
70
  raise BuildError(
pex/cli/commands/run.py CHANGED
@@ -10,12 +10,11 @@ import os.path
10
10
  import posixpath
11
11
  import shutil
12
12
  import sys
13
- import tarfile
14
13
  from argparse import _ActionsContainer
15
- from contextlib import closing
16
14
 
17
15
  from pex import dependency_configuration, interpreter
18
16
  from pex import resolver as pip_resolver
17
+ from pex import sdist
19
18
  from pex.artifact_url import ArtifactURL, Fingerprint
20
19
  from pex.atomic_directory import atomic_directory
21
20
  from pex.build_system import pep_517
@@ -676,8 +675,7 @@ class Run(CacheAwareMixin, BuildTimeCommand):
676
675
  return package, os.path.join(lock_dest_dir, lock_path)
677
676
  elif is_sdist(distribution.path):
678
677
  if is_tar_sdist(distribution.path):
679
- with closing(tarfile.open(distribution.path)) as tf:
680
- tf.extractall(lock_dest_dir)
678
+ sdist.extract_tarball(distribution.path, dest_dir=lock_dest_dir)
681
679
  else:
682
680
  with open_zip(distribution.path) as zf:
683
681
  zf.extractall(lock_dest_dir)
@@ -1 +1 @@
1
- {"version":"1.3.0","languages":{"en":{"hash":"en_c2d7798d1c","wasm":"en","page_count":8}}}
1
+ {"version":"1.3.0","languages":{"en":{"hash":"en_93a1239562","wasm":"en","page_count":8}}}
@@ -1,5 +1,5 @@
1
1
  const DOCUMENTATION_OPTIONS = {
2
- VERSION: '2.67.2',
2
+ VERSION: '2.67.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.67.2)</title>
11
+ <title>PEX runtime environment variables - Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="../index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
674
+ </div><script src="../_static/documentation_options.js?v=a263c5d4"></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.67.2)</title>
11
+ <title>Building .pex files - Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
712
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</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.67.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.67.2)</div></a>
164
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
291
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</title>
11
+ <title>Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="#"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
392
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</title>
11
+ <title>PEX Recipes and Notes - Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
485
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</title>
11
+ <title>PEX with included Python interpreter - Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
675
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</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.67.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.67.2)</div></a>
179
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
304
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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.67.2)</title>
11
+ <title>What are .pex files? - Pex Docs (v2.67.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.67.2)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.67.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.67.2/" 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.67.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.67.2/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.67.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=061b41cd"></script>
374
+ </div><script src="_static/documentation_options.js?v=a263c5d4"></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>
@@ -375,7 +375,7 @@ COMPATIBLE_PYTHON_VERSIONS = (
375
375
  PythonVersion(Lifecycle.EOL, 3, 6, 15),
376
376
  PythonVersion(Lifecycle.EOL, 3, 7, 17),
377
377
  PythonVersion(Lifecycle.EOL, 3, 8, 20),
378
- PythonVersion(Lifecycle.STABLE, 3, 9, 24),
378
+ PythonVersion(Lifecycle.EOL, 3, 9, 25),
379
379
  PythonVersion(Lifecycle.STABLE, 3, 10, 19),
380
380
  PythonVersion(Lifecycle.STABLE, 3, 11, 14),
381
381
  PythonVersion(Lifecycle.STABLE, 3, 12, 12),
pex/pip/local_project.py CHANGED
@@ -4,9 +4,8 @@
4
4
  from __future__ import absolute_import
5
5
 
6
6
  import os.path
7
- import tarfile
8
7
 
9
- from pex import hashing
8
+ from pex import hashing, sdist
10
9
  from pex.build_system import pep_517
11
10
  from pex.common import temporary_dir
12
11
  from pex.pip.version import PipVersionValue
@@ -33,20 +32,19 @@ def digest_local_project(
33
32
  # type: (...) -> Union[str, Error]
34
33
  with TRACER.timed("Fingerprinting local project at {directory}".format(directory=directory)):
35
34
  with temporary_dir() as td:
36
- sdist_or_error = pep_517.build_sdist(
35
+ sdist_path_or_error = pep_517.build_sdist(
37
36
  project_directory=directory,
38
37
  dist_dir=os.path.join(td, "dists"),
39
38
  pip_version=pip_version,
40
39
  target=target,
41
40
  resolver=resolver,
42
41
  )
43
- if isinstance(sdist_or_error, Error):
44
- return sdist_or_error
45
- sdist = sdist_or_error
42
+ if isinstance(sdist_path_or_error, Error):
43
+ return sdist_path_or_error
44
+ sdist_path = sdist_path_or_error
46
45
 
47
46
  extract_dir = dest_dir or os.path.join(td, "extracted")
48
- with tarfile.open(sdist) as tf:
49
- tf.extractall(extract_dir)
47
+ sdist.extract_tarball(sdist_path, dest_dir=extract_dir)
50
48
  listing = os.listdir(extract_dir)
51
49
  assert len(listing) == 1, (
52
50
  "Expected sdist generated for {directory} to contain one top-level directory, "
pex/resolver.py CHANGED
@@ -10,12 +10,11 @@ import hashlib
10
10
  import itertools
11
11
  import json
12
12
  import os
13
- import tarfile
14
13
  import zipfile
15
14
  from abc import abstractmethod
16
15
  from collections import OrderedDict, defaultdict
17
16
 
18
- from pex import targets
17
+ from pex import sdist, targets
19
18
  from pex.atomic_directory import AtomicDirectory, atomic_directory
20
19
  from pex.cache.dirs import BuiltWheelDir, CacheDir
21
20
  from pex.common import (
@@ -688,8 +687,7 @@ class BuildRequest(object):
688
687
  with open_zip(self.source_path) as zf:
689
688
  zf.extractall(extract_dir)
690
689
  elif is_tar_sdist(self.source_path):
691
- with tarfile.open(self.source_path) as tf:
692
- tf.extractall(extract_dir)
690
+ sdist.extract_tarball(self.source_path, dest_dir=extract_dir)
693
691
  else:
694
692
  raise BuildError(
695
693
  "Unexpected archive type for sdist {project}".format(project=self.source_path)
pex/sdist.py ADDED
@@ -0,0 +1,187 @@
1
+ # Copyright 2025 Pex project contributors.
2
+ # Licensed under the Apache License, Version 2.0 (see LICENSE).
3
+
4
+ from __future__ import absolute_import
5
+
6
+ import copy
7
+ import os.path
8
+ import sys
9
+ import tarfile
10
+ from tarfile import TarInfo
11
+
12
+ from pex.compatibility import commonpath
13
+ from pex.typing import TYPE_CHECKING, cast
14
+
15
+ if TYPE_CHECKING:
16
+ from typing import Any, Dict, Optional, Text
17
+
18
+
19
+ class FilterError(tarfile.TarError):
20
+ pass
21
+
22
+
23
+ class AbsolutePathError(FilterError):
24
+ pass
25
+
26
+
27
+ class OutsideDestinationError(FilterError):
28
+ pass
29
+
30
+
31
+ class SpecialFileError(FilterError):
32
+ pass
33
+
34
+
35
+ class AbsoluteLinkError(FilterError):
36
+ pass
37
+
38
+
39
+ class LinkOutsideDestinationError(FilterError):
40
+ pass
41
+
42
+
43
+ _REALPATH_KWARGS = (
44
+ {"strict": getattr(os.path, "ALLOW_MISSING", False)} if sys.version_info[:2] >= (3, 10) else {}
45
+ ) # type: Dict[str, Any]
46
+
47
+
48
+ def _realpath(path):
49
+ # type: (Text) -> Text
50
+ return os.path.realpath(path, **_REALPATH_KWARGS)
51
+
52
+
53
+ def _get_filtered_attrs(
54
+ member, # type: TarInfo
55
+ dest_path, # type: Text
56
+ for_data=True, # type: bool
57
+ ):
58
+ # type: (...) -> Dict[str, Any]
59
+
60
+ # N.B.: Copied from CPython 3.14 stdlib tarfile.py
61
+ # Modifications:
62
+ # + Exception types replicated with error messages placed at call site.
63
+ # + `os.path.realpath` -> `_realpath` to deal with `strict` parameter.
64
+ # + `os.path.commonpath` -> `pex.compatibility.commonpath`
65
+ # + `mode = None` guarded by `sys.version_info[:2] >= (3, 12)` with commentary.
66
+
67
+ new_attrs = {} # type: Dict[str, Any]
68
+ name = member.name
69
+ dest_path = _realpath(dest_path)
70
+ # Strip leading / (tar's directory separator) from filenames.
71
+ # Include os.sep (target OS directory separator) as well.
72
+ if name.startswith(("/", os.sep)):
73
+ name = new_attrs["name"] = member.path.lstrip("/" + os.sep)
74
+ if os.path.isabs(name):
75
+ # Path is absolute even after stripping.
76
+ # For example, 'C:/foo' on Windows.
77
+ raise AbsolutePathError("member {name!r} has an absolute path".format(name=member.name))
78
+ # Ensure we stay in the destination
79
+ target_path = _realpath(os.path.join(dest_path, name))
80
+ if commonpath([target_path, dest_path]) != dest_path:
81
+ raise OutsideDestinationError(
82
+ "{name!r} would be extracted to {path!r}, which is outside the destination".format(
83
+ name=member.name, path=target_path
84
+ )
85
+ )
86
+ # Limit permissions (no high bits, and go-w)
87
+ mode = member.mode # type: Optional[int]
88
+ if mode is not None:
89
+ # Strip high bits & group/other write bits
90
+ mode = mode & 0o755
91
+ if for_data:
92
+ # For data, handle permissions & file types
93
+ if member.isreg() or member.islnk():
94
+ if not mode & 0o100:
95
+ # Clear executable bits if not executable by user
96
+ mode &= ~0o111
97
+ # Ensure owner can read & write
98
+ mode |= 0o600
99
+ elif member.isdir() or member.issym():
100
+ if sys.version_info[:2] >= (3, 12):
101
+ # Ignore mode for directories & symlinks
102
+ mode = None
103
+ else:
104
+ # Retain stripped mode since older Pythons do not support None.
105
+ pass
106
+ else:
107
+ # Reject special files
108
+ raise SpecialFileError("{name!r} is a special file".format(name=member.name))
109
+ if mode != member.mode:
110
+ new_attrs["mode"] = mode
111
+ if for_data:
112
+ # Ignore ownership for 'data'
113
+ if member.uid is not None:
114
+ new_attrs["uid"] = None
115
+ if member.gid is not None:
116
+ new_attrs["gid"] = None
117
+ if member.uname is not None:
118
+ new_attrs["uname"] = None
119
+ if member.gname is not None:
120
+ new_attrs["gname"] = None
121
+ # Check link destination for 'data'
122
+ if member.islnk() or member.issym():
123
+ if os.path.isabs(member.linkname):
124
+ raise AbsoluteLinkError(
125
+ "{name!r} is a link to an absolute path".format(name=member.name)
126
+ )
127
+ normalized = os.path.normpath(member.linkname)
128
+ if normalized != member.linkname:
129
+ new_attrs["linkname"] = normalized
130
+ if member.issym():
131
+ target_path = os.path.join(dest_path, os.path.dirname(name), member.linkname)
132
+ else:
133
+ target_path = os.path.join(dest_path, member.linkname)
134
+ target_path = _realpath(target_path)
135
+ if commonpath([target_path, dest_path]) != dest_path:
136
+ raise LinkOutsideDestinationError(
137
+ "{name!r} would link to {path!r}, which is outside the destination".format(
138
+ name=member.name, path=target_path
139
+ )
140
+ )
141
+ return new_attrs
142
+
143
+
144
+ def _replace(
145
+ member, # type: TarInfo
146
+ attrs, # type: Dict[str, Any]
147
+ ):
148
+ # type: (...) -> TarInfo
149
+
150
+ replace = getattr(member, "replace", None)
151
+ if replace:
152
+ attrs["deep"] = False
153
+ return cast(TarInfo, replace(**attrs))
154
+
155
+ result = copy.copy(member)
156
+ for attr, value in attrs.items():
157
+ setattr(result, attr, value)
158
+ return result
159
+
160
+
161
+ def _data_filter(
162
+ member, # type: TarInfo
163
+ dest_path, # type: Text
164
+ ):
165
+ new_attrs = _get_filtered_attrs(member, dest_path, True)
166
+ if new_attrs:
167
+ return _replace(member, new_attrs)
168
+ return member
169
+
170
+
171
+ _EXTRACTALL_DATA_FILTER_KWARGS = {"filter": "data"} # type: Dict[str, Any]
172
+
173
+
174
+ def extract_tarball(
175
+ tarball_path, # type: Text
176
+ dest_dir, # type: Text
177
+ ):
178
+ # type: (...) -> None
179
+
180
+ with tarfile.open(tarball_path) as tf:
181
+ if sys.version_info[:2] >= (3, 12):
182
+ tf.extractall(dest_dir, **_EXTRACTALL_DATA_FILTER_KWARGS)
183
+ return
184
+
185
+ for tar_info in tf: # type: ignore[unreachable]
186
+ tar_info = _data_filter(tar_info, dest_dir)
187
+ tf.extract(tar_info, dest_dir)
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.67.2"
4
+ __version__ = "2.67.3"
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pex
3
- Version: 2.67.2
3
+ Version: 2.67.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.67.2/pex
6
+ Download-URL: https://github.com/pex-tool/pex/releases/download/v2.67.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.67.2/CHANGES.md
10
+ Project-URL: Changelog, https://github.com/pex-tool/pex/blob/v2.67.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.67.2
12
+ Project-URL: Source, https://github.com/pex-tool/pex/tree/v2.67.3
13
13
  Keywords: package,executable,virtualenv,lock,freeze
14
14
  Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Intended Audience :: Developers
@@ -29,7 +29,7 @@ pex/hashing.py.lck,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  pex/inherit_path.py,sha256=NyEC7OxIQp3lwtZJAU3DxEGtJHM9GcKDkaaUmqZrJTU,1004
30
30
  pex/installed_wheel.py,sha256=zPBq4AuXh4TsrtNU86bs1s3zc44YHckJp94y9oHZ_GE,5270
31
31
  pex/interpreter.py,sha256=Ka9QCoP3HL9xIJwW9f5YGvfWzc3kEWM0CuZ-7cWJSeE,63272
32
- pex/interpreter_constraints.py,sha256=K-6VhVXeUVrgO4OYWylNJKLX1H1esfyxFGDxpTbAl1M,14710
32
+ pex/interpreter_constraints.py,sha256=VRwMoc0iWhrEl7bwvV2i0J1S4jFyYwVi3dJHextFS1E,14707
33
33
  pex/interpreter_implementation.py,sha256=OfatzBe4P-CqF4y9Jlwt-x41q7THspGexKyYPkma4w0,1137
34
34
  pex/jobs.py,sha256=OEcJ9iiyfz4g-XMXeIBeEwxD-FP_iZ6ChON81d1o6o4,28789
35
35
  pex/lang.py,sha256=Rhqq2EyYjCy1Ejg5wX0N5gZI0F0tIrxAgnlWSvf3dI4,1031
@@ -56,8 +56,9 @@ pex/pth.py,sha256=YGiWmW99vPvPm5-iU_Kbvbu1NTtJyyTp32ilHyAJ_VQ,3402
56
56
  pex/pyenv.py,sha256=O5_Ec26J8GQpa5Xt_TtSB0A9rV62vYgciIwBlW4aiZ8,9276
57
57
  pex/rank.py,sha256=dNFi6Y7bBe8gwcKSon81EOs9Jw4uhUzoHgRnIDYV8lU,3901
58
58
  pex/requirements.py,sha256=NpseoFVrUfTDSd0JAoOnVstbvYC140ecDgiHeb39b3s,29007
59
- pex/resolver.py,sha256=M7pguQ_EK9nt_8RNgEyOiP8CayNglL1pQvDZ7pt3ZEE,81110
59
+ pex/resolver.py,sha256=x6aRRKm4xMSTy8QDc7PA5-xIkR8UqOttV6iOcrw0LbQ,81078
60
60
  pex/result.py,sha256=VTE_n-IffLf-FD4ENNbRvq_ebahh-IDYAna1y5Iw1WI,3090
61
+ pex/sdist.py,sha256=755z19Lyb-5GG4pdK9mcpmMTPGP_YA56YQRnVzZdZIg,5994
61
62
  pex/sh_boot.py,sha256=mTB7aYc26GymgmbN5-QCiC_sbi3GBL5NZAiwXCsNL1w,11433
62
63
  pex/sorted_tuple.py,sha256=L_49iVoVZ57J-q44nVRO-boT0bc8ynhJlhS_yUp2xeo,2371
63
64
  pex/specifier_sets.py,sha256=iT2h4lSB09Rdk4t64iP5abI39s0TpTDDwFVLDHiPj2Q,11559
@@ -69,7 +70,7 @@ pex/tracer.py,sha256=nob_hNooCYWZev7_ABhAVyO4HBZ8Q_OajQUvNnr82Rc,4481
69
70
  pex/typing.py,sha256=J1JTB1V48zIWmhWRHEMDHWMaFPMzsEonWJ9s57Ev43Q,3050
70
71
  pex/util.py,sha256=TxTxpdDmrDTLVXt9e2XuRq9c3N6jRYNCce87QBFkCVo,5491
71
72
  pex/variables.py,sha256=h3-JeMzXfRzEsWqTYsoU-6vt5W4Kr0VvbfSDAYtuZOU,34728
72
- pex/version.py,sha256=jQ7b9wzp7e02TLEyxGAcHq82HwkkRwKNf66TOilcEc4,131
73
+ pex/version.py,sha256=tlf5GitJ2iOsEtwVVHHyWFO_CuTJC44rFpKAfXmAmwQ,131
73
74
  pex/wheel.py,sha256=R9jPWwzla_c3xUbeYjaQMrKC0ly8UexKMLfuRDhP054,11146
74
75
  pex/whl.py,sha256=0Nh1d6kmAaRANCygoVZZi0zii6j_elRQc7N6yDHTuMY,2513
75
76
  pex/ziputils.py,sha256=thUrto9vEdG9mFCIJ59Js3d1y6bSfFdl7pb1lSb7KAQ,9620
@@ -78,7 +79,7 @@ pex/bin/pex.py,sha256=a27xHuS7De8pJR03i-vs6TckLwGTSb4krhOXNpc-0Bk,56448
78
79
  pex/build_backend/__init__.py,sha256=tmA8i5f0-IGhFekR1VJF9kn3LXbhs3nToTuvh4S3hEQ,188
79
80
  pex/build_backend/configuration.py,sha256=s95XQMc2P23GWrS8z8O6pyfUDYNlFlBkuegqTEpJYOA,9353
80
81
  pex/build_backend/pylock.py,sha256=xY9OO6pNPneqEQAxDTwHH5XNbU_aoM6MACuPOiT7jo0,8318
81
- pex/build_backend/wrap.py,sha256=IkYStMypNdqsLDPNoCB4-6yPRLobABIhx9jRVMHusGI,6109
82
+ pex/build_backend/wrap.py,sha256=TveTpdUz24xdiwged4aZHqx0l3VS_tshMdJivzoymDQ,6113
82
83
  pex/build_system/__init__.py,sha256=JYbpW71Z5Jkft7b5VSMg2VQJUNWzRDXji-2DFyXUvmQ,564
83
84
  pex/build_system/pep_517.py,sha256=ZGeDso2Pmv2JjB0dMBUcXHlCMhram7QhJneYskXtH4U,10458
84
85
  pex/build_system/pep_518.py,sha256=LMgvpHqcifQAHe6jgGBEGgPolMIk7BBcKBunN5u7jr4,8355
@@ -96,7 +97,7 @@ pex/cli/commands/cache_aware.py,sha256=MkR7bypyDyZwRxESJJ6I4wd3zeNJl2gTaB9pg5AEy
96
97
  pex/cli/commands/docs.py,sha256=z4KWsTlVZqOda-RrxfMn34JwLtmSHTBFh-w7AuG45KE,2615
97
98
  pex/cli/commands/interpreter.py,sha256=grgIqFkWlv5c1Bf38CgdXRJ0IqsvKrn_OxQFIbejsQY,7684
98
99
  pex/cli/commands/lock.py,sha256=F06kI8TaLhK0wEdVEBsngZv9gBU1C-T_xkDHDUfSDb4,102413
99
- pex/cli/commands/run.py,sha256=gWkuaxPFnGqFi-kr7ROkBG-YvSddWbj0UtKRk9QzcEU,34997
100
+ pex/cli/commands/run.py,sha256=rEQRF3JEuRb81jJ0nhfMi2hXH5BXiR2ETiGpnVeoTUE,34936
100
101
  pex/cli/commands/venv.py,sha256=8yDDMT61dgUuBH84whLingNobjSeTAzhe61W6VZCqDA,20705
101
102
  pex/cli/commands/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
103
  pex/cli/commands/cache/bytes.py,sha256=2bnNpwLYTUvVf2q_g9jqi-0ORbOFs_csYmCTEG3IQhM,3952
@@ -113,33 +114,33 @@ pex/distutils/commands/__init__.py,sha256=uASB5OU996Jax-h3kMmeZjG5Jdy9BYDR6A1swk
113
114
  pex/distutils/commands/bdist_pex.py,sha256=SLwBj0ALpArhKQT94X0niKWfyLaySjOZuZrGXG332K0,5117
114
115
  pex/docs/__init__.py,sha256=u9hPOij1fpo1yPBLTQTdSCnSIUuRCSXHomCkEAaCciA,439
115
116
  pex/docs/command.py,sha256=uQyD8bO_DBNIlkPd6F7SFZbZUVh1Xn6gT8OmVxP4qxk,3046
116
- pex/docs/html/buildingpex.html,sha256=gaP-vOR0vgnjh5G1LnCK7XayA0Kp7QacQz4qUV7S_aw,57407
117
- pex/docs/html/genindex.html,sha256=uiLCd-zo0QPbyELS_kUKw8nx5LdKFO1C1KDRhje4M_Y,17198
118
- pex/docs/html/index.html,sha256=yYLKpK2Won2hS6LhvePh3fvNIZTfIHASQ8L4AB-MVp4,25028
119
- pex/docs/html/recipes.html,sha256=yqQ4_lJ6Ok57B9cHrbqA1-qDuyFv4Q7_mfjAOkt6PZ0,35192
120
- pex/docs/html/scie.html,sha256=3F3DJyUg7XCwZfE0gS23VQrP8taa0_FGbOKqREHhhpI,62182
121
- pex/docs/html/search.html,sha256=qT3EEsHg1uwaNmZhX5sJ-75x9LqA87tmx5VdLZa2NY8,18169
117
+ pex/docs/html/buildingpex.html,sha256=A-2JB8PUwvinP4ZM5L2QugN0fuqmuMmS0dnRXdiyNps,57407
118
+ pex/docs/html/genindex.html,sha256=_4zUYU6LYhjwNf9l-XkY7HTqA2XvJ1nLdIi7hOnMu2A,17198
119
+ pex/docs/html/index.html,sha256=5klxOaLKXAMmNAKeOCfmyfScn7d2LdPm0WmbboMXcwc,25028
120
+ pex/docs/html/recipes.html,sha256=XqIjbc6TF7GimOUHoGpIxEYtqjnKxdos8f5ykWc7mFk,35192
121
+ pex/docs/html/scie.html,sha256=66gdnSRxQSMqQSnCpIDraT5ZF1loOHA00g1eUTC1_3M,62182
122
+ pex/docs/html/search.html,sha256=IObGwtPkZ4WIi4LcFfQBPIqIJw6_a8hC4Ene3lbjjmg,18169
122
123
  pex/docs/html/searchindex.js,sha256=R_L6Oveik_wlK5CmaE7YwRvmu81r6fd7jtnZUjfk1sA,18009
123
- pex/docs/html/whatispex.html,sha256=aw1_OCx-T5QRNst644xVWbdTVaPD2WaZyDFsWMz6id0,22754
124
- pex/docs/html/_pagefind/pagefind-entry.json,sha256=1WYlCSNtRKtmoVOI9oGLc1_vfIFVcwso9t1zURHx5bg,90
124
+ pex/docs/html/whatispex.html,sha256=_UqCvOb0zIdPlx9u2qvEKCh0gdCckRelLJfOnHRQWVQ,22754
125
+ pex/docs/html/_pagefind/pagefind-entry.json,sha256=bxp1zyKMYdpmLCoYpbFYnnyTvVwY1dDHmsbn1tNba4M,90
125
126
  pex/docs/html/_pagefind/pagefind-highlight.js,sha256=5hRyi7gOMY9tlTe-tbmDrVJpoxbnYxhbJeoGwtmCfXA,43944
126
127
  pex/docs/html/_pagefind/pagefind-modular-ui.css,sha256=ZTqynk3lYp9t319vzfXSs-tTmowH__ila4ziFWpXB4g,7336
127
128
  pex/docs/html/_pagefind/pagefind-modular-ui.js,sha256=-DCEOJ2cInrvjEGZFxCuYy81EMWbKHhMu4wivlJmUzE,14486
128
129
  pex/docs/html/_pagefind/pagefind-ui.css,sha256=GL61nVezuyVA4ynNRJejhEwUBxhBtx4rDYVlAgI_W1U,14486
129
130
  pex/docs/html/_pagefind/pagefind-ui.js,sha256=WQ3yec_CMkBKswl16Ig5N_zJzeCgL4z9y344TcJeKAQ,78367
130
- pex/docs/html/_pagefind/pagefind.en_c2d7798d1c.pf_meta,sha256=pos0hgxMzpDkKPsjw-1aHVQRW705Q8KZhSWj1ct-J_c,154
131
+ pex/docs/html/_pagefind/pagefind.en_93a1239562.pf_meta,sha256=P4UpPI3k9For-PcYfGH2NFMZNYE3VgvV7MgzIK4gerk,152
131
132
  pex/docs/html/_pagefind/pagefind.js,sha256=Q-4jKyPif6awDU9x8IoWXTWoJJR1JZicegUYQ-QI4MA,32912
132
133
  pex/docs/html/_pagefind/wasm.en.pagefind,sha256=mG0TKIE7WXynsyg-tpiMZiVG2Hwebbt2UqFqlqdTTsE,70873
133
134
  pex/docs/html/_pagefind/wasm.unknown.pagefind,sha256=eAREknqQnc_y96pbl8eYz9zqfUXsqe64B7HwrQE2SkY,67202
134
- pex/docs/html/_pagefind/fragment/en_10f15e2.pf_fragment,sha256=5JO2wXrIa_PJk6iLM9101OhRK4cCiWv3lw29Jfypbd0,3648
135
- pex/docs/html/_pagefind/fragment/en_3045f7f.pf_fragment,sha256=DDrxbtBUw_74cLuHPOofg4bcOjXtIX1Dii8jJKYGiWs,3019
136
- pex/docs/html/_pagefind/fragment/en_3e96e51.pf_fragment,sha256=8wxviDp-UqaDkvK9xEiLMwqzaikVRrsedRGQm_LtYqo,4848
137
- pex/docs/html/_pagefind/fragment/en_621f4bc.pf_fragment,sha256=Hv-G7E5VVcF508gQrpzWcfc0xb-22r1gxcWahLt8310,1158
138
- pex/docs/html/_pagefind/fragment/en_6359c48.pf_fragment,sha256=srcqo8hl9dB41VkvrHQxwIuKaG0tDJ8Bz8JZ_GzpN_A,370
139
- pex/docs/html/_pagefind/fragment/en_6c7c5cb.pf_fragment,sha256=Vu2ukVRKqLSbSV-J5D_ZA5zTDYVQyHRkJkHzLKbU40Q,360
140
- pex/docs/html/_pagefind/fragment/en_e678236.pf_fragment,sha256=Mh0Nb9HclfoDUe0tD3p8UWWPwu69rEmU-dsssr5ZxNY,1142
141
- pex/docs/html/_pagefind/fragment/en_f725be5.pf_fragment,sha256=rEXW0H-44_nh1B4GLgEdfyDWrLkdZxEyZ2WO_QpUxLY,6821
142
- pex/docs/html/_pagefind/index/en_18431e3.pf_index,sha256=yac6y8z72UO-vh3PbE6RmInGtBwqrIbbRYu7RGscHHE,28865
135
+ pex/docs/html/_pagefind/fragment/en_124660d.pf_fragment,sha256=rONNc2GDFsf9yGf5GMLYfbfVa70wcM3BkO8BJrfbvZE,4848
136
+ pex/docs/html/_pagefind/fragment/en_38b2a67.pf_fragment,sha256=5kI0txspHl__y7tI_X4fJBVfq_JMLfaO2bIZ0tJZzP0,3648
137
+ pex/docs/html/_pagefind/fragment/en_6b11cb6.pf_fragment,sha256=DyPX5_Fnk3RYCaZUS7FQvwAOIFm0bDHrbqQ1vLjHiek,1158
138
+ pex/docs/html/_pagefind/fragment/en_796ed92.pf_fragment,sha256=AvgJCWo1SbX1qIqNLJFcL0487Dqzp51GxB-JiZPtzr4,3018
139
+ pex/docs/html/_pagefind/fragment/en_7d6b02f.pf_fragment,sha256=krk3CwQEf1G21BrkdhNX1IPO24BosxRdVDsCIyV99bQ,1143
140
+ pex/docs/html/_pagefind/fragment/en_9281638.pf_fragment,sha256=2SoPe2uXZK3R3kwQuRuRdpAZYcNO-1bEgWJAigS7dLY,370
141
+ pex/docs/html/_pagefind/fragment/en_a576e44.pf_fragment,sha256=QyYKSBvDxdTUhas6_iTlT_LJkPsfdf9TlMEgivNw3l0,6821
142
+ pex/docs/html/_pagefind/fragment/en_ed824c8.pf_fragment,sha256=92nYVANam1IYkfbj7Xeq4m1g__W2osMzmcMYuep2SJc,360
143
+ pex/docs/html/_pagefind/index/en_d486c12.pf_index,sha256=K_bevHpqjRDiE1JUhvNUG7hFEnB2G5L9EjaHDHcKkTo,28865
143
144
  pex/docs/html/_sources/buildingpex.rst.txt,sha256=87P3ZO871MILL9pmpDM8_M7_YV1z5HjTYa9m8yuxTa4,19138
144
145
  pex/docs/html/_sources/index.rst.txt,sha256=vWt1s6dirYeR-9mFJY1SClwWvbWqIqJSFCAF1CdZojc,1468
145
146
  pex/docs/html/_sources/recipes.rst.txt,sha256=kerzvp8_t5io6eGl3YJODtNBQy7GmY2AA6RHaij9C-g,6958
@@ -149,7 +150,7 @@ pex/docs/html/_sources/api/vars.md.txt,sha256=C9gu5czyB-g788xRfYKF8P176ew_q97X6z
149
150
  pex/docs/html/_static/basic.css,sha256=ZW_xus1vJg_H1xuX-cLx_L9pLchL9GnNlSA078ue7-0,14685
150
151
  pex/docs/html/_static/debug.css,sha256=DQXNnnnVMjQwRmfAjwKXHeYZbA_8pZPDkDs2Z7QFWtY,1266
151
152
  pex/docs/html/_static/doctools.js,sha256=KZLAnfkYJqjTPjtItkXud-RXrc98cS13aoFOHixEi0M,4322
152
- pex/docs/html/_static/documentation_options.js,sha256=BjCkPBqqcBswOgDQm4thm20Ew--0Nwdp4cBvn3_05jc,329
153
+ pex/docs/html/_static/documentation_options.js,sha256=OF5vX6wmanabUn_FJ8CilkPnEZlETIFMr_rD40BI6xE,329
153
154
  pex/docs/html/_static/file.png,sha256=XEvJoWrr84xLlQ9ZuOUByjZJUyjLnrYiIYvOkGSjXj4,286
154
155
  pex/docs/html/_static/language_data.js,sha256=O8MRVjt_xegPyrL4Ypd0vzy2swICAA3zbf-OaVqQI7c,4598
155
156
  pex/docs/html/_static/minus.png,sha256=R-f8UNs2mfHKQc6aL_ogLADF0dUYDFX2K6hZsb1swAg,90
@@ -169,7 +170,7 @@ pex/docs/html/_static/styles/furo-extensions.css,sha256=PSsCB3EaBzE9-2yLJyKV9fkx
169
170
  pex/docs/html/_static/styles/furo-extensions.css.map,sha256=CzW267gfKqH8ruMlwJbWg-MsGAipIgZwoaP4gwDGkVw,7762
170
171
  pex/docs/html/_static/styles/furo.css,sha256=666beINeSQtLZbSeNCMj62G7a13xiX1YwJVvij3jr-8,50749
171
172
  pex/docs/html/_static/styles/furo.css.map,sha256=0k0kb9TwrJYQRT-2cbjTcOz7PQykGWHdy2BSuVMtrnY,76038
172
- pex/docs/html/api/vars.html,sha256=nFD4qM1TF41xi6Tanq9K0MDXPXM4UvraAujU_uHcRLk,34903
173
+ pex/docs/html/api/vars.html,sha256=l__otIMQjAn4w-Y6u5bHH3B89aMAEFBvlrqGrrSoQoE,34903
173
174
  pex/fs/__init__.py,sha256=ues2bnsufy1lYRyoWsiP-G4kuPrV-tXaZ0x-HFJFpwY,3605
174
175
  pex/fs/_posix.py,sha256=p-VkjEfRNXduBmkxcuEXWM1g6y6xrkufSYzEy93tqjA,1275
175
176
  pex/fs/_windows.py,sha256=apacgHpxNutF5HkU6cYOLHq7yqaijRMsFBdsdKSviDo,3304
@@ -179,7 +180,7 @@ pex/http/server.py,sha256=7XdrBUF7aZm9CpvmQEsU-lP8jsTEljrZI7FbFqRFXA4,7045
179
180
  pex/pip/__init__.py,sha256=hbVu8HKJGOAmXQlIyMjcEt0EsBK311HumeAwENvHHxY,107
180
181
  pex/pip/download_observer.py,sha256=bDnVowpA_7_NFeJIBSZXr5byY2kcbyf5M2riieo7LKY,3719
181
182
  pex/pip/installation.py,sha256=CFykX2FEPygqO0jxMzPG-rvd2Eos8YJ2cviyMsOUayU,21301
182
- pex/pip/local_project.py,sha256=0HsnUgb0d1XX1TokVogF1xV-pTFNuBLDG-7K2j5VUVI,2040
183
+ pex/pip/local_project.py,sha256=0FO1hi2dFT6aKiEgw-1jyGj4jP-YsXCpF7IIze9TTaY,2038
183
184
  pex/pip/log_analyzer.py,sha256=YLecIWrjTBvDZA_OwvQlcR1gf6-rI_eBt_LFZTA2E-U,4362
184
185
  pex/pip/tailer.py,sha256=af7yJ1rxvtTltno1BEVgJ6lf1C0PPnCzCs6CWto7Y9s,4445
185
186
  pex/pip/tool.py,sha256=CC9pN5b9cB9Poxt4aptsrOP19rx29dlZZotKHPwP8cY,37996
@@ -985,10 +986,10 @@ pex/windows/stubs/uv-trampoline-aarch64-console.exe,sha256=1S2aM-6CV7rKz-3ncM5X7
985
986
  pex/windows/stubs/uv-trampoline-aarch64-gui.exe,sha256=mb8x1FpyH-wy11X5YgWfqh_VUwBb62M4Zf9aFr5V4EE,40448
986
987
  pex/windows/stubs/uv-trampoline-x86_64-console.exe,sha256=nLopBrlCMMFjkKVRlY7Ke2zFGpQOyF5mSlLs0d7-HRQ,40960
987
988
  pex/windows/stubs/uv-trampoline-x86_64-gui.exe,sha256=icnp1oXrOZpc-dHTGvDbTHjr-D8M0eamvRrC9bPI_KI,41984
988
- pex-2.67.2.dist-info/METADATA,sha256=TFp6v7aNQtgqzCDczbOsohql_lbqdfZKIjrzD0AsoCM,7476
989
- pex-2.67.2.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
990
- pex-2.67.2.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
991
- pex-2.67.2.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
992
- pex-2.67.2.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
993
- pex-2.67.2.dist-info/pylock/pylock.toml,sha256=9TIk5X6BqnJ6lKu8eb0EnzwbBcOjs3QJWzcLMYx8M5k,7151
994
- pex-2.67.2.dist-info/RECORD,,
989
+ pex-2.67.3.dist-info/METADATA,sha256=6JxCZvVs7hG401e19hf9OmjHOrfTnj_ayg_lxfOPURs,7476
990
+ pex-2.67.3.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
991
+ pex-2.67.3.dist-info/entry_points.txt,sha256=LD9tcxNxdsVLeIF6zR7dyH1vgo2eD9a-05TC1UraGMQ,174
992
+ pex-2.67.3.dist-info/top_level.txt,sha256=HlafJUPu7mfjxv3SDH-RbkxsHOWSVbPXTEBC1hzonpM,4
993
+ pex-2.67.3.dist-info/licenses/LICENSE,sha256=bcDgaNzzpbyOBUIFuFt3IOHUkmW7xkv1FdLPeRl99po,11323
994
+ pex-2.67.3.dist-info/pylock/pylock.toml,sha256=9TIk5X6BqnJ6lKu8eb0EnzwbBcOjs3QJWzcLMYx8M5k,7151
995
+ pex-2.67.3.dist-info/RECORD,,
File without changes