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