pex 2.72.0__tar.gz → 2.80.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pex might be problematic. Click here for more details.

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