pex 2.58.1__py2.py3-none-any.whl → 2.59.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 (64) hide show
  1. pex/bin/pex.py +1 -0
  2. pex/cli/commands/venv.py +5 -1
  3. pex/dependency_configuration.py +6 -2
  4. pex/dist_metadata.py +30 -8
  5. pex/docs/html/_pagefind/fragment/en_1664623.pf_fragment +0 -0
  6. pex/docs/html/_pagefind/fragment/en_1ebfe82.pf_fragment +0 -0
  7. pex/docs/html/_pagefind/fragment/en_368bf05.pf_fragment +0 -0
  8. pex/docs/html/_pagefind/fragment/en_389a79a.pf_fragment +0 -0
  9. pex/docs/html/_pagefind/fragment/en_4c5cc0e.pf_fragment +0 -0
  10. pex/docs/html/_pagefind/fragment/en_92da226.pf_fragment +0 -0
  11. pex/docs/html/_pagefind/fragment/en_b99d99b.pf_fragment +0 -0
  12. pex/docs/html/_pagefind/fragment/en_eccd471.pf_fragment +0 -0
  13. pex/docs/html/_pagefind/index/en_106262d.pf_index +0 -0
  14. pex/docs/html/_pagefind/pagefind-entry.json +1 -1
  15. pex/docs/html/_pagefind/pagefind.en_1c6ca7a059.pf_meta +0 -0
  16. pex/docs/html/_static/documentation_options.js +1 -1
  17. pex/docs/html/_static/pygments.css +164 -146
  18. pex/docs/html/_static/styles/furo.css +1 -1
  19. pex/docs/html/_static/styles/furo.css.map +1 -1
  20. pex/docs/html/api/vars.html +25 -34
  21. pex/docs/html/buildingpex.html +25 -34
  22. pex/docs/html/genindex.html +24 -33
  23. pex/docs/html/index.html +25 -34
  24. pex/docs/html/recipes.html +25 -34
  25. pex/docs/html/scie.html +25 -34
  26. pex/docs/html/search.html +24 -33
  27. pex/docs/html/whatispex.html +25 -34
  28. pex/environment.py +17 -3
  29. pex/pep_425.py +11 -2
  30. pex/pep_427.py +218 -73
  31. pex/pip/installation.py +1 -1
  32. pex/pip/tool.py +1 -1
  33. pex/resolve/configured_resolve.py +20 -0
  34. pex/resolve/configured_resolver.py +7 -3
  35. pex/resolve/locked_resolve.py +5 -1
  36. pex/resolve/locker.py +3 -2
  37. pex/resolve/pex_repository_resolver.py +1 -1
  38. pex/resolve/resolver_configuration.py +17 -0
  39. pex/resolve/resolver_options.py +88 -16
  40. pex/resolve/resolvers.py +3 -0
  41. pex/resolve/target_options.py +18 -2
  42. pex/resolve/venv_resolver.py +446 -0
  43. pex/resolver.py +2 -4
  44. pex/targets.py +9 -4
  45. pex/vendor/__main__.py +1 -1
  46. pex/version.py +1 -1
  47. pex/wheel.py +89 -27
  48. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/METADATA +4 -4
  49. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/RECORD +54 -53
  50. pex/docs/html/_pagefind/fragment/en_1fd6283.pf_fragment +0 -0
  51. pex/docs/html/_pagefind/fragment/en_3981384.pf_fragment +0 -0
  52. pex/docs/html/_pagefind/fragment/en_5b3a816.pf_fragment +0 -0
  53. pex/docs/html/_pagefind/fragment/en_668cbbe.pf_fragment +0 -0
  54. pex/docs/html/_pagefind/fragment/en_69b66dc.pf_fragment +0 -0
  55. pex/docs/html/_pagefind/fragment/en_93e5ea3.pf_fragment +0 -0
  56. pex/docs/html/_pagefind/fragment/en_9ec1cdb.pf_fragment +0 -0
  57. pex/docs/html/_pagefind/fragment/en_edf644d.pf_fragment +0 -0
  58. pex/docs/html/_pagefind/index/en_b7cb935.pf_index +0 -0
  59. pex/docs/html/_pagefind/pagefind.en_bc4997bc6d.pf_meta +0 -0
  60. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/WHEEL +0 -0
  61. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/entry_points.txt +0 -0
  62. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/licenses/LICENSE +0 -0
  63. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/pylock/pylock.toml +0 -0
  64. {pex-2.58.1.dist-info → pex-2.59.1.dist-info}/top_level.txt +0 -0
pex/docs/html/scie.html CHANGED
@@ -1,16 +1,16 @@
1
1
  <!doctype html>
2
2
  <html class="no-js" lang="en" data-content_root="./">
3
- <head><meta charset="utf-8"/>
4
- <meta name="viewport" content="width=device-width,initial-scale=1"/>
3
+ <head><meta charset="utf-8">
4
+ <meta name="viewport" content="width=device-width,initial-scale=1">
5
5
  <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="PEX Recipes and Notes" href="recipes.html" /><link rel="prev" title="Building .pex files" href="buildingpex.html" />
7
- <link rel="prefetch" href="_static/pex-logo-light.png" as="image" />
8
- <link rel="prefetch" href="_static/pex-logo-dark.png" as="image" />
6
+ <link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="PEX Recipes and Notes" href="recipes.html"><link rel="prev" title="Building .pex files" href="buildingpex.html">
7
+ <link rel="prefetch" href="_static/pex-logo-light.png" as="image">
8
+ <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
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.58.1)</title>
10
+ <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
+ <title>PEX with included Python interpreter - Pex Docs (v2.59.1)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
- <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=25af2a20" />
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" />
15
15
 
16
16
 
@@ -24,14 +24,14 @@
24
24
  }
25
25
  @media not print {
26
26
  body[data-theme="dark"] {
27
- --color-code-background: #2b2b2b;
28
- --color-code-foreground: #f8f8f2;
27
+ --color-code-background: #202020;
28
+ --color-code-foreground: #d0d0d0;
29
29
 
30
30
  }
31
31
  @media (prefers-color-scheme: dark) {
32
32
  body:not([data-theme="light"]) {
33
- --color-code-background: #2b2b2b;
34
- --color-code-foreground: #f8f8f2;
33
+ --color-code-background: #202020;
34
+ --color-code-foreground: #d0d0d0;
35
35
 
36
36
  }
37
37
  }
@@ -146,14 +146,10 @@
146
146
  </symbol>
147
147
  </svg>
148
148
 
149
- <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
150
- <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
151
- <label class="overlay sidebar-overlay" for="__navigation">
152
- <div class="visually-hidden">Hide navigation sidebar</div>
153
- </label>
154
- <label class="overlay toc-overlay" for="__toc">
155
- <div class="visually-hidden">Hide table of contents sidebar</div>
156
- </label>
149
+ <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
150
+ <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
151
+ <label class="overlay sidebar-overlay" for="__navigation"></label>
152
+ <label class="overlay toc-overlay" for="__toc"></label>
157
153
 
158
154
  <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
159
155
 
@@ -163,17 +159,15 @@
163
159
  <header class="mobile-header">
164
160
  <div class="header-left">
165
161
  <label class="nav-overlay-icon" for="__navigation">
166
- <div class="visually-hidden">Toggle site navigation sidebar</div>
167
- <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
162
+ <span class="icon"><svg><use href="#svg-menu"></use></svg></span>
168
163
  </label>
169
164
  </div>
170
165
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
172
167
  </div>
173
168
  <div class="header-right">
174
169
  <div class="theme-toggle-container theme-toggle-header">
175
- <button class="theme-toggle">
176
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
170
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
177
171
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
178
172
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
179
173
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -181,8 +175,7 @@
181
175
  </button>
182
176
  </div>
183
177
  <label class="toc-overlay-icon toc-header-icon" for="__toc">
184
- <div class="visually-hidden">Toggle table of contents sidebar</div>
185
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
178
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
186
179
  </label>
187
180
  </div>
188
181
  </header>
@@ -241,8 +234,7 @@
241
234
  <span class="visually-hidden">Edit this page</span>
242
235
  </a>
243
236
  </div><div class="theme-toggle-container theme-toggle-content">
244
- <button class="theme-toggle">
245
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
237
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
246
238
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
247
239
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
248
240
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -250,8 +242,7 @@
250
242
  </button>
251
243
  </div>
252
244
  <label class="toc-overlay-icon toc-content-icon" for="__toc">
253
- <div class="visually-hidden">Toggle table of contents sidebar</div>
254
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
245
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
255
246
  </label>
256
247
  </div>
257
248
  <article role="main" id="furo-main-content">
@@ -632,12 +623,12 @@ uuid
632
623
  </div>
633
624
  <div class="right-details">
634
625
  <div class="icons">
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">
626
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
636
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">
637
628
  </path>
638
629
  </svg>
639
630
  </a>
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">
631
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
641
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">
642
633
  </path>
643
634
  </svg>
@@ -681,7 +672,7 @@ uuid
681
672
 
682
673
  </aside>
683
674
  </div>
684
- </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
675
+ </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
685
676
  <script src="_static/doctools.js?v=9bcbadda"></script>
686
677
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
687
678
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/docs/html/search.html CHANGED
@@ -1,13 +1,13 @@
1
1
  <!doctype html>
2
2
  <html class="no-js" lang="en" data-content_root="./">
3
- <head><meta charset="utf-8"/>
4
- <meta name="viewport" content="width=device-width,initial-scale=1"/>
5
- <meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="#" />
6
- <link rel="prefetch" href="_static/pex-logo-light.png" as="image" />
7
- <link rel="prefetch" href="_static/pex-logo-dark.png" as="image" />
3
+ <head><meta charset="utf-8">
4
+ <meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="#">
6
+ <link rel="prefetch" href="_static/pex-logo-light.png" as="image">
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.58.1)</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
10
- <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=25af2a20" />
9
+ <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 --><title>Search - Pex Docs (v2.59.1)</title><link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
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
 
13
13
 
@@ -21,14 +21,14 @@
21
21
  }
22
22
  @media not print {
23
23
  body[data-theme="dark"] {
24
- --color-code-background: #2b2b2b;
25
- --color-code-foreground: #f8f8f2;
24
+ --color-code-background: #202020;
25
+ --color-code-foreground: #d0d0d0;
26
26
 
27
27
  }
28
28
  @media (prefers-color-scheme: dark) {
29
29
  body:not([data-theme="light"]) {
30
- --color-code-background: #2b2b2b;
31
- --color-code-foreground: #f8f8f2;
30
+ --color-code-background: #202020;
31
+ --color-code-foreground: #d0d0d0;
32
32
 
33
33
  }
34
34
  }
@@ -159,14 +159,10 @@
159
159
  </symbol>
160
160
  </svg>
161
161
 
162
- <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
163
- <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
164
- <label class="overlay sidebar-overlay" for="__navigation">
165
- <div class="visually-hidden">Hide navigation sidebar</div>
166
- </label>
167
- <label class="overlay toc-overlay" for="__toc">
168
- <div class="visually-hidden">Hide table of contents sidebar</div>
169
- </label>
162
+ <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
163
+ <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
164
+ <label class="overlay sidebar-overlay" for="__navigation"></label>
165
+ <label class="overlay toc-overlay" for="__toc"></label>
170
166
 
171
167
  <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
172
168
 
@@ -176,17 +172,15 @@
176
172
  <header class="mobile-header">
177
173
  <div class="header-left">
178
174
  <label class="nav-overlay-icon" for="__navigation">
179
- <div class="visually-hidden">Toggle site navigation sidebar</div>
180
- <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
175
+ <span class="icon"><svg><use href="#svg-menu"></use></svg></span>
181
176
  </label>
182
177
  </div>
183
178
  <div class="header-center">
184
- <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
179
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
185
180
  </div>
186
181
  <div class="header-right">
187
182
  <div class="theme-toggle-container theme-toggle-header">
188
- <button class="theme-toggle">
189
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
183
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
190
184
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
191
185
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
192
186
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -194,8 +188,7 @@
194
188
  </button>
195
189
  </div>
196
190
  <label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
197
- <div class="visually-hidden">Toggle table of contents sidebar</div>
198
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
191
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
199
192
  </label>
200
193
  </div>
201
194
  </header>
@@ -244,8 +237,7 @@
244
237
  </a>
245
238
  <div class="content-icon-container">
246
239
  <div class="theme-toggle-container theme-toggle-content">
247
- <button class="theme-toggle">
248
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
240
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
249
241
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
250
242
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
251
243
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -253,8 +245,7 @@
253
245
  </button>
254
246
  </div>
255
247
  <label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
256
- <div class="visually-hidden">Toggle table of contents sidebar</div>
257
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
248
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
258
249
  </label>
259
250
  </div>
260
251
  <article role="main" id="furo-main-content">
@@ -282,12 +273,12 @@
282
273
  </div>
283
274
  <div class="right-details">
284
275
  <div class="icons">
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">
276
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
286
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">
287
278
  </path>
288
279
  </svg>
289
280
  </a>
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">
281
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
291
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">
292
283
  </path>
293
284
  </svg>
@@ -310,7 +301,7 @@
310
301
 
311
302
  </aside>
312
303
  </div>
313
- </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
304
+ </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
314
305
  <script src="_static/doctools.js?v=9bcbadda"></script>
315
306
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
316
307
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
@@ -1,16 +1,16 @@
1
1
  <!doctype html>
2
2
  <html class="no-js" lang="en" data-content_root="./">
3
- <head><meta charset="utf-8"/>
4
- <meta name="viewport" content="width=device-width,initial-scale=1"/>
3
+ <head><meta charset="utf-8">
4
+ <meta name="viewport" content="width=device-width,initial-scale=1">
5
5
  <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="Building .pex files" href="buildingpex.html" /><link rel="prev" title="pex" href="index.html" />
7
- <link rel="prefetch" href="_static/pex-logo-light.png" as="image" />
8
- <link rel="prefetch" href="_static/pex-logo-dark.png" as="image" />
6
+ <link rel="index" title="Index" href="genindex.html"><link rel="search" title="Search" href="search.html"><link rel="next" title="Building .pex files" href="buildingpex.html"><link rel="prev" title="pex" href="index.html">
7
+ <link rel="prefetch" href="_static/pex-logo-light.png" as="image">
8
+ <link rel="prefetch" href="_static/pex-logo-dark.png" as="image">
9
9
 
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.58.1)</title>
10
+ <link rel="shortcut icon" href="_static/pex-icon.png"><!-- Generated with Sphinx 8.2.3 and Furo 2025.09.25 -->
11
+ <title>What are .pex files? - Pex Docs (v2.59.1)</title>
12
12
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d111a655" />
13
- <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=25af2a20" />
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" />
15
15
 
16
16
 
@@ -24,14 +24,14 @@
24
24
  }
25
25
  @media not print {
26
26
  body[data-theme="dark"] {
27
- --color-code-background: #2b2b2b;
28
- --color-code-foreground: #f8f8f2;
27
+ --color-code-background: #202020;
28
+ --color-code-foreground: #d0d0d0;
29
29
 
30
30
  }
31
31
  @media (prefers-color-scheme: dark) {
32
32
  body:not([data-theme="light"]) {
33
- --color-code-background: #2b2b2b;
34
- --color-code-foreground: #f8f8f2;
33
+ --color-code-background: #202020;
34
+ --color-code-foreground: #d0d0d0;
35
35
 
36
36
  }
37
37
  }
@@ -146,14 +146,10 @@
146
146
  </symbol>
147
147
  </svg>
148
148
 
149
- <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
150
- <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
151
- <label class="overlay sidebar-overlay" for="__navigation">
152
- <div class="visually-hidden">Hide navigation sidebar</div>
153
- </label>
154
- <label class="overlay toc-overlay" for="__toc">
155
- <div class="visually-hidden">Hide table of contents sidebar</div>
156
- </label>
149
+ <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
150
+ <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
151
+ <label class="overlay sidebar-overlay" for="__navigation"></label>
152
+ <label class="overlay toc-overlay" for="__toc"></label>
157
153
 
158
154
  <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
159
155
 
@@ -163,17 +159,15 @@
163
159
  <header class="mobile-header">
164
160
  <div class="header-left">
165
161
  <label class="nav-overlay-icon" for="__navigation">
166
- <div class="visually-hidden">Toggle site navigation sidebar</div>
167
- <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
162
+ <span class="icon"><svg><use href="#svg-menu"></use></svg></span>
168
163
  </label>
169
164
  </div>
170
165
  <div class="header-center">
171
- <a href="index.html"><div class="brand">Pex Docs (v2.58.1)</div></a>
166
+ <a href="index.html"><div class="brand">Pex Docs (v2.59.1)</div></a>
172
167
  </div>
173
168
  <div class="header-right">
174
169
  <div class="theme-toggle-container theme-toggle-header">
175
- <button class="theme-toggle">
176
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
170
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
177
171
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
178
172
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
179
173
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -181,8 +175,7 @@
181
175
  </button>
182
176
  </div>
183
177
  <label class="toc-overlay-icon toc-header-icon" for="__toc">
184
- <div class="visually-hidden">Toggle table of contents sidebar</div>
185
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
178
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
186
179
  </label>
187
180
  </div>
188
181
  </header>
@@ -241,8 +234,7 @@
241
234
  <span class="visually-hidden">Edit this page</span>
242
235
  </a>
243
236
  </div><div class="theme-toggle-container theme-toggle-content">
244
- <button class="theme-toggle">
245
- <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
237
+ <button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
246
238
  <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
247
239
  <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
248
240
  <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
@@ -250,8 +242,7 @@
250
242
  </button>
251
243
  </div>
252
244
  <label class="toc-overlay-icon toc-content-icon" for="__toc">
253
- <div class="visually-hidden">Toggle table of contents sidebar</div>
254
- <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
245
+ <span class="icon"><svg><use href="#svg-toc"></use></svg></span>
255
246
  </label>
256
247
  </div>
257
248
  <article role="main" id="furo-main-content">
@@ -331,12 +322,12 @@ build executable .pex files. This is described more thoroughly in
331
322
  </div>
332
323
  <div class="right-details">
333
324
  <div class="icons">
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">
325
+ <a class="muted-link " href="https://pypi.org/project/pex/2.59.1/" aria-label="PyPI"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
335
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">
336
327
  </path>
337
328
  </svg>
338
329
  </a>
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">
330
+ <a class="muted-link " href="https://github.com/pex-tool/pex/releases/download/v2.59.1/pex" aria-label="Download"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
340
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">
341
332
  </path>
342
333
  </svg>
@@ -380,7 +371,7 @@ build executable .pex files. This is described more thoroughly in
380
371
 
381
372
  </aside>
382
373
  </div>
383
- </div><script src="_static/documentation_options.js?v=b0ba200d"></script>
374
+ </div><script src="_static/documentation_options.js?v=c16f6a54"></script>
384
375
  <script src="_static/doctools.js?v=9bcbadda"></script>
385
376
  <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
386
377
  <script src="_static/scripts/furo.js?v=46bd48cc"></script>
pex/environment.py CHANGED
@@ -66,6 +66,22 @@ def _import_pkg_resources():
66
66
  return None, False
67
67
 
68
68
 
69
+ def _fd_lt(
70
+ self, # type: FingerprintedDistribution
71
+ other, # type: FingerprintedDistribution
72
+ ):
73
+ # type: (...) -> bool
74
+ if self.project_name.normalized < other.project_name.normalized:
75
+ return True
76
+
77
+ # Since we want to rank higher versions higher (earlier) we need to reverse the natural
78
+ # ordering of Version in Distribution which is least to greatest.
79
+ if self.distribution.metadata.version >= other.distribution.metadata.version:
80
+ return True
81
+
82
+ return self.fingerprint < other.fingerprint
83
+
84
+
69
85
  @attr.s(frozen=True)
70
86
  class _RankedDistribution(object):
71
87
  # N.B.: A distribution implements rich comparison with the leading component being the
@@ -77,9 +93,7 @@ class _RankedDistribution(object):
77
93
  # The attr project type stub file simply misses this.
78
94
  _fd_cmp = attr.cmp_using( # type: ignore[attr-defined]
79
95
  eq=FingerprintedDistribution.__eq__,
80
- # Since we want to rank higher versions higher (earlier) we need to reverse the natural
81
- # ordering of Version in Distribution which is least to greatest.
82
- lt=FingerprintedDistribution.__ge__,
96
+ lt=_fd_lt,
83
97
  )
84
98
 
85
99
  @classmethod
pex/pep_425.py CHANGED
@@ -6,11 +6,12 @@ from __future__ import absolute_import
6
6
  import itertools
7
7
  import os.path
8
8
 
9
- from pex.dist_metadata import is_wheel
9
+ from pex.dist_metadata import Distribution, is_wheel
10
10
  from pex.orderedset import OrderedSet
11
11
  from pex.rank import Rank
12
12
  from pex.third_party.packaging.tags import Tag, parse_tag
13
13
  from pex.typing import TYPE_CHECKING, cast, overload
14
+ from pex.wheel import WHEEL
14
15
 
15
16
  if TYPE_CHECKING:
16
17
  from typing import (
@@ -66,7 +67,13 @@ class CompatibilityTags(object):
66
67
 
67
68
  @classmethod
68
69
  def from_wheel(cls, wheel):
69
- # type: (Text) -> CompatibilityTags
70
+ # type: (Union[Text, Distribution]) -> CompatibilityTags
71
+
72
+ if isinstance(wheel, Distribution):
73
+ if not is_wheel(wheel.location):
74
+ return cls(tags=WHEEL.from_distribution(wheel).tags)
75
+ wheel = wheel.location
76
+
70
77
  if not is_wheel(wheel):
71
78
  raise ValueError(
72
79
  "Can only calculate wheel tags from a filename that ends in .whl per "
@@ -74,6 +81,7 @@ class CompatibilityTags(object):
74
81
  wheel=wheel
75
82
  )
76
83
  )
84
+
77
85
  wheel_stem, _ = os.path.splitext(os.path.basename(wheel))
78
86
  # Wheel filename format: https://peps.python.org/pep-0427/#file-name-convention
79
87
  # `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl`
@@ -86,6 +94,7 @@ class CompatibilityTags(object):
86
94
  pattern=pattern, wheel=wheel
87
95
  )
88
96
  )
97
+
89
98
  return cls(tags=tuple(parse_tag("-".join(wheel_components[-3:]))))
90
99
 
91
100
  @classmethod