pex 2.46.3__tar.gz → 2.72.0__tar.gz

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 (1590) hide show
  1. pex-2.72.0/CHANGES.md +4536 -0
  2. pex-2.72.0/PKG-INFO +229 -0
  3. pex-2.72.0/build-backend/pex_build/__init__.py +130 -0
  4. pex-2.72.0/build-backend/pex_build/setuptools/build.py +107 -0
  5. pex-2.72.0/docker/base/Dockerfile +57 -0
  6. pex-2.72.0/docker/base/install_pythons.sh +67 -0
  7. pex-2.72.0/docker/cache/Dockerfile +34 -0
  8. pex-2.72.0/docker/cache/populate_cache.sh +35 -0
  9. pex-2.72.0/docs/buildingpex.rst +480 -0
  10. pex-2.72.0/duvrc.sh +170 -0
  11. pex-2.72.0/package/complete-platforms/linux-aarch64.json +721 -0
  12. pex-2.72.0/package/complete-platforms/linux-armv7l.json +721 -0
  13. pex-2.72.0/package/complete-platforms/linux-riscv64.json +876 -0
  14. pex-2.72.0/package/complete-platforms/linux-x86_64.json +1155 -0
  15. pex-2.72.0/package/complete-platforms/macos-aarch64.json +752 -0
  16. pex-2.72.0/package/complete-platforms/macos-x86_64.json +3387 -0
  17. pex-2.72.0/package/complete-platforms/musl-linux-aarch64.json +163 -0
  18. pex-2.72.0/package/complete-platforms/musl-linux-x86_64.json +163 -0
  19. pex-2.72.0/package/package.toml +28 -0
  20. pex-2.72.0/package/pex-scie.lock +212 -0
  21. pex-2.72.0/package/scie_config.py +122 -0
  22. pex-2.72.0/pex/artifact_url.py +270 -0
  23. pex-2.72.0/pex/auth.py +167 -0
  24. pex-2.72.0/pex/bin/pex.py +1468 -0
  25. pex-2.72.0/pex/build_backend/__init__.py +8 -0
  26. pex-2.72.0/pex/build_backend/configuration.py +262 -0
  27. pex-2.72.0/pex/build_backend/pylock.py +229 -0
  28. pex-2.72.0/pex/build_backend/wrap.py +171 -0
  29. pex-2.72.0/pex/build_system/pep_517.py +291 -0
  30. pex-2.72.0/pex/cache/dirs.py +950 -0
  31. pex-2.72.0/pex/cli/commands/__init__.py +23 -0
  32. pex-2.72.0/pex/cli/commands/cache/command.py +736 -0
  33. pex-2.72.0/pex/cli/commands/cache_aware.py +116 -0
  34. pex-2.72.0/pex/cli/commands/interpreter.py +184 -0
  35. pex-2.72.0/pex/cli/commands/lock.py +2411 -0
  36. pex-2.72.0/pex/cli/commands/pip/core.py +246 -0
  37. pex-2.72.0/pex/cli/commands/pip/wheel.py +74 -0
  38. pex-2.72.0/pex/cli/commands/run.py +864 -0
  39. pex-2.72.0/pex/cli/commands/venv.py +510 -0
  40. pex-2.72.0/pex/cli/pex.py +43 -0
  41. pex-2.72.0/pex/commands/command.py +517 -0
  42. pex-2.72.0/pex/common.py +981 -0
  43. pex-2.72.0/pex/compatibility.py +326 -0
  44. pex-2.72.0/pex/dependency_configuration.py +238 -0
  45. pex-2.72.0/pex/dist_metadata.py +1359 -0
  46. pex-2.72.0/pex/entry_points_txt.py +98 -0
  47. pex-2.72.0/pex/enum.py +187 -0
  48. pex-2.72.0/pex/environment.py +845 -0
  49. pex-2.72.0/pex/finders.py +154 -0
  50. pex-2.72.0/pex/hashing.py +361 -0
  51. pex-2.72.0/pex/http/server.py +219 -0
  52. pex-2.72.0/pex/installed_wheel.py +141 -0
  53. pex-2.72.0/pex/interpreter.py +1686 -0
  54. pex-2.72.0/pex/interpreter_constraints.py +398 -0
  55. pex-2.72.0/pex/interpreter_implementation.py +40 -0
  56. pex-2.72.0/pex/jobs.py +836 -0
  57. pex-2.72.0/pex/lang.py +31 -0
  58. pex-2.72.0/pex/pep_376.py +201 -0
  59. pex-2.72.0/pex/pep_425.py +208 -0
  60. pex-2.72.0/pex/pep_427.py +1119 -0
  61. pex-2.72.0/pex/pep_508.py +166 -0
  62. pex-2.72.0/pex/pex.py +888 -0
  63. pex-2.72.0/pex/pex_boot.py +239 -0
  64. pex-2.72.0/pex/pex_builder.py +827 -0
  65. pex-2.72.0/pex/pex_info.py +633 -0
  66. pex-2.72.0/pex/pip/dependencies/__init__.py +137 -0
  67. pex-2.72.0/pex/pip/dependencies/requires.py +127 -0
  68. pex-2.72.0/pex/pip/foreign_platform/__init__.py +207 -0
  69. pex-2.72.0/pex/pip/installation.py +534 -0
  70. pex-2.72.0/pex/pip/local_project.py +49 -0
  71. pex-2.72.0/pex/pip/package_repositories/__init__.py +78 -0
  72. pex-2.72.0/pex/pip/package_repositories/link_collector.py +96 -0
  73. pex-2.72.0/pex/pip/tool.py +904 -0
  74. pex-2.72.0/pex/pip/vcs.py +179 -0
  75. pex-2.72.0/pex/pip/version.py +481 -0
  76. pex-2.72.0/pex/requirements.py +836 -0
  77. pex-2.72.0/pex/resolve/config.py +106 -0
  78. pex-2.72.0/pex/resolve/configured_resolve.py +194 -0
  79. pex-2.72.0/pex/resolve/configured_resolver.py +90 -0
  80. pex-2.72.0/pex/resolve/downloads.py +185 -0
  81. pex-2.72.0/pex/resolve/lock_downloader.py +375 -0
  82. pex-2.72.0/pex/resolve/lock_resolver.py +553 -0
  83. pex-2.72.0/pex/resolve/locked_resolve.py +1048 -0
  84. pex-2.72.0/pex/resolve/locker.py +702 -0
  85. pex-2.72.0/pex/resolve/locker_patches.py +218 -0
  86. pex-2.72.0/pex/resolve/lockfile/create.py +751 -0
  87. pex-2.72.0/pex/resolve/lockfile/download_manager.py +247 -0
  88. pex-2.72.0/pex/resolve/lockfile/json_codec.py +543 -0
  89. pex-2.72.0/pex/resolve/lockfile/model.py +167 -0
  90. pex-2.72.0/pex/resolve/lockfile/pep_751.py +1759 -0
  91. pex-2.72.0/pex/resolve/lockfile/requires_dist.py +85 -0
  92. pex-2.72.0/pex/resolve/lockfile/subset.py +187 -0
  93. pex-2.72.0/pex/resolve/lockfile/targets.py +445 -0
  94. pex-2.72.0/pex/resolve/lockfile/tarjan.py +145 -0
  95. pex-2.72.0/pex/resolve/lockfile/updater.py +852 -0
  96. pex-2.72.0/pex/resolve/package_repository.py +406 -0
  97. pex-2.72.0/pex/resolve/pex_repository_resolver.py +129 -0
  98. pex-2.72.0/pex/resolve/pre_resolved_resolver.py +224 -0
  99. pex-2.72.0/pex/resolve/project.py +567 -0
  100. pex-2.72.0/pex/resolve/requirement_configuration.py +80 -0
  101. pex-2.72.0/pex/resolve/requirement_options.py +72 -0
  102. pex-2.72.0/pex/resolve/resolver_configuration.py +251 -0
  103. pex-2.72.0/pex/resolve/resolver_options.py +1108 -0
  104. pex-2.72.0/pex/resolve/resolvers.py +263 -0
  105. pex-2.72.0/pex/resolve/target_options.py +306 -0
  106. pex-2.72.0/pex/resolve/target_system.py +908 -0
  107. pex-2.72.0/pex/resolve/venv_resolver.py +677 -0
  108. pex-2.72.0/pex/resolver.py +1983 -0
  109. pex-2.72.0/pex/scie/__init__.py +478 -0
  110. pex-2.72.0/pex/scie/model.py +482 -0
  111. pex-2.72.0/pex/scie/science.py +609 -0
  112. pex-2.72.0/pex/sdist.py +219 -0
  113. pex-2.72.0/pex/sh_boot.py +273 -0
  114. pex-2.72.0/pex/sysconfig.py +204 -0
  115. pex-2.72.0/pex/targets.py +445 -0
  116. pex-2.72.0/pex/third_party/__init__.py +665 -0
  117. pex-2.72.0/pex/tools/commands/repository.py +465 -0
  118. pex-2.72.0/pex/variables.py +950 -0
  119. pex-2.72.0/pex/vendor/__init__.py +400 -0
  120. pex-2.72.0/pex/vendor/__main__.py +587 -0
  121. pex-2.72.0/pex/vendor/_vendored/ansicolors/.layout.json +1 -0
  122. pex-2.72.0/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/RECORD +11 -0
  123. pex-2.72.0/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.pex-info/original-whl-info.json +1 -0
  124. pex-2.72.0/pex/vendor/_vendored/appdirs/.layout.json +1 -0
  125. pex-2.72.0/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/RECORD +7 -0
  126. pex-2.72.0/pex/vendor/_vendored/appdirs/appdirs-1.4.4.pex-info/original-whl-info.json +1 -0
  127. pex-2.72.0/pex/vendor/_vendored/attrs/.layout.json +1 -0
  128. pex-2.72.0/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/RECORD +37 -0
  129. pex-2.72.0/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.pex-info/original-whl-info.json +1 -0
  130. pex-2.72.0/pex/vendor/_vendored/packaging_20_9/.layout.json +1 -0
  131. pex-2.72.0/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/RECORD +20 -0
  132. pex-2.72.0/pex/vendor/_vendored/packaging_20_9/packaging-20.9.pex-info/original-whl-info.json +1 -0
  133. pex-2.72.0/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/RECORD +7 -0
  134. pex-2.72.0/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.pex-info/original-whl-info.json +1 -0
  135. pex-2.72.0/pex/vendor/_vendored/packaging_21_3/.layout.json +1 -0
  136. pex-2.72.0/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/RECORD +20 -0
  137. pex-2.72.0/pex/vendor/_vendored/packaging_21_3/packaging-21.3.pex-info/original-whl-info.json +1 -0
  138. pex-2.72.0/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/RECORD +18 -0
  139. pex-2.72.0/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.pex-info/original-whl-info.json +1 -0
  140. pex-2.72.0/pex/vendor/_vendored/packaging_24_0/.layout.json +1 -0
  141. pex-2.72.0/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/RECORD +22 -0
  142. pex-2.72.0/pex/vendor/_vendored/packaging_24_0/packaging-24.0.pex-info/original-whl-info.json +1 -0
  143. pex-2.72.0/pex/vendor/_vendored/packaging_25_0/.layout.json +1 -0
  144. pex-2.72.0/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/RECORD +24 -0
  145. pex-2.72.0/pex/vendor/_vendored/packaging_25_0/packaging-25.0.pex-info/original-whl-info.json +1 -0
  146. pex-2.72.0/pex/vendor/_vendored/pip/.layout.json +1 -0
  147. pex-2.72.0/pex/vendor/_vendored/pip/pip/_vendor/certifi/cacert.pem +4803 -0
  148. pex-2.72.0/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/RECORD +388 -0
  149. pex-2.72.0/pex/vendor/_vendored/pip/pip-20.3.4.pex-info/original-whl-info.json +1 -0
  150. pex-2.72.0/pex/vendor/_vendored/setuptools/.layout.json +1 -0
  151. pex-2.72.0/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/RECORD +107 -0
  152. pex-2.72.0/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.pex-info/original-whl-info.json +1 -0
  153. pex-2.72.0/pex/vendor/_vendored/toml/.layout.json +1 -0
  154. pex-2.72.0/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/RECORD +11 -0
  155. pex-2.72.0/pex/vendor/_vendored/toml/toml-0.10.2.pex-info/original-whl-info.json +1 -0
  156. pex-2.72.0/pex/vendor/_vendored/tomli/.layout.json +1 -0
  157. pex-2.72.0/pex/vendor/_vendored/tomli/tomli-2.0.1.dist-info/RECORD +10 -0
  158. pex-2.72.0/pex/vendor/_vendored/tomli/tomli-2.0.1.pex-info/original-whl-info.json +1 -0
  159. pex-2.72.0/pex/venv/installer.py +691 -0
  160. pex-2.72.0/pex/venv/venv_pex.py +367 -0
  161. pex-2.72.0/pex/version.py +4 -0
  162. pex-2.72.0/pex/wheel.py +315 -0
  163. pex-2.72.0/pex/whl.py +67 -0
  164. pex-2.72.0/pex/windows/__init__.py +176 -0
  165. pex-2.72.0/pex/windows/stubs/uv-trampoline-aarch64-console.exe +0 -0
  166. pex-2.72.0/pex/windows/stubs/uv-trampoline-aarch64-gui.exe +0 -0
  167. pex-2.72.0/pex/windows/stubs/uv-trampoline-x86_64-console.exe +0 -0
  168. pex-2.72.0/pex/windows/stubs/uv-trampoline-x86_64-gui.exe +0 -0
  169. pex-2.72.0/pylock.toml +46 -0
  170. pex-2.72.0/pyproject.toml +451 -0
  171. pex-2.72.0/scripts/analyze-CI-shard-timeout.py +56 -0
  172. pex-2.72.0/scripts/build-cache-image.py +337 -0
  173. pex-2.72.0/scripts/create-packages.py +418 -0
  174. pex-2.72.0/scripts/dev-cmd-fix-egg-link.py +100 -0
  175. pex-2.72.0/scripts/gen-scie-platform.py +335 -0
  176. pex-2.72.0/scripts/lint.py +55 -0
  177. pex-2.72.0/scripts/typecheck.py +93 -0
  178. pex-2.72.0/setup.cfg +85 -0
  179. pex-2.72.0/testing/__init__.py +907 -0
  180. pex-2.72.0/testing/bin/run_tests.py +541 -0
  181. pex-2.72.0/testing/data/locks/mitmproxy.lock.json +2312 -0
  182. pex-2.72.0/testing/data/locks/pylock.issue-2887.toml +1556 -0
  183. pex-2.72.0/testing/lock.py +48 -0
  184. pex-2.72.0/testing/mitmproxy.py +151 -0
  185. pex-2.72.0/testing/pex_dist.py +89 -0
  186. pex-2.72.0/testing/scie.py +48 -0
  187. pex-2.72.0/testing/venv.py +61 -0
  188. pex-2.72.0/tests/bin/test_sh_boot.py +179 -0
  189. pex-2.72.0/tests/build_backend/test_configuration.py +433 -0
  190. pex-2.72.0/tests/build_backend/test_pylock.py +89 -0
  191. pex-2.72.0/tests/conftest.py +127 -0
  192. pex-2.72.0/tests/integration/build_backend/test_wrap.py +134 -0
  193. pex-2.72.0/tests/integration/build_system/test_issue_2913.py +45 -0
  194. pex-2.72.0/tests/integration/build_system/test_pep_518.py +68 -0
  195. pex-2.72.0/tests/integration/cli/commands/test_download.py +156 -0
  196. pex-2.72.0/tests/integration/cli/commands/test_export.py +435 -0
  197. pex-2.72.0/tests/integration/cli/commands/test_export_subset.py +89 -0
  198. pex-2.72.0/tests/integration/cli/commands/test_interpreter_inspect.py +149 -0
  199. pex-2.72.0/tests/integration/cli/commands/test_issue_1667.py +99 -0
  200. pex-2.72.0/tests/integration/cli/commands/test_issue_1688.py +65 -0
  201. pex-2.72.0/tests/integration/cli/commands/test_issue_1711.py +130 -0
  202. pex-2.72.0/tests/integration/cli/commands/test_issue_1734.py +112 -0
  203. pex-2.72.0/tests/integration/cli/commands/test_issue_1801.py +62 -0
  204. pex-2.72.0/tests/integration/cli/commands/test_issue_1821.py +237 -0
  205. pex-2.72.0/tests/integration/cli/commands/test_issue_2050.py +281 -0
  206. pex-2.72.0/tests/integration/cli/commands/test_issue_2098.py +106 -0
  207. pex-2.72.0/tests/integration/cli/commands/test_issue_2414.py +89 -0
  208. pex-2.72.0/tests/integration/cli/commands/test_lock.py +1976 -0
  209. pex-2.72.0/tests/integration/cli/commands/test_lock_report.py +151 -0
  210. pex-2.72.0/tests/integration/cli/commands/test_lock_requirements_file.py +114 -0
  211. pex-2.72.0/tests/integration/cli/commands/test_lock_resolve_auth.py +372 -0
  212. pex-2.72.0/tests/integration/cli/commands/test_lock_sync.py +1471 -0
  213. pex-2.72.0/tests/integration/cli/commands/test_pep_751.py +872 -0
  214. pex-2.72.0/tests/integration/cli/commands/test_run.py +590 -0
  215. pex-2.72.0/tests/integration/cli/commands/test_split_universal_locks.py +520 -0
  216. pex-2.72.0/tests/integration/cli/commands/test_venv_create.py +597 -0
  217. pex-2.72.0/tests/integration/cli/commands/test_wheel.py +223 -0
  218. pex-2.72.0/tests/integration/resolve/test_issue_1361.py +120 -0
  219. pex-2.72.0/tests/integration/resolve/test_issue_1918.py +162 -0
  220. pex-2.72.0/tests/integration/resolve/test_issue_2092.py +91 -0
  221. pex-2.72.0/tests/integration/resolve/test_issue_2877.py +128 -0
  222. pex-2.72.0/tests/integration/resolve/test_issue_2926.py +81 -0
  223. pex-2.72.0/tests/integration/resolve/test_issue_2930_and_2931.py +93 -0
  224. pex-2.72.0/tests/integration/resolve/test_issue_3008.py +48 -0
  225. pex-2.72.0/tests/integration/resolve/test_issue_3022.py +92 -0
  226. pex-2.72.0/tests/integration/resolve/test_universal_lock_splits.py +216 -0
  227. pex-2.72.0/tests/integration/scie/test_issue_2733.py +81 -0
  228. pex-2.72.0/tests/integration/scie/test_issue_2810.py +156 -0
  229. pex-2.72.0/tests/integration/scie/test_issue_2827.py +98 -0
  230. pex-2.72.0/tests/integration/scie/test_pex_scie.py +1360 -0
  231. pex-2.72.0/tests/integration/test_discussion_2979.py +343 -0
  232. pex-2.72.0/tests/integration/test_downloads.py +87 -0
  233. pex-2.72.0/tests/integration/test_inject_env_and_args.py +328 -0
  234. pex-2.72.0/tests/integration/test_integration.py +2149 -0
  235. pex-2.72.0/tests/integration/test_interpreter_selection.py +505 -0
  236. pex-2.72.0/tests/integration/test_issue_1017.py +41 -0
  237. pex-2.72.0/tests/integration/test_issue_1232.py +183 -0
  238. pex-2.72.0/tests/integration/test_issue_1422.py +116 -0
  239. pex-2.72.0/tests/integration/test_issue_1560.py +117 -0
  240. pex-2.72.0/tests/integration/test_issue_1656.py +198 -0
  241. pex-2.72.0/tests/integration/test_issue_1817.py +80 -0
  242. pex-2.72.0/tests/integration/test_issue_1856.py +64 -0
  243. pex-2.72.0/tests/integration/test_issue_1933.py +71 -0
  244. pex-2.72.0/tests/integration/test_issue_2006.py +70 -0
  245. pex-2.72.0/tests/integration/test_issue_2299.py +152 -0
  246. pex-2.72.0/tests/integration/test_issue_2324.py +80 -0
  247. pex-2.72.0/tests/integration/test_issue_2343.py +268 -0
  248. pex-2.72.0/tests/integration/test_issue_2348.py +80 -0
  249. pex-2.72.0/tests/integration/test_issue_2355.py +145 -0
  250. pex-2.72.0/tests/integration/test_issue_2371.py +132 -0
  251. pex-2.72.0/tests/integration/test_issue_2389.py +60 -0
  252. pex-2.72.0/tests/integration/test_issue_2391.py +94 -0
  253. pex-2.72.0/tests/integration/test_issue_2441.py +66 -0
  254. pex-2.72.0/tests/integration/test_issue_2631.py +280 -0
  255. pex-2.72.0/tests/integration/test_issue_2862.py +155 -0
  256. pex-2.72.0/tests/integration/test_issue_2885.py +353 -0
  257. pex-2.72.0/tests/integration/test_issue_2897.py +207 -0
  258. pex-2.72.0/tests/integration/test_issue_2941.py +90 -0
  259. pex-2.72.0/tests/integration/test_issue_2942.py +44 -0
  260. pex-2.72.0/tests/integration/test_issue_2949.py +150 -0
  261. pex-2.72.0/tests/integration/test_issue_2991.py +37 -0
  262. pex-2.72.0/tests/integration/test_issue_2998.py +133 -0
  263. pex-2.72.0/tests/integration/test_issue_3003.py +156 -0
  264. pex-2.72.0/tests/integration/test_issue_661.py +26 -0
  265. pex-2.72.0/tests/integration/test_keyring_support.py +352 -0
  266. pex-2.72.0/tests/integration/test_lock_resolver.py +570 -0
  267. pex-2.72.0/tests/integration/test_locked_resolve.py +158 -0
  268. pex-2.72.0/tests/integration/test_override_replace.py +393 -0
  269. pex-2.72.0/tests/integration/test_pex_bootstrapper.py +486 -0
  270. pex-2.72.0/tests/integration/test_pip.py +80 -0
  271. pex-2.72.0/tests/integration/test_reproducible.py +340 -0
  272. pex-2.72.0/tests/integration/test_scoped_repos.py +824 -0
  273. pex-2.72.0/tests/integration/test_setproctitle.py +182 -0
  274. pex-2.72.0/tests/integration/test_sh_boot.py +344 -0
  275. pex-2.72.0/tests/integration/tools/commands/test_issue_2105.py +407 -0
  276. pex-2.72.0/tests/integration/venv_ITs/test_install_wheel_multiple_site_packages_dirs.py +109 -0
  277. pex-2.72.0/tests/integration/venv_ITs/test_issue_1630.py +87 -0
  278. pex-2.72.0/tests/integration/venv_ITs/test_issue_1668.py +94 -0
  279. pex-2.72.0/tests/resolve/lockfile/test_issue_2887.py +45 -0
  280. pex-2.72.0/tests/resolve/lockfile/test_json_codec.py +607 -0
  281. pex-2.72.0/tests/resolve/lockfile/test_lockfile.py +116 -0
  282. pex-2.72.0/tests/resolve/lockfile/test_pep_751.py +801 -0
  283. pex-2.72.0/tests/resolve/test_locked_resolve.py +983 -0
  284. pex-2.72.0/tests/resolve/test_package_repository.py +99 -0
  285. pex-2.72.0/tests/resolve/test_pex_repository_resolver.py +346 -0
  286. pex-2.72.0/tests/resolve/test_resolver_options.py +422 -0
  287. pex-2.72.0/tests/resolve/test_target_options.py +562 -0
  288. pex-2.72.0/tests/test_dependency_configuration.py +97 -0
  289. pex-2.72.0/tests/test_dist_metadata.py +532 -0
  290. pex-2.72.0/tests/test_enum.py +134 -0
  291. pex-2.72.0/tests/test_environment.py +588 -0
  292. pex-2.72.0/tests/test_finders.py +109 -0
  293. pex-2.72.0/tests/test_hashing.py +124 -0
  294. pex-2.72.0/tests/test_interpreter.py +599 -0
  295. pex-2.72.0/tests/test_interpreter_constraints.py +190 -0
  296. pex-2.72.0/tests/test_lang.py +49 -0
  297. pex-2.72.0/tests/test_pep_508.py +146 -0
  298. pex-2.72.0/tests/test_pex_bootstrapper.py +334 -0
  299. pex-2.72.0/tests/test_pip.py +591 -0
  300. pex-2.72.0/tests/test_requirements.py +614 -0
  301. pex-2.72.0/tests/test_resolver.py +724 -0
  302. pex-2.72.0/tests/test_target_system.py +97 -0
  303. pex-2.72.0/tests/test_targets.py +334 -0
  304. pex-2.72.0/tests/test_tarjan.py +146 -0
  305. pex-2.72.0/tests/tools/commands/test_interpreter_command.py +178 -0
  306. pex-2.72.0/tests/tools/commands/test_repository.py +309 -0
  307. pex-2.72.0/tests/tools/commands/test_venv.py +842 -0
  308. pex-2.72.0/uv.lock +5332 -0
  309. pex-2.46.3/CHANGES.md +0 -3994
  310. pex-2.46.3/PKG-INFO +0 -226
  311. pex-2.46.3/build-backend/pex_build/__init__.py +0 -14
  312. pex-2.46.3/build-backend/pex_build/setuptools/build.py +0 -308
  313. pex-2.46.3/docker/base/Dockerfile +0 -35
  314. pex-2.46.3/docker/base/install_pythons.sh +0 -66
  315. pex-2.46.3/docker/cache/Dockerfile +0 -26
  316. pex-2.46.3/docker/cache/populate_cache.sh +0 -32
  317. pex-2.46.3/docs/buildingpex.rst +0 -480
  318. pex-2.46.3/duvrc.sh +0 -145
  319. pex-2.46.3/package/complete-platforms/linux-aarch64.json +0 -676
  320. pex-2.46.3/package/complete-platforms/linux-armv7l.json +0 -676
  321. pex-2.46.3/package/complete-platforms/linux-x86_64.json +0 -1082
  322. pex-2.46.3/package/complete-platforms/macos-aarch64.json +0 -647
  323. pex-2.46.3/package/complete-platforms/macos-x86_64.json +0 -2822
  324. pex-2.46.3/package/package.toml +0 -16
  325. pex-2.46.3/package/pex-scie.lock +0 -138
  326. pex-2.46.3/package/scie_config.py +0 -130
  327. pex-2.46.3/pex/artifact_url.py +0 -259
  328. pex-2.46.3/pex/auth.py +0 -167
  329. pex-2.46.3/pex/bin/pex.py +0 -1455
  330. pex-2.46.3/pex/build_system/pep_517.py +0 -288
  331. pex-2.46.3/pex/cache/dirs.py +0 -935
  332. pex-2.46.3/pex/cli/commands/__init__.py +0 -20
  333. pex-2.46.3/pex/cli/commands/cache/command.py +0 -847
  334. pex-2.46.3/pex/cli/commands/interpreter.py +0 -182
  335. pex-2.46.3/pex/cli/commands/lock.py +0 -2274
  336. pex-2.46.3/pex/cli/commands/pip/core.py +0 -254
  337. pex-2.46.3/pex/cli/commands/pip/wheel.py +0 -74
  338. pex-2.46.3/pex/cli/commands/venv.py +0 -444
  339. pex-2.46.3/pex/cli/pex.py +0 -36
  340. pex-2.46.3/pex/commands/command.py +0 -502
  341. pex-2.46.3/pex/common.py +0 -883
  342. pex-2.46.3/pex/compatibility.py +0 -326
  343. pex-2.46.3/pex/dependency_configuration.py +0 -166
  344. pex-2.46.3/pex/dist_metadata.py +0 -1222
  345. pex-2.46.3/pex/enum.py +0 -204
  346. pex-2.46.3/pex/environment.py +0 -824
  347. pex-2.46.3/pex/finders.py +0 -154
  348. pex-2.46.3/pex/hashing.py +0 -259
  349. pex-2.46.3/pex/http/server.py +0 -216
  350. pex-2.46.3/pex/interpreter.py +0 -1683
  351. pex-2.46.3/pex/interpreter_constraints.py +0 -398
  352. pex-2.46.3/pex/jobs.py +0 -829
  353. pex-2.46.3/pex/pep_376.py +0 -517
  354. pex-2.46.3/pex/pep_425.py +0 -199
  355. pex-2.46.3/pex/pep_427.py +0 -387
  356. pex-2.46.3/pex/pep_508.py +0 -167
  357. pex-2.46.3/pex/pex.py +0 -885
  358. pex-2.46.3/pex/pex_boot.py +0 -239
  359. pex-2.46.3/pex/pex_builder.py +0 -830
  360. pex-2.46.3/pex/pex_info.py +0 -616
  361. pex-2.46.3/pex/pip/dependencies/__init__.py +0 -65
  362. pex-2.46.3/pex/pip/dependencies/requires.py +0 -92
  363. pex-2.46.3/pex/pip/foreign_platform/__init__.py +0 -206
  364. pex-2.46.3/pex/pip/installation.py +0 -530
  365. pex-2.46.3/pex/pip/local_project.py +0 -57
  366. pex-2.46.3/pex/pip/tool.py +0 -799
  367. pex-2.46.3/pex/pip/vcs.py +0 -113
  368. pex-2.46.3/pex/pip/version.py +0 -378
  369. pex-2.46.3/pex/requirements.py +0 -727
  370. pex-2.46.3/pex/resolve/config.py +0 -102
  371. pex-2.46.3/pex/resolve/configured_resolve.py +0 -172
  372. pex-2.46.3/pex/resolve/configured_resolver.py +0 -119
  373. pex-2.46.3/pex/resolve/downloads.py +0 -184
  374. pex-2.46.3/pex/resolve/lock_downloader.py +0 -382
  375. pex-2.46.3/pex/resolve/lock_resolver.py +0 -563
  376. pex-2.46.3/pex/resolve/locked_resolve.py +0 -991
  377. pex-2.46.3/pex/resolve/locker.py +0 -658
  378. pex-2.46.3/pex/resolve/locker_patches.py +0 -292
  379. pex-2.46.3/pex/resolve/lockfile/create.py +0 -471
  380. pex-2.46.3/pex/resolve/lockfile/download_manager.py +0 -243
  381. pex-2.46.3/pex/resolve/lockfile/json_codec.py +0 -468
  382. pex-2.46.3/pex/resolve/lockfile/model.py +0 -189
  383. pex-2.46.3/pex/resolve/lockfile/pep_751.py +0 -1686
  384. pex-2.46.3/pex/resolve/lockfile/requires_dist.py +0 -330
  385. pex-2.46.3/pex/resolve/lockfile/subset.py +0 -176
  386. pex-2.46.3/pex/resolve/lockfile/updater.py +0 -840
  387. pex-2.46.3/pex/resolve/pex_repository_resolver.py +0 -129
  388. pex-2.46.3/pex/resolve/pre_resolved_resolver.py +0 -221
  389. pex-2.46.3/pex/resolve/project.py +0 -381
  390. pex-2.46.3/pex/resolve/requirement_configuration.py +0 -62
  391. pex-2.46.3/pex/resolve/requirement_options.py +0 -54
  392. pex-2.46.3/pex/resolve/resolver_configuration.py +0 -279
  393. pex-2.46.3/pex/resolve/resolver_options.py +0 -897
  394. pex-2.46.3/pex/resolve/resolvers.py +0 -272
  395. pex-2.46.3/pex/resolve/target_options.py +0 -290
  396. pex-2.46.3/pex/resolver.py +0 -1519
  397. pex-2.46.3/pex/scie/__init__.py +0 -439
  398. pex-2.46.3/pex/scie/model.py +0 -472
  399. pex-2.46.3/pex/scie/science.py +0 -581
  400. pex-2.46.3/pex/sh_boot.py +0 -270
  401. pex-2.46.3/pex/sysconfig.py +0 -135
  402. pex-2.46.3/pex/targets.py +0 -424
  403. pex-2.46.3/pex/third_party/__init__.py +0 -665
  404. pex-2.46.3/pex/tools/commands/repository.py +0 -442
  405. pex-2.46.3/pex/variables.py +0 -945
  406. pex-2.46.3/pex/vendor/__init__.py +0 -403
  407. pex-2.46.3/pex/vendor/__main__.py +0 -563
  408. pex-2.46.3/pex/vendor/_vendored/ansicolors/.layout.json +0 -1
  409. pex-2.46.3/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/INSTALLER +0 -1
  410. pex-2.46.3/pex/vendor/_vendored/appdirs/.layout.json +0 -1
  411. pex-2.46.3/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/INSTALLER +0 -1
  412. pex-2.46.3/pex/vendor/_vendored/attrs/.layout.json +0 -1
  413. pex-2.46.3/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/INSTALLER +0 -1
  414. pex-2.46.3/pex/vendor/_vendored/packaging_20_9/.layout.json +0 -1
  415. pex-2.46.3/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/INSTALLER +0 -1
  416. pex-2.46.3/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/INSTALLER +0 -1
  417. pex-2.46.3/pex/vendor/_vendored/packaging_21_3/.layout.json +0 -1
  418. pex-2.46.3/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/INSTALLER +0 -1
  419. pex-2.46.3/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/INSTALLER +0 -1
  420. pex-2.46.3/pex/vendor/_vendored/packaging_24_0/.layout.json +0 -1
  421. pex-2.46.3/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/INSTALLER +0 -1
  422. pex-2.46.3/pex/vendor/_vendored/packaging_25_0/.layout.json +0 -1
  423. pex-2.46.3/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/INSTALLER +0 -1
  424. pex-2.46.3/pex/vendor/_vendored/pip/.layout.json +0 -1
  425. pex-2.46.3/pex/vendor/_vendored/pip/pip/_vendor/certifi/cacert.pem +0 -4781
  426. pex-2.46.3/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/INSTALLER +0 -1
  427. pex-2.46.3/pex/vendor/_vendored/setuptools/.layout.json +0 -1
  428. pex-2.46.3/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/INSTALLER +0 -1
  429. pex-2.46.3/pex/vendor/_vendored/toml/.layout.json +0 -1
  430. pex-2.46.3/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/INSTALLER +0 -1
  431. pex-2.46.3/pex/vendor/_vendored/tomli/.layout.json +0 -1
  432. pex-2.46.3/pex/vendor/_vendored/tomli/tomli-2.0.1.dist-info/INSTALLER +0 -1
  433. pex-2.46.3/pex/venv/installer.py +0 -664
  434. pex-2.46.3/pex/venv/venv_pex.py +0 -358
  435. pex-2.46.3/pex/version.py +0 -4
  436. pex-2.46.3/pex/wheel.py +0 -167
  437. pex-2.46.3/pex/windows/__init__.py +0 -169
  438. pex-2.46.3/pyproject.toml +0 -458
  439. pex-2.46.3/scripts/analyze-CI-shard-timeout.py +0 -53
  440. pex-2.46.3/scripts/build-cache-image.py +0 -316
  441. pex-2.46.3/scripts/create-packages.py +0 -377
  442. pex-2.46.3/scripts/dev-cmd-fix-egg-link.py +0 -94
  443. pex-2.46.3/scripts/gen-scie-platform.py +0 -335
  444. pex-2.46.3/scripts/lint.py +0 -54
  445. pex-2.46.3/scripts/typecheck.py +0 -93
  446. pex-2.46.3/setup.cfg +0 -80
  447. pex-2.46.3/testing/__init__.py +0 -914
  448. pex-2.46.3/testing/bin/run_tests.py +0 -299
  449. pex-2.46.3/testing/data/locks/mitmproxy.lock.json +0 -2029
  450. pex-2.46.3/testing/lock.py +0 -47
  451. pex-2.46.3/testing/mitmproxy.py +0 -156
  452. pex-2.46.3/testing/pex_dist.py +0 -75
  453. pex-2.46.3/testing/pythonPI.py +0 -21
  454. pex-2.46.3/testing/scie.py +0 -48
  455. pex-2.46.3/testing/venv.py +0 -61
  456. pex-2.46.3/tests/bin/test_sh_boot.py +0 -190
  457. pex-2.46.3/tests/conftest.py +0 -121
  458. pex-2.46.3/tests/integration/build_system/test_pep_518.py +0 -67
  459. pex-2.46.3/tests/integration/cli/commands/test_download.py +0 -156
  460. pex-2.46.3/tests/integration/cli/commands/test_export.py +0 -438
  461. pex-2.46.3/tests/integration/cli/commands/test_export_subset.py +0 -89
  462. pex-2.46.3/tests/integration/cli/commands/test_interpreter_inspect.py +0 -149
  463. pex-2.46.3/tests/integration/cli/commands/test_issue_1667.py +0 -99
  464. pex-2.46.3/tests/integration/cli/commands/test_issue_1688.py +0 -65
  465. pex-2.46.3/tests/integration/cli/commands/test_issue_1711.py +0 -130
  466. pex-2.46.3/tests/integration/cli/commands/test_issue_1734.py +0 -112
  467. pex-2.46.3/tests/integration/cli/commands/test_issue_1801.py +0 -60
  468. pex-2.46.3/tests/integration/cli/commands/test_issue_1821.py +0 -232
  469. pex-2.46.3/tests/integration/cli/commands/test_issue_2050.py +0 -278
  470. pex-2.46.3/tests/integration/cli/commands/test_issue_2098.py +0 -104
  471. pex-2.46.3/tests/integration/cli/commands/test_issue_2414.py +0 -88
  472. pex-2.46.3/tests/integration/cli/commands/test_lock.py +0 -1949
  473. pex-2.46.3/tests/integration/cli/commands/test_lock_requirements_file.py +0 -112
  474. pex-2.46.3/tests/integration/cli/commands/test_lock_resolve_auth.py +0 -371
  475. pex-2.46.3/tests/integration/cli/commands/test_lock_sync.py +0 -1459
  476. pex-2.46.3/tests/integration/cli/commands/test_pep_751.py +0 -798
  477. pex-2.46.3/tests/integration/cli/commands/test_venv_create.py +0 -560
  478. pex-2.46.3/tests/integration/cli/commands/test_wheel.py +0 -223
  479. pex-2.46.3/tests/integration/resolve/test_issue_1918.py +0 -152
  480. pex-2.46.3/tests/integration/resolve/test_issue_2092.py +0 -91
  481. pex-2.46.3/tests/integration/scie/test_issue_2733.py +0 -82
  482. pex-2.46.3/tests/integration/scie/test_issue_2810.py +0 -144
  483. pex-2.46.3/tests/integration/scie/test_issue_2827.py +0 -78
  484. pex-2.46.3/tests/integration/scie/test_pex_scie.py +0 -1242
  485. pex-2.46.3/tests/integration/test_downloads.py +0 -87
  486. pex-2.46.3/tests/integration/test_inject_env_and_args.py +0 -331
  487. pex-2.46.3/tests/integration/test_integration.py +0 -2112
  488. pex-2.46.3/tests/integration/test_interpreter_selection.py +0 -507
  489. pex-2.46.3/tests/integration/test_issue_1017.py +0 -41
  490. pex-2.46.3/tests/integration/test_issue_1232.py +0 -183
  491. pex-2.46.3/tests/integration/test_issue_1422.py +0 -116
  492. pex-2.46.3/tests/integration/test_issue_1560.py +0 -113
  493. pex-2.46.3/tests/integration/test_issue_1656.py +0 -185
  494. pex-2.46.3/tests/integration/test_issue_1817.py +0 -83
  495. pex-2.46.3/tests/integration/test_issue_1856.py +0 -64
  496. pex-2.46.3/tests/integration/test_issue_1933.py +0 -70
  497. pex-2.46.3/tests/integration/test_issue_2006.py +0 -70
  498. pex-2.46.3/tests/integration/test_issue_2324.py +0 -82
  499. pex-2.46.3/tests/integration/test_issue_2343.py +0 -254
  500. pex-2.46.3/tests/integration/test_issue_2348.py +0 -78
  501. pex-2.46.3/tests/integration/test_issue_2355.py +0 -120
  502. pex-2.46.3/tests/integration/test_issue_2389.py +0 -59
  503. pex-2.46.3/tests/integration/test_issue_2391.py +0 -99
  504. pex-2.46.3/tests/integration/test_issue_2441.py +0 -64
  505. pex-2.46.3/tests/integration/test_issue_661.py +0 -35
  506. pex-2.46.3/tests/integration/test_keyring_support.py +0 -349
  507. pex-2.46.3/tests/integration/test_lock_resolver.py +0 -569
  508. pex-2.46.3/tests/integration/test_locked_resolve.py +0 -158
  509. pex-2.46.3/tests/integration/test_pex_bootstrapper.py +0 -486
  510. pex-2.46.3/tests/integration/test_reproducible.py +0 -340
  511. pex-2.46.3/tests/integration/test_setproctitle.py +0 -178
  512. pex-2.46.3/tests/integration/test_sh_boot.py +0 -352
  513. pex-2.46.3/tests/integration/tools/commands/test_issue_2105.py +0 -294
  514. pex-2.46.3/tests/integration/venv_ITs/test_install_wheel_multiple_site_packages_dirs.py +0 -109
  515. pex-2.46.3/tests/integration/venv_ITs/test_issue_1630.py +0 -86
  516. pex-2.46.3/tests/integration/venv_ITs/test_issue_1668.py +0 -94
  517. pex-2.46.3/tests/resolve/lockfile/test_json_codec.py +0 -603
  518. pex-2.46.3/tests/resolve/lockfile/test_lockfile.py +0 -116
  519. pex-2.46.3/tests/resolve/lockfile/test_pep_751.py +0 -838
  520. pex-2.46.3/tests/resolve/test_locked_resolve.py +0 -983
  521. pex-2.46.3/tests/resolve/test_pex_repository_resolver.py +0 -355
  522. pex-2.46.3/tests/resolve/test_resolver_options.py +0 -378
  523. pex-2.46.3/tests/resolve/test_target_options.py +0 -562
  524. pex-2.46.3/tests/test_dist_metadata.py +0 -481
  525. pex-2.46.3/tests/test_enum.py +0 -176
  526. pex-2.46.3/tests/test_environment.py +0 -524
  527. pex-2.46.3/tests/test_finders.py +0 -107
  528. pex-2.46.3/tests/test_hashing.py +0 -71
  529. pex-2.46.3/tests/test_interpreter.py +0 -598
  530. pex-2.46.3/tests/test_interpreter_constraints.py +0 -178
  531. pex-2.46.3/tests/test_pep_376.py +0 -93
  532. pex-2.46.3/tests/test_pep_508.py +0 -145
  533. pex-2.46.3/tests/test_pex_bootstrapper.py +0 -334
  534. pex-2.46.3/tests/test_pip.py +0 -589
  535. pex-2.46.3/tests/test_requirements.py +0 -593
  536. pex-2.46.3/tests/test_resolver.py +0 -673
  537. pex-2.46.3/tests/test_targets.py +0 -334
  538. pex-2.46.3/tests/tools/commands/test_interpreter_command.py +0 -178
  539. pex-2.46.3/tests/tools/commands/test_repository.py +0 -305
  540. pex-2.46.3/tests/tools/commands/test_venv.py +0 -839
  541. pex-2.46.3/uv.lock +0 -5040
  542. {pex-2.46.3 → pex-2.72.0}/LICENSE +0 -0
  543. {pex-2.46.3 → pex-2.72.0}/MANIFEST.in +0 -0
  544. {pex-2.46.3 → pex-2.72.0}/README.rst +0 -0
  545. {pex-2.46.3 → pex-2.72.0}/assets/download.svg +0 -0
  546. {pex-2.46.3 → pex-2.72.0}/assets/github.svg +0 -0
  547. {pex-2.46.3 → pex-2.72.0}/assets/pdf.svg +0 -0
  548. {pex-2.46.3 → pex-2.72.0}/assets/pex-icon-512.png +0 -0
  549. {pex-2.46.3 → pex-2.72.0}/assets/pex-icon-512x512.png +0 -0
  550. {pex-2.46.3 → pex-2.72.0}/assets/pex-logo-dark.png +0 -0
  551. {pex-2.46.3 → pex-2.72.0}/assets/pex-logo-light.png +0 -0
  552. {pex-2.46.3 → pex-2.72.0}/assets/pex.svg +0 -0
  553. {pex-2.46.3 → pex-2.72.0}/assets/python.svg +0 -0
  554. {pex-2.46.3 → pex-2.72.0}/build-backend/pex_build/setuptools/__init__.py +0 -0
  555. {pex-2.46.3 → pex-2.72.0}/docker/user/Dockerfile +0 -0
  556. {pex-2.46.3 → pex-2.72.0}/docker/user/create_docker_image_user.sh +0 -0
  557. {pex-2.46.3 → pex-2.72.0}/docs/_ext/sphinx_pex/__init__.py +0 -0
  558. {pex-2.46.3 → pex-2.72.0}/docs/_ext/sphinx_pex/vars.py +0 -0
  559. {pex-2.46.3 → pex-2.72.0}/docs/_static/pex-icon.png +0 -0
  560. {pex-2.46.3 → pex-2.72.0}/docs/_static/pex-logo-dark.png +0 -0
  561. {pex-2.46.3 → pex-2.72.0}/docs/_static/pex-logo-light.png +0 -0
  562. {pex-2.46.3 → pex-2.72.0}/docs/_templates/page.html +0 -0
  563. {pex-2.46.3 → pex-2.72.0}/docs/_templates/search.html +0 -0
  564. {pex-2.46.3 → pex-2.72.0}/docs/api/vars.md +0 -0
  565. {pex-2.46.3 → pex-2.72.0}/docs/conf.py +0 -0
  566. {pex-2.46.3 → pex-2.72.0}/docs/index.rst +0 -0
  567. {pex-2.46.3 → pex-2.72.0}/docs/recipes.rst +0 -0
  568. {pex-2.46.3 → pex-2.72.0}/docs/scie.md +0 -0
  569. {pex-2.46.3 → pex-2.72.0}/docs/whatispex.rst +0 -0
  570. {pex-2.46.3 → pex-2.72.0}/mypy.ini +0 -0
  571. {pex-2.46.3 → pex-2.72.0}/package/__init__.py +0 -0
  572. {pex-2.46.3 → pex-2.72.0}/pex/__init__.py +0 -0
  573. {pex-2.46.3 → pex-2.72.0}/pex/__main__.py +0 -0
  574. {pex-2.46.3 → pex-2.72.0}/pex/argparse.py +0 -0
  575. {pex-2.46.3 → pex-2.72.0}/pex/atexit.py +0 -0
  576. {pex-2.46.3 → pex-2.72.0}/pex/atomic_directory.py +0 -0
  577. {pex-2.46.3 → pex-2.72.0}/pex/attrs.py +0 -0
  578. {pex-2.46.3 → pex-2.72.0}/pex/bin/__init__.py +0 -0
  579. {pex-2.46.3 → pex-2.72.0}/pex/bootstrap.py +0 -0
  580. {pex-2.46.3 → pex-2.72.0}/pex/build_system/__init__.py +0 -0
  581. {pex-2.46.3 → pex-2.72.0}/pex/build_system/pep_518.py +0 -0
  582. {pex-2.46.3 → pex-2.72.0}/pex/cache/__init__.py +0 -0
  583. {pex-2.46.3 → pex-2.72.0}/pex/cache/access.py +0 -0
  584. {pex-2.46.3 → pex-2.72.0}/pex/cache/prunable.py +0 -0
  585. {pex-2.46.3 → pex-2.72.0}/pex/cache/root.py +0 -0
  586. {pex-2.46.3 → pex-2.72.0}/pex/cli/__init__.py +0 -0
  587. {pex-2.46.3 → pex-2.72.0}/pex/cli/__main__.py +0 -0
  588. {pex-2.46.3 → pex-2.72.0}/pex/cli/command.py +0 -0
  589. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/cache/__init__.py +0 -0
  590. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/cache/bytes.py +0 -0
  591. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/cache/du.py +0 -0
  592. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/docs.py +0 -0
  593. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/pip/__init__.py +0 -0
  594. {pex-2.46.3 → pex-2.72.0}/pex/cli/commands/pip/download.py +0 -0
  595. {pex-2.46.3 → pex-2.72.0}/pex/cli_util.py +0 -0
  596. {pex-2.46.3 → pex-2.72.0}/pex/commands/__init__.py +0 -0
  597. {pex-2.46.3 → pex-2.72.0}/pex/compiler.py +0 -0
  598. {pex-2.46.3 → pex-2.72.0}/pex/dependency_manager.py +0 -0
  599. {pex-2.46.3 → pex-2.72.0}/pex/distutils/__init__.py +0 -0
  600. {pex-2.46.3 → pex-2.72.0}/pex/distutils/commands/__init__.py +0 -0
  601. {pex-2.46.3 → pex-2.72.0}/pex/distutils/commands/bdist_pex.py +0 -0
  602. {pex-2.46.3 → pex-2.72.0}/pex/docs/__init__.py +0 -0
  603. {pex-2.46.3 → pex-2.72.0}/pex/docs/command.py +0 -0
  604. {pex-2.46.3 → pex-2.72.0}/pex/exceptions.py +0 -0
  605. {pex-2.46.3 → pex-2.72.0}/pex/executables.py +0 -0
  606. {pex-2.46.3 → pex-2.72.0}/pex/executor.py +0 -0
  607. {pex-2.46.3 → pex-2.72.0}/pex/fetcher.py +0 -0
  608. {pex-2.46.3 → pex-2.72.0}/pex/fingerprinted_distribution.py +0 -0
  609. {pex-2.46.3 → pex-2.72.0}/pex/fs/__init__.py +0 -0
  610. {pex-2.46.3 → pex-2.72.0}/pex/fs/_posix.py +0 -0
  611. {pex-2.46.3 → pex-2.72.0}/pex/fs/_windows.py +0 -0
  612. {pex-2.46.3 → pex-2.72.0}/pex/fs/lock.py +0 -0
  613. {pex-2.46.3 → pex-2.72.0}/pex/globals.py +0 -0
  614. /pex-2.46.3/build-backend/pex_build/setuptools/build.py.lck → /pex-2.72.0/pex/hashing.py.lck +0 -0
  615. {pex-2.46.3 → pex-2.72.0}/pex/http/__init__.py +0 -0
  616. {pex-2.46.3 → pex-2.72.0}/pex/inherit_path.py +0 -0
  617. {pex-2.46.3 → pex-2.72.0}/pex/layout.py +0 -0
  618. {pex-2.46.3 → pex-2.72.0}/pex/network_configuration.py +0 -0
  619. {pex-2.46.3 → pex-2.72.0}/pex/orderedset.py +0 -0
  620. {pex-2.46.3 → pex-2.72.0}/pex/os.py +0 -0
  621. {pex-2.46.3 → pex-2.72.0}/pex/pep_440.py +0 -0
  622. {pex-2.46.3 → pex-2.72.0}/pex/pep_503.py +0 -0
  623. {pex-2.46.3 → pex-2.72.0}/pex/pep_723.py +0 -0
  624. {pex-2.46.3 → pex-2.72.0}/pex/pex_bootstrapper.py +0 -0
  625. {pex-2.46.3 → pex-2.72.0}/pex/pex_root.py +0 -0
  626. {pex-2.46.3 → pex-2.72.0}/pex/pex_warnings.py +0 -0
  627. {pex-2.46.3 → pex-2.72.0}/pex/pip/__init__.py +0 -0
  628. {pex-2.46.3 → pex-2.72.0}/pex/pip/download_observer.py +0 -0
  629. {pex-2.46.3 → pex-2.72.0}/pex/pip/foreign_platform/markers.py +0 -0
  630. {pex-2.46.3 → pex-2.72.0}/pex/pip/foreign_platform/requires_python.py +0 -0
  631. {pex-2.46.3 → pex-2.72.0}/pex/pip/foreign_platform/tags.py +0 -0
  632. {pex-2.46.3 → pex-2.72.0}/pex/pip/log_analyzer.py +0 -0
  633. {pex-2.46.3 → pex-2.72.0}/pex/pip/tailer.py +0 -0
  634. {pex-2.46.3 → pex-2.72.0}/pex/platforms.py +0 -0
  635. {pex-2.46.3 → pex-2.72.0}/pex/pth.py +0 -0
  636. {pex-2.46.3 → pex-2.72.0}/pex/pyenv.py +0 -0
  637. {pex-2.46.3 → pex-2.72.0}/pex/rank.py +0 -0
  638. {pex-2.46.3 → pex-2.72.0}/pex/repl/__init__.py +0 -0
  639. {pex-2.46.3 → pex-2.72.0}/pex/repl/custom.py +0 -0
  640. {pex-2.46.3 → pex-2.72.0}/pex/repl/pex_repl.py +0 -0
  641. {pex-2.46.3 → pex-2.72.0}/pex/resolve/__init__.py +0 -0
  642. {pex-2.46.3 → pex-2.72.0}/pex/resolve/abbreviated_platforms.py +0 -0
  643. {pex-2.46.3 → pex-2.72.0}/pex/resolve/lockfile/__init__.py +0 -0
  644. {pex-2.46.3 → pex-2.72.0}/pex/resolve/path_mappings.py +0 -0
  645. {pex-2.46.3 → pex-2.72.0}/pex/resolve/pep_691/__init__.py +0 -0
  646. {pex-2.46.3 → pex-2.72.0}/pex/resolve/pep_691/api.py +0 -0
  647. {pex-2.46.3 → pex-2.72.0}/pex/resolve/pep_691/fingerprint_service.py +0 -0
  648. {pex-2.46.3 → pex-2.72.0}/pex/resolve/pep_691/model.py +0 -0
  649. {pex-2.46.3 → pex-2.72.0}/pex/resolve/resolved_requirement.py +0 -0
  650. {pex-2.46.3 → pex-2.72.0}/pex/resolve/script_metadata.py +0 -0
  651. {pex-2.46.3 → pex-2.72.0}/pex/resolve/target_configuration.py +0 -0
  652. {pex-2.46.3 → pex-2.72.0}/pex/result.py +0 -0
  653. {pex-2.46.3 → pex-2.72.0}/pex/scie/configure-binding.py +0 -0
  654. {pex-2.46.3 → pex-2.72.0}/pex/sorted_tuple.py +0 -0
  655. {pex-2.46.3 → pex-2.72.0}/pex/specifier_sets.py +0 -0
  656. {pex-2.46.3 → pex-2.72.0}/pex/subprocess.py +0 -0
  657. {pex-2.46.3 → pex-2.72.0}/pex/toml.py +0 -0
  658. {pex-2.46.3 → pex-2.72.0}/pex/tools/__init__.py +0 -0
  659. {pex-2.46.3 → pex-2.72.0}/pex/tools/__main__.py +0 -0
  660. {pex-2.46.3 → pex-2.72.0}/pex/tools/command.py +0 -0
  661. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/__init__.py +0 -0
  662. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/digraph.py +0 -0
  663. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/graph.py +0 -0
  664. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/info.py +0 -0
  665. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/interpreter.py +0 -0
  666. {pex-2.46.3 → pex-2.72.0}/pex/tools/commands/venv.py +0 -0
  667. {pex-2.46.3 → pex-2.72.0}/pex/tools/main.py +0 -0
  668. {pex-2.46.3 → pex-2.72.0}/pex/tracer.py +0 -0
  669. {pex-2.46.3 → pex-2.72.0}/pex/typing.py +0 -0
  670. {pex-2.46.3 → pex-2.72.0}/pex/util.py +0 -0
  671. {pex-2.46.3 → pex-2.72.0}/pex/vendor/README.md +0 -0
  672. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/__init__.py +0 -0
  673. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/__init__.py +0 -0
  674. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/DESCRIPTION.rst +0 -0
  675. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/METADATA +0 -0
  676. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/WHEEL +0 -0
  677. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/metadata.json +0 -0
  678. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/ansicolors-1.1.8.dist-info/top_level.txt +0 -0
  679. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/colors/__init__.py +0 -0
  680. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/colors/colors.py +0 -0
  681. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/colors/csscolors.py +0 -0
  682. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/colors/version.py +0 -0
  683. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/ansicolors/constraints.txt +0 -0
  684. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/__init__.py +0 -0
  685. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/LICENSE.txt +0 -0
  686. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/METADATA +0 -0
  687. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/WHEEL +0 -0
  688. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/appdirs-1.4.4.dist-info/top_level.txt +0 -0
  689. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/appdirs.py +0 -0
  690. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/appdirs/constraints.txt +0 -0
  691. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/__init__.py +0 -0
  692. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/__init__.py +0 -0
  693. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/__init__.pyi +0 -0
  694. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_cmp.py +0 -0
  695. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_cmp.pyi +0 -0
  696. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_compat.py +0 -0
  697. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_config.py +0 -0
  698. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_funcs.py +0 -0
  699. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_make.py +0 -0
  700. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_next_gen.py +0 -0
  701. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_version_info.py +0 -0
  702. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/_version_info.pyi +0 -0
  703. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/converters.py +0 -0
  704. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/converters.pyi +0 -0
  705. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/exceptions.py +0 -0
  706. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/exceptions.pyi +0 -0
  707. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/filters.py +0 -0
  708. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/filters.pyi +0 -0
  709. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/py.typed +0 -0
  710. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/setters.py +0 -0
  711. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/setters.pyi +0 -0
  712. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/validators.py +0 -0
  713. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attr/validators.pyi +0 -0
  714. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/__init__.py +0 -0
  715. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/__init__.pyi +0 -0
  716. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/converters.py +0 -0
  717. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/exceptions.py +0 -0
  718. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/filters.py +0 -0
  719. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/py.typed +0 -0
  720. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/setters.py +0 -0
  721. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs/validators.py +0 -0
  722. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/AUTHORS.rst +0 -0
  723. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/LICENSE +0 -0
  724. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/METADATA +0 -0
  725. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/WHEEL +0 -0
  726. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/attrs/attrs-21.5.0.dev0.dist-info/top_level.txt +0 -0
  727. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/__init__.py +0 -0
  728. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/constraints.txt +0 -0
  729. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/__about__.py +0 -0
  730. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/__init__.py +0 -0
  731. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/_compat.py +0 -0
  732. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/_structures.py +0 -0
  733. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/_typing.py +0 -0
  734. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/markers.py +0 -0
  735. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/py.typed +0 -0
  736. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/requirements.py +0 -0
  737. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/specifiers.py +0 -0
  738. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/tags.py +0 -0
  739. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/utils.py +0 -0
  740. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging/version.py +0 -0
  741. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/LICENSE +0 -0
  742. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/LICENSE.APACHE +0 -0
  743. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/LICENSE.BSD +0 -0
  744. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/METADATA +0 -0
  745. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/WHEEL +0 -0
  746. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/packaging-20.9.dist-info/top_level.txt +0 -0
  747. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/LICENSE +0 -0
  748. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/METADATA +0 -0
  749. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/WHEEL +0 -0
  750. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/pyparsing-2.4.7.dist-info/top_level.txt +0 -0
  751. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_20_9/pyparsing.py +0 -0
  752. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/__init__.py +0 -0
  753. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/constraints.txt +0 -0
  754. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/__about__.py +0 -0
  755. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/__init__.py +0 -0
  756. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/_manylinux.py +0 -0
  757. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/_musllinux.py +0 -0
  758. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/_structures.py +0 -0
  759. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/markers.py +0 -0
  760. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/py.typed +0 -0
  761. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/requirements.py +0 -0
  762. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/specifiers.py +0 -0
  763. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/tags.py +0 -0
  764. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/utils.py +0 -0
  765. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging/version.py +0 -0
  766. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/LICENSE +0 -0
  767. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/LICENSE.APACHE +0 -0
  768. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/LICENSE.BSD +0 -0
  769. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/METADATA +0 -0
  770. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/WHEEL +0 -0
  771. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/packaging-21.3.dist-info/top_level.txt +0 -0
  772. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/__init__.py +0 -0
  773. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/actions.py +0 -0
  774. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/common.py +0 -0
  775. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/core.py +0 -0
  776. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/diagram/__init__.py +0 -0
  777. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/diagram/template.jinja2 +0 -0
  778. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/exceptions.py +0 -0
  779. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/helpers.py +0 -0
  780. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/results.py +0 -0
  781. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/testing.py +0 -0
  782. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/unicode.py +0 -0
  783. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing/util.py +0 -0
  784. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/LICENSE +0 -0
  785. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/METADATA +0 -0
  786. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/WHEEL +0 -0
  787. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_21_3/pyparsing-3.0.7.dist-info/top_level.txt +0 -0
  788. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/__init__.py +0 -0
  789. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/constraints.txt +0 -0
  790. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/__init__.py +0 -0
  791. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_elffile.py +0 -0
  792. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_manylinux.py +0 -0
  793. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_musllinux.py +0 -0
  794. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_parser.py +0 -0
  795. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_structures.py +0 -0
  796. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/_tokenizer.py +0 -0
  797. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/markers.py +0 -0
  798. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/metadata.py +0 -0
  799. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/py.typed +0 -0
  800. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/requirements.py +0 -0
  801. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/specifiers.py +0 -0
  802. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/tags.py +0 -0
  803. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/utils.py +0 -0
  804. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging/version.py +0 -0
  805. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/LICENSE +0 -0
  806. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/LICENSE.APACHE +0 -0
  807. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/LICENSE.BSD +0 -0
  808. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/METADATA +0 -0
  809. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_24_0/packaging-24.0.dist-info/WHEEL +0 -0
  810. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/__init__.py +0 -0
  811. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/constraints.txt +0 -0
  812. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/__init__.py +0 -0
  813. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_elffile.py +0 -0
  814. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_manylinux.py +0 -0
  815. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_musllinux.py +0 -0
  816. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_parser.py +0 -0
  817. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_structures.py +0 -0
  818. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/_tokenizer.py +0 -0
  819. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/licenses/__init__.py +0 -0
  820. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/licenses/_spdx.py +0 -0
  821. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/markers.py +0 -0
  822. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/metadata.py +0 -0
  823. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/py.typed +0 -0
  824. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/requirements.py +0 -0
  825. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/specifiers.py +0 -0
  826. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/tags.py +0 -0
  827. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/utils.py +0 -0
  828. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging/version.py +0 -0
  829. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/METADATA +0 -0
  830. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/WHEEL +0 -0
  831. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/licenses/LICENSE +0 -0
  832. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/licenses/LICENSE.APACHE +0 -0
  833. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/packaging_25_0/packaging-25.0.dist-info/licenses/LICENSE.BSD +0 -0
  834. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/.prefix/bin/pip +0 -0
  835. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/.prefix/bin/pip3 +0 -0
  836. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/.prefix/bin/pip3.9 +0 -0
  837. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/__init__.py +0 -0
  838. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/__init__.py +0 -0
  839. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/__main__.py +0 -0
  840. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/__init__.py +0 -0
  841. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/build_env.py +0 -0
  842. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cache.py +0 -0
  843. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/__init__.py +0 -0
  844. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/autocompletion.py +0 -0
  845. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/base_command.py +0 -0
  846. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/cmdoptions.py +0 -0
  847. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/command_context.py +0 -0
  848. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/main.py +0 -0
  849. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/main_parser.py +0 -0
  850. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/parser.py +0 -0
  851. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/progress_bars.py +0 -0
  852. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/req_command.py +0 -0
  853. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/spinners.py +0 -0
  854. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/cli/status_codes.py +0 -0
  855. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/__init__.py +0 -0
  856. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/cache.py +0 -0
  857. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/check.py +0 -0
  858. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/completion.py +0 -0
  859. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/configuration.py +0 -0
  860. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/debug.py +0 -0
  861. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/download.py +0 -0
  862. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/freeze.py +0 -0
  863. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/hash.py +0 -0
  864. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/help.py +0 -0
  865. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/install.py +0 -0
  866. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/list.py +0 -0
  867. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/search.py +0 -0
  868. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/show.py +0 -0
  869. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/uninstall.py +0 -0
  870. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/commands/wheel.py +0 -0
  871. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/configuration.py +0 -0
  872. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/distributions/__init__.py +0 -0
  873. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/distributions/base.py +0 -0
  874. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/distributions/installed.py +0 -0
  875. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/distributions/sdist.py +0 -0
  876. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/distributions/wheel.py +0 -0
  877. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/exceptions.py +0 -0
  878. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/index/__init__.py +0 -0
  879. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/index/collector.py +0 -0
  880. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/index/package_finder.py +0 -0
  881. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/locations.py +0 -0
  882. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/main.py +0 -0
  883. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/__init__.py +0 -0
  884. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/candidate.py +0 -0
  885. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/direct_url.py +0 -0
  886. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/format_control.py +0 -0
  887. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/index.py +0 -0
  888. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/link.py +0 -0
  889. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/scheme.py +0 -0
  890. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/search_scope.py +0 -0
  891. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/selection_prefs.py +0 -0
  892. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/target_python.py +0 -0
  893. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/models/wheel.py +0 -0
  894. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/__init__.py +0 -0
  895. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/auth.py +0 -0
  896. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/cache.py +0 -0
  897. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/download.py +0 -0
  898. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/lazy_wheel.py +0 -0
  899. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/session.py +0 -0
  900. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/utils.py +0 -0
  901. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/network/xmlrpc.py +0 -0
  902. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/__init__.py +0 -0
  903. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/build/__init__.py +0 -0
  904. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/build/metadata.py +0 -0
  905. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/build/metadata_legacy.py +0 -0
  906. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/build/wheel.py +0 -0
  907. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/build/wheel_legacy.py +0 -0
  908. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/check.py +0 -0
  909. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/freeze.py +0 -0
  910. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/install/__init__.py +0 -0
  911. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/install/editable_legacy.py +0 -0
  912. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/install/legacy.py +0 -0
  913. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/install/wheel.py +0 -0
  914. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/operations/prepare.py +0 -0
  915. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/pyproject.py +0 -0
  916. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/__init__.py +0 -0
  917. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/constructors.py +0 -0
  918. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/req_file.py +0 -0
  919. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/req_install.py +0 -0
  920. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/req_set.py +0 -0
  921. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/req_tracker.py +0 -0
  922. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/req/req_uninstall.py +0 -0
  923. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/__init__.py +0 -0
  924. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/base.py +0 -0
  925. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/legacy/__init__.py +0 -0
  926. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/legacy/resolver.py +0 -0
  927. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  928. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/base.py +0 -0
  929. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  930. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/factory.py +0 -0
  931. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  932. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/provider.py +0 -0
  933. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  934. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  935. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  936. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/self_outdated_check.py +0 -0
  937. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/__init__.py +0 -0
  938. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/appdirs.py +0 -0
  939. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/compat.py +0 -0
  940. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/compatibility_tags.py +0 -0
  941. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/datetime.py +0 -0
  942. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/deprecation.py +0 -0
  943. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/direct_url_helpers.py +0 -0
  944. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/distutils_args.py +0 -0
  945. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/encoding.py +0 -0
  946. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/entrypoints.py +0 -0
  947. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/filesystem.py +0 -0
  948. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/filetypes.py +0 -0
  949. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/glibc.py +0 -0
  950. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/hashes.py +0 -0
  951. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/inject_securetransport.py +0 -0
  952. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/logging.py +0 -0
  953. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/misc.py +0 -0
  954. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/models.py +0 -0
  955. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/packaging.py +0 -0
  956. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/parallel.py +0 -0
  957. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/pkg_resources.py +0 -0
  958. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/setuptools_build.py +0 -0
  959. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/subprocess.py +0 -0
  960. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/temp_dir.py +0 -0
  961. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/typing.py +0 -0
  962. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/unpacking.py +0 -0
  963. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/urls.py +0 -0
  964. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/virtualenv.py +0 -0
  965. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/utils/wheel.py +0 -0
  966. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/__init__.py +0 -0
  967. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/bazaar.py +0 -0
  968. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/git.py +0 -0
  969. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/mercurial.py +0 -0
  970. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/subversion.py +0 -0
  971. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/vcs/versioncontrol.py +0 -0
  972. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_internal/wheel_builder.py +0 -0
  973. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/__init__.py +0 -0
  974. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/appdirs.py +0 -0
  975. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/__init__.py +0 -0
  976. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/_cmd.py +0 -0
  977. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/adapter.py +0 -0
  978. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/cache.py +0 -0
  979. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  980. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  981. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  982. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/compat.py +0 -0
  983. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/controller.py +0 -0
  984. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  985. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/heuristics.py +0 -0
  986. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/serialize.py +0 -0
  987. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/cachecontrol/wrapper.py +0 -0
  988. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/certifi/__init__.py +0 -0
  989. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/certifi/__main__.py +0 -0
  990. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/certifi/core.py +0 -0
  991. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/__init__.py +0 -0
  992. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/big5freq.py +0 -0
  993. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/big5prober.py +0 -0
  994. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/chardistribution.py +0 -0
  995. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/charsetgroupprober.py +0 -0
  996. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/charsetprober.py +0 -0
  997. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/cli/__init__.py +0 -0
  998. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/cli/chardetect.py +0 -0
  999. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/codingstatemachine.py +0 -0
  1000. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/compat.py +0 -0
  1001. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/cp949prober.py +0 -0
  1002. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/enums.py +0 -0
  1003. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/escprober.py +0 -0
  1004. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/escsm.py +0 -0
  1005. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/eucjpprober.py +0 -0
  1006. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/euckrfreq.py +0 -0
  1007. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/euckrprober.py +0 -0
  1008. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/euctwfreq.py +0 -0
  1009. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/euctwprober.py +0 -0
  1010. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/gb2312freq.py +0 -0
  1011. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/gb2312prober.py +0 -0
  1012. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/hebrewprober.py +0 -0
  1013. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/jisfreq.py +0 -0
  1014. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/jpcntx.py +0 -0
  1015. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langbulgarianmodel.py +0 -0
  1016. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langcyrillicmodel.py +0 -0
  1017. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langgreekmodel.py +0 -0
  1018. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langhebrewmodel.py +0 -0
  1019. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langhungarianmodel.py +0 -0
  1020. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langthaimodel.py +0 -0
  1021. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/langturkishmodel.py +0 -0
  1022. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/latin1prober.py +0 -0
  1023. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/mbcharsetprober.py +0 -0
  1024. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/mbcsgroupprober.py +0 -0
  1025. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/mbcssm.py +0 -0
  1026. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/sbcharsetprober.py +0 -0
  1027. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/sbcsgroupprober.py +0 -0
  1028. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/sjisprober.py +0 -0
  1029. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/universaldetector.py +0 -0
  1030. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/utf8prober.py +0 -0
  1031. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/chardet/version.py +0 -0
  1032. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/__init__.py +0 -0
  1033. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/ansi.py +0 -0
  1034. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/ansitowin32.py +0 -0
  1035. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/initialise.py +0 -0
  1036. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/win32.py +0 -0
  1037. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/colorama/winterm.py +0 -0
  1038. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/contextlib2.py +0 -0
  1039. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/__init__.py +0 -0
  1040. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/__init__.py +0 -0
  1041. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/misc.py +0 -0
  1042. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/shutil.py +0 -0
  1043. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/sysconfig.cfg +0 -0
  1044. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/sysconfig.py +0 -0
  1045. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/_backport/tarfile.py +0 -0
  1046. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/compat.py +0 -0
  1047. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/database.py +0 -0
  1048. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/index.py +0 -0
  1049. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/locators.py +0 -0
  1050. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/manifest.py +0 -0
  1051. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/markers.py +0 -0
  1052. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/metadata.py +0 -0
  1053. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/resources.py +0 -0
  1054. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/scripts.py +0 -0
  1055. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/t32.exe +0 -0
  1056. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/t64.exe +0 -0
  1057. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/util.py +0 -0
  1058. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/version.py +0 -0
  1059. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/w32.exe +0 -0
  1060. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/w64.exe +0 -0
  1061. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distlib/wheel.py +0 -0
  1062. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/distro.py +0 -0
  1063. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/__init__.py +0 -0
  1064. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_ihatexml.py +0 -0
  1065. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_inputstream.py +0 -0
  1066. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_tokenizer.py +0 -0
  1067. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_trie/__init__.py +0 -0
  1068. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_trie/_base.py +0 -0
  1069. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_trie/py.py +0 -0
  1070. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/_utils.py +0 -0
  1071. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/constants.py +0 -0
  1072. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/__init__.py +0 -0
  1073. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/alphabeticalattributes.py +0 -0
  1074. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/base.py +0 -0
  1075. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/inject_meta_charset.py +0 -0
  1076. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/lint.py +0 -0
  1077. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/optionaltags.py +0 -0
  1078. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/sanitizer.py +0 -0
  1079. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/filters/whitespace.py +0 -0
  1080. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/html5parser.py +0 -0
  1081. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/serializer.py +0 -0
  1082. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treeadapters/__init__.py +0 -0
  1083. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treeadapters/genshi.py +0 -0
  1084. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treeadapters/sax.py +0 -0
  1085. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treebuilders/__init__.py +0 -0
  1086. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treebuilders/base.py +0 -0
  1087. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treebuilders/dom.py +0 -0
  1088. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treebuilders/etree.py +0 -0
  1089. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treebuilders/etree_lxml.py +0 -0
  1090. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/__init__.py +0 -0
  1091. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/base.py +0 -0
  1092. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/dom.py +0 -0
  1093. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/etree.py +0 -0
  1094. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/etree_lxml.py +0 -0
  1095. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/html5lib/treewalkers/genshi.py +0 -0
  1096. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/__init__.py +0 -0
  1097. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/codec.py +0 -0
  1098. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/compat.py +0 -0
  1099. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/core.py +0 -0
  1100. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/idnadata.py +0 -0
  1101. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/intranges.py +0 -0
  1102. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/package_data.py +0 -0
  1103. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/idna/uts46data.py +0 -0
  1104. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/ipaddress.py +0 -0
  1105. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/msgpack/__init__.py +0 -0
  1106. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/msgpack/_version.py +0 -0
  1107. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/msgpack/exceptions.py +0 -0
  1108. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/msgpack/ext.py +0 -0
  1109. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/msgpack/fallback.py +0 -0
  1110. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/__about__.py +0 -0
  1111. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/__init__.py +0 -0
  1112. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/_compat.py +0 -0
  1113. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/_structures.py +0 -0
  1114. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/_typing.py +0 -0
  1115. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/markers.py +0 -0
  1116. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/requirements.py +0 -0
  1117. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/specifiers.py +0 -0
  1118. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/tags.py +0 -0
  1119. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/utils.py +0 -0
  1120. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/packaging/version.py +0 -0
  1121. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/__init__.py +0 -0
  1122. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/_in_process.py +0 -0
  1123. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/build.py +0 -0
  1124. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/check.py +0 -0
  1125. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/colorlog.py +0 -0
  1126. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/compat.py +0 -0
  1127. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/dirtools.py +0 -0
  1128. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/envbuild.py +0 -0
  1129. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/meta.py +0 -0
  1130. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pep517/wrappers.py +0 -0
  1131. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pkg_resources/__init__.py +0 -0
  1132. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pkg_resources/py31compat.py +0 -0
  1133. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/progress/__init__.py +0 -0
  1134. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/progress/bar.py +0 -0
  1135. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/progress/counter.py +0 -0
  1136. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/progress/spinner.py +0 -0
  1137. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/pyparsing.py +0 -0
  1138. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/__init__.py +0 -0
  1139. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/__version__.py +0 -0
  1140. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/_internal_utils.py +0 -0
  1141. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/adapters.py +0 -0
  1142. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/api.py +0 -0
  1143. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/auth.py +0 -0
  1144. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/certs.py +0 -0
  1145. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/compat.py +0 -0
  1146. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/cookies.py +0 -0
  1147. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/exceptions.py +0 -0
  1148. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/help.py +0 -0
  1149. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/hooks.py +0 -0
  1150. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/models.py +0 -0
  1151. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/packages.py +0 -0
  1152. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/sessions.py +0 -0
  1153. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/status_codes.py +0 -0
  1154. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/structures.py +0 -0
  1155. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/requests/utils.py +0 -0
  1156. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/__init__.py +0 -0
  1157. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  1158. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/compat/collections_abc.py +0 -0
  1159. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/providers.py +0 -0
  1160. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/reporters.py +0 -0
  1161. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/resolvers.py +0 -0
  1162. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/resolvelib/structs.py +0 -0
  1163. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/retrying.py +0 -0
  1164. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/six.py +0 -0
  1165. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/toml/__init__.py +0 -0
  1166. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/toml/decoder.py +0 -0
  1167. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/toml/encoder.py +0 -0
  1168. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/toml/ordered.py +0 -0
  1169. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/toml/tz.py +0 -0
  1170. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/__init__.py +0 -0
  1171. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/_collections.py +0 -0
  1172. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/_version.py +0 -0
  1173. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/connection.py +0 -0
  1174. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/connectionpool.py +0 -0
  1175. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  1176. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  1177. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  1178. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  1179. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  1180. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  1181. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  1182. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  1183. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  1184. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/contrib/socks.py +0 -0
  1185. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/exceptions.py +0 -0
  1186. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/fields.py +0 -0
  1187. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/filepost.py +0 -0
  1188. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/__init__.py +0 -0
  1189. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  1190. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  1191. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/six.py +0 -0
  1192. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
  1193. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
  1194. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/poolmanager.py +0 -0
  1195. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/request.py +0 -0
  1196. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/response.py +0 -0
  1197. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/__init__.py +0 -0
  1198. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/connection.py +0 -0
  1199. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/proxy.py +0 -0
  1200. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/queue.py +0 -0
  1201. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/request.py +0 -0
  1202. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/response.py +0 -0
  1203. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/retry.py +0 -0
  1204. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/ssl_.py +0 -0
  1205. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  1206. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/timeout.py +0 -0
  1207. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/url.py +0 -0
  1208. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/urllib3/util/wait.py +0 -0
  1209. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/vendor.txt +0 -0
  1210. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/webencodings/__init__.py +0 -0
  1211. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/webencodings/labels.py +0 -0
  1212. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/webencodings/mklabels.py +0 -0
  1213. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/webencodings/tests.py +0 -0
  1214. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip/_vendor/webencodings/x_user_defined.py +0 -0
  1215. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/LICENSE.txt +0 -0
  1216. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/METADATA +0 -0
  1217. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/WHEEL +0 -0
  1218. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/entry_points.txt +0 -0
  1219. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/pip/pip-20.3.4.dist-info/top_level.txt +0 -0
  1220. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/.prefix/bin/easy_install +0 -0
  1221. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/.prefix/bin/easy_install-3.9 +0 -0
  1222. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/__init__.py +0 -0
  1223. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/easy_install.py +0 -0
  1224. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/__init__.py +0 -0
  1225. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/__init__.py +0 -0
  1226. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/appdirs.py +0 -0
  1227. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/__about__.py +0 -0
  1228. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/__init__.py +0 -0
  1229. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/_compat.py +0 -0
  1230. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/_structures.py +0 -0
  1231. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/markers.py +0 -0
  1232. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/requirements.py +0 -0
  1233. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/specifiers.py +0 -0
  1234. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/utils.py +0 -0
  1235. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/packaging/version.py +0 -0
  1236. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/pyparsing.py +0 -0
  1237. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/_vendor/six.py +0 -0
  1238. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/extern/__init__.py +0 -0
  1239. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/pkg_resources/py31compat.py +0 -0
  1240. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/__init__.py +0 -0
  1241. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_deprecation_warning.py +0 -0
  1242. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_imp.py +0 -0
  1243. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/__init__.py +0 -0
  1244. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/ordered_set.py +0 -0
  1245. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/__about__.py +0 -0
  1246. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/__init__.py +0 -0
  1247. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/_compat.py +0 -0
  1248. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/_structures.py +0 -0
  1249. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/markers.py +0 -0
  1250. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/requirements.py +0 -0
  1251. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/specifiers.py +0 -0
  1252. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/tags.py +0 -0
  1253. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/utils.py +0 -0
  1254. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/packaging/version.py +0 -0
  1255. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/pyparsing.py +0 -0
  1256. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/_vendor/six.py +0 -0
  1257. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/archive_util.py +0 -0
  1258. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/build_meta.py +0 -0
  1259. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/cli-32.exe +0 -0
  1260. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/cli-64.exe +0 -0
  1261. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/cli.exe +0 -0
  1262. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/__init__.py +0 -0
  1263. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/alias.py +0 -0
  1264. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/bdist_egg.py +0 -0
  1265. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/bdist_rpm.py +0 -0
  1266. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/bdist_wininst.py +0 -0
  1267. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/build_clib.py +0 -0
  1268. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/build_ext.py +0 -0
  1269. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/build_py.py +0 -0
  1270. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/develop.py +0 -0
  1271. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/dist_info.py +0 -0
  1272. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/easy_install.py +0 -0
  1273. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/egg_info.py +0 -0
  1274. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/install.py +0 -0
  1275. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/install_egg_info.py +0 -0
  1276. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/install_lib.py +0 -0
  1277. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/install_scripts.py +0 -0
  1278. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/launcher manifest.xml +0 -0
  1279. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/py36compat.py +0 -0
  1280. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/register.py +0 -0
  1281. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/rotate.py +0 -0
  1282. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/saveopts.py +0 -0
  1283. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/sdist.py +0 -0
  1284. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/setopt.py +0 -0
  1285. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/test.py +0 -0
  1286. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/upload.py +0 -0
  1287. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/command/upload_docs.py +0 -0
  1288. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/config.py +0 -0
  1289. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/dep_util.py +0 -0
  1290. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/depends.py +0 -0
  1291. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/dist.py +0 -0
  1292. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/errors.py +0 -0
  1293. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/extension.py +0 -0
  1294. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/extern/__init__.py +0 -0
  1295. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/glob.py +0 -0
  1296. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/gui-32.exe +0 -0
  1297. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/gui-64.exe +0 -0
  1298. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/gui.exe +0 -0
  1299. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/installer.py +0 -0
  1300. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/launch.py +0 -0
  1301. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/lib2to3_ex.py +0 -0
  1302. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/monkey.py +0 -0
  1303. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/msvc.py +0 -0
  1304. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/namespaces.py +0 -0
  1305. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/package_index.py +0 -0
  1306. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/py27compat.py +0 -0
  1307. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/py31compat.py +0 -0
  1308. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/py33compat.py +0 -0
  1309. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/py34compat.py +0 -0
  1310. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/sandbox.py +0 -0
  1311. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/script (dev).tmpl +0 -0
  1312. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/script.tmpl +0 -0
  1313. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/site-patch.py +0 -0
  1314. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/ssl_support.py +0 -0
  1315. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/unicode_utils.py +0 -0
  1316. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/version.py +0 -0
  1317. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/wheel.py +0 -0
  1318. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools/windows_support.py +0 -0
  1319. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/LICENSE +0 -0
  1320. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/METADATA +0 -0
  1321. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/WHEEL +0 -0
  1322. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/dependency_links.txt +0 -0
  1323. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/entry_points.txt +0 -0
  1324. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/top_level.txt +0 -0
  1325. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/setuptools/setuptools-44.0.0+3acb925dd708430aeaf197ea53ac8a752f7c1863.dist-info/zip-safe +0 -0
  1326. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/__init__.py +0 -0
  1327. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/constraints.txt +0 -0
  1328. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml/__init__.py +0 -0
  1329. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml/decoder.py +0 -0
  1330. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml/encoder.py +0 -0
  1331. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml/ordered.py +0 -0
  1332. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml/tz.py +0 -0
  1333. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/LICENSE +0 -0
  1334. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/METADATA +0 -0
  1335. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/WHEEL +0 -0
  1336. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/toml/toml-0.10.2.dist-info/top_level.txt +0 -0
  1337. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/__init__.py +0 -0
  1338. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/constraints.txt +0 -0
  1339. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli/__init__.py +0 -0
  1340. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli/_parser.py +0 -0
  1341. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli/_re.py +0 -0
  1342. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli/_types.py +0 -0
  1343. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli/py.typed +0 -0
  1344. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli-2.0.1.dist-info/LICENSE +0 -0
  1345. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli-2.0.1.dist-info/METADATA +0 -0
  1346. {pex-2.46.3 → pex-2.72.0}/pex/vendor/_vendored/tomli/tomli-2.0.1.dist-info/WHEEL +0 -0
  1347. {pex-2.46.3 → pex-2.72.0}/pex/venv/README.md +0 -0
  1348. {pex-2.46.3 → pex-2.72.0}/pex/venv/__init__.py +0 -0
  1349. {pex-2.46.3 → pex-2.72.0}/pex/venv/bin_path.py +0 -0
  1350. {pex-2.46.3 → pex-2.72.0}/pex/venv/install_scope.py +0 -0
  1351. {pex-2.46.3 → pex-2.72.0}/pex/venv/installer_configuration.py +0 -0
  1352. {pex-2.46.3 → pex-2.72.0}/pex/venv/installer_options.py +0 -0
  1353. {pex-2.46.3 → pex-2.72.0}/pex/venv/virtualenv.py +0 -0
  1354. {pex-2.46.3 → pex-2.72.0}/pex/venv/virtualenv_16.7.12_py +0 -0
  1355. {pex-2.46.3 → pex-2.72.0}/pex/ziputils.py +0 -0
  1356. {pex-2.46.3 → pex-2.72.0}/scripts/build-docs.py +0 -0
  1357. {pex-2.46.3 → pex-2.72.0}/scripts/dev-cmd-pip-install-pex-next.py +0 -0
  1358. {pex-2.46.3 → pex-2.72.0}/scripts/embed-virtualenv.py +0 -0
  1359. {pex-2.46.3 → pex-2.72.0}/scripts/format.py +0 -0
  1360. {pex-2.46.3 → pex-2.72.0}/scripts/py27/lint_enum.py +0 -0
  1361. {pex-2.46.3 → pex-2.72.0}/scripts/requires-python-check.py +0 -0
  1362. {pex-2.46.3 → pex-2.72.0}/setup.py +0 -0
  1363. {pex-2.46.3 → pex-2.72.0}/testing/build_system.py +0 -0
  1364. {pex-2.46.3 → pex-2.72.0}/testing/cli.py +0 -0
  1365. {pex-2.46.3 → pex-2.72.0}/testing/data/__init__.py +0 -0
  1366. {pex-2.46.3 → pex-2.72.0}/testing/data/locks/__init__.py +0 -0
  1367. {pex-2.46.3 → pex-2.72.0}/testing/data/locks/devpi-server.lock.json +0 -0
  1368. {pex-2.46.3 → pex-2.72.0}/testing/data/locks/issue-2415.lock.json +0 -0
  1369. {pex-2.46.3 → pex-2.72.0}/testing/data/locks/issue-2683.lock.json +0 -0
  1370. {pex-2.46.3 → pex-2.72.0}/testing/data/locks/requests.lock.json +0 -0
  1371. {pex-2.46.3 → pex-2.72.0}/testing/data/pip_logs/issue-2414.pip-23.2.log +0 -0
  1372. {pex-2.46.3 → pex-2.72.0}/testing/data/pip_logs/issue-2414.pip-23.3.1.log +0 -0
  1373. {pex-2.46.3 → pex-2.72.0}/testing/data/platforms/__init__.py +0 -0
  1374. {pex-2.46.3 → pex-2.72.0}/testing/data/platforms/complete_platform_linux_armv7l_py312.json +0 -0
  1375. {pex-2.46.3 → pex-2.72.0}/testing/data/platforms/complete_platform_linux_x86-64_py311.json +0 -0
  1376. {pex-2.46.3 → pex-2.72.0}/testing/data/platforms/macosx_10_13_x86_64-cp-36-m.tags.txt +0 -0
  1377. {pex-2.46.3 → pex-2.72.0}/testing/devpi.py +0 -0
  1378. {pex-2.46.3 → pex-2.72.0}/testing/dist_metadata.py +0 -0
  1379. {pex-2.46.3 → pex-2.72.0}/testing/docker.py +0 -0
  1380. {pex-2.46.3 → pex-2.72.0}/testing/find_links.py +0 -0
  1381. {pex-2.46.3 → pex-2.72.0}/testing/pep_427.py +0 -0
  1382. {pex-2.46.3 → pex-2.72.0}/testing/pip.py +0 -0
  1383. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/__init__.py +0 -0
  1384. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/shard.py +0 -0
  1385. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/tmp.py +0 -0
  1386. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/track_status_hook.py +0 -0
  1387. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/track_status_hook_py2.py +0 -0
  1388. {pex-2.46.3 → pex-2.72.0}/testing/pytest_utils/track_status_hook_py3.py +0 -0
  1389. {pex-2.46.3 → pex-2.72.0}/testing/resolve.py +0 -0
  1390. {pex-2.46.3 → pex-2.72.0}/testing/subprocess.py +0 -0
  1391. {pex-2.46.3 → pex-2.72.0}/tests/build_system/test_issue_2125.py +0 -0
  1392. {pex-2.46.3 → pex-2.72.0}/tests/build_system/test_pep_517.py +0 -0
  1393. {pex-2.46.3 → pex-2.72.0}/tests/build_system/test_pep_518.py +0 -0
  1394. {pex-2.46.3 → pex-2.72.0}/tests/commands/test_command.py +0 -0
  1395. {pex-2.46.3 → pex-2.72.0}/tests/example_packages/MarkupSafe-1.0-cp27-cp27mu-linux_x86_64.whl +0 -0
  1396. {pex-2.46.3 → pex-2.72.0}/tests/example_packages/PyAthena-1.11.5-py2.py3-none-any.whl +0 -0
  1397. {pex-2.46.3 → pex-2.72.0}/tests/example_packages/PyAthena-1.9.0-py2.py3-none-any.whl +0 -0
  1398. {pex-2.46.3 → pex-2.72.0}/tests/example_packages/aws_cfn_bootstrap-1.4-py2-none-any.whl +0 -0
  1399. {pex-2.46.3 → pex-2.72.0}/tests/example_packages/pyparsing-2.1.10-py2.py3-none-any.whl +0 -0
  1400. {pex-2.46.3 → pex-2.72.0}/tests/integration/__init__.py +0 -0
  1401. {pex-2.46.3 → pex-2.72.0}/tests/integration/build_system/__init__.py +0 -0
  1402. {pex-2.46.3 → pex-2.72.0}/tests/integration/build_system/test_issue_2063.py +0 -0
  1403. {pex-2.46.3 → pex-2.72.0}/tests/integration/build_system/test_issue_2125.py +0 -0
  1404. {pex-2.46.3 → pex-2.72.0}/tests/integration/build_system/test_pep_517.py +0 -0
  1405. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_cache_prune.py +0 -0
  1406. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_discussion_2752.py +0 -0
  1407. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_export_subset.lock.json +0 -0
  1408. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_1413.py +0 -0
  1409. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_1665.py +0 -0
  1410. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_1741.py +0 -0
  1411. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2057.py +0 -0
  1412. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2059.py +0 -0
  1413. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2211.py +0 -0
  1414. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2268.py +0 -0
  1415. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2313.py +0 -0
  1416. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_issue_2519.py +0 -0
  1417. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_local_project_lock.py +0 -0
  1418. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_dependency_groups.py +0 -0
  1419. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_elide_unused_requires_dist.py +0 -0
  1420. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_foreign_platform_sdist.py +0 -0
  1421. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_reproducibility_hash_seed.py +0 -0
  1422. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_script_metadata.py +0 -0
  1423. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_subset.py +0 -0
  1424. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_update.py +0 -0
  1425. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_lock_update_issues_2332_2334.py +0 -0
  1426. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_vcs_lock.py +0 -0
  1427. {pex-2.46.3 → pex-2.72.0}/tests/integration/cli/commands/test_venv_inspect.py +0 -0
  1428. {pex-2.46.3 → pex-2.72.0}/tests/integration/conftest.py +0 -0
  1429. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/__init__.py +0 -0
  1430. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/pep_691/__init__.py +0 -0
  1431. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/pep_691/test_api.py +0 -0
  1432. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_dependency_groups.py +0 -0
  1433. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_issue_1907.py +0 -0
  1434. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_issue_2412.py +0 -0
  1435. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_issue_2532.py +0 -0
  1436. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_issue_2568.py +0 -0
  1437. {pex-2.46.3 → pex-2.72.0}/tests/integration/resolve/test_issue_2772.py +0 -0
  1438. {pex-2.46.3 → pex-2.72.0}/tests/integration/scie/__init__.py +0 -0
  1439. {pex-2.46.3 → pex-2.72.0}/tests/integration/scie/test_discussion_2516.py +0 -0
  1440. {pex-2.46.3 → pex-2.72.0}/tests/integration/scie/test_issue_2740.py +0 -0
  1441. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_excludes.py +0 -0
  1442. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_executuon_mode_venv.py +0 -0
  1443. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_inject_python_args.py +0 -0
  1444. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_interpreter.py +0 -0
  1445. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1018.py +0 -0
  1446. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1025.py +0 -0
  1447. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1031.py +0 -0
  1448. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1179.py +0 -0
  1449. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1201.py +0 -0
  1450. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1202.py +0 -0
  1451. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1218.py +0 -0
  1452. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1225.py +0 -0
  1453. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1302.py +0 -0
  1454. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1316.py +0 -0
  1455. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1336.py +0 -0
  1456. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1447.py +0 -0
  1457. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1479.py +0 -0
  1458. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1520.py +0 -0
  1459. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1537.py +0 -0
  1460. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1540.py +0 -0
  1461. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1550.py +0 -0
  1462. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_157.py +0 -0
  1463. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1597.py +0 -0
  1464. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1598.py +0 -0
  1465. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1683.py +0 -0
  1466. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1726.py +0 -0
  1467. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1730.py +0 -0
  1468. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1802.py +0 -0
  1469. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1809.py +0 -0
  1470. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1825.py +0 -0
  1471. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1861.py +0 -0
  1472. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1870.py +0 -0
  1473. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1872.py +0 -0
  1474. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1879.py +0 -0
  1475. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1936.py +0 -0
  1476. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1949.py +0 -0
  1477. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_1995.py +0 -0
  1478. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2001.py +0 -0
  1479. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2017.py +0 -0
  1480. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2023.py +0 -0
  1481. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2038.py +0 -0
  1482. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2073.py +0 -0
  1483. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2087.py +0 -0
  1484. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2088.py +0 -0
  1485. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2113.py +0 -0
  1486. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2134.py +0 -0
  1487. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2183.py +0 -0
  1488. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2186.py +0 -0
  1489. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2203.py +0 -0
  1490. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2235.py +0 -0
  1491. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2249.py +0 -0
  1492. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2395.py +0 -0
  1493. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2410.py +0 -0
  1494. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2412.py +0 -0
  1495. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2413.py +0 -0
  1496. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2415.py +0 -0
  1497. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2432.py +0 -0
  1498. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2572.py +0 -0
  1499. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2706.py +0 -0
  1500. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2739.py +0 -0
  1501. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2819.py +0 -0
  1502. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_2822.py +0 -0
  1503. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_298.py +0 -0
  1504. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_434.py +0 -0
  1505. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_455.py +0 -0
  1506. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_539.py +0 -0
  1507. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_598.py +0 -0
  1508. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_729.py +0 -0
  1509. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_736.py +0 -0
  1510. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_745.py +0 -0
  1511. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_749.py +0 -0
  1512. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_898.py +0 -0
  1513. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_899.py +0 -0
  1514. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_940.py +0 -0
  1515. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_issue_996.py +0 -0
  1516. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_layout.py +0 -0
  1517. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_no_pre_install_wheels.py +0 -0
  1518. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_overrides.py +0 -0
  1519. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_pep_427.py +0 -0
  1520. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_pex_entry_points.py +0 -0
  1521. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_pex_import.py +0 -0
  1522. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_reexec.py +0 -0
  1523. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_script_metadata.py +0 -0
  1524. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_shebang_length_limit.py +0 -0
  1525. {pex-2.46.3 → pex-2.72.0}/tests/integration/test_variables.py +0 -0
  1526. {pex-2.46.3 → pex-2.72.0}/tests/integration/tools/commands/test_venv.py +0 -0
  1527. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/__init__.py +0 -0
  1528. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/conftest.py +0 -0
  1529. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_1637.py +0 -0
  1530. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_1641.py +0 -0
  1531. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_1745.py +0 -0
  1532. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_1973.py +0 -0
  1533. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_2065.py +0 -0
  1534. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_2160.py +0 -0
  1535. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_issue_2248.py +0 -0
  1536. {pex-2.46.3 → pex-2.72.0}/tests/integration/venv_ITs/test_virtualenv.py +0 -0
  1537. {pex-2.46.3 → pex-2.72.0}/tests/pip/test_log_analyzer.py +0 -0
  1538. {pex-2.46.3 → pex-2.72.0}/tests/pip/test_tailer.py +0 -0
  1539. {pex-2.46.3 → pex-2.72.0}/tests/pip/test_version.py +0 -0
  1540. {pex-2.46.3 → pex-2.72.0}/tests/resolve/__init__.py +0 -0
  1541. {pex-2.46.3 → pex-2.72.0}/tests/resolve/conftest.py +0 -0
  1542. {pex-2.46.3 → pex-2.72.0}/tests/resolve/lockfile/__init__.py +0 -0
  1543. {pex-2.46.3 → pex-2.72.0}/tests/resolve/lockfile/test_download_manager.py +0 -0
  1544. {pex-2.46.3 → pex-2.72.0}/tests/resolve/lockfile/test_requires_dist.py +0 -0
  1545. {pex-2.46.3 → pex-2.72.0}/tests/resolve/pep_691/__init__.py +0 -0
  1546. {pex-2.46.3 → pex-2.72.0}/tests/resolve/pep_691/test_api.py +0 -0
  1547. {pex-2.46.3 → pex-2.72.0}/tests/resolve/pep_691/test_fingerprint_service.py +0 -0
  1548. {pex-2.46.3 → pex-2.72.0}/tests/resolve/pep_691/test_model.py +0 -0
  1549. {pex-2.46.3 → pex-2.72.0}/tests/resolve/test_dependency_groups.py +0 -0
  1550. {pex-2.46.3 → pex-2.72.0}/tests/resolve/test_locker.py +0 -0
  1551. {pex-2.46.3 → pex-2.72.0}/tests/resolve/test_path_mappings.py +0 -0
  1552. {pex-2.46.3 → pex-2.72.0}/tests/resolve/test_resolved_requirement.py +0 -0
  1553. {pex-2.46.3 → pex-2.72.0}/tests/resolve/test_script_metadata.py +0 -0
  1554. {pex-2.46.3 → pex-2.72.0}/tests/test_artifact_url.py +0 -0
  1555. {pex-2.46.3 → pex-2.72.0}/tests/test_atexit.py +0 -0
  1556. {pex-2.46.3 → pex-2.72.0}/tests/test_atomic_directory.py +0 -0
  1557. {pex-2.46.3 → pex-2.72.0}/tests/test_bdist_pex.py +0 -0
  1558. {pex-2.46.3 → pex-2.72.0}/tests/test_common.py +0 -0
  1559. {pex-2.46.3 → pex-2.72.0}/tests/test_compatibility.py +0 -0
  1560. {pex-2.46.3 → pex-2.72.0}/tests/test_compiler.py +0 -0
  1561. {pex-2.46.3 → pex-2.72.0}/tests/test_dependency_manager.py +0 -0
  1562. {pex-2.46.3 → pex-2.72.0}/tests/test_executables.py +0 -0
  1563. {pex-2.46.3 → pex-2.72.0}/tests/test_execution_mode.py +0 -0
  1564. {pex-2.46.3 → pex-2.72.0}/tests/test_executor.py +0 -0
  1565. {pex-2.46.3 → pex-2.72.0}/tests/test_fetcher.py +0 -0
  1566. {pex-2.46.3 → pex-2.72.0}/tests/test_inherits_path_option.py +0 -0
  1567. {pex-2.46.3 → pex-2.72.0}/tests/test_jobs.py +0 -0
  1568. {pex-2.46.3 → pex-2.72.0}/tests/test_os.py +0 -0
  1569. {pex-2.46.3 → pex-2.72.0}/tests/test_packaging.py +0 -0
  1570. {pex-2.46.3 → pex-2.72.0}/tests/test_pep_425.py +0 -0
  1571. {pex-2.46.3 → pex-2.72.0}/tests/test_pep_723.py +0 -0
  1572. {pex-2.46.3 → pex-2.72.0}/tests/test_pex.py +0 -0
  1573. {pex-2.46.3 → pex-2.72.0}/tests/test_pex_binary.py +0 -0
  1574. {pex-2.46.3 → pex-2.72.0}/tests/test_pex_builder.py +0 -0
  1575. {pex-2.46.3 → pex-2.72.0}/tests/test_pex_info.py +0 -0
  1576. {pex-2.46.3 → pex-2.72.0}/tests/test_pex_root.py +0 -0
  1577. {pex-2.46.3 → pex-2.72.0}/tests/test_pex_warnings.py +0 -0
  1578. {pex-2.46.3 → pex-2.72.0}/tests/test_platform.py +0 -0
  1579. {pex-2.46.3 → pex-2.72.0}/tests/test_pth.py +0 -0
  1580. {pex-2.46.3 → pex-2.72.0}/tests/test_pyvenv_cfg.py +0 -0
  1581. {pex-2.46.3 → pex-2.72.0}/tests/test_sorted_tuple.py +0 -0
  1582. {pex-2.46.3 → pex-2.72.0}/tests/test_specifier_sets.py +0 -0
  1583. {pex-2.46.3 → pex-2.72.0}/tests/test_third_party.py +0 -0
  1584. {pex-2.46.3 → pex-2.72.0}/tests/test_util.py +0 -0
  1585. {pex-2.46.3 → pex-2.72.0}/tests/test_variables.py +0 -0
  1586. {pex-2.46.3 → pex-2.72.0}/tests/test_vendor.py +0 -0
  1587. {pex-2.46.3 → pex-2.72.0}/tests/test_windows.py +0 -0
  1588. {pex-2.46.3 → pex-2.72.0}/tests/test_zip_utils.py +0 -0
  1589. {pex-2.46.3 → pex-2.72.0}/tests/tools/__init__.py +0 -0
  1590. {pex-2.46.3 → pex-2.72.0}/tests/tools/commands/__init__.py +0 -0
pex-2.72.0/CHANGES.md ADDED
@@ -0,0 +1,4536 @@
1
+ # Release Notes
2
+
3
+ ## 2.72.0
4
+
5
+ This release adds support for building foreign platform musl Linux PEX scies and dogfoods this to
6
+ add musl Linux aarch64 & x86_64 Pex PEX scies to the Pex release.
7
+
8
+ * Support targeting foreign platform musl scies. (#3025)
9
+
10
+ ## 2.71.1
11
+
12
+ This release fixes Pex to allow blanket disallowing builds but making targeted exceptions and
13
+ vice-versa. The underlying Pip machinery has always supported this, but Pex just got in the way for
14
+ no reason.
15
+
16
+ * Allow exceptions for `--no-wheel` & `--no-build`. (#3023)
17
+
18
+ ## 2.71.0
19
+
20
+ This release upgrades the floor of `science` to 0.16.0 to pick up support for generating PEX scies
21
+ for musl Linux aarch64.
22
+
23
+ * Upgrade `science` to 0.16.0. (#3020)
24
+
25
+ ## 2.70.0
26
+
27
+ This release adds a feature for Pex developers. If you want to experiment with a new version of Pip
28
+ you can now specify `_PEX_PIP_VERSION=adhoc _PEX_PIP_ADHOC_REQUIREMENT=...`. N.B.: This feature is
29
+ for Pex development only.
30
+
31
+ * Support adhoc Pip versions in development. (#3011)
32
+
33
+ ## 2.69.2
34
+
35
+ This release fixes handling of scoped repos. Previously, validation against duplicate scopes was too
36
+ aggressive and disallowed multiple un-named indexes and find-links repositories.
37
+
38
+ * Allow multiple un-named indexes and find-links repos. (#3009)
39
+
40
+ ## 2.69.1
41
+
42
+ This release fixes `--venv-repository` handling of top-level requirements that specify pre-releases.
43
+ Such resolves now imply `--pre`.
44
+
45
+ * Root reqs that specify prereleases imply `--pre`. (#3004)
46
+
47
+ ## 2.69.0
48
+
49
+ This release adds a `pexec` console script as an alias for `pex3 run`.
50
+
51
+ * Add `pexec` script as a `pex3 run` alias. (#3001)
52
+
53
+ ## 2.68.3
54
+
55
+ This release fixes Pex to handle installing a wider variety of whls violating various PyPA specs.
56
+
57
+ * Handle two cases of bad whl metadata. (#2999)
58
+
59
+ ## 2.68.2
60
+
61
+ This release bumps the floor of `science` to 0.15.1 to ensure least surprise with no bad
62
+ `--scie-hash-alg` choices presented by the underlying science tool used to build Pex `--scie`s.
63
+
64
+ * Upgrade `science` to 0.15.1. (#2995)
65
+
66
+ ## 2.68.1
67
+
68
+ This release fixes a regression extracting sdists on some Pythons older than 3.12.
69
+
70
+ * Fix sdist tar extraction filtering for old Pythons. (#2992)
71
+
72
+ ## 2.68.0
73
+
74
+ This release adds support for `--project` pointing to local project sdist or wheel paths in addition
75
+ to the already supported local project directory path. The wheel case can be particularly useful
76
+ when building a project wheel out of band is very much faster than letting Pex obtain the project
77
+ metadata via a PEP-517 `prepare_metadata_for_build_wheel` call or via a wheel build via Pip, which
78
+ is what Pex falls back to.
79
+
80
+ * Support `--project` pointing at sdists and whls. (#2989)
81
+
82
+ ## 2.67.3
83
+
84
+ This release brings Pex into compliance with sdist archive features as specified in
85
+ https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-archive-features.
86
+
87
+ * Implement tar extraction data filtering. (#2987)
88
+
89
+ ## 2.67.2
90
+
91
+ This release fixes a bug resolving editable projects from `--venv-repository`s.
92
+
93
+ * Fix resolve of editables from `--venv-repository`s. (#2984)
94
+
95
+ ## 2.67.1
96
+
97
+ This release fixes a bug subsetting `--venv-repository` resolves when top-level requirements
98
+ had version specifiers; e.g.: `thing>2`.
99
+
100
+ * Fix `--venv-repository` subsetting. (#2981)
101
+
102
+ ## 2.67.0
103
+
104
+ This release adds support for specifying multiple `--venv-repository`s when building a PEX. This
105
+ allows creating multi-platform PEXes from multiple venvs that all satisfy a resolve, but for
106
+ different interpreters.
107
+
108
+ * Multi-platform PEXes via multiple `--venv-repository`s. (#2977)
109
+
110
+ ## 2.66.1
111
+
112
+ This release improves upon the local project directory hashing fix in [2.61.1](#2611) by
113
+ avoiding the hashing altogether unless creating a lock, where the resulting fingerprint is
114
+ needed.
115
+
116
+ * Avoid fingerprinting local projects. (#2975)
117
+
118
+ ## 2.66.0
119
+
120
+ This release adds support for `--pip-version 25.3`.
121
+
122
+ * Add support for `--pip-version 25.3`. (#2968)
123
+
124
+ ## 2.65.0
125
+
126
+ This release adds support for PEX scies using CPython free-threaded builds. Most such scies should
127
+ be able to auto-detect when a free-threaded CPython is needed, but new `--scie-pbs-free-threaded`
128
+ and `--scie-pbs-debug` options have been added to explicitly request the desired PBS CPython build
129
+ as well.
130
+
131
+ * Support free-threaded PEX scies. (#2967)
132
+
133
+ ## 2.64.1
134
+
135
+ This release is a follow-up to 2.64.0 to fix a regression in locks for credentialed VCS
136
+ requirements.
137
+
138
+ * Fix redaction of VCS URL credentials in locks. (#2964)
139
+
140
+ ## 2.64.0
141
+
142
+ This release adds support for `--avoid-downloads` / `--no-avoid-downloads` to `pex3 lock create`. By
143
+ default, when available, Pex now locks in `--avoid-downloads` mode using
144
+ `pip install --dry-run --ignore-installed --report` to power lock generation instead of
145
+ `pip download`. This saves time generating the lock at the expense of having to spend time
146
+ downloading distributions later when using the lock to create a PEX or venv. This new lock mode
147
+ produces byte-wise identical locks and is available for all Pip versions Pex supports save for
148
+ vendored Pip (`--pip-version {vendored,20.3.4-patched}`).
149
+
150
+ * Use Pip `--report` to avoid `pex3 lock create` downloads. (#2962)
151
+
152
+ ## 2.63.0
153
+
154
+ This release adds population of a `pex` script to venvs created with `pex3 venv create`. This allows
155
+ for executing Python in the activated venv via `/path/to/venv/pex ...` instead of
156
+ `source /path/to/venv/bin/activate && python ...`.
157
+
158
+ * Include `pex` script in `pex3 venv create`. (#2960)
159
+
160
+ ## 2.62.1
161
+
162
+ This release improves performance when creating venvs by eliminating an un-necessary re-hash of
163
+ wheel files already installed in the Pex cache.
164
+
165
+ * Avoid re-hashing wheels when re-installing. (#2958)
166
+
167
+ ## 2.62.0
168
+
169
+ This release brings full support for universal lock splitting. You can now declare conflicting
170
+ top-level requirements for different (marker) environments and these will be isolated in separate
171
+ lock resolves in the same universal lock file. These split resolves are performed in parallel and
172
+ the appropriate split lock is later selected automatically when building a PEX or a venv from the
173
+ lock.
174
+
175
+ As part of this work, locks also filter wheels more faithfully. If you supply interpreter
176
+ constraints that constrain to CPython, the resulting lock will now only contain `cp`
177
+ platform-specific wheels (and, for example, not PyPy wheels).
178
+
179
+ * Complete support for universal lock splitting. (#2940)
180
+
181
+ ## 2.61.1
182
+
183
+ This release fixes a long-standing bug hashing local project directories when building PEXes. Pex
184
+ now hashes the content of an exploded sdist for the local project just like it does when hashing
185
+ local projects for a lock.
186
+
187
+ * Fix local project directory hashing. (#2954)
188
+
189
+ ## 2.61.0
190
+
191
+ This release adds support for the Python 3.15 series early. Pex runs on 3.15.0a1, can produce scies
192
+ for 3.15.0a1, etc.
193
+
194
+ * Officially begin supporting Python 3.15. (#2952)
195
+
196
+ ## 2.60.2
197
+
198
+ This release fixes a regression in the Pex 2.60.0 release when installing wheels with
199
+ `*.data/{purelib,platlib}` entries.
200
+
201
+ * Fix handling of whl `*.data/` dirs. (#2946)
202
+
203
+ ## 2.60.1
204
+
205
+ This release fixes a backwards compatiility break in 2.60.0 where modern `pex-tools` would fail to
206
+ work on PEXes built with Pex prior to 2.60.
207
+
208
+ * Fix installed wheel re-installation for old PEXes. (#2943)
209
+
210
+ ## 2.60.0
211
+
212
+ This release adds support for `--no-pre-install-wheels` to both the `--pex-repository` and
213
+ `--venv-repository` resolvers, meaning all forms of Pex resolution (including Pip, `--lock`,
214
+ `--pylock` and `--pre-resolved-dists`) now support this option.
215
+
216
+ In addition, adding this support improved the fidelity of `pex-tools repository extract` such that
217
+ extracted wheels are bytewise identical to the original wheel the PEX was built with. This fidelity
218
+ also extends to wheels extracted from `--pex-repository` PEXes and wheels extracted from venvs
219
+ created from PEXes.
220
+
221
+ * Implement `.whl` packing from chroots and venvs. (#2925)
222
+
223
+ ## 2.59.5
224
+
225
+ This release optimizes `--venv-repository` installed wheel caching to only store one copy per
226
+ unique wheel even when that wheel is resolved from multiple `--venv-repository`s.
227
+
228
+ This release also updates vendored Pip's vendored certifi's cacert.pem to that from certifi
229
+ 2025.10.5.
230
+
231
+ * Do not hash installed scripts from `--venv-repository`. (#2935)
232
+ * Update vendored Pip's CA cert bundle. (#2934)
233
+
234
+ ## 2.59.4
235
+
236
+ This release fixes a bug in `--venv-repository` resolution that would lead to resolution failure
237
+ when the same wheel (that has console script entry points) is installed in multiple venvs and those
238
+ venvs are used as `--venv-repository` resolve sources.
239
+
240
+ * Fix `--venv-repository` wheel cache copy-pasta bug. (#2932)
241
+
242
+ ## 2.59.3
243
+
244
+ This release fixes `--venv-repository` to work with venvs that have installed wheels with
245
+ non-conformant `WHEEL` metadata. Notably, from wheels built with maturin that have a compressed tag
246
+ set; e.g.: `hf-xet-1.1.10-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl`.
247
+
248
+ * Stabilize non-conformant WHEEL Tag metadata. (#2927)
249
+
250
+ ## 2.59.2
251
+
252
+ This release fixes two bugs handling split universal resolves. Previously, when a universal resolve
253
+ was split by markers other than `python_version` and `python_full_version` and no interpreter
254
+ constraints were specified, locking would fail. Additionally, when a split lock had differing
255
+ transitive dependencies in splits, lock sub-setting would fail. Both issues are now corrected.
256
+
257
+ * Fix split universal lock corner cases. (#2922)
258
+
259
+ ## 2.59.1
260
+
261
+ This release fixes a regression in VCS URL handling introduced by Pex 2.38.0 when VCS URLs included
262
+ user info in the authority.
263
+
264
+ * Fix `pex3 lock create/export` for VCS URLs with userinfo (#2918)
265
+
266
+ ## 2.59.0
267
+
268
+ This release adds support for a `--venv-repository` resolution source. This allows creating a PEX
269
+ from a pre-existing venv. By default, all installed venv distributions are included in the PEX, but
270
+ by specifying requirements, the venv can be subset. The `--venv-repository` source is also supported
271
+ by `pex3 venv create` allowing subsetting an existing venv directly into a new venv as well.
272
+
273
+ * Add support for `--venv-repository` resolver. (#2916)
274
+
275
+ ## 2.58.1
276
+
277
+ This release fixes a bug building source distributions from locks of local project directories when
278
+ the local project uses the `uv_build` backend.
279
+
280
+ * Fix sdist build of local projects using `uv_build`. (#2914)
281
+
282
+ ## 2.58.0
283
+
284
+ This release adds `--derive-sources-from-requirements-files` to allow for scoping requirement
285
+ sources via the structure of requirements files. If any requirements files are specified that
286
+ contain `-f` / `--find-links`, `-i` / `--index-url`, or `--extra-index-url` options,
287
+ `--derive-sources-from-requirements-files` will automatically map these repos as the `--source` for
288
+ the requirements (if any) declared in the same requirements file.
289
+
290
+ * Introduce `--derive-sources-from-requirements-files`. (#2909)
291
+
292
+ ## 2.57.0
293
+
294
+ This release adds support for project name regexes to `--source` scopes for repos. For example, the
295
+ PyTorch example given in the 2.56.0 release notes can now be shortened to:
296
+ ```console
297
+ pex3 lock create \
298
+ --style universal \
299
+ --target-system linux \
300
+ --target-system mac \
301
+ --elide-unused-requires-dist \
302
+ --interpreter-constraint "CPython==3.13.*" \
303
+ --index pytorch=https://download.pytorch.org/whl/cu129 \
304
+ --source "pytorch=^torch(vision)?$; sys_platform != 'darwin'" \
305
+ --source "pytorch=^nvidia-.*; sys_platform != 'darwin'" \
306
+ --indent 2 \
307
+ -o lock.json \
308
+ torch \
309
+ torchvision
310
+ ```
311
+
312
+ * Support regexes for `--source` project matching. (#2906)
313
+
314
+ ## 2.56.0
315
+
316
+ This release adds support for scoping `--index` and `--find-links` repos to only be used to resolve
317
+ certain projects, environments or a combination of the two. For example, to use the piwheels index
318
+ but restrict its use to resolves targeting armv7l machines, you can now say:
319
+ `--index piwheels=https://www.piwheels.org/simple --source piwheels=platform_machine == 'armv7l'`.
320
+ See the `--help` output for `--index` and `--find-links` for more syntax details.
321
+
322
+ Additionally, `--style universal` locks have been made aware of top-level inputs that can split the
323
+ lock resolve and such resolves are pre-split and performed in parallel to allow locking for multiple
324
+ non-overlapping universes at once. Splits can be caused by some scoped repos setups as well locks
325
+ with multiple differing top-level requirements for the same project. For example, the following will
326
+ create a universal lock with two locked resolves, one locking cowsay 5.0 for Python 2 and one
327
+ locking cowsay 6.0 for Python 3:
328
+ ```console
329
+ pex3 lock create \
330
+ --style universal \
331
+ --indent 2 \
332
+ -o lock.json
333
+ "cowsay<6; python_version < '3'" \
334
+ "cowsay==6; python_version >= '3'"
335
+ ```
336
+
337
+ An important use case for this new set of features is creating a universal lock for PyTorch for
338
+ CUDA enabled Linux and Mac by adding the appropriate pytorch index appropriately scoped.
339
+ For example, this lock will contain two locked resolves, one for Mac sourced purely from PyPI and
340
+ one for CUDA 12.9 enabled Linux partially sourced from the PyTorch index for CUDA 12.9:
341
+ ```console
342
+ pex3 lock create \
343
+ --style universal \
344
+ --target-system linux \
345
+ --target-system mac \
346
+ --elide-unused-requires-dist \
347
+ --interpreter-constraint "CPython==3.13.*" \
348
+ --index pytorch=https://download.pytorch.org/whl/cu129 \
349
+ --source "pytorch=torch; sys_platform != 'darwin'" \
350
+ --source "pytorch=torchvision; sys_platform != 'darwin'" \
351
+ --source "pytorch=nvidia-cublas-cu12; sys_platform != 'darwin'" \
352
+ --source "pytorch=nvidia-cuda-cupti-cu12; sys_platform != 'darwin'" \
353
+ --source "pytorch=nvidia-cuda-nvrtc-cu12; sys_platform != 'darwin'" \
354
+ --source "pytorch=nvidia-cuda-runtime-cu12; sys_platform != 'darwin'" \
355
+ --source "pytorch=nvidia-cudnn-cu11; sys_platform != 'darwin'" \
356
+ --source "pytorch=nvidia-cudnn-cu12; sys_platform != 'darwin'" \
357
+ --source "pytorch=nvidia-cufft-cu12; sys_platform != 'darwin'" \
358
+ --source "pytorch=nvidia-cufile-cu12; sys_platform != 'darwin'" \
359
+ --source "pytorch=nvidia-curand-cu12; sys_platform != 'darwin'" \
360
+ --source "pytorch=nvidia-cusolver-cu12; sys_platform != 'darwin'" \
361
+ --source "pytorch=nvidia-cusparse-cu12; sys_platform != 'darwin'" \
362
+ --source "pytorch=nvidia-cusparselt-cu12; sys_platform != 'darwin'" \
363
+ --source "pytorch=nvidia-nccl-cu12; sys_platform != 'darwin'" \
364
+ --source "pytorch=nvidia-nvjitlink-cu12; sys_platform != 'darwin'" \
365
+ --source "pytorch=nvidia-nvtx-cu12; sys_platform != 'darwin'" \
366
+ --indent 2 \
367
+ -o lock.json \
368
+ torch \
369
+ torchvision
370
+ ```
371
+
372
+ * Support scopes for `--index` and `--find-links`. (#2903)
373
+
374
+ ## 2.55.2
375
+
376
+ This release improves Pex `--pylock` handling interoperability by accepting the minimum possible
377
+ dependency information likely to be provided; namely, the dependency `name`.
378
+
379
+ * More robust `pylock.toml` dependency handling. (#2901)
380
+
381
+ ## 2.55.1
382
+
383
+ This release fixes a bug present since the inception of `pex3 lock create --style universal`
384
+ support. Previously, if the universal lock was created with `--interpreter-constraint`s, the
385
+ Python implementation information was discarded; so, for example, even with
386
+ `--interpreter-constraint CPython==3.13.*`, the lock resolve would consider PyPy in-play.
387
+
388
+ * Respect `--interpreter-constraint` impl in locks. (#2898)
389
+
390
+ ## 2.55.0
391
+
392
+ This release adds support for `--override <project name>=<requirement>` wherever
393
+ `--override <requirement>` is currently accepted. This can be useful when you need to supply a
394
+ patch to an existing published project and would prefer to depend on wheels you pre-build instead
395
+ of using a VCS source dependency `--override`, which can be slow to build.
396
+
397
+ * Support dependency replacement with `--override`. (#2894)
398
+
399
+ ## 2.54.2
400
+
401
+ This release fixes `pex3 lock create` when multiple `--index` are configured and they provide the
402
+ same wheel file name, but with different contents. This is a reality in the PyTorch ecosystem, for
403
+ example, prior to any fixes the [WheelNext][WheelNext] project may bring.
404
+
405
+ * Fix `pex3 lock create` for dup wheels with different hashes. (#2890)
406
+
407
+ [WheelNext]: https://wheelnext.dev/
408
+
409
+ ## 2.54.1
410
+
411
+ This release fixes `--pylock` handling to tolerate locked packages with no artifacts and just warn
412
+ (if PEX warnings are enabled) that the package is being skipped for lack of artifacts.
413
+
414
+ * Handle `pylock.toml` packages with no artifacts. (#2888)
415
+
416
+ ## 2.54.0
417
+
418
+ This release adds a Pex PEX scie for riscv64.
419
+
420
+ * Add a Pex PEX scie for riscv64. (#2883)
421
+
422
+ ## 2.53.0
423
+
424
+ This release adds support to `pex3 run` for `--with-requirements` to complement `--with` for
425
+ specifying additional run requirements via a requirements file. In addition, `--constraints`
426
+ can now be specified to constrain versions with a constraints file.
427
+
428
+ * Support `-r` & `--constraints` in `pex3 run`. (#2879)
429
+
430
+ ## 2.52.1
431
+
432
+ This release fixes some cases of creating PEXes from a `--pylock` when no requirements are
433
+ specified.
434
+
435
+ * Fix `--pylock` with no reqs roots calculation. (#2878)
436
+
437
+ ## 2.52.0
438
+
439
+ This release adds `pex3 run --locked {auto,require}` support for both local and remote scripts. In
440
+ either case a sibling `pylock.<script name>.toml` and then a sibling `pylock.toml` are searched for
441
+ and, if found, are subsetted with PEP-723 script requirements or explicit `--with` or `--from`
442
+ requirements if present.
443
+
444
+ * Support sibling script locks in `pex3 run`. (#2870)
445
+
446
+ ## 2.51.1
447
+
448
+ This release fixes a bug in Pex's HTTP server used for serving `pex --docs` and `pex3 docs` when
449
+ running on Python 2.7.
450
+
451
+ Also, `pylock.toml` subsets are now fixed to fully honor subset requirement specifiers and markers.
452
+
453
+ * Fix HTTP Server for Python 2.7. (#2871)
454
+ * Fix pylock.toml subsetting. (#2872)
455
+
456
+ ## 2.51.0
457
+
458
+ This release augments `pex3 run` with the ability to run both local and remote scripts as well as
459
+ augmenting the run environment with additional requirements specified via `--with`.
460
+
461
+ * Support running both local & remote scripts. (#2861)
462
+
463
+ ## 2.50.4
464
+
465
+ This release fixes a bug introduced by #2828 that would assign PEX scies a `SCIE_BASE` of the
466
+ current user's `PEX_ROOT` at PEX scie build time. PEX scies now only get a custom `SCIE_BASE`
467
+ when `--scie-base` or `--runtime-pex-root` are specified when building the PEX scie.
468
+
469
+ * Fix PEX scie `--runtime-pex-root` handling. (#2866)
470
+
471
+ ## 2.50.3
472
+
473
+ This release fixes handling of cycles both when exporting Pex lock files to PEP-751 `pylock.toml`
474
+ format as well as when creating PEXes from `--pylock` locks with cycles. This should complete the
475
+ cycle-handling fix work started in #2835 by @pimdh.
476
+
477
+ * Fix `pylock.toml` cycle handling. (#2863)
478
+
479
+ ## 2.50.2
480
+
481
+ This release fixes creating `--scie {eager,lazy}` PEX scies when no specific `--scie-pbs-release` is
482
+ specified by upgrading to `science` 0.12.9.
483
+
484
+ Pex's vendored Pip's vendored certifi's cacert.pem is also updated to that from certifi 2025.8.3
485
+ (Good luck parsing that!).
486
+
487
+ * Update vendored Pip's CA cert bundle. (#2857)
488
+ * Fix CPython scies with no `--scie-pbs-release`. (#2859)
489
+
490
+ ## 2.50.1
491
+
492
+ This release fixes `pex3 run` handling of local project directory requirements. For example, you
493
+ can now `pex3 run . -V` in the Pex project directory successfully.
494
+
495
+ * Fix `pex3 run` for local projects. (#2854)
496
+
497
+ ## 2.50.0
498
+
499
+ This release introduces the `pex.build_backend.wrap` build backend useable for embedding console
500
+ script locks in your project distributions for use by tools like `pex3 run` (see: #2841). Pex
501
+ dogfoods this backend to embed its own console script lock for its extras.
502
+
503
+ * Introduce `pex.build_backend.wrap` build backend. (#2850)
504
+
505
+ ## 2.49.0
506
+
507
+ This release adds support for `--pip-version 25.2`
508
+
509
+ * Add support for `--pip-version 25.2`. (#2849)
510
+
511
+ ## 2.48.2
512
+
513
+ This release brings a fix for Pex entry-point parsing. Previously, entry-points specifying an extra
514
+ like `blackd = blackd:patched_main [d]` would be parsed as having the extra as part of the module or
515
+ object reference leading to errors when executing the entry point.
516
+
517
+ * Fix Pex entry-point parsing. (#2846)
518
+
519
+ ## 2.48.1
520
+
521
+ This release fixes the failure mode of `pex3 run --locked require`. Previously, subsequent runs
522
+ with `--locked auto` would not fall back to using no lock, but instead error with a malformed venv
523
+ from the failed run prior.
524
+
525
+ * Fix `pex3 run --locked require` failure mode. (#2843)
526
+
527
+ ## 2.48.0
528
+
529
+ This release adds support for `pex3 run` akin to `pipx run` and `uvx`. By default,
530
+ `pex3 run <tool>` will look for an embedded [PEP-751 `pylock.toml`][PEP-751] in the wheel or sdist
531
+ `<tool>` is resolved from and, if found, use that lock to create the tool venv from. More
532
+ information is available in the `pex3 run --help` output for the `--locked` option. See the thread
533
+ here for the embedded lock idea and ongoing discussion:
534
+ https://discuss.python.org/t/pre-pep-add-ability-to-install-a-package-with-reproducible-dependencies
535
+
536
+ * Add `pex3 run`. (#2841)
537
+
538
+ ## 2.47.0
539
+
540
+ Support for Python PI. Pex started testing against Python 3.14 on October 26th, 2024 and now
541
+ officially advertises support with the 3.14.0rc1 release candidate just published.
542
+
543
+ * Support Python PI. (#2838)
544
+
545
+ ## 2.46.3
546
+
547
+ This release brings a fix from @pimdh for `--pylock` handling that allows Pex to work with
548
+ `pylock.toml` locks containing dependency cycles.
549
+
550
+ * Handle cyclic dependencies in pylock.toml (#2835)
551
+
552
+ ## 2.46.2
553
+
554
+ This release updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2025.7.14 and
555
+ fixes the default scie base when `--runtime-pex-root` is used to be a `pex3 cache` managed
556
+ directory.
557
+
558
+ * Update vendored Pip's CA cert bundle. (#2831)
559
+ * Re-organize default `--runtime-pex-root` scie base. (#2830)
560
+
561
+ ## 2.46.1
562
+
563
+ This release follows up on 2.45.3 to ensure `--venv` PEXes also participate in temporary `PEX_ROOT`
564
+ cleanup. Previously these leaked the temporary `PEX_ROOT`.
565
+
566
+ * Fix `--venv` PEXes to clean fallback `PEX_ROOT`. (#2826)
567
+
568
+ ## 2.46.0
569
+
570
+ This release adds support for setting a custom `--scie-base` when building PEX scies. The default
571
+ scie base is the same as used by the scie-jump natively; e.g. `~/.cache/nce` on Linux. When
572
+ specifying a custom `--runtime-pex-root`, the scie base now will live under it in the `scie-base`
573
+ directory. To specify a custom scie base, `--scie-base` can be used, and it will trump all these
574
+ defaults.
575
+
576
+ * Add `--scie-base` to control the PEX scie cache dir. (#2828)
577
+
578
+ ## 2.45.3
579
+
580
+ This release fixes a bug introduced in 2.45.2 by #2820 that would cause a temporary `PEX_ROOT` (
581
+ these are created when the default `PEX_ROOT` directory is not writeable) to be cleaned up too
582
+ early, leading to PEX boot failures.
583
+
584
+ * Do not clean fallback `PEX_ROOT` prematurely. (#2823)
585
+
586
+ ## 2.45.2
587
+
588
+ This release fixes a long-standing temporary directory resource leak when running PEXes built with
589
+ `--no-pre-install-wheels`.
590
+
591
+ * Fix temp dir leak on boot of `--no-pre-install-wheels` PEX. (#2820)
592
+
593
+ ## 2.45.1
594
+
595
+ This release updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2025.7.9.
596
+
597
+ * Update vendored Pip's CA cert bundle. (#2816)
598
+
599
+ ## 2.45.0
600
+
601
+ This release adds support for `--scie-assets-base-url` if you've used `science download ...` to set
602
+ up a local repository for `ptex`, `scie-jump` and science interpreter providers.
603
+
604
+ This release also fixes PEX scie creation to use either of `--proxy` or `--cert` if set when
605
+ building scies. Previously, these options were only honored when downloading the `science` binary
606
+ itself but not when running it subsequently to build scies.
607
+
608
+ Finally, PEX scies built on Windows for Linux or Mac now should work more often. That said, Windows
609
+ is still not officially supported!
610
+
611
+ * Add `--scie-assets-base-url` & honor `--{proxy,cert}`. (#2811)
612
+
613
+ ## 2.44.0
614
+
615
+ This release expands PEX scie support on Windows to more cases by changing how the `PEX_ROOT` is
616
+ handled for PEX scies on all operating systems. Previously, the `PEX_ROOT` was constrained to be
617
+ in a special location inside the scie `nce` cache direcgtory structure. Now PEX scies install their
618
+ PEXes inside the normal system `PEX_ROOT` like other PEXes do. This leads to shorted PEX cache paths
619
+ that work on more Windows systems in particular.
620
+
621
+ All that said, Windows is still not officially supported!
622
+
623
+ * Let PEX scies install PEXes in the `PEX_ROOT`. (#2807)
624
+
625
+ ## 2.43.1
626
+
627
+ This release fixes PEP-723 script metadata parsing handling of the file encoding of the script.
628
+
629
+ * Fix PEP-723 script parsing file encoding handling. (#2806)
630
+
631
+ ## 2.43.0
632
+
633
+ This release adds support for `pex3 wheel [--lock|--pylock] [requirements args] ...`. This
634
+ allows resolving and building wheels that satisfy a resolve directly or through a lock. Foreign
635
+ targets via `--platform` and `--complete-platform` are supported as well as sub-setting when a lock
636
+ is used. This compliments `pex3 download` introduced in Pex 2.41.0.
637
+
638
+ * Add pex3 wheel for resolving & building wheels. (#2803)
639
+
640
+ ## 2.42.2
641
+
642
+ This release is a follow-up to 2.42.1 that again attempts a fix for missing `License-Expression`
643
+ METADATA in Pex distributions.
644
+
645
+ * Really fix `License-Expression` METADATA field. (#2800)
646
+
647
+ ## 2.42.1
648
+
649
+ This release just fixes missing `License-Expression` METADATA in Pex distributions.
650
+
651
+ * Fix missing `License-Expression` METADATA field. (#2798)
652
+
653
+ ## 2.42.0
654
+
655
+ This release expands `--platform` support to Windows. Windows is still not officially
656
+ supported though!
657
+
658
+ * Add `--platform` support for Windows. (#2794)
659
+
660
+ ## 2.41.1
661
+
662
+ This release fixes `pex3 download` to require a `-d` / `--dest-dir` be set.
663
+
664
+ * Require `--dest-dir` is set for `pex3 download`. (#2793)
665
+
666
+ ## 2.41.0
667
+
668
+ This release adds support for `pex3 download [--lock|--pylock] [requirements args] ...`. This
669
+ allows downloading distributions that satisfy a resolve directly or through a lock. Foreign targets
670
+ via `--platform` and `--complete-platform` are supported as well as sub-setting when a lock is
671
+ used.
672
+
673
+ * Add `pex3 download`. (#2791)
674
+
675
+ ## 2.40.3
676
+
677
+ This release updates vendored Pip's vendored certifi's cacert.pem to that from certifi 2025.6.15.
678
+
679
+ * Update vendored Pip's CA cert bundle. (#2787)
680
+
681
+ ## 2.40.2
682
+
683
+ This relase fixes Pex to work in more scenarios on Windows. Windows is still not officially
684
+ supported though!
685
+
686
+ * Fix some Windows cross-drive issues. (#2781)
687
+
688
+ ## 2.40.1
689
+
690
+ This release fixes `pex --pylock` for locked sdist and wheel artifacts whose locked URL path
691
+ basename does not match the optional sdist or wheel `name` field when present. Notably, this fixes
692
+ interop with `uv` which appears to use the `name` field to store the normalized name of the wheel
693
+ when the wheel name is not normalized already in the index URL basename.
694
+
695
+ * Fix `--pylock` handling of sdist and wheel `name`. (#2775)
696
+
697
+ ## 2.40.0
698
+
699
+ This release fills out `--pylock` support with `--pylock-extra` and `--pylock-group` to have Pex
700
+ resolve extras and dependency groups defined for a PEP-751 lock. This support only works when Pex
701
+ is run under Python 3.8 or newer.
702
+
703
+ * Support PEP-751 extras and dependency groups. (#2770)
704
+
705
+ ## 2.39.0
706
+
707
+ This release adds support for `pex --pylock` and `pex3 venv create --pylock` for building PEXes and
708
+ venvs from [pylock.toml][PEP-751] locks. In both cases PEX supports subsetting the lock if it
709
+ provides `dependencies` metadata for its locked packages, but this metadata is optional in the spec;
710
+ so your mileage may vary. If the metadata is not available and was required, Pex will let you know
711
+ with an appropriate error post-resolve and pre-building the final PEX or venv.
712
+
713
+ * Add support for `pex --pylock`. (#2766)
714
+
715
+ ## 2.38.1
716
+
717
+ This release fixes a long-standing bug parsing requirements files that included other requirements
718
+ files.
719
+
720
+ * Fix requirement file includes relative path handling. (#2764)
721
+
722
+ ## 2.38.0
723
+
724
+ This release adds support for `pex3 lock export --format pep-751` to export Pex locks in the new
725
+ [pylock.toml][PEP-751] format. `pex3 lock export-subset` also supports `pylock.toml` and both
726
+ forms of export respect universal locks, leveraging the optional [marker][PEP-751-marker] package
727
+ field to make packages installable or not based on the environment the exported lock is used to
728
+ install in.
729
+
730
+ This release does _not_ include support for building PEXes using PEP-751 locks. Add your concrete
731
+ use case to [#2756](https://github.com/pex-tool/pex/issues/2756) if you have one.
732
+
733
+ * Add `pex3 lock export --format pep-751` support. (#2760)
734
+
735
+ [PEP-751]: https://packaging.python.org/en/latest/specifications/pylock-toml/#pylock-toml-spec
736
+ [PEP-751-marker]: https://packaging.python.org/en/latest/specifications/pylock-toml/#packages-marker
737
+
738
+ ## 2.37.0
739
+
740
+ This release fixes a bug in lock file generation for `--pip-version` >= 25.1 that would omit some
741
+ abi3 wheels from locks.
742
+
743
+ In addition, support for the latest Pip 25.1.1 bugfix release is also added.
744
+
745
+ * Fix lock support for `--pip-version` >= 25.1. (#2754)
746
+
747
+ ## 2.36.1
748
+
749
+ This release fixes a few issues with creating Pex locks when source requirements were involved.
750
+
751
+ Previously, locking VCS requirements would fail for projects with non-normalized project names,
752
+ e.g.: PySocks vs its normalized form of pysocks.
753
+
754
+ Additionally, locking would fail when the requirements were specified at least in part via
755
+ requirements files (`-r` / `--requirements`) and there was either a local project or a VCS
756
+ requirement contained in the requirements files.
757
+
758
+ * Fix Pex locking for source requirements. (#2750)
759
+
760
+ ## 2.36.0
761
+
762
+ This release brings support for creating PEXes that target Android. The Pip 25.1 upgrade in Pex
763
+ 2.34.0 brought support for resolving Android platform-specific wheels and this releases upgrade
764
+ of Pex's vendored packaging to 25.0 brings support for Pex properly dealing with those Android
765
+ platform-specific wheels when packaging PEXes and when booting up from a PEX.
766
+
767
+ * Upgrade to latest packaging for Python 3.8+. (#2748)
768
+
769
+ ## 2.35.0
770
+
771
+ This release adds support for the `--resume-retries` option available in Pip 25.1. If you configure
772
+ Pex to use Pip 25.1 or newer, it will now try to resume incomplete downloads 3 times by default.
773
+
774
+ * Add support for `--resume-retries` in Pip 25.1. (#2746)
775
+
776
+ ## 2.34.0
777
+
778
+ This release adds support for `--pip-version 25.1` as well as `--pip-version latest-compatible`. The
779
+ `latest-compatible` version will be the latest `--pip-version` supported by Pex compatible with the
780
+ current interpreter running Pex.
781
+
782
+ * Add support for `--pip-version 25.1`. (#2744)
783
+
784
+ ## 2.33.10
785
+
786
+ This release follows up on the PEX scie argv0 fix in #2738 to further ensure the argv0 of a PEX scie
787
+ is the absolute path of the scie. In addition, a regression for PEX scies with no entry point is
788
+ fixed, allowing such PEX scies to be used as `--python` targets in Pex invocations.
789
+
790
+ * Fix PEX scie argv0 to be the scie absolute path. (#2741)
791
+ * Fix entrypoint-less PEX scies used as `--python`. (#2742)
792
+
793
+ ## 2.33.9
794
+
795
+ Fix argv0 in PEX scies to point to the scie itself instead of the unpacked PEX in the nce cache.
796
+
797
+ * Fix argv0 in PEX scies to point to the scie itself. (#2738)
798
+
799
+ ## 2.33.8
800
+
801
+ This release only upgrades the Pex PEX scies from Python 3.13.1 to 3.13.3.
802
+
803
+ The main thrust of the release is to kick the tires on Pex's new build system which is powered by
804
+ `uv` + `dev-cmd` and make sure all the action machinery is still working properly.
805
+
806
+ ## 2.33.7
807
+
808
+ This release fixes `PEX_TOOLS=1 ./path/to/pex` for PEXes using venv-execution and sh-bootstrapping
809
+ (that is, built with `--sh-boot --venv=... --include-tools` ). Previously, the `PEX_TOOLS=1` was
810
+ ignored if the venv already existed in the `PEX_ROOT` (for instance, if the PEX had already been
811
+ run).
812
+
813
+ * Avoid fast-path in `--sh-boot` script when `PEX_TOOLS=1`. (#2726)
814
+
815
+ ## 2.33.6
816
+
817
+ Fix PEP-723 script metadata parsing to skip metadata blocks found in multiline strings.
818
+
819
+ * Fix PEP-723 script metadata parsing. (#2722)
820
+
821
+ ## 2.33.5
822
+
823
+ This release fixes rate limit issues building CPython Pex scies by bumping to science 0.12.2 which
824
+ is fixed to properly support bearer authentication via the `SCIENCE_AUTH_<normalized_host>_BEARER`
825
+ environment variable.
826
+
827
+ * Upgrade to `science` 0.12.2 to fix PBS rate limits. (#2720)
828
+
829
+ ## 2.33.4
830
+
831
+ This release fixes PEX scies to exclude a ptex binary for `--scie eager` scies saving ~5MB on scies
832
+ targeting 64 bit systems.
833
+
834
+ * Do not include `ptex` in `--scie eager` scies. (#2717)
835
+
836
+ ## 2.33.3
837
+
838
+ This release fixes Pex Zip64 support such that PEX zips do not use Zip64 extensions unless needed.
839
+ Previously, any zip between ~2GB and ~4GB that actually fell under Zip64 limits would still use
840
+ Zip64 extensions. This prevented the file from being bootable under Python before the 3.13 release
841
+ since the `zipimporter` was not fixed to support ZIp64 extensions until then.
842
+
843
+ The `--scie-only` option is fixed for the case when the `-o` / `--output-file` name does not end in
844
+ `.pex`. Previously there would be no scie (or PEX) output at all!
845
+
846
+ Finally, this release fixes PEX scies such that, when split, the embedded PEX is both executable and
847
+ retains the expected name as provided by `-o` / `--output-file`.
848
+
849
+ * Enable true Zip64 support. (#2714)
850
+ * Fix `--scie-only` for `-o` not ending in `.pex`. (#2715)
851
+ * Fix PEX scie contents when split. (#2713)
852
+
853
+ ## 2.33.2
854
+
855
+ This release fixes PEXes build with root requirements like `foo[bar] foo[baz]` (vs. `foo[bar,baz]`,
856
+ which worked already).
857
+
858
+ * Fix dup requirement extra merging during PEX boot. (#2707)
859
+
860
+ ## 2.33.1
861
+
862
+ This release fixes a bug in both `pex3 lock subset` and
863
+ `pex3 lock {create,sync,update} --elide-unused-requires-dist` for `--style universal` locks whose
864
+ locked requirements have dependencies de-selected by the following environment markers:
865
+ + `os_name`
866
+ + `platform_system`
867
+ + `sys_platform`
868
+ + `python_version`
869
+ + `python_full_version`
870
+
871
+ The first three could lead to errors when the universal lock was generated with `--target-system`s
872
+ and the last two could lead to errors when the universal lock was generated with
873
+ `--interpreter-constraint`.
874
+
875
+ * Fix `pex3 lock subset`. (#2684)
876
+
877
+ ## 2.33.0
878
+
879
+ This release adds support for Pip 25.0.1.
880
+
881
+ * Add support for `--pip-version 25.0.1`. (#2671)
882
+
883
+ ## 2.32.1
884
+
885
+ This release fixes a long-standing bug handling development versions of
886
+ CPython (any non-tagged release of the interpreter). These interpreters
887
+ report a full version of `X.Y.Z+` and the trailing `+` leads to a non
888
+ PEP-440 compliant version number. This, in turn, causes issues with the
889
+ `packaging` library leading to failures to evaluate markers for these
890
+ interpreters which surface as inscrutable Pex errors.
891
+
892
+ * Fix support for CPython development releases. (#2655)
893
+
894
+ ## 2.32.0
895
+
896
+ This release adds support for Pip 25.0.
897
+
898
+ * Add support for `--pip-version 25.0`. (#2652)
899
+
900
+ ## 2.31.0
901
+
902
+ This release adds `pex3 lock subset <reqs...> --lock existing.lock` for
903
+ creating a subset of an existing lock file. This is a fast operation
904
+ that just trims un-used locked requirements from the lock but otherwise
905
+ leaves the lock unchanged.
906
+
907
+ * Add support for `pex3 lock subset`. (#2647)
908
+
909
+ ## 2.30.0
910
+
911
+ This release brings `--sh-boot` support to PEXes with
912
+ `--layout {loose,packed}`. Previously, the `--sh-boot` option only took
913
+ effect for traditional PEX zip files. Now all PEX output and runtime
914
+ schemes, in any combination, can benefit from the reduced boot latency
915
+ `--sh-boot` brings on all runs of a PEX after the first.
916
+
917
+ * Support `--sh-boot` for `--layout {loose,packed}`. (#2645)
918
+
919
+ ## 2.29.0
920
+
921
+ This release brings 1st class support for newer Pip's
922
+ `--keyring-provider` option. Previously you could only use `keyring`
923
+ based authentication via `--use-pip-config` and either the
924
+ `PIP_KEYRING_PROVIDER` environment variable or Pip config files.
925
+ Although using `--keyring-provider import` is generally unusable in the
926
+ face of Pex hermeticity strictures, `--keyring-provider subprocess` is
927
+ viable; just ensure you have a keyring provider on the `PATH`. You can
928
+ read more [here][Pip-KRP-subprocess].
929
+
930
+ This release also brings [PEP-723][PEP-723] support to Pex locks. You
931
+ can now pass `pex3 lock {create,sync,update} --exe <script> ...` to
932
+ include the PEP-723 declared script requirements in the lock.
933
+
934
+ * add `--keyring-provider` flag to configure keyring-based authentication (#2592)
935
+ * Support locking PEP-723 requirements. (#2642)
936
+
937
+ [Pip-KRP-subprocess]: https://pip.pypa.io/en/stable/topics/authentication/#using-keyring-as-a-command-line-application
938
+ [PEP-723]: https://peps.python.org/pep-0723
939
+
940
+ ## 2.28.1
941
+
942
+ This release upgrades `science` for use in building PEX scies with
943
+ `--scie {eager,lazy}`. The upgraded `science` fixes issues dealing
944
+ handling failed Python distribution downloads and should now be more
945
+ robust and clear when downloads fail.
946
+
947
+ * Upgrade `science` minimum requirement to 0.10.1. (#2637)
948
+
949
+ ## 2.28.0
950
+
951
+ This release adds Pex `--scie {eager,lazy}` support for Linux ppc64le
952
+ and s390x.
953
+
954
+ * Add `--scie` support for Linux ppc64le and s390x. (#2635)
955
+
956
+ ## 2.27.1
957
+
958
+ This release fixes a bug in `PEX_ROOT` handling that could manifest
959
+ with symlinked `HOME` dirs or more generally symlinked dirs being
960
+ parents of the `PEX_ROOT`. Although this was claimed to be fixed in
961
+ the Pex 2.20.4 release by #2574, there was one missing case not handled.
962
+
963
+ * Ensure that the `PEX_ROOT` is always a realpath. (#2626)
964
+
965
+ ## 2.27.0
966
+
967
+ This release adds a Pex PEX scie for armv7l.
968
+
969
+ * Add a Pex PEX scie for armv7l. (#2624)
970
+
971
+ ## 2.26.0
972
+
973
+ This release adds Pex `--scie {eager,lazy}` support for Linux armv7l.
974
+
975
+ In addition, a spurious warning when using `PEX_PYTHON=pythonX.Y`
976
+ against a venv PEX has been fixed.
977
+
978
+ * Added support for armv7l (#2620)
979
+ * Fix incorrect regex for `PEX_PYTHON` precision warning (#2622)
980
+
981
+ ## 2.25.2
982
+
983
+ This release fixes the `--elide-unused-requires-dist` lock option once
984
+ again. The fix in 2.25.1 could lead to locked requirements having only
985
+ a partial graph of extras which would allow a subsequent subset of those
986
+ partial extras to silently resolve an incomplete set of dependencies.
987
+
988
+ In addition, the Pex REPL for PEXes without entry points or else when
989
+ forced with `PEX_INTERPRETER=1` is now fixed such that readline support
990
+ always works. Previously, the yellow foreground color applied to the PS1
991
+ and PS2 prompts would interfere with the tracked cursor position in some
992
+ Pythons; so the yellow foreground color for those prompts is now
993
+ dropped.
994
+
995
+ * Fix `--elide-unused-requires-dist`: don't expose partial extras. (#2618)
996
+ * Fix Pex REPL prompt. (#2617)
997
+
998
+ ## 2.25.1
999
+
1000
+ This is a hotfix release that fixes a bug in the implementation of the
1001
+ `--elide-unused-requires-dist` lock option introduced in Pex 2.25.0.
1002
+
1003
+ * Fix `--elide-unused-requires-dist` for unactivated deps. (#2615)
1004
+ ## 2.25.0
1005
+
1006
+ This release adds support for
1007
+ `pex3 lock {create,sync} --elide-unused-requires-dist`. This new lock
1008
+ option causes any dependencies of a locked requirement that can never
1009
+ be activated to be elided from the lock file. This leads to no material
1010
+ difference in lock file use, but it does cut down on the lock file size.
1011
+
1012
+ * Add `--elide-unused-requires-dist` lock option. (#2613)
1013
+
1014
+ ## 2.24.3
1015
+
1016
+ This release fixes a long-standing bug in resolve checking. Previously,
1017
+ only resolve dependency chains where checked, but not the resolved
1018
+ distributions that satisfied the input root requirements.
1019
+
1020
+ In addition, the 2.24.2 release included a wheel with no compression
1021
+ (~11MB instead of ~3.5MB). The Pex wheel is now fixed to be compressed.
1022
+
1023
+ * Fix resolve check to cover dists satisfying root reqs. (#2610)
1024
+ * Fix build process to produce a compressed `.whl`. (#2609)
1025
+
1026
+ ## 2.24.2
1027
+
1028
+ This release fixes a long-standing bug in "YOLO-mode" foreign platform
1029
+ speculative wheel builds. Previously if the speculatively built wheel
1030
+ had tags that did not match the foreign platform, the process errored
1031
+ pre-emptively. This was correct for complete foreign platforms, where
1032
+ all tag information is known, but not for all cases of abbreviated
1033
+ platforms, where the failure was overly aggressive in some cases. Now
1034
+ foreign abbreviated platform speculative builds are only rejected when
1035
+ there is enough information to be sure the speculatively built wheel
1036
+ definitely cannot work on the foreign abbreviated platform.
1037
+
1038
+ * Accept more foreign `--platform` "YOLO-mode" wheels. (#2607)
1039
+
1040
+ ## 2.24.1
1041
+
1042
+ This release fixes `pex3 cache prune` handling of cached Pips.
1043
+ Previously, performing a `pex3 cache prune` would bump the last access
1044
+ time of all un-pruned cached Pips artificially. If you ran
1045
+ `pex3 cache prune` in a daily or weekly cron job, this would mean Pips
1046
+ would never be pruned.
1047
+
1048
+ * Fix `pex3 cache prune` handling of cached Pips. (#2589)
1049
+
1050
+ ## 2.24.0
1051
+
1052
+ This release adds `pex3 cache prune` as a likely more useful Pex cache
1053
+ management command than the existing `pex3 cache purge`. By default
1054
+ `pex3 cache prune` prunes any cached items not used for the last 2
1055
+ weeks and is likely suitable for use as a daily cron job to keep Pex
1056
+ cache sizes down. The default age of 2 weeks can be overridden by
1057
+ specifying `--older-than "1 week"` or `--last-access-before 14/3/2024`,
1058
+ etc. See `pex3 cache prune --help` for more details.
1059
+
1060
+ * Support `pex3 cache prune --older-than ...`. (#2586)
1061
+
1062
+ ## 2.23.0
1063
+
1064
+ This release adds support for drawing requirements from
1065
+ [PEP-735][PEP-735] dependency groups when creating PEXes or lock files.
1066
+ Groups are requested via `--group <name>@<project dir>` or just
1067
+ `--group <name>` if the project directory is the current working
1068
+ directory.
1069
+
1070
+ * Add support for PEP-735 dependency groups. (#2584)
1071
+
1072
+ [PEP-735]: https://peps.python.org/pep-0735/
1073
+
1074
+ ## 2.22.0
1075
+
1076
+ This release adds support for `--pip-version 24.3.1`.
1077
+
1078
+ * Add support for `--pip-version 24.3.1`. (#2582)
1079
+
1080
+ ## 2.21.0
1081
+
1082
+ This release adds support for `--pip-version 24.3`.
1083
+
1084
+ * Add support for `--pip-version 24.3`. (#2580)
1085
+
1086
+ ## 2.20.4
1087
+
1088
+ This release carries several bug fixes and a performance improvement for
1089
+ lock deletes.
1090
+
1091
+ Although there were no direct reports in the wild, @iritkatriel noticed
1092
+ by inspection the Pex `safe_mkdir` utility function would mask any
1093
+ `OSError` besides `EEXIST`. This is now fixed.
1094
+
1095
+ It was observed by @b-x that when `PEX_ROOT` was contained in a
1096
+ symlinked path, PEXes would fail to execute. The most likely case
1097
+ leading to this would be a symlinked `HOME` dir. This is now fixed.
1098
+
1099
+ This release also fixes a bug where `--pip-log <path>`, used multiple
1100
+ times in a row against the same file could lead to `pex3 lock` errors.
1101
+ Now the specified path is always truncated before use and a note has
1102
+ been added to the option `--help` that using the same `--pip-log` path
1103
+ in concurrent Pex runs is not supported.
1104
+
1105
+ In addition, `pex3 lock {update,sync}` is now optimized for the cases
1106
+ where all the required updates are deletes. In this case neither Pip nor
1107
+ the network are consulted leading to speed improvements proportional to
1108
+ the size of the resolve.
1109
+
1110
+ * Fix `safe_mkdir` swallowing non-`EEXIST` errors. (#2575)
1111
+ * Fix `PEX_ROOT` handling for symlinked paths. (#2574)
1112
+ * Fix `--pip-log` re-use. (#2570)
1113
+ * Optimize pure delete lock updates. (#2568)
1114
+
1115
+ ## 2.20.3
1116
+
1117
+ This release fixes both PEX building and lock creation via
1118
+ `pex3 lock {create,sync}` to be reproducible in more cases. Previously,
1119
+ if a requirement only available in source form (an sdist, a local
1120
+ project or a VCS requirement) had a build that was not reproducible due
1121
+ to either file timestamps (where the `SOURCE_DATE_EPOCH` standard was
1122
+ respected) or random iteration order (e.g.: the `setup.py` used sets in
1123
+ certain in-opportune ways), Pex's outputs would mirror the problematic
1124
+ requirement's non-reproducibility. Now Pex plumbs a fixed
1125
+ `SOURCE_DATE_EPOCH` and `PYTHONHASHSEED` to all places sources are
1126
+ built.
1127
+
1128
+ * Plumb reproducible build env vars more thoroughly. (#2554)
1129
+
1130
+ ## 2.20.2
1131
+
1132
+ This release fixes an old bug handling certain sdist zips under
1133
+ Python 2.7 as well missing support for Python 3.13's `PYTHON_COLORS`
1134
+ env var.
1135
+
1136
+ * Fix Zip extraction UTF-8 handling for Python 2.7. (#2546)
1137
+ * Add repl support for `PYTHON_COLORS`. (#2545)
1138
+
1139
+ ## 2.20.1
1140
+
1141
+ This release fixes Pex `--interpreter-constraint` handling such that
1142
+ any supplied interpreter constraints which are in principle
1143
+ unsatisfiable either raise an error or else cause a warning to be issued
1144
+ when other viable interpreter constraints have also been specified. For
1145
+ example, `--interpreter-constraint ==3.11.*,==3.12.*` now errors and
1146
+ `--interpreter-constraint '>=3.8,<3.8' --interpreter-constraint ==3.9.*`
1147
+ now warns, culling `>3.8,<3.8` and continuing using only `==3.9.*`.
1148
+
1149
+ * Pre-emptively cull unsatisfiable interpreter constraints. (#2542)
1150
+
1151
+ ## 2.20.0
1152
+
1153
+ This release adds the `--pip-log` alias for the existing
1154
+ `--preserve-pip-download-log` option as well as the ability to specify
1155
+ the log file path. So, to debug a resolve, you can now specify
1156
+ `--pip-log log.txt` and Pex will deposit the Pip resolve log to
1157
+ `log.txt` in the current directory for easy tailing or post-resolve
1158
+ inspection. In addition, the log file itself is more useful in some
1159
+ cases. When you specify any abbreviated `--platform` targets, those
1160
+ targets calculated wheel compatibility tags are included in the Pip
1161
+ log. Also, when multiple targets are specified, their log outputs are
1162
+ now merged at the end of the resolve in a serialized fashion with
1163
+ prefixes on each log line indicating which target the log line
1164
+ corresponds to.
1165
+
1166
+ In addition, a race in Pex's PEP-517 implementation that could (rarely)
1167
+ lead to spurious metadata generation errors or sdist creation errors is
1168
+ fixed.
1169
+
1170
+ * Fix intermittent PEP-517 failures. (#2540)
1171
+ * Plumb `--pip-version` to Platform tag calculation. (#2538)
1172
+ * Add the ability to specify the `--pip-log` path. (#2536)
1173
+
1174
+ ## 2.19.1
1175
+
1176
+ This release fixes a regression introduced by #2512 in the 2.19.0
1177
+ release when building PEXes using abbreviated `--platform` targets.
1178
+ Instead of failing certain builds that used to succeed, Pex now warns
1179
+ that the resulting PEX may fail at runtime and that
1180
+ `--complete-platform` should be used instead.
1181
+
1182
+ * Only warn when `--platform` resolves fail tag checks. (#2533)
1183
+
1184
+ ## 2.19.0
1185
+
1186
+ This release adds support for a new `--pre-resolved-dists` resolver as
1187
+ an alternative to the existing Pip resolver, `--lock` resolver and
1188
+ `--pex-repository` resolvers. Using `--pre-resolved-dists dists/dir/`
1189
+ behaves much like `--no-pypi --find-links dists/dir/` except that it is
1190
+ roughly 3x faster.
1191
+
1192
+ * Support `--pre-resolved-dists` resolver. (#2512)
1193
+
1194
+ ## 2.18.1
1195
+
1196
+ This release fixes `--scie-name-style platform-parent-dir` introduced in
1197
+ #2523. Previously the target platform name also leaked into scies
1198
+ targeting foreign platforms despite using this option.
1199
+
1200
+ * Fix `--scie-name-style platform-parent-dir`. (#2526)
1201
+
1202
+ ## 2.18.0
1203
+
1204
+ This release adds support for `pex3 cache {dir,info,purge}` for
1205
+ inspecting and managing the Pex cache. Notably, the `pex3 cache purge`
1206
+ command is safe in the face of concurrent PEX runs, waiting for in
1207
+ flight PEX runs to complete and blocking new runs from starting once the
1208
+ purge is in progress. N.B.: when using `pex3 cache purge` it is best to
1209
+ install Pex with the 'management' extra; e.g.:
1210
+ `pip install pex[management]`. Alternatively, one of the new Pex scie
1211
+ binary releases can be used.
1212
+
1213
+ In order to release a Pex binary that can support the new `pex3` cache
1214
+ management commands first class, a set of enhancements to project
1215
+ locking and scie generation were added. When using `--project` you can
1216
+ now specify extras; e.g.: `--project ./the/project-dir[extra1,extra2]`.
1217
+ When creating a Pex scie, you can now better control the output files
1218
+ using `--scie-only` to ensure no PEX file is emitted and
1219
+ `--scie-name-style` to control how the scie target platform name is
1220
+ mixed into the scie output file name. Additionally, you can request one
1221
+ or more shasum-compatible checksum files be emitted for each scie with
1222
+ `--scie-hash-alg`.
1223
+
1224
+ On the locking front, an obscure bug locking project releases that
1225
+ contain artifacts that mis-report their version number via their file
1226
+ name has been fixed.
1227
+
1228
+ Finally, the vendored Pip has had its own vendored CA cert bundle
1229
+ upgraded from that in certifi 2024.7.4 to that in certifi 2024.8.30.
1230
+
1231
+ * Fix locking of sdists rejected by Pip. (#2524)
1232
+ * Add `--scie-only` & `--scie-name-style`. (#2523)
1233
+ * Support `--project` extras. (#2522)
1234
+ * Support shasum file gen via `--scie-hash-alg`. (#2520)
1235
+ * Update vendored Pip's CA cert bundle. (#2517)
1236
+ * Introduce `pex3 cache {dir,info,purge}`. (#2513)
1237
+
1238
+ ## 2.17.0
1239
+
1240
+ This release brings support for overriding the versions of setuptools
1241
+ and wheel Pex bootstraps for non-vendored Pip versions (the modern ones
1242
+ you select with `--pip-version`) using the existing
1243
+ `--extra-pip-requirement` option introduced in the [2.10.0 release](
1244
+ https://github.com/pex-tool/pex/releases/tag/v2.10.0).
1245
+
1246
+ * Support custom setuptools & wheel versions. (#2514)
1247
+
1248
+ ## 2.16.2
1249
+
1250
+ This release brings a slew of small fixes across the code base.
1251
+
1252
+ When creating locks for foreign platforms,
1253
+ `pex3 lock {create,update,sync}` now allows locking sdists that use
1254
+ PEP-517 build backends that do not support the
1255
+ `prepare_metadata_for_build_wheel` hook and whose product is a wheel not
1256
+ compatible with the foreign platform. This is decidedly a corner case,
1257
+ but one encountered with the `mesonpy` build backend which seems to have
1258
+ traction in the scientific computing world in particular.
1259
+
1260
+ The recent re-vamp of the PEX REPL is now fixed to respect common
1261
+ conventions for controlling terminal output via the `NO_COLOR`,
1262
+ `FORCE_COLOR` and `TERM` environment variables.
1263
+
1264
+ The examples in the [buildingpex docs](
1265
+ https://docs.pex-tool.org/buildingpex.html) had bit-rotted. They have
1266
+ been refreshed and now all work.
1267
+
1268
+ Finally, both the Pex CLI and PEX files support the ambient OS standards
1269
+ for user cache directories. Instead of using `~/.pex` as the default
1270
+ `PEX_ROOT` cache location, the default is now `~/.cache/pex` on Linux (
1271
+ but respecting `XDG_CACHE_HOME` when set) and `~/Library/Caches/pex` on
1272
+ Mac.
1273
+
1274
+ * Lock sdists in more cases for foreign platforms. (#2508)
1275
+ * Respect `NO_COLOR`, `FORCE_COLOR` & `TERM=dumb`. (#2507)
1276
+ * Fix `buildingpex.rst` examples. (#2506)
1277
+ * Respect OS user cache location conventions. (#2505)
1278
+
1279
+ ## 2.16.1
1280
+
1281
+ This release fixes the PEX repl for [Python Standalone Builds][PBS]
1282
+ Linux CPython PEX scies. These PEXes ship using a version of libedit
1283
+ for readline support that does not support naive use of ansi terminal
1284
+ escape sequences for prompt colorization.
1285
+
1286
+ * Fix PEX repl prompt for Linux PBS libedit. (#2503)
1287
+
1288
+ ## 2.16.0
1289
+
1290
+ This release adds support for `--venv-system-site-packages` when
1291
+ creating a `--venv` PEX and `--system-site-packages` when creating a
1292
+ venv using the `pex-tools` / `PEX_TOOLS=1` `venv` command or when using
1293
+ the `pex3 venv create` command. Although this breaks PEX hermeticity, it
1294
+ can be the most efficient way to ship partial PEX venvs created with
1295
+ `--exclude`s to machines that have the excluded dependencies already
1296
+ installed in the site packages of a compatible system interpreter.
1297
+
1298
+ * Support `--system-site-packages` when creating venvs. (#2500)
1299
+
1300
+ ## 2.15.0
1301
+
1302
+ This release enhances the REPL your PEX drops into when it either
1303
+ doesn't have an entry point or you force interpreter mode with the
1304
+ `PEX_INTERPRETER` environment variable. There is now clear indication
1305
+ you are running in a PEX hermetic environment and a `pex` command
1306
+ added to the REPL that you can use to find out more details about the
1307
+ current PEX environment.
1308
+
1309
+ * Add PEX info to the PEX repl. (#2496)
1310
+
1311
+ ## 2.14.1
1312
+
1313
+ This release fixes `--inject-env` when used in combination with a
1314
+ `--scie-busybox` so that the injected environment variable can be
1315
+ overridden at runtime like it can form a traditional PEX.
1316
+
1317
+ In addition, running a PEX with the Python interpreter `-i` flag or
1318
+ `PYTHONINSPECT=x` in the environment causes the PEX to enter the
1319
+ Python REPL after evaluating the entry point, if any.
1320
+
1321
+ * Allow `--inject-env` overrides for `--scie-busybox`. (#2490)
1322
+ * Fix PEXes for `-i` / `PYTHONINSPECT=x`. (#2491)
1323
+
1324
+ ## 2.14.0
1325
+
1326
+ This release brings support for creating PEX scies for PEXes targeting
1327
+ [PyPy][PyPy]. In addition, for PEX scies targeting CPython, you can now
1328
+ specify `--scie-pbs-stripped` to select a stripped version of the
1329
+ [Python Standalone Builds][PBS] CPython distribution embedded in your
1330
+ scie to save transfer bandwidth and disk space at the cost of losing
1331
+ Python debug symbols.
1332
+
1333
+ Finally, support is added for `--scie-busybox` to turn your PEX into a
1334
+ multi-entrypoint [BusyBox][BusyBox]-like scie. This support is
1335
+ documented in depth at https://docs.pex-tool.org/scie.html
1336
+
1337
+ * Support `--scie` for PyPy & support stripped CPython. (#2488)
1338
+ * Add support for `--scie-busybox`. (#2468)
1339
+
1340
+ [PyPy]: https://pypy.org/
1341
+ [BusyBox]: https://www.busybox.net/
1342
+
1343
+ ## 2.13.1
1344
+
1345
+ This release fixes the `--scie` option to support building a Pex PEX
1346
+ scie with something like `pex pex -c pex --venv --scie eager -o pex`.
1347
+ Previously, due to the output filename of `pex` colliding with fixed
1348
+ internal scie lift manifest file names, this would fail.
1349
+
1350
+ * Handle all output file names when building scies. (#2484)
1351
+
1352
+ ## 2.13.0
1353
+
1354
+ This release improves error message detail when there are failures in
1355
+ Pex sub-processes. In particular, errors that occur in `pip download`
1356
+ when building a PEX or creating a lock file now give more clear
1357
+ indication of what went wrong.
1358
+
1359
+ Additionally, this release adds support for `--pip-version 24.2`.
1360
+
1361
+ * Add more context for Job errors. (#2479)
1362
+ * Add support for `--pip-version 24.2`. (#2481)
1363
+
1364
+ ## 2.12.1
1365
+
1366
+ This release refreshes the root CA cert bundle used by
1367
+ `--pip-version vendored` (which is the default Pip Pex uses for
1368
+ Python `<3.12`) from [certifi 2019.9.11](
1369
+ https://pypi.org/project/certifi/2019.9.11/)'s `cacert.pem` to
1370
+ [certifi 2024.7.4](https://pypi.org/project/certifi/2024.7.4/)'s
1371
+ `cacert.pem`. This refresh addresses at least [CVE-2023-37920](
1372
+ https://nvd.nist.gov/vuln/detail/CVE-2023-37920) and was spearheaded by
1373
+ a contribution from [Nash Kaminski](https://github.com/gs-kamnas) in
1374
+ https://github.com/pex-tool/pip/pull/12. Thank you, Nash!
1375
+
1376
+ * Update vendored Pip's CA cert bundle. (#2476)
1377
+
1378
+ ## 2.12.0
1379
+
1380
+ This release adds support for passing `--site-packages-copies` to both
1381
+ `pex3 venv create ...` and `PEX_TOOLS=1 ./my.pex venv ...`. This is
1382
+ similar to `pex --venv --venv-site-packages-copies ...` except that
1383
+ instead of preferring hard links, a copy is always performed. This is
1384
+ useful to disassociate venvs you create using Pex from Pex's underlying
1385
+ `PEX_ROOT` cache.
1386
+
1387
+ This release also adds partial support for statically linked CPython. If
1388
+ the statically linked CPython is `<3.12`, the default Pip (
1389
+ `--pip-version vendored`) used by Pex will work. All newer Pips will not
1390
+ though, until Pip 24.2 is released with the fix in
1391
+ https://github.com/pypa/pip/pull/12716 and Pex releases with support for
1392
+ `--pip-version 24.2`.
1393
+
1394
+ * Add `--site-packages-copies` for external venvs. (#2470)
1395
+ * Support statically linked CPython. (#2472)
1396
+
1397
+ ## 2.11.0
1398
+
1399
+ This release adds support for creating native PEX executables that
1400
+ contain their own hermetic CPython interpreter courtesy of
1401
+ [Python Standalone Builds][PBS] and the [Science project][scie].
1402
+
1403
+ You can now specify `--scie {eager,lazy}` when building a PEX file and
1404
+ one or more native executable PEX scies will be produced (one for each
1405
+ platform the PEX supports). These PEX scies are single file
1406
+ executables that look and behave like traditional PEXes, but unlike
1407
+ PEXes they can run on a machine with no Python interpreter available.
1408
+
1409
+ [PBS]: https://github.com/astral-sh/python-build-standalone
1410
+ [scie]: https://github.com/a-scie
1411
+
1412
+ * Add `--scie` option to produce native PEX exes. (#2466)
1413
+
1414
+ ## 2.10.1
1415
+
1416
+ This release fixes a long-standing bug in Pex parsing of editable
1417
+ requirements. This bug caused PEXes containing local editable project
1418
+ requirements to fail to import those local editable projects despite
1419
+ the fact the PEX itself contained them.
1420
+
1421
+ * Fix editable requirement parsing. (#2464)
1422
+
1423
+ ## 2.10.0
1424
+
1425
+ This release adds support for injecting requirements into the isolated
1426
+ Pip PEXes Pex uses to resolve distributions. The motivating use case
1427
+ for this is to use the feature Pip 23.1 introduced for forcing
1428
+ `--keyring-provider import`.
1429
+
1430
+ Pex already supported using a combination of the following to force
1431
+ non-interactive use of the keyring:
1432
+ 1. A `keyring` script installation that was on the `PATH`
1433
+ 2. A `--pip-version` 23.1 or newer.
1434
+ 3. Specifying `--use-pip-config` to pass `--keyring-provider subprocess`
1435
+ to Pip.
1436
+
1437
+ You could not force `--keyring-provider import` though, since the Pips
1438
+ Pex uses are themselves hermetic PEXes without access to extra
1439
+ installed keyring requirements elsewhere on the system. With
1440
+ `--extra-pip-requirement` you can now do this with the primary benefit
1441
+ over `--keyring-provider subprocess` being that you do not need to add
1442
+ the username to index URLs. This is ultimately because the keyring CLI
1443
+ requires username whereas the API does not; but see
1444
+ https://pip.pypa.io/en/stable/topics/authentication/#keyring-support for
1445
+ more information.
1446
+
1447
+ * Add support for `--extra-pip-requirement`. (#2461)
1448
+
1449
+ ## 2.9.0
1450
+
1451
+ This release adds support for Pip 24.1.2.
1452
+
1453
+ * Add support for `--pip-version 24.1.2`. (#2459)
1454
+
1455
+ ## 2.8.1
1456
+
1457
+ This release fixes the `bdist_pex` distutils command to use the
1458
+ `--project` option introduced by #2455 in the 2.8.0 release. This
1459
+ change produces the same results for existing invocations of
1460
+ `python setup.py bdist_pex` but allows new uses passing locked project
1461
+ requirements (either hashed requirement files or Pex lock files) via
1462
+ `--pex-args`.
1463
+
1464
+ * Fix `bdist_pex` to use `--project`. (#2457)
1465
+
1466
+ ## 2.8.0
1467
+
1468
+ This release adds a new `--override` option to resolves that ultimately
1469
+ use an `--index` or `--find-links`. This allows you to override
1470
+ transitive dependencies when you have determined they are too narrow and
1471
+ that expanding their range is safe to do. The new `--override`s and the
1472
+ existing `--exclude`s can now also be specified when creating or syncing
1473
+ a lock file to seal these dependency modifications into the lock.
1474
+
1475
+ This release also adds a new `--project` option to `pex` and
1476
+ `pex3 lock {create,sync}` that improves the ergonomics of locking a
1477
+ local Python project and then creating PEX executables for that project
1478
+ using its locked requirements.
1479
+
1480
+ In addition, this release fixes the `bdist_pex` distutils command that
1481
+ ships with Pex to work when run under `tox` and Python 3.12 by improving
1482
+ Pex venv creation robustness when creating venvs that include Pip.
1483
+
1484
+ * Add support for `--override`. (#2431)
1485
+ * Support `--project` locking and PEX building. (#2455)
1486
+ * Improve venv creation robustness when adding Pip. (#2454)
1487
+
1488
+ ## 2.7.0
1489
+
1490
+ This release adds support for Pip 24.1.1.
1491
+
1492
+ * Add support for `--pip-version 24.1.1`. (#2451)
1493
+
1494
+ ## 2.6.3
1495
+
1496
+ There are no changes to Pex code or released artifacts over 2.6.1 or
1497
+ 2.6.2, just a further fix to the GitHub Releases release process which
1498
+ #2442 broke and #2444 only partially fixed.
1499
+
1500
+ * Fix GitHub Releases deployment. (#2448)
1501
+
1502
+ ## 2.6.2
1503
+
1504
+ > [!NOTE]
1505
+ > Although 2.6.2 successfully released to [PyPI](
1506
+ > https://pypi.org/project/pex/2.6.2/), it failed to release to GitHub
1507
+ > Releases (neither the Pex PEX nor the pex.pdf were published.) You
1508
+ > can use Pex 2.6.3 instead which has no Pex code changes over this
1509
+ > release.
1510
+
1511
+ There are no changes to Pex code or released artifacts over 2.6.1, just
1512
+ a fix to the GitHub Releases release process which #2442 broke.
1513
+
1514
+ * Fix GitHub Releases deployment. (#2444)
1515
+
1516
+ ## 2.6.1
1517
+
1518
+ > [!NOTE]
1519
+ > Although 2.6.1 successfully released to [PyPI](
1520
+ > https://pypi.org/project/pex/2.6.1/), it failed to release to GitHub
1521
+ > Releases (neither the Pex PEX nor the pex.pdf were published.) You
1522
+ > can use Pex 2.6.3 instead which has no Pex code changes over this
1523
+ > release.
1524
+
1525
+ This release improves error messages when attempting to read invalid
1526
+ metadata from distributions such that the problematic distribution is
1527
+ always identified.
1528
+
1529
+ * Improve errors for invalid distribution metadata. (#2443)
1530
+
1531
+ ## 2.6.0
1532
+
1533
+ This release adds support for [PEP-723](
1534
+ https://peps.python.org/pep-0723) script metadata in `--exe`s. For such
1535
+ a script with metadata describing its dependencies or Python version
1536
+ requirements, running the script is as simple as
1537
+ `pex --exe <script> -- <script args>` and building a PEX encapsulating
1538
+ it as simple as `pex --exe <script> --output <PEX file>`.
1539
+
1540
+ * Add support for PEP-723 script metadata to `--exe`. (#2436)
1541
+
1542
+ ## 2.5.0
1543
+
1544
+ This release brings support for Python 3.13 and `--pip-version 24.1`,
1545
+ which is the first Pip version to support it.
1546
+
1547
+ * Support `--pip-version 24.1` and Python 3.13. (#2435)
1548
+
1549
+ ## 2.4.1
1550
+
1551
+ This release fixes `pex --only-binary X --lock ...` to work with lock
1552
+ files also created with `--only-binary X`. The known case here is a
1553
+ `--style universal` lock created with `--only-binary X` to achieve a
1554
+ partially wheel-only universal lock.
1555
+
1556
+ * Fix `pex --only-binary X --lock ...`. (#2433)
1557
+
1558
+ ## 2.4.0
1559
+
1560
+ This release brings new support for preserving arguments passed to the
1561
+ Python interpreter (like `-u` or `-W ignore`) either via running a PEX
1562
+ via Python from the command line like `python -u my.pex` or via a
1563
+ shebang with embedded Python arguments like `#!/usr/bin/python -u`.
1564
+
1565
+ In addition, PEXes can now be built with `--inject-python-args` similar
1566
+ to the existing `--inject-args` but sealing in arguments to pass to
1567
+ Python instead. When both explicitly passed Python interpreter arguments
1568
+ and injected Python interpreter arguments are specified, the injected
1569
+ arguments appear first on the synthesized command line and the
1570
+ explicitly passed arguments appear last so that the explicit arguments
1571
+ can trump (which is how Python handles this).
1572
+
1573
+ Several bugs existing in the `--exclude` implementation since its
1574
+ introduction are now fixed and the feature is greatly improved to act on
1575
+ excludes eagerly, never traversing them in the resolve process; thus
1576
+ avoiding downloads associated with them as well as potentially failing
1577
+ metadata extraction & wheel builds for ill-behaved sdists.
1578
+
1579
+ Finally, a bug was fixed in `pex3 lock export` for lock files containing
1580
+ either locked VCS requirements or locked local project directories.
1581
+ Previously, these were exported with a `<project name>==<version>`
1582
+ requirement, which lost fidelity with the input requirement. Now they
1583
+ are exported with their original requirement form. Further, since the
1584
+ `--hash` of these styles of locked requirement are unuseable outside
1585
+ Pex, a new `--format` option of `pip-no-hashes` is introduced for the
1586
+ adventurous.
1587
+
1588
+ * Implement support for preserving and injecting Python args. (#2427)
1589
+ * Fix `--exclude`. (#2409)
1590
+ * Fix `pex3 lock export` handling of exotic reqs. (#2423)
1591
+
1592
+ ## 2.3.3
1593
+
1594
+ This release fixes `pex3 lock create` support for `--pip-version`s
1595
+ 23.3.1 and newer. Previously, when locking using indexes that serve
1596
+ artifacts via re-directs, the resulting lock file would contain the
1597
+ final re-directed URL instead of the originating index artifact URL.
1598
+ This could lead to issues when the indexes re-direction scheme changed
1599
+ or else if authentication parameters in the original index URL were
1600
+ stripped in the Pip logs.
1601
+
1602
+ * Fix artifact URL recording for `pip>=23.3`. (#2421)
1603
+
1604
+ ## 2.3.2
1605
+
1606
+ This release fixes a regression for users of gevent monkey patching. The
1607
+ fix in #2356 released in Pex 2.1.163 lead to these users receiving
1608
+ spurious warnings from the gevent monkey patch system about ssl being
1609
+ patched too late.
1610
+
1611
+ * Delay import of ssl in `pex.fetcher`. (#2417)
1612
+
1613
+ ## 2.3.1
1614
+
1615
+ This release fixes Pex to respect lock file interpreter constraints and
1616
+ target systems when downloading artifacts.
1617
+
1618
+ * Fix lock downloads to use all lock info. (#2396)
1619
+
1620
+ ## 2.3.0
1621
+
1622
+ This release introduces `pex3 lock sync` as a higher-level tool that
1623
+ can be used to create and maintain a lock as opposed to using a
1624
+ combination of `pex3 lock create` and `pex3 lock update`. When there is
1625
+ no existing lock file, `pex3 lock sync --lock lock.json ...` is
1626
+ equivalent to `pex3 lock create --output lock.json ...`, it creates a
1627
+ new lock. On subsequent uses however,
1628
+ `pex3 lock sync --lock lock.json ...` updates the lock file minimally to
1629
+ meet any changed requirements or other changed lock settings.
1630
+
1631
+ This release also fixes `pex --no-build --lock ...` to work with lock
1632
+ files also created with `--no-build`. The known case here is a
1633
+ `--style universal` lock created with `--no-build` to achieve a
1634
+ wheel-only universal lock.
1635
+
1636
+ This release includes a fix to clarify the conditions under which
1637
+ `--requierements-pex` can be used to combine the third party
1638
+ dependencies from a pre-built PEX into a new PEX; namely, that the PEXes
1639
+ must use the same value for the `--pre-install-wheels` option.
1640
+
1641
+ Finally, this release fixes `pex3 venv` to handle venvs created by
1642
+ Virtualenv on systems that distinguish `purelib` and `platlib`
1643
+ site-packages directories. Red Hat distributions are a notable example
1644
+ of this.
1645
+
1646
+ * Implement pex3 lock sync. (#2373)
1647
+ * Guard against mismatched `--requirements-pex`. (#2392)
1648
+ * Fix `pex --no-build --lock ...`. (#2390)
1649
+ * Fix Pex to handle venvs with multiple site-packages dirs. (#2383)
1650
+
1651
+ ## 2.2.2
1652
+
1653
+ This release fixes `pex3 lock create` to handle `.tar.bz2` and `.tgz`
1654
+ sdists in addition to the officially sanctioned `.tar.gz` and (less
1655
+ officially so) `.zip` sdists.
1656
+
1657
+ * Handle `.tar.bz2` & `.tgz` sdists when locking. (#2380)
1658
+
1659
+ ## 2.2.1
1660
+
1661
+ This release trims down the size of the Pex wheel on PyPI and the
1662
+ released Pex PEX by about 20KB by consolidating image resources.
1663
+
1664
+ This release also fixes the release process to remove a window of time
1665
+ when several links would be dead on at https://docs.pex-tool.org that
1666
+ pointed to release artifacts that were not yet fully deployed.
1667
+
1668
+ * Fix release ordering of the doc site deploy. (#2369)
1669
+ * Trim embedded doc image assets. (#2368)
1670
+
1671
+ ## 2.2.0
1672
+
1673
+ This release adds tools to interact with Pex's new embedded offline
1674
+ documentation. You can browse those docs with `pex --docs` or, more
1675
+ flexibly, with `pex3 docs`. See `pex3 docs --help` for all the options
1676
+ available.
1677
+
1678
+ This release also returns to [SemVer](https://semver.org/) versioning
1679
+ practices. Simply, you can expect 3 things from Pex version numbers:
1680
+
1681
+ + The first component (the major version) will remain 2 as long as
1682
+ possible. Pex tries very hard to never break existing users and to
1683
+ allow them to upgrade without fear of breaking. This includes not
1684
+ breaking Python compatibility. In Pex 2, Python 2.7 is supported as
1685
+ well as Python 3.5+ for both CPython and PyPy. Pex will only continue
1686
+ to add support for new CPython and PyPy releases and never remove
1687
+ support for already supported Python versions while the major version
1688
+ remains 2.
1689
+ + The second component (the minor version) will be incremented whenever
1690
+ a release adds a feature. Since Pex is a command line tool only (not
1691
+ a library), this means you can expect a new subcommand, a new option,
1692
+ or a new allowable option value was added. Bugs might also have been
1693
+ fixed.
1694
+ + The third component (the patch version) indicates only bugs were
1695
+ fixed.
1696
+
1697
+ You can expect the minor version to get pretty big going forward!
1698
+
1699
+ * Add `pex --docs` and several `pex3 docs` options. (#2365)
1700
+
1701
+ ## 2.1.164
1702
+
1703
+ This release moves Pex documentation from https://pex.readthedocs.io to
1704
+ https://docs.pex-tool.org. While legacy versioned docs will remain
1705
+ available at RTD in perpetuity, going forward only the latest Pex
1706
+ release docs will be available online at the https://docs.pex-tool.org
1707
+ site. If you want to see the Pex docs for the version you are currently
1708
+ using, Pex now supports the `pex3 docs` command which will serve the
1709
+ docs for your Pex version locally, offline, but with full functionality,
1710
+ including search.
1711
+
1712
+ * Re-work Pex documentation. (#2362)
1713
+
1714
+ ## 2.1.163
1715
+
1716
+ This release fixes Pex to work in certain OS / SSL environments where it
1717
+ did not previously. In particular, under certain Fedora distributions
1718
+ using certain Python Build Standalone interpreters.
1719
+
1720
+ * Create SSLContexts in the main thread. (#2356)
1721
+
1722
+ ## 2.1.162
1723
+
1724
+ This release adds support for `--pip-version 24.0` as well as fixing a
1725
+ bug in URL encoding for artifacts in lock files. Notably, torch's use of
1726
+ local version identifiers (`+cpu`) combined with their find links page
1727
+ at https://download.pytorch.org/whl/torch_stable.html would lead to
1728
+ `pex3 lock create` errors.
1729
+
1730
+ * Add support for Pip 24.0. (#2350)
1731
+ * Fix URL escaping for lock artifacts. (#2349)
1732
+
1733
+ ## 2.1.161
1734
+
1735
+ This release adds support for `--only-wheel <project name>` and
1736
+ `--only-build <project name>` to allow finer control over which
1737
+ distribution artifacts are resolved when building a PEX or creating or
1738
+ updating a lock file. These options correspond to Pip's `--only-binary`
1739
+ and `--no-binary` options with project name arguments.
1740
+
1741
+ * Plumb Pip's `--{no,only}-binary`. (#2346)
1742
+
1743
+ ## 2.1.160
1744
+
1745
+ This release adds the ability for `pex3 lock update` to replace
1746
+ requirements in a lock or delete them from the lock using
1747
+ `-R` / `--replace-project` and `-d` / `--delete-project`, respectively.
1748
+
1749
+ * Lock updates support deleting & replacing reqs. (#2335)
1750
+
1751
+ ## 2.1.159
1752
+
1753
+ This release brings a fix for leaks of Pex's vendored `attrs` onto the
1754
+ `sys.path` of PEXes during boot in common usage scenarios.
1755
+
1756
+ * Fix vendored attrs `sys.path` leak. (#2328)
1757
+
1758
+ ## 2.1.158
1759
+
1760
+ This release adds support for tab completion to all PEX repls running
1761
+ under Pythons with the `readline` module available. This tab completion
1762
+ support is on-par with newer Python REPL out of the box tab completion
1763
+ support.
1764
+
1765
+ * Add tab-completion support to PEX repls. (#2321)
1766
+
1767
+ ## 2.1.157
1768
+
1769
+ This release fixes a bug in `pex3 lock update` for updates that leave
1770
+ projects unchanged whose primary artifact is an sdist.
1771
+
1772
+ * Fix lock updates for locks with sdist bystanders. (#2325)
1773
+
1774
+ ## 2.1.156
1775
+
1776
+ This release optimizes wheel install overhead for warm caches. Notably,
1777
+ this speeds up warm boot for PEXes containing large distributions like
1778
+ PyTorch as well as creating venvs from them.
1779
+
1780
+ * Lower noop wheel install overhead. (#2315)
1781
+
1782
+ ## 2.1.155
1783
+
1784
+ This release brings support for `--pip-version 23.3.2` along with
1785
+ optimizations that reduce built PEX size for both `--include-tools` and
1786
+ `--venv` PEXes (which includes the Pex PEX) as well as reduce PEX build
1787
+ time for `--pre-install-wheels` PEXes (the default) and PEX cold first
1788
+ boot time for `--no-pre-install-wheels` PEXes that use more than one
1789
+ parallel install job.
1790
+
1791
+ * Add support for Pip 23.3.2. (#2307)
1792
+ * Remove `Pip.spawn_install_wheel` & optimize. (#2305)
1793
+ * Since we no longer use wheel code, remove it. (#2302)
1794
+
1795
+ ## 2.1.154
1796
+
1797
+ This release brings three new features:
1798
+
1799
+ 1. When creating PEXes without specifying an explicit
1800
+ `--python-shebang`, an appropriate shebang is chosen correctly in
1801
+ more cases than previously and a warning is emitted when the shebang
1802
+ chosen cannot be guaranteed to be correct. The common case this
1803
+ helps select the appropriate shebang for is PEXes built using
1804
+ `--platform` or `--complete-platform`.
1805
+ 2. PEXes can now be created with `--no-pre-install-wheels` to cut down
1806
+ PEX build times with a tradeoff of roughly 10% greater boot overhead
1807
+ upon the 1st execution of the PEX file. For PEXes with very large
1808
+ dependency sets (machine learning provides common cases), the build
1809
+ time savings can be dramatic.
1810
+ 3. PEXes can now be told to install dependencies at runtime on 1st
1811
+ execution using parallel processes using `--max-install-jobs` at PEX
1812
+ build time or by setting the `PEX_MAX_INSTALL_JOBS` environment
1813
+ variable at runtime.
1814
+
1815
+ The last two features come with complicated tradeoffs and are turned off
1816
+ by default as a result. If you think they might help some of your use
1817
+ cases, there is more detail in the command line help for
1818
+ `--no-pre-install-wheels` and `--max-install-jobs` as well as in the
1819
+ `pex --help-variables` output for `PEX_MAX_INSTALL_JOBS`. You can also
1820
+ find a detailed performance analysis in #2292 for the extreme cases of
1821
+ very small and very large PEXes. In the end though, experimenting is
1822
+ probably your best bet.
1823
+
1824
+ * Use appropriate shebang for multi-platform PEXes. (#2296)
1825
+ * Add support for --no-pre-install-wheels and --max-install-jobs. (#2298)
1826
+
1827
+ ## 2.1.153
1828
+
1829
+ This release fixes Pex runtime `sys.path` scrubbing to do less work and
1830
+ thus avoid errors parsing system installed distributions with bad
1831
+ metadata.
1832
+
1833
+ * Remove Pex runtime scrubbing dist discovery. (#2290)
1834
+
1835
+ ## 2.1.152
1836
+
1837
+ This release fixes the computation of the hash of the code within a PEX
1838
+ when nested within directories, a bug introduced in 2.1.149.
1839
+
1840
+ * Exclude pyc dirs, not include, when hashing code (#2286)
1841
+
1842
+ ## 2.1.151
1843
+
1844
+ This release brings support for a new `--exclude <req>` PEX build option
1845
+ that allows eliding selected resolved distributions from the final PEX.
1846
+ This is an advanced feature that will, in general, lead to broken PEXes
1847
+ out of the box; so read up on the `--exclude` command line help to make
1848
+ sure you understand the consequences.
1849
+
1850
+ This release also brings a fix for `--inject-env` that ensures the
1851
+ specified environment variables are always injected to the PEX at
1852
+ runtime regardless of the PEX entry point exercised.
1853
+
1854
+ * Implement support for `--exclude <req>`. (#2281)
1855
+ * Relocate environment variable injection to before the interpreter is run (#2260)
1856
+
1857
+ ## 2.1.150
1858
+
1859
+ This release brings support for `--pip-version 23.3.1`.
1860
+
1861
+ * Add support for Pip 23.3.1. (#2276)
1862
+
1863
+ ## 2.1.149
1864
+
1865
+ Fix `--style universal` lock handing of `none` ABI wheels with a
1866
+ specific Python minor version expressed in their wheel tag. There are
1867
+ not many of these in the wild, but a user discovered the case of
1868
+ python-forge 18.6.0 which supplies 1 file on PyPI:
1869
+ `python_forge-18.6.0-py35-none-any.whl`.
1870
+
1871
+ * Fix universal lock handling of the none ABI. (#2270)
1872
+
1873
+ ## 2.1.148
1874
+
1875
+ Add support to the Pex for checking if built PEXes are valid Python
1876
+ zipapps. Currently, Python zipapps must reside in 32 bit zip files due
1877
+ to limitations of the stdlib `zipimport` module's `zipimporter`; so this
1878
+ check amounts to a check that the built PEX zip does not use ZIP64
1879
+ extensions. The check is controlled with a new
1880
+ `--check {none,warn,error}` option, defaulting to warn.
1881
+
1882
+ * Add --check support for zipapps. (#2253)
1883
+
1884
+ ## 2.1.147
1885
+
1886
+ Add support for `--use-pip-config` to allow the Pip Pex calls to read
1887
+ `PIP_*` env vars and Pip configuration files. This can be particularly
1888
+ useful for picking up custom index configuration (including auth).
1889
+
1890
+ * Add support for --use-pip-config. (#2243)
1891
+
1892
+ ## 2.1.146
1893
+
1894
+ This release brings a fix by new contributor @yjabri for the `__pex__`
1895
+ import hook that gets it working properly for `--venv` mode PEXes.
1896
+
1897
+ * Fix non executable venv sys path bug (#2236)
1898
+
1899
+ ## 2.1.145
1900
+
1901
+ This release broadens the range of the `flit-core` build system Pex uses
1902
+ to include 3.x, which is known to work for modern Python versions and
1903
+ Pex's existing build configuration.
1904
+
1905
+ * Raise the flit-core limit for Python 3 (#2229)
1906
+
1907
+ ## 2.1.144
1908
+
1909
+ This release fixes Pex to build PEX files with deterministic file order
1910
+ regardless of the operating system / file system the PEX was built on.
1911
+
1912
+ * Traverse directories in stable order when building a PEX (#2220)
1913
+
1914
+ ## 2.1.143
1915
+
1916
+ This release fixes Pex to work by default under eCryptFS home dirs.
1917
+
1918
+ * Guard against too long filenames on eCryptFS. (#2217)
1919
+
1920
+ ## 2.1.142
1921
+
1922
+ This release fixes Pex to handle Pip backtracking due to sdist build
1923
+ errors when attempting to extract metadata.
1924
+
1925
+ * Handle backtracking due to sdist build errors. (#2213)
1926
+
1927
+ ## 2.1.141
1928
+
1929
+ This release fixes the Pex CLI to work when run from a read-only
1930
+ installation. A prominent example of this comes in certain nix setups.
1931
+
1932
+ * Fix the Pex CLI to work when installed read-only. (#2205)
1933
+
1934
+ ## 2.1.140
1935
+
1936
+ This release fixes several spurious warnings emitted for Python 3.11 and
1937
+ 3.12 users and fixes a leak of Pex's vendored `attrs` when using the
1938
+ `__pex__` import hook.
1939
+
1940
+ * Eliminate warnings for default use. (#2188)
1941
+ * Cleanup sys.path after __pex__ is imported. (#2189)
1942
+
1943
+ ## 2.1.139
1944
+
1945
+ This release brings support for Python 3.12 and Pip 23.2 which is the
1946
+ minimum required Pip version for Python 3.12. N.B.: Since Pip 23.2
1947
+ requires Python 3.7 or newer, multiplatform PEX files and locks that
1948
+ support Python 3.12 will not also be able to support Python 2.7, 3.5
1949
+ or 3.6 even though Pex continues to support those versions generally.
1950
+
1951
+ In addition, two new options for adding local project source files to
1952
+ a pex are added: `-P/--package` and `-M/--module`. Importantly, you can
1953
+ use the options instead of the existing `-D/--sources-directory` when
1954
+ you have a project with code at the top level (i.e.: not in a `src/`
1955
+ subdirectory for example) intermixed with other files you prefer not to
1956
+ include in the PEX. See `pex --help` for more details on using these new
1957
+ options.
1958
+
1959
+ Finally, an internal API is fixed that allows for Lambdex files to
1960
+ include versions of `attrs` incompatible with Pex's own vendored version.
1961
+
1962
+ * Add official support for Python 3.12 / Pip 23.2. (#2176)
1963
+ * Add support for selecting packages and modules. (#2181)
1964
+ * Fix `pex.pex_bootstrapper.bootstrap_pex_env` leak. (#2184)
1965
+
1966
+ ## 2.1.138
1967
+
1968
+ This release brings fixes for two obscure corner cases.
1969
+
1970
+ Previously, if you used `--venv` PEXes in the default symlinked
1971
+ site-packages mode that contained first party code in a namespace
1972
+ package shared with 3rd-party dependencies the first party code would
1973
+ contaminate the Pex installed wheel cache for one of the 3rd-party
1974
+ dependencies in PEX.
1975
+
1976
+ Even more obscure (the only known issue was in Pex's own CI), if you
1977
+ ran the Pex CLI concurrently using two different `--pip-version`
1978
+ arguments, you may have seen spurious Pip HTTP errors that found an
1979
+ invalid `Content-Type: Unknown` header.
1980
+
1981
+ * Isolate the Pip cache per Pip version. (#2164)
1982
+ * Fix symlinked venv ns-package calcs. (#2165)
1983
+
1984
+ ## 2.1.137
1985
+
1986
+ This release fixes a long-standing bug in lock file creation for exotic
1987
+ locking scenarios pulling the same project from multiple artifact
1988
+ sources (any mix of URLs, VCS and local project directories).
1989
+
1990
+ * Fix inter-artifact comparisons. (#2152)
1991
+
1992
+ ## 2.1.136
1993
+
1994
+ This release adds the `pex3 lock export-subset` command. This is a
1995
+ version of `pex3 lock export` that also accepts requirements arguments
1996
+ allowing just a subset of the lock satisfying the given requirements to
1997
+ be exported.
1998
+
1999
+ * Add `pex3 lock export-subset`. (#2145)
2000
+
2001
+ ## 2.1.135
2002
+
2003
+ This release brings support for `pex3 venv {inspect,create}` for working
2004
+ with venvs directly using Pex. Previously, a PEX built with
2005
+ `--include-tools` (or `--venv`) had the capability of turning itself
2006
+ into a venv but the new `pex3 venv create` command can do this for any
2007
+ PEX file with the addition of a few new features:
2008
+
2009
+ 1. The venv can now be created directly from requirements producing no
2010
+ intermediate PEX file.
2011
+ 2. The venv can be created either from a PEX file or a lock file. A
2012
+ subset of either of those can be chosen by also supplying
2013
+ requirements.
2014
+ 3. Instead of creating a full-fledged venv, just the site-packages can
2015
+ be exported (without creating an intermediate venv). This "flat"
2016
+ layout is used by several prominent runtimes - notably AWS Lambda
2017
+ -and emulates `pip install --target`. This style layout can also be
2018
+ zipped and prefixed. Additionally, it supports `--platform` and
2019
+ `--complete-platform` allowing creation of, for example, an AWS
2020
+ Lambda (or Lambda Layer) deployment zip on a non-Linux host.
2021
+
2022
+ Additionally, this release adds support for Pip 23.1.1 and 23.1.2.
2023
+
2024
+ * Add Support for Pip 23.1.1. (#2133)
2025
+ * Introduce pex3 venv inspect. (#2135)
2026
+ * Introduce pex3 venv create. (#2140)
2027
+ * Add support for Pip 23.1.2. (#2142)
2028
+
2029
+ ## 2.1.134
2030
+
2031
+ This release fixes `pex3 lock create` gathering of sdist metadata for
2032
+ PEP-517 build backends with non-trivial `get-requires-for-build-wheel`
2033
+ requirements.
2034
+
2035
+ * Use get_requires_for_build_wheel for metadata prep. (#2129)
2036
+
2037
+ ## 2.1.133
2038
+
2039
+ This release fixes `--venv` mode PEX venv script shebangs for some
2040
+ scenarios using Python `<=3.7` interpreters.
2041
+
2042
+ * Fix venv script shebangs. (#2122)
2043
+
2044
+ ## 2.1.132
2045
+
2046
+ This release brings support for the latest Pip release with
2047
+ `--pip-version 23.1` or by using new support for pinning to the latest
2048
+ version of Pip supported by Pex with `--pip-version latest`.
2049
+
2050
+ * Add support for Pip 23.1 (#2114)
2051
+ * Add support for `--pip-version latest`. (#2116)
2052
+
2053
+ ## 2.1.131
2054
+
2055
+ This release fixes some inconsistencies in Pex JSON output across the
2056
+ Python 2/3 boundary and in handling of venv collisions when using the
2057
+ venv Pex tool.
2058
+
2059
+ * Stabilize JSON output format across Python 2/3. (#2106)
2060
+ * Support `--pip` overrides via PEX deps. (#2107)
2061
+
2062
+ ## 2.1.130
2063
+
2064
+ This release fixes a regression locking certain complex cases of direct
2065
+ and transitive requirement interactions as exemplified in #2098.
2066
+
2067
+ * Guard lock analysis against Pip-cached artifacts. (#2103)
2068
+
2069
+ ## 2.1.129
2070
+
2071
+ This release fixes a bug downloading a VCS requirement from a lock when
2072
+ the ambient Python interpreter used to run Pex does not meet the
2073
+ `Requires-Python` constraint of the VCS requirement.
2074
+
2075
+ * Fix VCS lock downloads to respect target. (#2094)
2076
+
2077
+ ## 2.1.128
2078
+
2079
+ This release fixes a regression introduced in Pex 2.1.120 that caused
2080
+ `--no-venv-site-packages-copies` (the default when using `--venv`) to
2081
+ be ignored for both zipapp PEXes (the default) and `--layout packed`
2082
+ PEXes.
2083
+
2084
+ * Fix regression in venv symlinking. (#2090)
2085
+
2086
+ ## 2.1.127
2087
+
2088
+ This release fixes `--lock` resolve sub-setting for local project
2089
+ requirements.
2090
+
2091
+ * Fix lock subsetting for local projects. (#2085)
2092
+
2093
+ ## 2.1.126
2094
+
2095
+ This release fixes a long-standing (> 4 years old!) concurrency bug
2096
+ when building the same sdist for the 1st time and racing another Pex
2097
+ process doing the same sdist build.
2098
+
2099
+ * Guard against racing sdist builds. (#2080)
2100
+
2101
+ ## 2.1.125
2102
+
2103
+ This release makes `--platform` and `--complete-platform` resolves and
2104
+ locks as permissive as possible. If such a resolve or lock only has an
2105
+ sdist available for a certain project, that sdist will now be used if it
2106
+ builds to a wheel compatible with the specified foreign platform(s).
2107
+
2108
+ * Attempt "cross-builds" of sdists for foreign platforms. (#2075)
2109
+
2110
+ ## 2.1.124
2111
+
2112
+ This release adds support for specifying `--non-hermetic-venv-scripts`
2113
+ when building a `--venv` PEX. This can be useful when integrating with
2114
+ frameworks that do setup via `PYTHONPATH` manipulation.
2115
+
2116
+ Support for Pip 23.0.1 and setuptools 67.4.0 is added via
2117
+ `--pip-version 23.0.1`.
2118
+
2119
+ Additionally, more work towards hardening Pex against rare concurrency
2120
+ issues in its atomic directory handling is included.
2121
+
2122
+ * Introduce `--non-hermetic-venv-scripts`. (#2068)
2123
+ * Wrap inter-process locks in in-process locks. (#2070)
2124
+ * Add support for Pip 23.0.1. (#2072)
2125
+
2126
+ ## 2.1.123
2127
+
2128
+ This release fixes a few `pex3 lock create` bugs.
2129
+
2130
+ There was a regression introduced in Pex 2.1.122 where projects that
2131
+ used a PEP-518 `[build-system] requires` but specified no corresponding
2132
+ `build-backend` would fail to lock.
2133
+
2134
+ There were also two long-standing issues handling more exotic direct
2135
+ reference URL requirements. Source archives with names not following the
2136
+ standard Python sdist naming scheme of
2137
+ `<project name>-<version>.{zip,tar.gz}` would cause a lock error. An
2138
+ important class of these is provided by GitHub's magic source archive
2139
+ download URLs. Also, although local projects addressed with Pip
2140
+ proprietary support for pure local path requirements would lock, the
2141
+ same local projects addressed via
2142
+ `<project name> @ file://<local project path>` would also cause a lock
2143
+ error. Both of these cases are now fixed and can be locked successfully.
2144
+
2145
+ When locking with an `--interpreter-constraint`, any resolve traversing
2146
+ wheels using the `pypyXY` or `cpythonXY` python tags would cause the
2147
+ lock to error. Wheels with this form of python tag are now handled
2148
+ correctly.
2149
+
2150
+ * Handle `[build-system]` with no build-backend. (#2064)
2151
+ * Handle locking all direct reference URL forms. (#2060)
2152
+ * Fix python tag handling in IC locks. (#2061)
2153
+
2154
+ ## 2.1.122
2155
+
2156
+ This release fixes posix file locks used by Pex internally and enhances
2157
+ lock creation to support locking sdist-only C extension projects that do
2158
+ not build on the current platform. Pex is also updated to support
2159
+ `--pip-version 22.3.1` and `--pip-version 23.0`, bringing it up to date
2160
+ with the latest Pip's available.
2161
+
2162
+ * Support the latest Pip releases: 22.3.1 & 23.0 (#2056)
2163
+ * Lock sdists with `prepare-metadata-for-build-wheel`. (#2053)
2164
+ * Fix `execute_parallel` "leaking" a thread. (#2052)
2165
+
2166
+ ## 2.1.121
2167
+
2168
+ This release fixes two bugs brought to light trying to interoperate with
2169
+ Poetry projects.
2170
+
2171
+ * Support space separated markers in URL reqs. (#2039)
2172
+ * Handle `file://` URL deps in distributions. (#2041)
2173
+
2174
+ ## 2.1.120
2175
+
2176
+ This release completes the `--complete-platform` fix started in Pex
2177
+ 2.1.116 by #1991. That fix did not work in all cases but now does.
2178
+
2179
+ PEXes run in interpreter mode now support command history when the
2180
+ underlying interpreter being used to run the PEX does; use the
2181
+ `PEX_INTERPRETER_HISTORY` bool env var to turn this on.
2182
+
2183
+ Additionally, PEXes built with the combination
2184
+ `--layout loose --venv --no-venv-site-packages-copies` are fixed to be
2185
+ robust to moves of the source loose PEX directory.
2186
+
2187
+ * Fix loose `--venv` PEXes to be robust to moves. (#2033)
2188
+ * Fix interpreter resolution when using `--complete-platform` with
2189
+ `--resolve-local-platforms` (#2031)
2190
+ * Support REPL command history. (#2018)
2191
+
2192
+ ## 2.1.119
2193
+
2194
+ This release brings two new features. The venv pex tool now just warns
2195
+ when using `--compile` and there is a `*.pyc` compile error instead of
2196
+ failing to create the venv. Also, a new `PEX_DISABLE_VARIABLES` env var
2197
+ knob is added to turn off reading all `PEX_*` env vars from the
2198
+ environment.
2199
+
2200
+ * Ignore compile error for `PEX_TOOLS=1` (#2002)
2201
+ * Add `PEX_DISABLE_VARIABLES` to lock down a PEX run. (#2014)
2202
+
2203
+ ## 2.1.118
2204
+
2205
+ This is a very tardy hotfix release for a regression introduced in Pex
2206
+ 2.1.91 by #1785 that replaced `sys.argv[0]` with its fully resolved
2207
+ path. This prevented introspecting the actual file path used to launch
2208
+ the PEX which broke BusyBox-alike use cases.
2209
+
2210
+ There is also a new `--non-hermetic-scripts` option accepted by the
2211
+ `venv` tool to allow running console scripts with `PYTHONPATH`
2212
+ adjustments to the `sys.path`.
2213
+
2214
+ * Remove un-needed realpathing of `sys.argv[0]`. (#2007)
2215
+ * Add `--non-hermetic-scripts` option to `venv` tool. (#2010)
2216
+
2217
+ ## 2.1.117
2218
+
2219
+ This release fixes a bug introduced in Pex 2.1.109 where the released
2220
+ Pex PEX could not be executed by PyPy interpreters. More generally, any
2221
+ PEX created with interpreter constraints that did not specify the Python
2222
+ implementation, e.g.: `==3.8.*`, were interpreted as being CPython
2223
+ specific, i.e.: `CPython==3.8.*`. This is now fixed, but if the
2224
+ intention of a constraint like `==3.8.*` was in fact to restrict to
2225
+ CPython only, interpreter constraints need to say so now and use
2226
+ `CPython==3.8.*` explicitly.
2227
+
2228
+ * Fix interpreter constraint parsing. (#1998)
2229
+
2230
+ ## 2.1.116
2231
+
2232
+ This release fixes a bug in `--resolve-local-platforms` when
2233
+ `--complete-platform` was used.
2234
+
2235
+ * Check for `--complete-platforms` match when
2236
+ `--resolve-local-platforms` (#1991)
2237
+
2238
+ ## 2.1.115
2239
+
2240
+ This release brings some attention to the `pex3 lock export` subcommand
2241
+ to make it more useful when interoperating with `pip-tools`.
2242
+
2243
+ * Sort requirements based on normalized project name when exporting
2244
+ (#1992)
2245
+ * Use raw version when exporting (#1990)
2246
+
2247
+ ## 2.1.114
2248
+
2249
+ This release brings two fixes for `--venv` mode PEXes.
2250
+
2251
+ * Only insert `""` to head of `sys.path` if a venv PEX runs in
2252
+ interpreter mode (#1984)
2253
+ * Map pex python path interpreter to realpath when creating venv dir
2254
+ hash. (#1972)
2255
+
2256
+ ## 2.1.113
2257
+
2258
+ This is a hotfix release that fixes errors installing wheels when there
2259
+ is high parallelism in execution of Pex processes. These issues were a
2260
+ regression introduced by #1961 included in the 2.1.112 release.
2261
+
2262
+ * Restore AtomicDirectory non-locked good behavior. (#1974)
2263
+
2264
+ ## 2.1.112
2265
+
2266
+ This release brings support for the latest Pip release and includes some
2267
+ internal changes to help debug intermittent issues some users are seeing
2268
+ that implicate what may be file locking related bugs.
2269
+
2270
+ * Add support for `--pip-version 22.3`. (#1953)
2271
+
2272
+ ## 2.1.111
2273
+
2274
+ This release fixes resolving requirements from a lock using arbitrary
2275
+ equality (`===`).
2276
+
2277
+ In addition, you can now "inject" runtime environment variables and
2278
+ arguments into PEX files such that, when run, the PEX runtime ensures
2279
+ those environment variables and command line arguments are passed to the
2280
+ PEXed application. See [PEX Recipes](
2281
+ https://docs.pex-tool.org/recipes.html#uvicorn-and-other-customizable-application-servers
2282
+ )
2283
+ for more information.
2284
+
2285
+ * Fix lock resolution to handle arbitrary equality. (#1951)
2286
+ * Support injecting args and env vars in a PEX. (#1948)
2287
+
2288
+ ## 2.1.110
2289
+
2290
+ This release fixes Pex runtime `sys.path` scrubbing for cases where Pex
2291
+ is not the main entry point. An important example of this is in Lambdex
2292
+ where the AWS Lambda Python runtime packages (`boto3` and `botocore`)
2293
+ are leaked into the PEX runtime `sys.path`.
2294
+
2295
+ * Fix `sys.path` scrubbing. (#1946)
2296
+
2297
+ ## 2.1.109
2298
+
2299
+ This release brings musllinux wheel support and a fix for a regression
2300
+ introduced in Pex 2.1.105 by #1902 that caused `PEX_PATH=` (an exported
2301
+ `PEX_PATH` with an empty string value) to raise an error in almost all
2302
+ use cases.
2303
+
2304
+ * Vendor latest packaging; support musllinux wheels. (#1937)
2305
+ * Don't treat `PEX_PATH=` as `.` like other PATHS. (#1938)
2306
+
2307
+ ## 2.1.108
2308
+
2309
+ This release fixes a latent PEX boot performance bug triggered by
2310
+ requirements with large extras sets.
2311
+
2312
+ * Fix slow PEX boot time when there are many extras. (#1929)
2313
+
2314
+ ## 2.1.107
2315
+
2316
+ This release fixes an issue handling credentials in git+ssh VCS urls
2317
+ when creating locks.
2318
+
2319
+ * Fix locks for git+ssh with credentials. (#1923)
2320
+
2321
+ ## 2.1.106
2322
+
2323
+ This release fixes a long-standing bug in handling direct reference
2324
+ requirements with a local version component.
2325
+
2326
+ * Unquote path component of parsed url requirements (#1920)
2327
+
2328
+ ## 2.1.105
2329
+
2330
+ This is a fix release which addresses issues related to build time
2331
+ work_dir creation, virtualenv, and sh_boot support.
2332
+
2333
+ In the unlikely event of a UUID collision in atomic workdir creation,
2334
+ pex could overwrite an existing directory and cause a corrupt state.
2335
+ When building a shell bootable `--sh-boot` pex the `--runtime-pex-root`
2336
+ was not always respected based on the condition of the build
2337
+ environment, and the value of the PEX_ROOT.
2338
+
2339
+ * Fail on atomic_directory work_dir collision. (#1905)
2340
+ * Use raw_pex_root when constructing sh_boot pexes. (#1906)
2341
+ * Add support for offline downloads (#1898)
2342
+
2343
+ ## 2.1.104
2344
+
2345
+ This release brings a long-awaited upgrade of the Pip Pex uses, but
2346
+ behind a `--pip-version 22.2.2` flag you must opt in to. Pex will then
2347
+ use that version of Pip if it can (your Pex operations target Python
2348
+ `>=3.7`) and warn and fall back to the older vendored Pip (20.3.4) if it
2349
+ can't. To turn the need to fall back to older Pip from a warning into a
2350
+ hard error you can also specify `--no-allow-pip-version-fallback`.
2351
+
2352
+ The `pex3 lock update` command now gains the ability to update just the
2353
+ index and find links repos the lock's artifacts originate from by using
2354
+ a combination of `--no-pypi`, `--index` & `--find-links` along with
2355
+ `--pin` to ensure the project versions stay pinned as they are in the
2356
+ lockfile and just the repos they are downloaded from is altered. Consult
2357
+ the CLI `--help` for `--fingerprint-mismatch {ignore,warn,error}` to
2358
+ gain more control over repo migration behavior.
2359
+
2360
+ There are several bug fixes as well dealing with somewhat esoteric
2361
+ corner cases involving changing a PEX `--layout` from one form to
2362
+ another and building artifacts using certain interpreters on macOS 11.0
2363
+ (aka: 10.16).
2364
+
2365
+ * Add support for Pip 22.2.2. (#1893)
2366
+ * Make lock update sensitive to artifacts. (#1887)
2367
+ * Ensure locally built wheel is consumable locally. (#1886)
2368
+ * Ensure `--output` always overwrites destination. (#1883)
2369
+
2370
+ ## 2.1.103
2371
+
2372
+ This release fixes things such that pex lockfiles can be created and
2373
+ updated using the Pex PEX when local projects are involved.
2374
+
2375
+ * Fix `pex3 lock ...` when run from the Pex PEX. (#1874)
2376
+
2377
+ ## 2.1.102
2378
+
2379
+ This is a hotfix release that fixes a further corner missed by #1863 in
2380
+ the Pex 2.1.101 release whereby Pex would fail to install
2381
+ platform-specific packages on Red Hat based OSes.
2382
+
2383
+ In addition, an old but only newly discovered bug in
2384
+ `--inherit-path={prefer,fallback}` handling is fixed. Previously only
2385
+ using `PEX_INHERIT_PATH={prefer,fallback}` at runtime worked properly.
2386
+
2387
+ In the process of fixing the old `--inherit-path={prefer,fallback}` bug,
2388
+ also fix another old bug handling modern virtualenv venvs under Python
2389
+ 2.7 during zipapp execution mode PEX boots.
2390
+
2391
+ * Fix wheel installs: account for purelib & platlib. (#1867)
2392
+ * Fix `--inhert-path` handling. (#1871)
2393
+ * Error using pex + `virtualenv>=20.0.0` + python 2.7 (#992)
2394
+
2395
+ ## 2.1.101
2396
+
2397
+ This release fixes a corner-case revealed by python-certifi-win32 1.6.1
2398
+ that was not previously handled when installing certain distributions.
2399
+
2400
+ * Make wheel install `site-packages` detection robust. (#1863)
2401
+
2402
+ ## 2.1.100
2403
+
2404
+ This release fixes a hole in the lock creation `--target-system` feature
2405
+ added in #1823 in Pex 2.1.95.
2406
+
2407
+ * Fix lock creation `--target-system` handling. (#1858)
2408
+
2409
+ ## 2.1.99
2410
+
2411
+ This release fixes a concurrency bug in the `pex --lock ...` artifact
2412
+ downloading.
2413
+
2414
+ * Fix `pex --lock ...` concurrent download errors. (#1854)
2415
+
2416
+ ## 2.1.98
2417
+
2418
+ This releases fixes regressions in foreign `--platform` handling and
2419
+ artifact downloading introduced by #1787 in Pex 2.1.91 and #1811 in
2420
+ 2.1.93.
2421
+
2422
+ In addition, PEXes can now be used as `sys.path` entries. Once on the
2423
+ `sys.path`, via `PYTHONPATH` or other means, the code in the PEX can be
2424
+ made importable by first importing `__pex__` either as its own
2425
+ stand-alone import statement; e.g.: `import __pex__; import psutil` or
2426
+ as a prefix of the code to import from the PEX; e.g.:
2427
+ `from __pex__ import psutil`.
2428
+
2429
+ * Tags should be patched for `--platform`. (#1846)
2430
+ * Add support for importing from PEXes. (#1845)
2431
+ * Fix artifact downloads for foreign platforms. #1851
2432
+
2433
+ ## 2.1.97
2434
+
2435
+ This release patches a hole left by #1828 in the Pex 2.1.95 release
2436
+ whereby, although you could run a PEX under a too-long PEX_ROOT you
2437
+ could not build a PEX under a tool-long PEX_ROOT.
2438
+
2439
+ * Avoid ENOEXEC for Pex internal `--venv`s. (#1843)
2440
+
2441
+ ## 2.1.96
2442
+
2443
+ This is a hotfix release that fixes `--venv` mode `PEX_EXTRA_SYS_PATH`
2444
+ propagation introduced in Pex 2.1.95 to only apply to `sys.executable`
2445
+ and not other Pythons.
2446
+
2447
+ * Fix `--venv` `PEX PEX_EXTRA_SYS_PATH` propagation. (#1837)
2448
+
2449
+ ## 2.1.95
2450
+
2451
+ This release brings two new `pex3 lock` features for `--style universal`
2452
+ locks.
2453
+
2454
+ By default, universal locks are created to target all operating systems.
2455
+ This can cause problems when you only target a subset of operating
2456
+ systems and a lock transitive dependency that is conditional on an OS
2457
+ you do not target is not lockable. The new
2458
+ `--target-system {linux,mac,windows}` option allows you to restrict the
2459
+ set of targeted OSes to work around this sort of issue. Since PEX files
2460
+ currently only support running on Linux and Mac, specifying
2461
+ `--target-system linux --target-system mac` is a safe way to
2462
+ pre-emptively avoid these sorts of locking issues when creating a
2463
+ universal lock.
2464
+
2465
+ Previously you could not specify the `--platform`s or
2466
+ `--complete-platform`s you would be using later to build PEXes with when
2467
+ creating a universal lock. You now can, and Pex will verify the
2468
+ universal lock can support all the specified platforms.
2469
+
2470
+ As is usual there are also several bug fixes including properly
2471
+ propagating `PEX_EXTRA_SYS_PATH` additions to forked Python processes,
2472
+ fixing `pex3 lock export` to only attempt to export for the selected
2473
+ target and avoiding too long shebang errors for `--venv` mode PEXes in a
2474
+ robust way.
2475
+
2476
+ * Fix `PEX_EXTRA_SYS_PATH` propagation. (#1832)
2477
+ * Fix `pex3 lock export`: re-use `--lock` resolver. (#1831)
2478
+ * Avoid ENOEXEC for `--venv` shebangs. (#1828)
2479
+ * Check lock can resolve platforms at creation time. (#1824)
2480
+ * Support restricting universal lock target os. (#1823)
2481
+
2482
+ ## 2.1.94
2483
+
2484
+ This is a hotfix release that fixes a regression introduced in Pex
2485
+ 2.1.93 downloading certain sdists when using `pex --lock ...`.
2486
+
2487
+ * Fix `pex --lock ...` handling of sdists. (#1818)
2488
+
2489
+ ## 2.1.93
2490
+
2491
+ This release brings several new features in addition to bug fixes.
2492
+
2493
+ When creating a PEX the entry point can now be any local python script
2494
+ by passing `--exe path/to/python-script`.
2495
+
2496
+ The `pex3 lock update` command now supports a `-dry-dun check` mode that
2497
+ exits non-zero to indicate that a lock needs updating and the
2498
+ `-p / --project` targeted update arguments can now be new projects to
2499
+ attempt to add to the lock.
2500
+
2501
+ On the bug fix front, traditional zipapp mode PEX files now properly
2502
+ scrub `sys.displayhook` and `sys.excepthook` and their teardown sequence
2503
+ has now been simplified fixing logging to stderr late in teardown.
2504
+
2505
+ Finally, `pex3 lock create` now logs when requirement resolution is
2506
+ taking a long time to provide some sense of progress and suggest generic
2507
+ remedies and `pex --lock` now properly handles authentication.
2508
+
2509
+ * Support adding new requirements in a lock update. (#1797)
2510
+ * Add `pex3 lock update --dry-run check` mode. (#1799)
2511
+ * Universal locks no longer record a `platform_tag`. (#1800)
2512
+ * Support python script file executable. (#1807)
2513
+ * Fix PEX scrubbing to account for sys.excepthook. (#1810)
2514
+ * Simplify `PEX` teardown / leave stderr in tact. (#1813)
2515
+ * Surface pip download logging. (#1808)
2516
+ * Use pip download instead or URLFetcher. (#1811)
2517
+
2518
+ ## 2.1.92
2519
+
2520
+ This release adds support for locking local projects.
2521
+
2522
+ * Add support for local project locking. #1792
2523
+
2524
+ ## 2.1.91
2525
+
2526
+ This release fixes `--sh-boot` mode PEXes to have an argv0 and exported
2527
+ `PEX` environment variable consistent with standard Python boot PEXes;
2528
+ namely the absolute path of the originally invoked PEX.
2529
+
2530
+ * Fix `--sh-boot` argv0. (#1785)
2531
+
2532
+ ## 2.1.90
2533
+
2534
+ This release fixes Pex handling of sdists to be atomic and also fixes
2535
+ lock files to be emitted ending with a newline. In addition, many typos
2536
+ in Pex documentation were fixed in a contribution by Kian-Meng Ang.
2537
+
2538
+ * Ensure Pip cache operations are atomic. (#1778)
2539
+ * Ensure that lockfiles end in newlines. (#1774)
2540
+ * Fix typos (#1773)
2541
+
2542
+ ## 2.1.89
2543
+
2544
+ This release brings official support for CPython 3.11 and PyPy 3.9 as
2545
+ well as long needed robust runtime interpreter selection.
2546
+
2547
+ * Select PEX runtime interpreter robustly. (#1770)
2548
+ * Upgrade PyPy checking to latest. (#1767)
2549
+ * Add 3.11 support. (#1766)
2550
+
2551
+ ## 2.1.88
2552
+
2553
+ This release is a hotfix for 2.1.86 that handles unparseable `~/.netrc`
2554
+ files gracefully.
2555
+
2556
+ * Just warn when `~/.netrc` can't be loaded. (#1763)
2557
+
2558
+ ## 2.1.87
2559
+
2560
+ This release fixes `pex3 lock create` to handle relative `--tmpdir`.
2561
+
2562
+ * Fix lock save detection to be more robust. (#1760)
2563
+
2564
+ ## 2.1.86
2565
+
2566
+ This release fixes an oversight in lock file use against secured custom
2567
+ indexes and find links repos. Previously credentials were passed during
2568
+ the lock creation process via either `~/.netrc` or via embedded
2569
+ credentials in the custom indexes and find links URLs Pex was configured
2570
+ with. But, at lock use time, these credentials were not used. Now
2571
+ `~/.netrc` entries are always used and embedded credentials passed via
2572
+ custom URLS at lock creation time can be passed in the same manner at
2573
+ lock use time.
2574
+
2575
+ * Support credentials in URLFetcher. (#1754)
2576
+
2577
+ ## 2.1.85
2578
+
2579
+ This PyCon US 2022 release brings full support for Python interpreter
2580
+ emulation when a PEX is run in interpreter mode (without an entry point
2581
+ or else when forced via `PEX_INTERPRETER=1`).
2582
+
2583
+ A special thank you to Loren Arthur for contributing the fix in the
2584
+ Pantsbuild sprint at PyCon.
2585
+
2586
+ * PEX interpreters should support all underlying Python interpreter
2587
+ options. (#1745)
2588
+
2589
+ ## 2.1.84
2590
+
2591
+ This release fixes a bug creating a PEX from a `--lock` when pre-release
2592
+ versions are involved.
2593
+
2594
+ * Fix `--lock` handling of pre-release versions. (#1742)
2595
+
2596
+ ## 2.1.83
2597
+
2598
+ This releases fixes a bug creating `--style universal` locks with
2599
+ `--interpreter-constraint` configured when the ambient interpreter does
2600
+ not match the constraints and the resolved lock includes sdist primary
2601
+ artifacts.
2602
+
2603
+ * Fix universal lock creation for ICs. (#1738)
2604
+
2605
+ ## 2.1.82
2606
+
2607
+ This is a hotfix release for a regression in prerelease version handling
2608
+ introduced in the 2.1.81 release by #1727.
2609
+
2610
+ * Fix prerelease handling when checking resolves. (#1732)
2611
+
2612
+ ## 2.1.81
2613
+
2614
+ This release brings a fix to Pex resolve checking for distributions
2615
+ built by setuptools whose `Requires-Dist` metadata does not match a
2616
+ distibutions project name exactly (i.e.: no PEP-503 `[._-]`
2617
+ normalization was performed).
2618
+
2619
+ * Fix Pex resolve checking. (#1727)
2620
+
2621
+ ## 2.1.80
2622
+
2623
+ This release brings another fix for pathologically slow cases of lock
2624
+ creation as well as a new `--sh-boot` feature for creating PEXes that
2625
+ boot via `/bin/sh` for more resilience across systems with differing
2626
+ Python installations as well as offering lower boot latency.
2627
+
2628
+ * Support booting via `/bin/sh` with `--sh-boot`. (#1721)
2629
+ * Fix more pathologic lock creation slowness. (#1723)
2630
+
2631
+ ## 2.1.79
2632
+
2633
+ This release fixes `--lock` resolving for certain cases where extras are
2634
+ involved as well as introducing support for generating and consuming
2635
+ portable `--find-links` locks using `-path-mapping`.
2636
+
2637
+ * Fix `--lock` resolver extras handling. (#1719)
2638
+ * Support canonicalizing absolute paths in locks. (#1716)
2639
+
2640
+ ## 2.1.78
2641
+
2642
+ This release fixes missing artifacts in non-`strict` locks.
2643
+
2644
+ * Don't clear lock link database during analysis. (#1712)
2645
+
2646
+ ## 2.1.77
2647
+
2648
+ This release fixes pathologically slow cases of lock creation as well as
2649
+ introducing support for `--no-compression` to allow picking the
2650
+ time-space tradeoff you want for your PEX zips.
2651
+
2652
+ * Fix pathologic lock creation slowness. (#1707)
2653
+ * Support uncompressed PEXes. (#1705)
2654
+
2655
+ ## 2.1.76
2656
+
2657
+ This release finalizes spurious deadlock handling in `--lock` resolves
2658
+ worked around in #1694 in Pex 2.1.75.
2659
+
2660
+ * Fix lock_resolver to use BSD file locks. (#1702)
2661
+
2662
+ ## 2.1.75
2663
+
2664
+ This release fixes a deadlock when building PEXes in parallel via the
2665
+ new `--lock` flag.
2666
+
2667
+ * Avoid deadlock error when run in parallel. (#1694)
2668
+
2669
+ ## 2.1.74
2670
+
2671
+ This release fixes multiplatform `--lock` resolves for sdists that are
2672
+ built to multiple platform specific wheels, and it also introduces
2673
+ support for VCS requirements in locks.
2674
+
2675
+ * Add support for locking VCS requirements. (#1687)
2676
+ * Fix `--lock` for multiplatform via sdists. (#1689)
2677
+
2678
+ ## 2.1.73
2679
+
2680
+ This is a hotfix for various PEX issues:
2681
+
2682
+ 1. `--requirements-pex` handling was broken by #1661 in the 2.1.71
2683
+ release and is now fixed.
2684
+ 2. Creating `universal` locks now works using any interpreter when the
2685
+ resolver version is the `pip-2020-resolver`.
2686
+ 3. Building PEXes with `--lock` resolves that contain wheels with build
2687
+ tags in their names now works.
2688
+
2689
+ * Fix `--requirements-pex`. (#1684)
2690
+ * Fix universal locks for the `pip-2020-resolver`. (#1682)
2691
+ * Fix `--lock` resolve wheel tag parsing. (#1678)
2692
+
2693
+ ## 2.1.72
2694
+
2695
+ This release fixes an old bug with `--venv` PEXes initially executed
2696
+ with either `PEX_MODULE` or `PEX_SCRIPT` active in the environment.
2697
+
2698
+ * Fix venv creation to ignore ambient PEX env vars. (#1669)
2699
+
2700
+ ## 2.1.71
2701
+
2702
+ This release fixes the instability introduced in 2.1.68 by switching to
2703
+ a more robust means of determining venv layouts. Along the way it
2704
+ upgrades Pex internals to cache all artifacts with strong hashes (
2705
+ previously sha1 was used). It's strongly recommended to upgrade or use
2706
+ the exclude `!=2.1.68,!=2.1.69,!=2.1.70` when depending on an open-ended
2707
+ Pex version range.
2708
+
2709
+ * Switch Pex installed wheels to `--prefix` scheme. (#1661)
2710
+
2711
+ ## 2.1.70
2712
+
2713
+ This is another hotfix release for 2.1.68 that fixes a bug in `*.data/*`
2714
+ file handling for installed wheels which is outlined in [PEP
2715
+ 427](https://peps.python.org/pep-0427/#installing-a-wheel-distribution-1-0-py32-none-any-whl)
2716
+
2717
+ * Handle `*.data/*` RECORD entries not existing. (#1644)
2718
+
2719
+ ## 2.1.69
2720
+
2721
+ This is a hotfix release for a regression introduced in 2.1.68 for a
2722
+ narrow class of `--venv` `--no-venv-site-packages-copies` mode PEXes
2723
+ with special contents on the `PEX_PATH`.
2724
+
2725
+ * Fix venv creation for duplicate symlinked dists. (#1639)
2726
+
2727
+ ## 2.1.68
2728
+
2729
+ This release brings a fix for installation of additional data files in
2730
+ PEX venvs (More on additional data files
2731
+ [here](https://setuptools.pypa.io/en/latest/deprecated/distutils/setupscript.html?highlight=data_files#installing-additional-files))
2732
+ as well as a new venv install `--scope` that can be used to create fully
2733
+ optimized container images with PEXed applications (See how to use this
2734
+ feature
2735
+ [here](https://docs.pex-tool.org/recipes.html#pex-app-in-a-container)).
2736
+
2737
+ * Support splitting venv creation into deps & srcs. (#1634)
2738
+ * Fix handling of data files when creating venvs. (#1632)
2739
+
2740
+ ## 2.1.67
2741
+
2742
+ This release brings support for `--platform` arguments with a
2743
+ 3-component PYVER portion. This supports working around
2744
+ `python_full_version` environment marker evaluation failures for
2745
+ `--platform` resolves by changing, for example, a platform of
2746
+ `linux_x86_64-cp-38-cp38` to `linux_x86_64-cp-3.8.10-cp38`. This is
2747
+ likely a simpler way to work around these issues than using the
2748
+ `--complete-platform` facility introduced in 2.1.66 by #1609.
2749
+
2750
+ * Expand `--platform` syntax: support full versions. (#1614)
2751
+
2752
+ ## 2.1.66
2753
+
2754
+ This release brings a new `--complete-platform` Pex CLI option that can
2755
+ be used instead of `--platform` when more detailed foreign platform
2756
+ specification is needed to satisfy a resolve (most commonly, when
2757
+ `python_full_version` environment markers are in-play). This, paired
2758
+ with the new `pex3 interpreter inspect` command that can be used to
2759
+ generate complete platform data on the foreign platform machine being
2760
+ targeted, should allow all foreign platform PEX builds to succeed
2761
+ exactly as they would if run on that foreign platform as long as
2762
+ pre-built wheels are available for that foreign platform.
2763
+
2764
+ Additionally, PEXes now know how to set a usable process name when the
2765
+ PEX contains the `setproctitle` distribution. See
2766
+ [here](https://docs.pex-tool.org/recipes.html#long-running-pex-applications-and-daemons)
2767
+ for more information.
2768
+
2769
+ * Add support for `--complete-platform`. (#1609)
2770
+ * Introduce `pex3 interpreter inspect`. (#1607)
2771
+ * Use setproctitle to sanitize `ps` info. (#1605)
2772
+ * Respect `PEX_ROOT` in `PEXEnvironment.mount`. (#1599)
2773
+
2774
+ ## 2.1.65
2775
+
2776
+ This release really brings support for mac universal2 wheels. The fix
2777
+ provided by 2.1.64 was partial; universal2 wheels could be resolved at
2778
+ build time, but not at runtime.
2779
+
2780
+ * Upgrade vendored packaging to 20.9. (#1591)
2781
+
2782
+ ## 2.1.64
2783
+
2784
+ This release brings support for mac universal2 wheels.
2785
+
2786
+ * Update vendored Pip to 386a54f0. (#1589)
2787
+
2788
+ ## 2.1.63
2789
+
2790
+ This release fixes spurious collision warnings & errors when building
2791
+ venvs from PEXes that contain multiple distributions contributing to the
2792
+ same namespace package.
2793
+
2794
+ * Allow for duplicate files in venv population. (#1572)
2795
+
2796
+ ## 2.1.62
2797
+
2798
+ This release exposes three Pip options as Pex options to allow building
2799
+ PEXes for more of the Python distribution ecosystem:
2800
+
2801
+ 1. `--prefer-binary`: To prefer older wheels to newer sdists in a
2802
+ resolve which can help avoid problematic builds.
2803
+ 2. `--[no]-use-pep517`: To control how sdists are built: always using
2804
+ PEP-517, always using setup.py or the default, always using
2805
+ whichever is appropriate.
2806
+ 3. `--no-build-isolation`: To allow distributions installed in the
2807
+ environment to be seen during builds of sdists. This allows working
2808
+ around distributions with undeclared build dependencies by
2809
+ pre-installing them in the environment before running Pex.
2810
+
2811
+ * Expose more Pip options. (#1561)
2812
+
2813
+ ## 2.1.61
2814
+
2815
+ This release fixes a regression in Pex `--venv` mode compatibility with
2816
+ distributions that are members of a namespace package that was
2817
+ introduced by #1532 in the 2.1.57 release.
2818
+
2819
+ * Merge packages for `--venv-site-packages-copies`. (#1557)
2820
+
2821
+ ## 2.1.60
2822
+
2823
+ This release fixes a bug that prevented creating PEXes when duplicate
2824
+ compatible requirements were specified using the pip-2020-resolver.
2825
+
2826
+ * Fix Pex to be duplicate requirement agnostic. (#1551)
2827
+
2828
+ ## 2.1.59
2829
+
2830
+ This release adds the boolean option `--venv-site-packages-copies` to
2831
+ control whether `--venv` execution mode PEXes create their venv with
2832
+ copies (hardlinks when possible) or symlinks. It also fixes a bug that
2833
+ prevented Python 3.10 interpreters from being discovered when
2834
+ `--interpreter-constraint` was used.
2835
+
2836
+ * Add knob for `--venv` site-packages symlinking. (#1543)
2837
+ * Fix Pex to identify Python 3.10 interpreters. (#1545)
2838
+
2839
+ ## 2.1.58
2840
+
2841
+ This release fixes a bug handling relative `--cert` paths.
2842
+
2843
+ * Always pass absolute cert path to Pip. (#1538)
2844
+
2845
+ ## 2.1.57
2846
+
2847
+ This release brings a few performance improvements and a new
2848
+ `venv` pex-tools `--remove` feature that is useful for
2849
+ creating optimized container images from PEX files.
2850
+
2851
+ * Do not re-hash installed wheels. (#1534)
2852
+ * Improve space efficiency of `--venv` mode. (#1532)
2853
+ * Add venv `--remove {pex,all}` option. (#1525)
2854
+
2855
+ ## 2.1.56
2856
+
2857
+ * Fix wheel install hermeticity. (#1521)
2858
+
2859
+ ## 2.1.55
2860
+
2861
+ This release brings official support for Python 3.10 as well as fixing
2862
+ <https://docs.pex-tool.org> doc generation and fixing help for
2863
+ `pex-tools` / `PEX_TOOLS=1 ./my.pex` pex tools invocations that have too
2864
+ few arguments.
2865
+
2866
+ * Add official support for Python 3.10 (#1512)
2867
+ * Always register global options. (#1511)
2868
+ * Fix RTD generation by pinning docutils low. (#1509)
2869
+
2870
+ ## 2.1.54
2871
+
2872
+ This release fixes a bug in `--venv` creation that could mask deeper
2873
+ errors populating PEX venvs.
2874
+
2875
+ * Fix `--venv` mode short link creation. (#1505)
2876
+
2877
+ ## 2.1.53
2878
+
2879
+ This release fixes a bug identifying certain interpreters on macOS
2880
+ Monterey.
2881
+
2882
+ Additionally, Pex has two new features:
2883
+
2884
+ 1. It now exposes the `PEX` environment variable inside running PEXes
2885
+ to allow application code to both detect it's running from a PEX
2886
+ and determine where that PEX is located.
2887
+ 2. It now supports a `--prompt` option in the `venv` tool to allow for
2888
+ customization of the venv activation prompt.
2889
+
2890
+ * Guard against fake interpreters. (#1500)
2891
+ * Add support for setting custom venv prompts. (#1499)
2892
+ * Introduce the `PEX` env var. (#1495)
2893
+
2894
+ ## 2.1.52
2895
+
2896
+ This release makes a wider array of distributions resolvable for
2897
+ `--platform` resolves by inferring the `platform_machine` environment
2898
+ marker corresponding to the requested `--platform`.
2899
+
2900
+ * Populate `platform_machine` in `--platform` resolve. (#1489)
2901
+
2902
+ ## 2.1.51
2903
+
2904
+ This release fixes both PEX creation and `--venv` creation to handle
2905
+ distributions that contain scripts with non-ascii characters in them
2906
+ when running in environments with a default encoding that does not
2907
+ contain those characters under PyPy3, Python 3.5 and Python 3.6.
2908
+
2909
+ * Fix non-ascii script shebang re-writing. (#1480)
2910
+
2911
+ ## 2.1.50
2912
+
2913
+ This is another hotfix of the 2.1.48 release's `--layout` feature that
2914
+ fixes identification of `--layout zipapp` PEXes that have had their
2915
+ execute mode bit turned off. A notable example is the Pex PEX when
2916
+ downloaded from <https://github.com/pex-tool/pex/releases>.
2917
+
2918
+ * Fix zipapp layout identification. (#1448)
2919
+
2920
+ ## 2.1.49
2921
+
2922
+ This is a hotfix release that fixes the new `--layout {zipapp,packed}`
2923
+ modes for PEX files with no user code & just third party dependencies
2924
+ when executed against a `$PEX_ROOT` where similar PEXes built with the
2925
+ old `--not-zip-safe` option were run in the past.
2926
+
2927
+ * Avoid re-using old ~/.pex/code/ caches. (#1444)
2928
+
2929
+ ## 2.1.48
2930
+
2931
+ This releases introduces the `--layout` flag for selecting amongst the
2932
+ traditional zipapp layout as a single PEX zip file and two new directory
2933
+ tree based formats that may be useful for more sophisticated deployment
2934
+ scenarios.
2935
+
2936
+ The `--unzip` / `PEX_UNZIP` toggles for PEX runtime execution are now
2937
+ the default and deprecated as explicit options as a result. You can
2938
+ still select the venv runtime execution mode via the `--venv` /
2939
+ `PEX_VENV` toggles though.
2940
+
2941
+ * Remove zipapp execution mode & introduce `--layout`. (#1438)
2942
+
2943
+ ## 2.1.47
2944
+
2945
+ This is a hotfix release that fixes a regression for `--venv` mode PEXes
2946
+ introduced in #1410. These PEXes were not creating new venvs when the
2947
+ PEX was unconstrained and executed with any other interpreter than the
2948
+ interpreter the venv was first created with.
2949
+
2950
+ * Fix `--venv` mode venv dir hash. (#1428)
2951
+ * Clarify PEX_PYTHON & PEX_PYTHON_PATH interaction. (#1427)
2952
+
2953
+ ## 2.1.46
2954
+
2955
+ This release improves PEX file build reproducibility and requirement
2956
+ parsing of environment markers in Pip's proprietary URL format.
2957
+
2958
+ Also, the `-c` / `--script` / `--console-script` argument now supports
2959
+ non-Python distribution scripts.
2960
+
2961
+ Finally, new contributor @blag improved the README.
2962
+
2963
+ * Fix Pip proprietary URL env marker handling. (#1417)
2964
+ * Un-reify installed wheel script shebangs. (#1410)
2965
+ * Support deterministic repository extract tool. (#1411)
2966
+ * Improve examples and add example subsection titles (#1409)
2967
+ * support any scripts specified in `setup(scripts=...)`
2968
+ from setup.py. (#1381)
2969
+
2970
+ ## 2.1.45
2971
+
2972
+ This is a hotfix release that fixes the `--bdist-all` handling in the
2973
+ `bdist_pex` distutils command that regressed in 2.1.43 to only create a
2974
+ bdist for the first discovered entry point.
2975
+
2976
+ * Fix `--bdist-all` handling multiple console_scripts (#1396)
2977
+
2978
+ ## 2.1.44
2979
+
2980
+ This is a hotfix release that fixes env var collisions (introduced in
2981
+ the Pex 2.1.43 release by #1367) that could occur when invoking Pex with
2982
+ environment variables like `PEX_ROOT` defined.
2983
+
2984
+ * Fix Pip handling of internal env vars. (#1388)
2985
+
2986
+ ## 2.1.43
2987
+
2988
+ * Fix dist-info metadata discovery. (#1376)
2989
+ * Fix `--platform` resolve handling of env markers. (#1367)
2990
+ * Fix `--no-manylinux`. (#1365)
2991
+ * Allow `--platform` resolves for current interpreter. (#1364)
2992
+ * Do not suppress pex output in bdist_pex (#1358)
2993
+ * Warn for PEX env vars unsupported by venv. (#1354)
2994
+ * Fix execution modes. (#1353)
2995
+ * Fix Pex emitting warnings about its Pip PEX venv. (#1351)
2996
+ * Support more verbose output for interpreter info. (#1347)
2997
+ * Fix typo in recipes.rst (#1342)
2998
+
2999
+ ## 2.1.42
3000
+
3001
+ This release brings a bugfix for macOS interpreters when the
3002
+ MACOSX_DEPLOYMENT_TARGET sysconfig variable is numeric as well as a
3003
+ fix that improves Pip execution environment isolation.
3004
+
3005
+ * Fix MACOSX_DEPLOYMENT_TARGET handling. (#1338)
3006
+ * Better isolate Pip. (#1339)
3007
+
3008
+ ## 2.1.41
3009
+
3010
+ This release brings a hotfix from @kaos for interpreter identification
3011
+ on macOS 11.
3012
+
3013
+ * Update interpreter.py (#1332)
3014
+
3015
+ ## 2.1.40
3016
+
3017
+ This release brings proper support for pyenv shim interpreter
3018
+ identification as well as a bug fix for venv mode.
3019
+
3020
+ * Fix Pex venv mode to respect `--strip-pex-env`. (#1329)
3021
+ * Fix pyenv shim identification. (#1325)
3022
+
3023
+ ## 2.1.39
3024
+
3025
+ A hotfix that fixes a bug present since 2.1.25 that results in infinite
3026
+ recursion in PEX runtime resolves when handling dependency cycles.
3027
+
3028
+ * Guard against cyclic dependency graphs. (#1317)
3029
+
3030
+ ## 2.1.38
3031
+
3032
+ A hotfix that finishes work started in 2.1.37 by #1304 to align Pip
3033
+ based resolve results with `--pex-repository` based resolve results for
3034
+ requirements with '.' in their names as allowed by PEP-503.
3035
+
3036
+ * Fix PEX direct requirements metadata. (#1312)
3037
+
3038
+ ## 2.1.37
3039
+
3040
+ * Fix Pex isolation to avoid temporary pyc files. (#1308)
3041
+ * Fix `--pex-repository` requirement canonicalization. (#1304)
3042
+ * Spruce up `pex` and `pex-tools` CLIs with uniform `-V` / `--version`
3043
+ support and default value display in help. (#1301)
3044
+
3045
+ ## 2.1.36
3046
+
3047
+ This release brings a fix for building sdists with certain macOS
3048
+ interpreters when creating a PEX file that would then fail to resolve on
3049
+ PEX startup.
3050
+
3051
+ * Add support for `--seed verbose`. (#1299)
3052
+ * Fix bytecode compilation race in PEXBuilder.build. (#1298)
3053
+ * Fix wheel building for certain macOS system interpreters. (#1296)
3054
+
3055
+ ## 2.1.35
3056
+
3057
+ This release hardens a few aspects of `--venv` mode PEXes.
3058
+ An infinite re-exec loop in venv `pex` scripts is fixed and
3059
+ the `activate` family of scripts in the venv is fixed.
3060
+
3061
+ * Improve resolve error information. (#1287)
3062
+ * Ensure venv pex does not enter a re-exec loop. (#1286)
3063
+ * Expose Pex tools via a pex-tools console script. (#1279)
3064
+ * Fix auto-created `--venv` core scripts. (#1278)
3065
+
3066
+ ## 2.1.34
3067
+
3068
+ Beyond bugfixes for a few important edge cases, this release includes
3069
+ new support for @argfiles on the command line from @jjhelmus. These
3070
+ can be useful to overcome command line length limitations. See:
3071
+ <https://docs.python.org/3/library/argparse.html#fromfile-prefix-chars>.
3072
+
3073
+ * Allow cli arguments to be specified in a file (#1273)
3074
+ * Fix module entrypoints. (#1274)
3075
+ * Guard against concurrent re-imports. (#1270)
3076
+ * Ensure Pip logs to stderr. (#1268)
3077
+
3078
+ ## 2.1.33
3079
+
3080
+ * Support console scripts found in the PEX_PATH. (#1265)
3081
+ * Fix Requires metadata handling. (#1262)
3082
+ * Fix PEX file reproducibility. (#1259)
3083
+ * Fix venv script shebang rewriting. (#1260)
3084
+ * Introduce the repository PEX_TOOL. (#1256)
3085
+
3086
+ ## 2.1.32
3087
+
3088
+ This is a hotfix release that fixes `--venv` mode shebangs being too
3089
+ long for some Linux environments.
3090
+
3091
+ * Guard against too long `--venv` mode shebangs. (#1254)
3092
+
3093
+ ## 2.1.31
3094
+
3095
+ This release primarily hardens Pex venvs fixing several bugs.
3096
+
3097
+ * Fix Pex isolation. (#1250)
3098
+ * Support pre-compiling a venv. (#1246)
3099
+ * Support venv relocation. (#1247)
3100
+ * Fix `--runtime-pex-root` leak in pex bootstrap. (#1244)
3101
+ * Support venvs that can outlive their base python. (#1245)
3102
+ * Harden Pex interpreter identification. (#1248)
3103
+ * The `pex` venv script handles entrypoints like PEX.
3104
+ (#1242)
3105
+ * Ensure PEX files aren't symlinked in venv. (#1240)
3106
+ * Fix venv pex script for use with multiprocessing. (#1238)
3107
+
3108
+ ## 2.1.30
3109
+
3110
+ This release fixes another bug in `--venv` mode when PEX_PATH is
3111
+ exported in the environment.
3112
+
3113
+ * Fix `--venv` mode to respect PEX_PATH. (#1227)
3114
+
3115
+ ## 2.1.29
3116
+
3117
+ This release fixes bugs in `--unzip` and `--venv` mode PEX file
3118
+ execution and upgrades to the last release of Pip to support Python 2.7.
3119
+
3120
+ * Fix PyPy3 `--venv` mode. (#1221)
3121
+ * Make `PexInfo.pex_hash` calculation more robust. (#1219)
3122
+ * Upgrade to Pip 20.3.4 patched. (#1205)
3123
+
3124
+ ## 2.1.28
3125
+
3126
+ This is another hotfix release to fix incorrect resolve post-processing
3127
+ failing otherwise correct resolves.
3128
+
3129
+ * Pex resolver fails to evaluate markers when post-processing resolves
3130
+ to identify which dists satisfy direct requirements. (#1196)
3131
+
3132
+ ## 2.1.27
3133
+
3134
+ This is another hotfix release to fix a regression in Pex
3135
+ `--sources-directory` handling of relative paths.
3136
+
3137
+ * Support relative paths in `Chroot.symlink`. (#1194)
3138
+
3139
+ ## 2.1.26
3140
+
3141
+ This is a hotfix release that fixes requirement parsing when there is a
3142
+ local file in the CWD with the same name as the project name of a remote
3143
+ requirement to be resolved.
3144
+
3145
+ * Requirement parsing handles local non-dist files. (#1190)
3146
+
3147
+ ## 2.1.25
3148
+
3149
+ This release brings support for a `--venv` execution mode to complement
3150
+ `--unzip` and standard unadorned PEX zip file execution modes. The
3151
+ `--venv` execution mode will first install the PEX file into a virtual
3152
+ environment under `${PEX_ROOT}/venvs` and then re-execute itself from
3153
+ there. This mode of execution allows you to ship your PEXed application
3154
+ as a single zipfile that automatically installs itself in a venv and
3155
+ runs from there to eliminate all PEX startup overhead on subsequent runs
3156
+ and work like a "normal" application.
3157
+
3158
+ There is also support for a new resolution mode when building PEX files
3159
+ that allows you to use the results of a previous resolve by specifying
3160
+ it as a `-pex-repository` to resolve from. If you have many applications
3161
+ sharing a requirements.txt / constraints.txt, this can drastically speed
3162
+ up resolves.
3163
+
3164
+ * Improve PEX repository error for local projects. (#1184)
3165
+ * Use symlinks to add dists in the Pex CLI. (#1185)
3166
+ * Suppress `pip debug` warning. (#1183)
3167
+ * Support resolving from a PEX file repository. (#1182)
3168
+ * PEXEnvironment for a DistributionTarget. (#1178)
3169
+ * Fix plumbing of 2020-resolver to Pip. (#1180)
3170
+ * Platform can report supported_tags. (#1177)
3171
+ * Record original requirements in PEX-INFO. (#1171)
3172
+ * Tighten requirements parsing. (#1170)
3173
+ * Type BuildAndInstallRequest. (#1169)
3174
+ * Type AtomicDirectory. (#1168)
3175
+ * Type SpawnedJob. (#1167)
3176
+ * Refresh and type OrderedSet. (#1166)
3177
+ * PEXEnvironment recursive runtime resolve. (#1165)
3178
+ * Add support for `-r` / `--constraints` URL to the CLI. (#1163)
3179
+ * Surface Pip dependency conflict information. (#1162)
3180
+ * Add support for parsing extras and specifiers. (#1161)
3181
+ * Support project_name_and_version metadata. (#1160)
3182
+ * docs: fix simple typo, original -> original (#1156)
3183
+ * Support a `--venv` mode similar to `--unzip` mode. (#1153)
3184
+ * Remove redundant dep edge label info. (#1152)
3185
+ * Remove our reliance on packaging's LegacyVersion. (#1151)
3186
+ * Implement PEX_INTERPRETER special mode support. (#1149)
3187
+ * Fix PexInfo.copy. (#1148)
3188
+
3189
+ ## 2.1.24
3190
+
3191
+ This release upgrades Pip to 20.3.3 + a patch to fix Pex resolves using
3192
+ the `pip-legacy-resolver` and `--constraints`. The Pex package is also
3193
+ fixed to install for Python 3.9.1+.
3194
+
3195
+ * Upgrade to a patched Pip 20.3.3. (#1143)
3196
+ * Fix python requirement to include full 3.9 series. (#1142)
3197
+
3198
+ ## 2.1.23
3199
+
3200
+ This release upgrades Pex to the latest Pip which includes support for
3201
+ the new 2020-resolver (see:
3202
+ <https://pip.pypa.io/en/stable/user_guide/#resolver-changes-2020>) as
3203
+ well as support for macOS BigSur. Although this release defaults to the
3204
+ legacy resolver behavior, the next release will deprecate the legacy
3205
+ resolver and support for the legacy resolver will later be removed to
3206
+ allow continuing Pip upgrades going forward. To switch to the new
3207
+ resolver, use: `--resolver-version pip-2020-resolver`.
3208
+
3209
+ * Upgrade Pex to Pip 20.3.1. (#1133)
3210
+
3211
+ ## 2.1.22
3212
+
3213
+ This release fixes a deadlock that could be experienced when building
3214
+ PEX files in highly concurrent environments in addition to fixing
3215
+ `pex --help-variables` output.
3216
+
3217
+ A new suite of PEX tools is now available in Pex itself and any PEXes
3218
+ built with the new `--include-tools` option. Use
3219
+ `PEX_TOOLS=1 pex --help` to find out more about the available tools and
3220
+ their usage.
3221
+
3222
+ Finally, the long deprecated exposure of the Pex APIs through `_pex` has
3223
+ been removed. To use the Pex APIs you must include pex as a dependency
3224
+ in your PEX file.
3225
+
3226
+ * Add a dependency graph tool. (#1132)
3227
+ * Add a venv tool. (#1128)
3228
+ * Remove long deprecated support for _pex module. (#1135)
3229
+ * Add an interpreter tool. (#1131)
3230
+ * Escape venvs unless PEX_INHERIT_PATH is requested. (#1130)
3231
+ * Improve `PythonInterpreter` venv support. (#1129)
3232
+ * Add support for PEX runtime tools & an info tool. (#1127)
3233
+ * Exclusive atomic_directory always unlocks. (#1126)
3234
+ * Fix `PythonInterpreter` binary normalization. (#1125)
3235
+ * Add a `requires_dists` function. (#1122)
3236
+ * Add an `is_exe` helper. (#1123)
3237
+ * Fix req parsing for local archives & projects. (#1121)
3238
+ * Improve PEXEnvironment constructor ergonomics. (#1120)
3239
+ * Fix `safe_open` for single element relative paths.
3240
+ (#1118)
3241
+ * Add URLFetcher IT. (#1116)
3242
+ * Implement full featured requirement parsing. (#1114)
3243
+ * Fix `--help-variables` docs. (#1113)
3244
+ * Switch from optparse to argparse. (#1083)
3245
+
3246
+ ## 2.1.21
3247
+
3248
+ * Fix `iter_compatible_interpreters` with `path`. (#1110)
3249
+ * Fix `Requires-Python` environment marker mapping. (#1105)
3250
+ * Fix spurious `InstalledDistribution` env markers. (#1104)
3251
+ * Deprecate `-R`/`--resources-directory`. (#1103)
3252
+ * Fix ResourceWarning for unclosed `/dev/null`. (#1102)
3253
+ * Fix runtime vendoring bytecode compilation races. (#1099)
3254
+
3255
+ ## 2.1.20
3256
+
3257
+ This release improves interpreter discovery to prefer more recent patch
3258
+ versions, e.g. preferring Python 3.6.10 over 3.6.8.
3259
+
3260
+ We recently regained access to the docsite, and
3261
+ <https://docs.pex-tool.org/> is now up-to-date.
3262
+
3263
+ * Prefer more recent patch versions in interpreter discovery. (#1088)
3264
+ * Fix `--pex-python` when it's the same as the current interpreter.
3265
+ (#1087)
3266
+ * Fix `dir_hash` vs. bytecode compilation races. (#1080)
3267
+ * Fix readthedocs doc generation. (#1081)
3268
+
3269
+ ## 2.1.19
3270
+
3271
+ This release adds the `--python-path` option, which allows controlling
3272
+ the interpreter search paths when building a PEX.
3273
+
3274
+ The release also removes `--use-first-matching-interpreter`, which was a
3275
+ misfeature. If you want to use fewer interpreters when building a PEX,
3276
+ use more precise values for `--interpreter-constraint` and/or
3277
+ `--python-path`, or use `--python` or `--platform`.
3278
+
3279
+ * Add `--python-path` to change interpreter search paths when building
3280
+ a PEX. (#1077)
3281
+ * Remove `--use-first-matching-interpreter` misfeature. (#1076)
3282
+ * Encapsulate `--inherit-path` handling. (#1072)
3283
+
3284
+ ## 2.1.18
3285
+
3286
+ This release brings official support for Python 3.9 and adds a new
3287
+ `--tmpdir` option to explicitly control the TMPDIR used by Pex and its
3288
+ subprocesses. The latter is useful when building PEXes in
3289
+ space-constrained environments in the face of large distributions.
3290
+
3291
+ The release also fixes `--cert` and `--client-cert` so that they work
3292
+ with PEP-518 builds in addition to fixing bytecode compilation races in
3293
+ highly parallel environments.
3294
+
3295
+ * Add a `--tmpdir` option to the Pex CLI. (#1068)
3296
+ * Honor `sys.executable` unless macOS Framework. (#1065)
3297
+ * Add Python 3.9 support. (#1064)
3298
+ * Fix handling of `--cert` and `--client-cert`. (#1063)
3299
+ * Add atomic_directory exclusive mode. (#1062)
3300
+ * Fix `--cert` for PEP-518 builds. (#1060)
3301
+
3302
+ ## 2.1.17
3303
+
3304
+ This release fixes a bug in `--resolve-local-platforms` handling that
3305
+ made it unusable in 2.1.16 (#1043) as well as fixing a long-standing
3306
+ file handle leak (#1050) and a bug when running under macOS framework
3307
+ builds of Python (#1009).
3308
+
3309
+ * Fix `--unzip` performance regression. (#1056)
3310
+ * Fix resource leak in Pex self-isolation. (#1052)
3311
+ * Fix use of `iter_compatible_interpreters`. (#1048)
3312
+ * Do not rely on `sys.executable` being accurate. (#1049)
3313
+ * slightly demystify the relationship between platforms and
3314
+ interpreters in the library API and CLI (#1047)
3315
+ * Path filter for PythonInterpreter.iter_candidates. (#1046)
3316
+ * Add type hints to `util.py` and `tracer.py`
3317
+ * Add type hints to variables.py and platforms.py (#1042)
3318
+ * Add type hints to the remaining tests (#1040)
3319
+ * Add type hints to most tests (#1036)
3320
+ * Use MyPy via type comments (#1032)
3321
+
3322
+ ## 2.1.16
3323
+
3324
+ This release fixes a bug in `sys.path` scrubbing / hermeticity (#1025)
3325
+ and a bug in the `-D / --sources-directory` and
3326
+ `-R / --resources-directory` options whereby PEP-420 implicit
3327
+ (namespace) packages were not respected (#1021).
3328
+
3329
+ * Improve UnsatisfiableInterpreterConstraintsError. (#1028)
3330
+ * Scrub direct `sys.path` manipulations by .pth files. (#1026)
3331
+ * PEX zips now contain directory entries. (#1022)
3332
+ * Fix UnsatisfiableInterpreterConstraintsError. (#1024)
3333
+
3334
+ ## 2.1.15
3335
+
3336
+ A patch release to fix an issue with the
3337
+ `--use-first-matching-interpreter` flag.
3338
+
3339
+ * Fix `--use-first-matching-interpreter` at runtime. (#1014)
3340
+
3341
+ ## 2.1.14
3342
+
3343
+ This release adds the `--use-first-matching-interpreter` flag, which can
3344
+ speed up performance when building a Pex at the expense of being
3345
+ compatible with fewer interpreters at runtime.
3346
+
3347
+ * Add `--use-first-matching-interpreter`. (#1008)
3348
+ * Autoformat with Black. (#1006)
3349
+
3350
+ ## 2.1.13
3351
+
3352
+ The focus of this release is better support of the `--platform` CLI arg.
3353
+ Platforms are now better documented and can optionally be resolved to
3354
+ local interpreters when possible via `--resolve-local-platforms` to
3355
+ better support creation of multiplatform PEXes.
3356
+
3357
+ * Add support for resolving `--platform` locally. (#1000)
3358
+ * Improve `--platform` help. (#1002)
3359
+ * Improve and fix `--platform` help. (#1001)
3360
+ * Ensure pip download dir is uncontended. (#998)
3361
+
3362
+ ## 2.1.12
3363
+
3364
+ A patch release to deploy the PEX_EXTRA_SYS_PATH feature.
3365
+
3366
+ * A PEX_EXTRA_SYS_PATH runtime variable. (#989)
3367
+ * Fix typos (#986)
3368
+ * Update link to avoid a redirect (#982)
3369
+
3370
+ ## 2.1.11
3371
+
3372
+ A patch release to fix a symlink issue in remote execution environments.
3373
+
3374
+ * use relative paths within wheel cache (#979)
3375
+ * Fix Tox not finding Python 3.8 on OSX. (#976)
3376
+
3377
+ ## 2.1.10
3378
+
3379
+ This release focuses on the resolver API and resolution performance. Pex
3380
+ 2 resolving using Pip is now at least at performance parity with Pex 1
3381
+ in all studied cases and most often is 5% to 10% faster.
3382
+
3383
+ As part of the resolution performance work, Pip networking configuration
3384
+ is now exposed via Pex CLI options and the `NetworkConfiguration` API
3385
+ type / new `resolver.resolve` API parameter.
3386
+
3387
+ With network configuration now wired up, the `PEX_HTTP_RETRIES` and
3388
+ `PEX_HTTP_TIMEOUT` env var support in Pex 1 that was never wired into
3389
+ Pex 2 is now dropped in favor of passing `--retries` and `--timeout` via
3390
+ the CLI (See: #94)
3391
+
3392
+ * Expose Pip network configuration. (#974)
3393
+ * Restore handling for bad wheel filenames to `.can_add()` (#973)
3394
+ * Fix wheel filename parsing in PEXEnvironment.can_add (#965)
3395
+ * Split Pex resolve API. (#970)
3396
+ * Add a `--local` mode for packaging the Pex PEX. (#971)
3397
+ * Constrain the virtualenv version used by tox. (#968)
3398
+ * Improve Pex packaging. (#961)
3399
+ * Make the interpreter cache deterministic. (#960)
3400
+ * Fix deprecation warning for `rU` mode (#956)
3401
+ * Fix runtime resolve error message generation. (#955)
3402
+ * Kill dead code. (#954)
3403
+
3404
+ ## 2.1.9
3405
+
3406
+ This release introduces the ability to copy requirements from an
3407
+ existing PEX into a new one.
3408
+
3409
+ This can greatly speed up repeatedly creating a PEX when no requirements
3410
+ have changed. A build tool (such as Pants) can create a "requirements
3411
+ PEX" that contains just a static set of requirements, and build a final
3412
+ PEX on top of that, without having to re-run pip to resolve
3413
+ requirements.
3414
+
3415
+ * Support for copying requirements from an existing pex. (#948)
3416
+
3417
+ ## 2.1.8
3418
+
3419
+ This release brings enhanced performance when using the Pex CLI or API
3420
+ to resolve requirements and improved performance for many PEXed
3421
+ applications when specifying the `--unzip` option. PEXes built with
3422
+ `--unzip` will first unzip themselves into the Pex cache if not unzipped
3423
+ there already and then re-execute themselves from there. This can
3424
+ improve startup latency. Pex itself now uses this mode in our [PEX
3425
+ release](
3426
+ https://github.com/pex-tool/pex/releases/download/v2.1.8/pex).
3427
+
3428
+ * Better support unzip mode PEXes. (#941)
3429
+ * Support an unzip toggle for PEXes. (#939)
3430
+ * Ensure the interpreter path is a file (#938)
3431
+ * Cache pip.pex. (#937)
3432
+
3433
+ ## 2.1.7
3434
+
3435
+ This release brings more robust control of the Pex cache (PEX_ROOT).
3436
+
3437
+ The `--cache-dir` setting is deprecated in favor of build
3438
+ time control of the cache location with `--pex-root` and
3439
+ new support for control of the cache's runtime location with
3440
+ `--runtime-pex-root` is added. As in the past, the
3441
+ `PEX_ROOT` environment variable can still be used to
3442
+ control the cache's runtime location.
3443
+
3444
+ Unlike in the past, the [Pex PEX](
3445
+ https://github.com/pex-tool/pex/releases/download/v2.1.7/pex) we
3446
+ release can now also be controlled via the `PEX_ROOT` environment
3447
+ variable. Consult the CLI help for `--no-strip-pex-env`cto find out
3448
+ more.
3449
+
3450
+ * Sanitize PEX_ROOT handling. (#929)
3451
+ * Fix `PEX_*` env stripping and allow turning off. (#932)
3452
+ * Remove second urllib import from compatibility (#931)
3453
+ * Adding `--runtime-pex-root` option. (#780)
3454
+ * Improve interpreter not found error messages. (#928)
3455
+ * Add detail in interpreter selection error message. (#927)
3456
+ * Respect `Requires-Python` in
3457
+ `PEXEnvironment`. (#923)
3458
+ * Pin our tox version in CI for stability. (#924)
3459
+
3460
+ ## 2.1.6
3461
+
3462
+ * Don't delete the root __init__.py when devendoring. (#915)
3463
+ * Remove unused Interpreter.clear_cache. (#911)
3464
+
3465
+ ## 2.1.5
3466
+
3467
+ * Silence pip warnings about Python 2.7. (#908)
3468
+ * Kill `Pip.spawn_install_wheel` `overwrite` arg. (#907)
3469
+ * Show pex-root from env as default in help output (#901)
3470
+
3471
+ ## 2.1.4
3472
+
3473
+ This release fixes the hermeticity of pip resolver executions when the
3474
+ resolver is called via the Pex API in an environment with PYTHONPATH
3475
+ set.
3476
+
3477
+ * readme: adding a TOC (#900)
3478
+ * Fix Pex resolver API PYTHONPATH hermeticity. (#895)
3479
+ * Fixup resolve debug rendering. (#894)
3480
+ * Convert `bdist_pex` tests to explicit cmdclass. (#897)
3481
+
3482
+ ## 2.1.3
3483
+
3484
+ This release fixes a performance regression in which pip would
3485
+ re-tokenize `--find-links` pages unnecessarily. The parsed pages are now
3486
+ cached in a pip patch that has also been submitted upstream.
3487
+
3488
+ * Re-vendor pip (#890)
3489
+ * Add a clear_cache() method to PythonInterpreter. (#885)
3490
+ * Error eagerly if an interpreter binary doesn't exist. (#886)
3491
+
3492
+ ## 2.1.2
3493
+
3494
+ This release fixes a bug in which interpreter discovery failed when
3495
+ running from a zipped pex.
3496
+
3497
+ * Use pkg_resources when isolating a pex code chroot. (#881)
3498
+
3499
+ ## 2.1.1
3500
+
3501
+ This release significantly improves performance and correctness of
3502
+ interpreter discovery, particularly when pyenv is involved. It also
3503
+ provides a workaround for EPERM issues when hard linking across devices,
3504
+ by falling back to copying. Resolve error checking also now accounts for
3505
+ environment markers.
3506
+
3507
+ * Revert "Fix the resolve check in the presence of platform
3508
+ constraints. (#877)" (#879)
3509
+ * [resolver] Fix issue with wheel when using `--index-url` option
3510
+ (#865)
3511
+ * Fix the resolve check in the presence of platform constraints.
3512
+ (#877)
3513
+ * Check expected pex invocation failure reason in tests. (#874)
3514
+ * Improve hermeticity of vendoring. (#873)
3515
+ * Temporarily skip a couple of tests, to get CI green. (#876)
3516
+ * Respect env markers when checking resolves. (#861)
3517
+ * Ensure Pex PEX constraints match pex wheel / sdist. (#863)
3518
+ * Delete unused pex/package.py. (#862)
3519
+ * Introduce an interpreter cache. (#856)
3520
+ * Re-enable pyenv interpreter tests under pypy. (#859)
3521
+ * Harden PythonInterpreter against pyenv shims. (#860)
3522
+ * Parallelize interpreter discovery. (#842)
3523
+ * Explain hard link EPERM copy fallback. (#855)
3524
+ * Handle EPERM when Linking (#852)
3525
+ * Pin transitive dependencies of vendored code. (#854)
3526
+ * Kill empty setup.py. (#849)
3527
+ * Fix `tox -epackage` to create pex supporting 3.8. (#843)
3528
+ * Fix Pex to handle empty ns package metadata. (#841)
3529
+
3530
+ ## 2.1.0
3531
+
3532
+ This release restores and improves support for building and running
3533
+ multiplatform pexes. Foreign `linux*` platform builds now
3534
+ include `manylinux2014` compatible wheels by default and
3535
+ foreign CPython pexes now resolve `abi3` wheels correctly.
3536
+ In addition, error messages at both build-time and runtime related to
3537
+ resolution of dependencies are more informative.
3538
+
3539
+ Pex 2.1.0 should be considered the first Pex 2-series release that fully
3540
+ replaces and improves upon Pex 1-series functionality.
3541
+
3542
+ * Fix pex resolving for foreign platforms. (#835)
3543
+ * Use pypa/packaging. (#831)
3544
+ * Upgrade vendored setuptools to 42.0.2. (#832)
3545
+ * De-vendor pex just once per version. (#833)
3546
+ * Support VCS urls for vendoring. (#834)
3547
+ * Support python 3.8 in CI. (#829)
3548
+ * Fix pex resolution to respect `--ignore-errors`. (#828)
3549
+ * Kill `pkg_resources` finders monkey-patching. (#827)
3550
+ * Use flit to distribute pex. (#826)
3551
+ * Cleanup extras_require. (#825)
3552
+
3553
+ ## 2.0.3
3554
+
3555
+ This release fixes a regression in handling explicitly requested
3556
+ `--index` or `--find-links` http (insecure) repos. In addition,
3557
+ performance of the pex 2.x resolver is brought in line with the 1.x
3558
+ resolver in all cases and improved in most cases.
3559
+
3560
+ * Unify PEX build-time and runtime wheel caches. (#821)
3561
+ * Parallelize resolve. (#819)
3562
+ * Use the resolve cache to skip installs. (#815)
3563
+ * Implicitly trust explicitly requested repos. (#813)
3564
+
3565
+ ## 2.0.2
3566
+
3567
+ This is a hotfix release that fixes a bug exposed when Pex was asked to
3568
+ use an interpreter with a non-canonical path as well as fixes for
3569
+ 'current' platform handling in the resolver API.
3570
+
3571
+ * Fix current platform handling. (#801)
3572
+ * Add a test of pypi index rendering. (#799)
3573
+ * Fix `iter_compatible_interpreters` path biasing. (#798)
3574
+
3575
+ ## 2.0.1
3576
+
3577
+ This is a hotfix release that fixes a bug when specifying a custom index
3578
+ (`-i`/`--index`/`--index-url`) via the CLI.
3579
+
3580
+ * Fix #794 issue by add missing return statement in `__str__` (#795)
3581
+
3582
+ ## 2.0.0
3583
+
3584
+ Pex 2.0.0 is cut on the advent of a large, mostly internal change for
3585
+ typical use cases: it now uses vendored pip to perform resolves and
3586
+ wheel builds. This fixes a large number of compatibility and correctness
3587
+ bugs as well as gaining feature support from pip including handling
3588
+ manylinux2010 and manylinux2014 as well as VCS requirements and support
3589
+ for PEP-517 & PEP-518 builds.
3590
+
3591
+ API changes to be wary of:
3592
+
3593
+ * The egg distribution format is no longer supported.
3594
+ * The deprecated `--interpreter-cache-dir` CLI option was removed.
3595
+ * The `--cache-ttl` CLI option and `cache_ttl` resolver API argument
3596
+ were removed.
3597
+ * The resolver API replaced `fetchers` with a list of `indexes` and a
3598
+ list of `find_links` repos.
3599
+ * The resolver API removed (http) `context` which is now automatically
3600
+ handled.
3601
+ * The resolver API removed `precedence` which is now pip default
3602
+ precedence: wheels when available and not ruled out via the
3603
+ `--no-wheel` CLI option or `use_wheel=False` API argument.
3604
+ * The `--platform` CLI option and `platform` resolver API argument now
3605
+ must be full platform strings that include platform, implementation,
3606
+ version and abi; e.g.: `--platform=macosx-10.13-x86_64-cp-36-m`.
3607
+ * The `--manylinux` CLI option and `use_manylinux` resolver API
3608
+ argument were removed. Instead, to resolve manylinux wheels for a
3609
+ foreign platform, specify the manylinux platform to target with an
3610
+ explicit `--platform` CLI flag or `platform` resolver API argument;
3611
+ e.g.: `--platform=manylinux2010-x86_64-cp-36-m`.
3612
+
3613
+ In addition, Pex 2.0.0 now builds reproducible pexes by default; ie:
3614
+
3615
+ * Python modules embedded in the pex are not pre-compiled (pass
3616
+ `--compile` if you want this).
3617
+ * The timestamps for Pex file zip entries default to midnight on
3618
+ January 1, 1980 (pass `--use-system-time` to change this).
3619
+
3620
+ This finishes off the effort tracked by issue #716.
3621
+
3622
+ Changes in this release:
3623
+
3624
+ * Pex defaults to reproducible builds. (#791)
3625
+ * Use pip for resolving and building distributions. (#788)
3626
+ * Bias selecting the current interpreter. (#783)
3627
+
3628
+ ## 1.6.12
3629
+
3630
+ This release adds the `--intransitive` option to support pre-resolved
3631
+ requirements lists and allows for python binaries built under Gentoo
3632
+ naming conventions.
3633
+
3634
+ * Add an `--intransitive` option. (#775)
3635
+ * PythonInterpreter: support python binary names with single letter
3636
+ suffixes (#769)
3637
+
3638
+ ## 1.6.11
3639
+
3640
+ This release brings a consistency fix to requirement resolution and an
3641
+ isolation fix that scrubs all non-stdlib PYTHONPATH entries by default,
3642
+ only pre-pending or appending them to the `sys.path` if the
3643
+ corresponding `--inherit-path=(prefer|fallback)` is used.
3644
+
3645
+ * Avoid reordering of equivalent packages from multiple fetchers
3646
+ (#762)
3647
+ * Include `PYTHONPATH` in `--inherit-path`
3648
+ logic. (#765)
3649
+
3650
+ ## 1.6.10
3651
+
3652
+ This is a hotfix release for the bug detailed in #756 that was
3653
+ introduced by #752 in python 3.7 interpreters.
3654
+
3655
+ * Guard against modules with a `__file__` of
3656
+ `None`. (#757)
3657
+
3658
+ ## 1.6.9
3659
+
3660
+ * Fix `sys.path` scrubbing of pex extras modules. (#752)
3661
+ * Fix pkg resource early import (#750)
3662
+
3663
+ ## 1.6.8
3664
+
3665
+ * Fixup pex re-exec during bootstrap. (#741)
3666
+ * Fix resolution of `setup.py` project extras. (#739)
3667
+ * Tighten up namespace declaration logic. (#732)
3668
+ * Fixup import sorting. (#731)
3669
+
3670
+ ## 1.6.7
3671
+
3672
+ We now support reproducible builds when creating a pex via `pex -o
3673
+ foo.pex`, meaning that if you were to run the command again
3674
+ with the same inputs, the two generated pexes would be byte-for-byte
3675
+ identical. To enable reproducible builds when building a pex, use the
3676
+ flags `--no-use-system-time --no-compile`, which will use
3677
+ a deterministic timestamp and not include `.pyc` files in
3678
+ the Pex.
3679
+
3680
+ In Pex 1.7.0, we will default to reproducible builds.
3681
+
3682
+ * add delayed pkg_resources import fix from #713, with an
3683
+ integration test (#730)
3684
+ * Fix reproducible builds sdist test by properly requiring building
3685
+ the wheel (#727)
3686
+ * Fix reproducible build test improperly using the -c flag and add a
3687
+ new test for -c flag (#725)
3688
+ * Fix PexInfo requirements using a non-deterministic data structure
3689
+ (#723)
3690
+ * Add new `--no-use-system-time` flag to use a
3691
+ deterministic timestamp in built PEX (#722)
3692
+ * Add timeout when using requests. (#726)
3693
+ * Refactor reproducible build tests to assert that the original pex
3694
+ command succeeded (#724)
3695
+ * Introduce new `--no-compile` flag to not include .pyc
3696
+ in built pex due to its non-determinism (#718)
3697
+ * Document how Pex developers can run specific tests and run Pex from
3698
+ source (#720)
3699
+ * Remove unused bdist_pex.py helper function (#719)
3700
+ * Add failing acceptance tests for reproducible Pex builds (#717)
3701
+ * Make a copy of globals() before updating it. (#715)
3702
+ * Make sure `PexInfo` is isolated from
3703
+ `os.environ`. (#711)
3704
+ * Fix import sorting. (#712)
3705
+ * When iterating over Zipfiles, always use the Unix file separator to
3706
+ fix a Windows issue (#638)
3707
+ * Fix pex file looses the executable permissions of binary files
3708
+ (#703)
3709
+
3710
+ ## 1.6.6
3711
+
3712
+ This is the first release including only a single PEX pex, which
3713
+ supports execution under all interpreters pex supports.
3714
+
3715
+ * Fix pex bootstrap interpreter selection. (#701)
3716
+ * Switch releases to a single multi-pex. (#698)
3717
+
3718
+ ## 1.6.5
3719
+
3720
+ This release fixes long-broken resolution of abi3 wheels.
3721
+
3722
+ * Use all compatible versions when calculating tags. (#692)
3723
+
3724
+ ## 1.6.4
3725
+
3726
+ This release un-breaks [lambdex](https://github.com/wickman/lambdex).
3727
+
3728
+ * Restore `pex.pex_bootstrapper.is_compressed` API. (#685)
3729
+ * Add the version of pex used to build a pex to build_properties.
3730
+ (#687)
3731
+ * Honor interpreter constraints even when PEX_PYTHON and
3732
+ PEX_PYTHON_PATH not set (#668)
3733
+
3734
+ ## 1.6.3
3735
+
3736
+ This release changes the behavior of the `--interpreter-constraint`
3737
+ option. Previously, interpreter constraints were ANDed, which made it
3738
+ impossible to express constraints like '>=2.7,<3' OR '>=3.6,<4';
3739
+ ie: either python 2.7 or else any python 3 release at or above 3.6. Now
3740
+ interpreter constraints are ORed, which is likely a breaking change if
3741
+ you have scripts that pass multiple interpreter constraints. To
3742
+ transition, use the native `,` AND operator in your constraint
3743
+ expression, as used in the example above.
3744
+
3745
+ * Provide control over pex warning behavior. (#680)
3746
+ * OR interpreter constraints when multiple given (#678)
3747
+ * Pin isort version in CI (#679)
3748
+ * Honor PEX_IGNORE_RCFILES in to_python_interpreter() (#673)
3749
+ * Make `run_pex_command` more robust. (#670)
3750
+
3751
+ ## 1.6.2
3752
+
3753
+ * Support de-vendoring for installs. (#666)
3754
+ * Add User-Agent header when resolving via urllib (#663)
3755
+ * Fix interpreter finding (#662)
3756
+ * Add recipe to use PEX with requests module and proxies. (#659)
3757
+ * Allow pex to be invoked using runpy (python -m pex). (#637)
3758
+
3759
+ ## 1.6.1
3760
+
3761
+ * Make `tox -evendor` idempotent. (#651)
3762
+ * Fix invalid regex and escape sequences causing DeprecationWarning
3763
+ (#646)
3764
+ * Follow PEP 425 suggestions on distribution preference. (#640)
3765
+ * Setup interpreter extras in InstallerBase. (#635)
3766
+ * Ensure bootstrap demotion is complete. (#634)
3767
+
3768
+ ## 1.6.0
3769
+
3770
+ * Fix pex force local to handle PEP 420. (#613)
3771
+ * Vendor `setuptools` and `wheel`. (#624)
3772
+
3773
+ ## 1.5.3
3774
+
3775
+ * Fixup PEXEnvironment extras resolution. (#617)
3776
+ * Repair unhandled AttributeError during pex bootstrapping. (#599)
3777
+
3778
+ ## 1.5.2
3779
+
3780
+ This release brings an exit code fix for pexes run via entrypoint as
3781
+ well as a fix for finding scripts when building pexes from wheels with
3782
+ dashes in their distribution name.
3783
+
3784
+ * Update PyPI default URL to pypi.org (#610)
3785
+ * Pex exits with correct code when using entrypoint (#605)
3786
+ * Fix *_custom_setuptools_usable ITs. (#606)
3787
+ * Update pyenv if neccesary (#586)
3788
+ * Fix script search in wheels. (#600)
3789
+ * Small Docstring Fix (#595)
3790
+
3791
+ ## 1.5.1
3792
+
3793
+ This release brings a fix to handle top-level requirements with
3794
+ environment markers, fully completing environment marker support.
3795
+
3796
+ * Filter top-level requirements against env markers. (#592)
3797
+
3798
+ ## 1.5.0
3799
+
3800
+ This release fixes pexes such that they fully support environment
3801
+ markers, the canonical use case being a python 2/3 pex that needs to
3802
+ conditionally load one or more python 2 backport libs when running under
3803
+ a python 2 interpreter only.
3804
+
3805
+ * Revert "Revert "Support environment markers during pex activation.
3806
+ (#582)""
3807
+
3808
+ ## 1.4.9
3809
+
3810
+ This is a hotfix release for 1.4.8 that fixes a regression in
3811
+ interpreter setup that could lead to resolved distributions failing to
3812
+ build or install.
3813
+
3814
+ * Cleanup `PexInfo` and `PythonInterpreter`.
3815
+ (#581)
3816
+ * Fix resolve regressions introduced by the 1.4.8. (#580)
3817
+ * Narrow the env marker test. (#578)
3818
+ * Documentation for #569 (#574)
3819
+
3820
+ ## 1.4.8
3821
+
3822
+ This release adds support for `-c` and `-m`
3823
+ PEX file runtime options that emulate the behavior of the same arguments
3824
+ to `python` as well a fix for handling the non-standard
3825
+ platform reported by setuptools for Apple system interpreters in
3826
+ addition to several other bug fixes.
3827
+
3828
+ * Fix PEXBuilder.clone. (#575)
3829
+ * Fix PEXEnvironment platform determination. (#568)
3830
+ * Apply more pinning to jupyter in IT. (#573)
3831
+ * Minimize interpreter bootstrapping in tests. (#571)
3832
+ * Introduce 3.7 to CI and release. (#567)
3833
+ * Add OSX shards. (#565)
3834
+ * Add support for `-m` and `-c` in interpreter
3835
+ mode. (#563)
3836
+ * Ignore concurrent-rename failures. (#558)
3837
+ * Fixup test_jupyter_appnope_env_markers. (#562)
3838
+
3839
+ ## 1.4.7
3840
+
3841
+ This is a hotfix release for a regression in setuptools compatibility
3842
+ introduced by #542.
3843
+
3844
+ * Fixup `PEX.demote_bootstrap`: fully unimport. (#554)
3845
+
3846
+ ## 1.4.6
3847
+
3848
+ This release opens up setuptools support for more modern versions that
3849
+ support breaking changes in `setup` used in the wild.
3850
+
3851
+ * Fix for super() usage on "old style class" ZipFile (#546)
3852
+ * Cleanup bootstrap dependencies before handoff. (#542)
3853
+ * Support -c for plat spec dists in multiplat pexes. (#545)
3854
+ * Support `-` when running as an interpreter. (#543)
3855
+ * Expand the range of supported setuptools. (#541)
3856
+ * Preserve perms of files copied to pex chroots. (#540)
3857
+ * Add more badges to README. (#535)
3858
+ * Fixup CHANGES PR links for 1.4.5.
3859
+
3860
+ ## 1.4.5
3861
+
3862
+ This release adds support for validating pex entrypoints at build time
3863
+ in addition to several bugfixes.
3864
+
3865
+ * Fix PEX environment setup. (#531)
3866
+ * Fix installers to be insensitive to extras iteration order. (#532)
3867
+ * Validate entry point at build time (#521)
3868
+ * Fix pex extraction perms. (#528)
3869
+ * Simplify `.travis.yml`. (#524)
3870
+ * Fix `PythonInterpreter` caching and ergonomics. (#518)
3871
+ * Add missing git dep. (#519)
3872
+ * Introduce a controlled env for pex testing. (#517)
3873
+ * Bump wheel version to latest. (#515)
3874
+ * Invoke test runner at a more granular level for pypy shard. (#513)
3875
+
3876
+ ## 1.4.4
3877
+
3878
+ This release adds support for including sources and resources directly
3879
+ in a produced pex - without the need to use pants.
3880
+
3881
+ * Add resource / source bundling to pex cli (#507)
3882
+
3883
+ ## 1.4.3
3884
+
3885
+ Another bugfix release for the 1.4.x series.
3886
+
3887
+ * Repair environmental marker platform setting. (#500)
3888
+ * Broaden abi selection for non-specified abi types. (#503)
3889
+
3890
+ ## 1.4.2
3891
+
3892
+ This release repairs a tag matching regression for .egg dists that
3893
+ inadvertently went out in 1.4.1.
3894
+
3895
+ * Improve tag generation for EggPackage. (#493)
3896
+
3897
+ ## 1.4.1
3898
+
3899
+ A bugfix release for 1.4.x.
3900
+
3901
+ * Repair abi prefixing for PyPy. (#483)
3902
+ * Repair .egg resolution for platform specific eggs. (#486)
3903
+ * Eliminate the python3.3 shard. (#488)
3904
+
3905
+ ## 1.4.0
3906
+
3907
+ This release includes full Manylinux support, improvements to wheel
3908
+ resolution (including first class platform/abi tag targeting) and a
3909
+ handful of other improvements and bugfixes. Enjoy!
3910
+
3911
+ Special thanks to Dan Blanchard (@dan-blanchard) for seeding the
3912
+ initial PR for Manylinux support and wheel resolution improvements.
3913
+
3914
+ * Complete manylinux support in pex. (#480)
3915
+ * Add manylinux wheel support and fix a few bugs along the way (#316)
3916
+ * Skip failing tests on pypy shard. (#478)
3917
+ * Bump travis image to Trusty. (#476)
3918
+ * Mock PATH for problematic interpreter selection test in CI (#474)
3919
+ * Skip two failing integration tests. (#472)
3920
+ * Better error handling for missing setuptools. (#471)
3921
+ * Add tracebacks to IntegResults. (#469)
3922
+ * Fix failing tests in master (#466)
3923
+ * Repair isort-check failure in master. (#465)
3924
+ * Repair style issues in master. (#464)
3925
+ * Fixup PATH handling in travis.yml. (#462)
3926
+
3927
+ ## 1.3.2
3928
+
3929
+ * Add blacklist handling for skipping requirements in pex resolver
3930
+ (#457)
3931
+
3932
+ ## 1.3.1
3933
+
3934
+ This is a bugfix release for a regression that inadvertently went out in
3935
+ 1.3.0.
3936
+
3937
+ * scrub path when not inheriting (#449)
3938
+ * Fix up inherits_path tests to use new values (#450)
3939
+
3940
+ ## 1.3.0
3941
+
3942
+ * inherit_path allows 'prefer', 'fallback', 'false' (#444)
3943
+
3944
+ ## 1.2.16
3945
+
3946
+ * Change PEX re-exec variable from ENV to os.environ (#441)
3947
+
3948
+ ## 1.2.15
3949
+
3950
+ * Bugfix for entry point targeting + integration test (#435)
3951
+
3952
+ ## 1.2.14
3953
+
3954
+ * Add interpreter constraints option and use constraints to search for
3955
+ compatible interpreters at exec time (#427)
3956
+
3957
+ ## 1.2.13
3958
+
3959
+ * Fix handling of pre-release option. (#424)
3960
+ * Patch sys module using pex_path from PEX-INFO metadata (#421)
3961
+
3962
+ ## 1.2.12
3963
+
3964
+ * Create `--pex-path` argument for pex cli and load pex path into
3965
+ pex-info metadata (#417)
3966
+
3967
+ ## 1.2.11
3968
+
3969
+ * Leverage `subprocess32` when available. (#411)
3970
+ * Kill support for python 2.6. (#408)
3971
+
3972
+ ## 1.2.10
3973
+
3974
+ * Allow passing a preamble file to the CLI (#400)
3975
+
3976
+ ## 1.2.9
3977
+
3978
+ * Add first-class support for multi-interpreter and multi-platform pex
3979
+ construction. (#394)
3980
+
3981
+ ## 1.2.8
3982
+
3983
+ * Minimum setuptools version should be 20.3 (#391)
3984
+ * Improve wheel support in pex. (#388)
3985
+
3986
+ ## 1.2.7
3987
+
3988
+ * Sort keys in PEX-INFO file so the output is deterministic. (#384)
3989
+ * Pass platform for SourceTranslator (#386)
3990
+
3991
+ ## 1.2.6
3992
+
3993
+ * Fix for Ambiguous Resolvable bug in transitive dependency resolution
3994
+ (#367)
3995
+
3996
+ ## 1.2.5
3997
+
3998
+ This release follows-up on 1.2.0 fixing bugs in the pre-release
3999
+ resolving code paths.
4000
+
4001
+ * Resolving pre-release when explicitly requested (#372)
4002
+ * Pass allow_prerelease to other iterators (Static, Caching) (#373)
4003
+
4004
+ ## 1.2.4
4005
+
4006
+ * Fix bug in cached dependency resolution with exact resolvable.
4007
+ (#365)
4008
+ * Treat .pth injected paths as extras. (#370)
4009
+
4010
+ ## 1.2.3
4011
+
4012
+ * Follow redirects on HTTP requests (#361)
4013
+ * Fix corner case in cached dependency resolution (#362)
4014
+
4015
+ ## 1.2.2
4016
+
4017
+ * Fix CacheControl import. (#357)
4018
+
4019
+ ## 1.2.1
4020
+
4021
+ This release is a quick fix for a bootstrapping bug that inadvertently
4022
+ went out in 1.2.0 (Issue #354).
4023
+
4024
+ * Ensure `packaging` dependency is self-contained. (#355)
4025
+
4026
+ ## 1.2.0
4027
+
4028
+ This release changes pex requirement resolution behavior. Only stable
4029
+ requirements are resolved by default now. The previous behavior that
4030
+ included pre-releases can be retained by passing `--pre` on the pex
4031
+ command line or passing `allow_prereleases=True` via the API.
4032
+
4033
+ * Upgrade dependencies to modern version ranges. (#352)
4034
+ * Add support for controlling prerelease resolution. (#350)
4035
+
4036
+ ## 1.1.20
4037
+
4038
+ * Add dummy flush method for clean interpreter exit with python3.6
4039
+ (#343)
4040
+
4041
+ ## 1.1.19
4042
+
4043
+ * Implement `--constraints` in pex (#335)
4044
+ * Make sure namespace packages (e.g. virtualenvwrapper) don't break
4045
+ pex (#338)
4046
+
4047
+ ## 1.1.18
4048
+
4049
+ * Expose a PEX instance's path. (#332)
4050
+ * Check for scripts directory in get_script_from_egg (#328)
4051
+
4052
+ ## 1.1.17
4053
+
4054
+ * Make PEX_PATH unify pex sources, as well as requirements. (#329)
4055
+
4056
+ ## 1.1.16
4057
+
4058
+ * Adjust FileFinder import to work with Python 3.6. (#318)
4059
+ * Kill zipmanifest monkeypatching. (#322)
4060
+ * Bump setuptools range to latest. (#323)
4061
+
4062
+ ## 1.1.15
4063
+
4064
+ * Fix #309 by de-duplicating output of the distribution finder. (#310)
4065
+ * Update wheel dependency to `>0.26.0`. (#304)
4066
+
4067
+ ## 1.1.14
4068
+
4069
+ * Repair Executor error handling for other classes of IOError/OSError.
4070
+ (#292)
4071
+ * Fix bdist_pex `--pex-args`. (#285)
4072
+ * Inherit user site with `--inherit-path`. (#284)
4073
+
4074
+ ## 1.1.13
4075
+
4076
+ * Repair passing of stdio kwargs to `PEX.run()`. (#288)
4077
+
4078
+ ## 1.1.12
4079
+
4080
+ * Fix bdist_pex interpreter cache directory. (#286)
4081
+ * Normalize and edify subprocess execution. (#255)
4082
+ * Don't ignore exit codes when using setuptools entry points. (#280)
4083
+
4084
+ ## 1.1.11
4085
+
4086
+ * Update cache dir when `bdist_pex.run` is called directly.
4087
+
4088
+ ## 1.1.10
4089
+
4090
+ * Improve failure modes for os.rename() as used in distribution
4091
+ caching.
4092
+
4093
+ ## 1.1.9
4094
+
4095
+ * Bugfix: Open setup.py in binary mode.
4096
+
4097
+ ## 1.1.8
4098
+
4099
+ * Bugfix: Repair a regression in `--disable-cache`.
4100
+
4101
+ ## 1.1.7
4102
+
4103
+ * Add README and supported python versions to PyPI description.
4104
+ * Use `open` with utf-8 support.
4105
+ * Add `--pex-root` option.
4106
+
4107
+ ## 1.1.6
4108
+
4109
+ This release is a quick fix for a regression that inadvertently went out
4110
+ in 1.1.5 (Issue #243).
4111
+
4112
+ * Fix the `bdist_pex` `setuptools` command to work for python2.
4113
+ * Upgrade pex dependencies on `setuptools` and `wheel`.
4114
+
4115
+ ## 1.1.5
4116
+
4117
+ * Fix `PEXBuilder.clone` and thus `bdist_pex --pex-args` for
4118
+ `--python` and `--python-shebang`.
4119
+ * Fix old `pkg_resources` egg version normalization.
4120
+ * Fix the `inherit_path` handling.
4121
+ * Fix handling of bad distribution script names when used as the pex
4122
+ entrypoint.
4123
+
4124
+ ## 1.1.4
4125
+
4126
+ This release is a quick fix for a regression that inadvertently went out
4127
+ in 1.1.3 (Issue #216).
4128
+
4129
+ * Add a test for the regression in `FixedEggMetadata._zipinfo_name`
4130
+ and revert the breaking commit.
4131
+
4132
+ ## 1.1.3
4133
+
4134
+ This release includes an initial body of work towards Windows support,
4135
+ ABI tag support for CPython 2.x and a fix for version number
4136
+ normalization.
4137
+
4138
+ * Add python 2.x abi tag support.
4139
+ * Add .idea to .gitignore.
4140
+ * Don't normalize version numbers as names.
4141
+ * More fixes for windows.
4142
+ * Fixes to get pex to work on windows.
4143
+
4144
+ ## 1.1.2
4145
+
4146
+ * Bump setuptools & wheel version pinning.
4147
+ * Unescape html in PageParser.href_match_to_url.
4148
+ * Memoize calls to Crawler.crawl() for performance win in find-links
4149
+ based resolution.
4150
+
4151
+ ## 1.1.1
4152
+
4153
+ * Fix infinite recursion when `PEX_PYTHON` points at a symlink.
4154
+ * Add `/etc/pexrc` to the list of pexrc locations to check.
4155
+ * Improve error messaging for platform constrained Untranslateable
4156
+ errors.
4157
+
4158
+ ## 1.1.0
4159
+
4160
+ * Add support for `.pexrc` files for influencing the pex environment.
4161
+ See the notes [here](
4162
+ https://github.com/pex-tool/pex/blob/master/docs/buildingpex.rst#tailoring-pex-execution-at-build-time
4163
+ ).
4164
+ * Bug fix: PEX_PROFILE_FILENAME and PEX_PROFILE_SORT were not
4165
+ respected.
4166
+ * Adds the `bdist_pex` command to setuptools.
4167
+ * Bug fix: We did not normalize package names in `ResolvableSet`, so
4168
+ it was possible to depend on `sphinx` and `Sphinx-1.4a0.tar.gz` and
4169
+ get two versions build and included into the pex.
4170
+ * Adds a pex-identifying User-Agent.
4171
+
4172
+ ## 1.0.3
4173
+
4174
+ * Bug fix: Accommodate OSX `Python` python binaries. Previously the
4175
+ OSX python distributions shipped with OSX, XCode and available via
4176
+ https://www.python.org/downloads/ could fail to be detected using
4177
+ the `PythonInterpreter` class. Fixes
4178
+ * Bug fix: PEX_SCRIPT failed when the script was from a not-zip-safe
4179
+ egg.
4180
+ * Bug fix: `sys.exit` called without arguments would cause
4181
+ `None` to be printed on stderr since pex 1.0.1.
4182
+
4183
+ ## 1.0.2
4184
+
4185
+ * Bug fix: PEX-INFO values were overridden by environment `Variables`
4186
+ with default values that were not explicitly set in the environment.
4187
+ Fixes #135.
4188
+ * Bug fix: Since
4189
+ [69649c1](https://github.com/pex-tool/pex/commit/69649c1) we have
4190
+ been un-patching the side effects of `sys.modules` after
4191
+ `PEX.execute`. This takes all modules imported during the PEX
4192
+ lifecycle and sets all their attributes to `None`. Unfortunately,
4193
+ `sys.excepthook`, `atexit` and `__del__` may still try to operate
4194
+ using these tainted modules, causing exceptions on interpreter
4195
+ teardown. This reverts just the `sys` un-patching so that the
4196
+ above-mentioned teardown hooks behave more predictably.
4197
+
4198
+ ## 1.0.1
4199
+
4200
+ * Allow PEXBuilder to optionally copy files into the PEX environment
4201
+ instead of hard-linking them.
4202
+ * Allow PEXBuilder to optionally skip pre-compilation of .py files into
4203
+ .pyc files.
4204
+ * Bug fix: PEXBuilder did not respect the target interpreter when
4205
+ compiling source to bytecode.
4206
+ * Bug fix: Fix complex resolutions when using a cache.
4207
+
4208
+ ## 1.0.0
4209
+
4210
+ The 1.0.0 release of pex introduces a few breaking changes: `pex -r` now
4211
+ takes requirements.txt files instead of requirement specs, `pex -s` has
4212
+ now been removed since source specs are accepted as arguments, and
4213
+ `pex -p` has been removed in favor of its alias `pex -o`.
4214
+
4215
+ The pex *command line interface* now adheres to semver insofar as
4216
+ backwards incompatible CLI changes will invoke a major version change.
4217
+ Any backwards incompatible changes to the PEX environment variable
4218
+ semantics will also result in a major version change. The pex *API*
4219
+ adheres to semver insofar as backwards incompatible API changes will
4220
+ invoke minor version changes.
4221
+
4222
+ For users of the PEX API, it is recommended to add minor version ranges,
4223
+ e.g. `pex>=1.0,<1.1`. For users of the PEX CLI, major version ranges
4224
+ such as `pex>=1,<2` should be sufficient.
4225
+
4226
+ * BREAKING CHANGE: Removes the `-s` option in favor of specifying
4227
+ directories directly as arguments to the pex command line.
4228
+ * BREAKING CHANGE: `pex -r` now takes requirements.txt filenames and
4229
+ *not* requirement specs. Requirement specs are now passed as
4230
+ arguments to the pex tool. Use `--` to escape command line arguments
4231
+ passed to interpreters spawned by pex.
4232
+ * Adds a number of flag aliases to be more compatible with pip command
4233
+ lines: `--no-index`, `-f`, `--find-links`, `--index-url`,
4234
+ `--no-use-wheel`. Removes `-p` in favor of `-o` exclusively.
4235
+ * Adds `--python-shebang` option to the pex tool in order to set the
4236
+ `#!` shebang to an exact path.
4237
+ * Adds support for `PEX_PYTHON` environment variable which will cause
4238
+ the pex file to re-invoke itself using the interpreter specified,
4239
+ e.g. `PEX_PYTHON=python3.4` or
4240
+ `PEX_PYTHON=/exact/path/to/interpreter`.
4241
+ * Adds support for `PEX_PATH` environment variable which allows
4242
+ merging of PEX environments at runtime. This can be used to inject
4243
+ plugins or entry_points or modules from one PEX into another
4244
+ without explicitly building them together.
4245
+ * Consolidates documentation of `PEX_` environment variables and adds
4246
+ the `--help-variables` option to the pex client.
4247
+ * Adds helper method to dump a package subdirectory onto disk from
4248
+ within a zipped PEX file. This can be useful for applications that
4249
+ know they're running within a PEX and would prefer some static
4250
+ assets dumped to disk instead of running as an unzipped PEX file.
4251
+ * Now supports extras for static URLs and installable directories.
4252
+ * Adds `-m` and `--entry-point` alias to the existing `-e` option for
4253
+ entry points in the pex tool to evoke the similarity to `python -m`.
4254
+ * Adds console script support via `-c/--script/--console-script` and
4255
+ `PEX_SCRIPT`. This allows you to reference the named entry point
4256
+ instead of the exact `module:name` pair. Also supports scripts
4257
+ defined in the `scripts` section of setup.py.
4258
+ * Adds more debugging information when encountering unresolvable
4259
+ requirements.
4260
+ * Bug fix: `PEX_COVERAGE` and `PEX_PROFILE` did not function correctly
4261
+ when SystemExit was raised.
4262
+ * Bug fix: Fixes caching in the PEX tool since we don't cache the
4263
+ source distributions of installable directories.
4264
+
4265
+ ## 0.9.0
4266
+
4267
+ This is the last release before the 1.0.0 development branch is started.
4268
+
4269
+ * Change the setuptools range to `>=2.2,<16` by handling EntryPoint
4270
+ changes as well as being flexible on whether `pkg_resources` is a
4271
+ package or a module.
4272
+ * Adds option groups to the pex tool to make the help output slightly
4273
+ more readable.
4274
+ * Bug fix: Make `pip install pex` work better by removing
4275
+ `extras_requires` on the `console_script` entry point.
4276
+ * New feature: Adds an interpreter cache to the `pex` tool. If the
4277
+ user does not explicitly disable the wheel feature and attempts to
4278
+ build a pex with wheels but does not have the wheel package
4279
+ installed, pex will download it in order to make the feature work.
4280
+
4281
+ ## 0.8.6
4282
+
4283
+ * Bug fix: Honor installed sys.excepthook in pex teardown.
4284
+ * Bug fix: `UrllibContext` used `replace` as a keyword argument for
4285
+ `bytes.decode` but this only works on Python 3.
4286
+
4287
+ ## 0.8.5
4288
+
4289
+ * Bug fix: Fixup string formatting in pex/bin/pex.py to support Python
4290
+ 2.6
4291
+
4292
+ ## 0.8.4
4293
+
4294
+ * Performance improvement: Speed up the best-case scenario of
4295
+ dependency resolution.
4296
+ * Bug fix: Change from `uuid4().get_hex()` to `uuid4().hex` to
4297
+ maintain Python3 compatibility of pex.common.
4298
+ * Bug fix: Actually cache the results of translation. Previously bdist
4299
+ translations would be created in a temporary directory even if a
4300
+ cache location was specified.
4301
+ * Bug fix: Support all potential abi tag permutations when determining
4302
+ platform compatibility.
4303
+
4304
+ ## 0.8.3
4305
+
4306
+ * Performance improvement: Don't always write packages to disk if
4307
+ they've already been cached. This can significantly speed up
4308
+ launching PEX files with a large number of non-zip-safe
4309
+ dependencies.
4310
+
4311
+ ## 0.8.2
4312
+
4313
+ * Bug fix: Allow pex 0.8.x to parse pex files produced by earlier
4314
+ versions of pex and twitter.common.python.
4315
+ * Pin pex to setuptools prior to 9.x until we have a chance to make
4316
+ changes related to PEP440 and the change of pkg_resources.py to a
4317
+ package.
4318
+
4319
+ ## 0.8.1
4320
+
4321
+ * Bug fix: Fix issue where it'd be possible to `os.path.getmtime` on
4322
+ a remote `Link` object
4323
+
4324
+ ## 0.8.0
4325
+
4326
+ * *API change*: Decouple translation from package iteration. This
4327
+ removes the Obtainer construct entirely, which likely means if
4328
+ you're using PEX as a library, you will need to change your code if
4329
+ you were doing anything nontrivial. This adds a couple new options
4330
+ to `resolve` but simplifies the story around how to cache packages.
4331
+ * Refactor http handling in pex to allow for alternate http
4332
+ implementations. Adds support for
4333
+ [requests](https://github.com/kennethreitz/requests), improving both
4334
+ performance and security. For more information, read the commit
4335
+ notes at [91c7f32](
4336
+ https://github.com/pex-tool/pex/commit/91c7f324085c18af714d35947b603a5f60aeb682
4337
+ ).
4338
+ * Improvements to API documentation throughout.
4339
+ * Renamed `Tracer` to `TraceLogger` to prevent nondeterministic isort
4340
+ ordering.
4341
+ * Refactor tox.ini to increase the number of environment combinations
4342
+ and improve coverage.
4343
+ * Adds HTTP retry support for the RequestsContext.
4344
+ * Make pex `--version` correct.
4345
+ * Bug fix: Fix over-aggressive `sys.modules` scrubbing for namespace
4346
+ packages. Under certain circumstances, namespace packages in
4347
+ site-packages could conflict with packages within a PEX, causing
4348
+ them to fail importing.
4349
+ * Bug fix: Replace uses of `os.unsetenv(...)` with
4350
+ `del os.environ[...]`
4351
+ * Bug fix: Scrub `sys.path` and `sys.modules` based upon both supplied
4352
+ path and realpath of files and directories. Newer versions of
4353
+ virtualenv on Linux symlink site-packages which caused those
4354
+ packages to not be removed from `sys.path` correctly.
4355
+ * Bug fix: The pex -s option was not correctly pulling in transitive
4356
+ dependencies.
4357
+ * Bug fix: Adds `content` method to HTTP contexts that does HTML
4358
+ content decoding, fixing an encoding issue only experienced when
4359
+ using Python 3.
4360
+
4361
+ ## 0.7.0
4362
+
4363
+ * Rename `twitter.common.python` to `pex` and split out from the
4364
+ [twitter/commons](http://github.com/twitter/commons) repo.
4365
+
4366
+ ## 0.6.0
4367
+
4368
+ * Change the interpretation of `-i` (and of PyPIFetcher's pypi_base)
4369
+ to match pip's `-i`. This is useful for compatibility with devpi.
4370
+
4371
+ ## 0.5.10
4372
+
4373
+ * Ensures that .egg/.whl distributions on disk have their mtime
4374
+ updated even though we no longer overwrite them. This gives them a
4375
+ new time lease against their ttl.
4376
+
4377
+ Without this change, once a distribution aged past the ttl it would
4378
+ never be used again, and builds would re-create the same
4379
+ distributions in tmpdirs over and over again.
4380
+
4381
+ ## 0.5.9
4382
+
4383
+ * Fixes an issue where SourceTranslator would overwrite .egg/.whl
4384
+ distributions already on disk. Instead, it should always check to see
4385
+ if a copy already exists and reuse if there.
4386
+
4387
+ This ordinarily should not be a problem but the zipimporter caches
4388
+ metadata by filename instead of stat/sha, so if the underlying
4389
+ contents changed a runtime error would be thrown due to seemingly
4390
+ corrupt zip file offsets.
4391
+
4392
+ ## 0.5.8
4393
+
4394
+ * Adds `-i/--index` option to the pex tool.
4395
+
4396
+ ## 0.5.7
4397
+
4398
+ * Adds `twitter.common.python.pex_bootstrap` `bootstrap_pex_env`
4399
+ function in order to initialize a PEX environment from within a
4400
+ python interpreter. (Patch contributed by @kwlzn)
4401
+ * Adds stdin=,stdout=,stderr= keyword parameters to the `PEX.run`
4402
+ function. (Patch from @benjy)
4403
+
4404
+ ## 0.5.6
4405
+
4406
+ * The crawler now defaults to not follow links for security reasons.
4407
+ (Before the default behavior was to implicitly `--follow-links` for
4408
+ all requirements.)
4409
+
4410
+ ## 0.5.5
4411
+
4412
+ * Improves scrubbing of site-packages from PEX environments.
4413
+
4414
+ 0.5.1 - 0.5.4
4415
+ =============
4416
+
4417
+ * Silences exceptions reported during interpreter teardown (the
4418
+ exceptions resulting from incorrect atexit handler behavior)
4419
+ introduced by 0.4.3
4420
+ * Adds `__hash__` to `Link` so that Packages are hashed correctly in
4421
+ `twitter.common.python.resolver` `resolve`
4422
+
4423
+ ## 0.5.0
4424
+
4425
+ * Adds wheel support to `twitter.common.python`
4426
+
4427
+ ## 0.4.3
4428
+
4429
+ * Adds `twitter.common.python.finders` which are additional finders
4430
+ for setuptools including:
4431
+
4432
+ - find eggs within a .zip
4433
+ - find wheels within a directory
4434
+ - find wheels within a .zip
4435
+
4436
+ * Adds a new Package abstraction by refactoring Link into Link and
4437
+ Package.
4438
+
4439
+ * Adds support for PEP425 tagging necessary for wheel support.
4440
+
4441
+ * Improves python environment isolation by correctly scrubbing
4442
+ namespace packages injected into module `__path__` attributes by
4443
+ nspkg pth files.
4444
+
4445
+ * Adds `twitter.common.python.resolver` `resolve` method that handles
4446
+ transitive dependency resolution better. This means that if the
4447
+ requirement `futures==2.1.2` and an unqualified `futures>=2` is
4448
+ pulled in transitively, our resolver will correctly resolve futures
4449
+ 2.1.2 instead of reporting a VersionConflict if any version newer
4450
+ than 2.1.2 is available.
4451
+
4452
+ * Factors all `twitter.common.python` test helpers into
4453
+ `twitter.common.python.testing`
4454
+
4455
+ * Bug fix: Fix `OrderedSet` atexit exceptions
4456
+
4457
+ * Bug fix: Fix cross-device symlinking (patch from @benjy)
4458
+
4459
+ * Bug fix: Raise a `RuntimeError` if we fail to write `pkg_resources`
4460
+ into a .pex
4461
+
4462
+ ## 0.4.2
4463
+
4464
+ * Upgrade to `setuptools>=1`
4465
+
4466
+ ## 0.4.1
4467
+
4468
+ * `twitter.common.python` is no longer a namespace package
4469
+
4470
+ ## 0.4.0
4471
+
4472
+ * Kill the egg distiller. We now delegate .egg generation to
4473
+ bdist_egg.
4474
+
4475
+ ## 0.3.1
4476
+
4477
+ * Short-circuit resolving a distribution if a local exact match is
4478
+ found.
4479
+ * Correctly patch the global `pkg_resources` `WorkingSet` for the
4480
+ lifetime of the Python interpreter.
4481
+ * Fixes a performance regression in setuptools `build_zipmanifest`
4482
+ [Setuptools Issue #154](
4483
+ https://bitbucket.org/pypa/setuptools/issue/154/build_zipmanifest-results-should-be)
4484
+
4485
+ ## 0.3.0
4486
+
4487
+ * Plumb through the `--zip-safe`, `--always-write-cache`,
4488
+ `--ignore-errors` and `--inherit-path` flags to the pex tool.
4489
+ * Delete the unused `PythonDirWrapper` code.
4490
+ * Split `PEXEnvironment` resolution into
4491
+ `twitter.common.python.environment` and de-conflate
4492
+ `WorkingSet`/`Environment` state.
4493
+ * Removes the monkeypatched zipimporter in favor of keeping all eggs
4494
+ unzipped within PEX files. Refactors the PEX dependency cache in
4495
+ `util.py`
4496
+ * Adds interpreter detection for Jython and PyPy.
4497
+ * Dependency translation errors should be made uniform. (Patch
4498
+ from @johnsirois)
4499
+ * Adds `PEX_PROFILE_ENTRIES` to limit the number of entries reported
4500
+ when `PEX_PROFILE` is enabled. (Patch from @rgs_)
4501
+ * Bug fix: Several fixes to error handling in
4502
+ `twitter.common.python.http` (From Marc Abramowitz)
4503
+ * Bug fix: PEX should not always assume that `$PATH` was available.
4504
+ (Patch from @jamesbroadhead)
4505
+ * Bug fix: Filename should be part of the .pex cache key or else
4506
+ multiple identical versions will incorrectly resolve (Patch
4507
+ from @tc)
4508
+ * Bug fix: Executed entry points shouldn't be forced to run in an
4509
+ environment with `__future__` imports enabled. (Patch
4510
+ from @lawson_patrick)
4511
+ * Bug fix: Detect versionless egg links and fail fast. (Patch from
4512
+ @johnsirois.)
4513
+ * Bug fix: Handle setuptools>=2.1 correctly in the zipimport
4514
+ monkeypatch (Patch from @johnsirois.)
4515
+
4516
+ ## 0.2.3
4517
+
4518
+ * Bug fix: Fix handling of Fetchers with `file://` urls.
4519
+
4520
+ ## 0.2.2
4521
+
4522
+ * Adds the pex tool as a standalone tool.
4523
+
4524
+ ## 0.2.1
4525
+
4526
+ * Bug fix: Bootstrapped `twitter.common.python` should declare
4527
+ `twitter.common` as a namespace package.
4528
+
4529
+ ## 0.2.0
4530
+
4531
+ * Make `twitter.common.python` fully standalone by consolidating
4532
+ external dependencies within `twitter.common.python.common`.
4533
+
4534
+ ## 0.1.0
4535
+
4536
+ * Initial published version of `twitter.common.python`.