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