Skip to content

Releases: pex-tool/pex

pex 2.20.4

25 Oct 04:42
v2.20.4
a84476a
Compare
Choose a tag to compare

2.20.4

This release carries several bug fixes and a performance improvement for
lock deletes.

Although there were no direct reports in the wild, @iritkatriel noticed
by inspection the Pex safe_mkdir utility function would mask any
OSError besides EEXIST. This is now fixed.

It was observed by @b-x that when PEX_ROOT was contained in a
symlinked path, PEXes would fail to execute. The most likely case
leading to this would be a symlinked HOME dir. This is now fixed.

This release also fixes a bug where --pip-log <path>, used multiple
times in a row against the same file could lead to pex3 lock errors.
Now the specified path is always truncated before use and a note has
been added to the option --help that using the same --pip-log path
in concurrent Pex runs is not supported.

In addition, pex3 lock {update,sync} is now optimized for the cases
where all the required updates are deletes. In this case neither Pip nor
the network are consulted leading to speed improvements proportional to
the size of the resolve.

  • Fix safe_mkdir swallowing non-EEXIST errors. (#2575)
  • Fix PEX_ROOT handling for symlinked paths. (#2574)
  • Fix --pip-log re-use. (#2570)
  • Optimize pure delete lock updates. (#2568)

file sha256 size
pex bddbed460d6b504c3ce2fc3cee124a91e0a9ef157d83c074ef9375a530068785 4317976
pex-linux-aarch64 4dfd16cb9d7d830f88d1aeab33881f16a94c3ba83cb2a7528dfff1d171b45608 24063227
pex-linux-x86_64 d10e04d17eae42a66470717abec1c4eb47f0562d5bc3b08425d31e1cc5ebbbe9 27709425
pex-macos-aarch64 eae3e0c8b3f0288e0111cebe8877d06430758595e7f20d6e1ed5b677456eaab4 21570083
pex-macos-x86_64 1285a1bef5cefbfbfb0a8cb038ad1eba3a25b94536530dd5b4d463e2d4e5914b 22081080

pex 2.20.3

09 Oct 23:40
v2.20.3
cf04a5a
Compare
Choose a tag to compare

2.20.3

This release fixes both PEX building and lock creation via
pex3 lock {create,sync} to be reproducible in more cases. Previously,
if a requirement only available in source form (an sdist, a local
project or a VCS requirement) had a build that was not reproducible due
to either file timestamps (where the SOURCE_DATE_EPOCH standard was
respected) or random iteration order (e.g.: the setup.py used sets in
certain in-opportune ways), Pex's outputs would mirror the problematic
requirement's non-reproducibility. Now Pex plumbs a fixed
SOURCE_DATE_EPOCH and PYTHONHASHSEED to all places sources are
built.

  • Plumb reproducible build env vars more thoroughly. (#2554)

file sha256 size
pex 0100c2e0b9e5dd56b063c98176cdd11b6064c2439d0faefdd3d25453393ed9fb 4315782
pex-linux-aarch64 a8a8199ed4ef71b439c622f39f77aa2bbb9e3f64b04abd8f9ecc0dccca0c6d48 24061034
pex-linux-x86_64 e19ad6b265327201a1c1bfdae62b9e8a9af2b26e810cf6921a0db44a9e224b5a 27707238
pex-macos-aarch64 e0eda2ed5c29d819e0b4b47ed3713b3d95ab296377a14c803430a6e96acd87fa 21567888
pex-macos-x86_64 e5d8103f07a29db384becc976d9062dc105a9386cfd6d3e1bd9cb75ad6a77e1b 22078896

pex 2.20.2

01 Oct 02:07
v2.20.2
f28046b
Compare
Choose a tag to compare

2.20.2

This release fixes an old bug handling certain sdist zips under
Python 2.7 as well missing support for Python 3.13's PYTHON_COLORS
env var.

  • Fix Zip extraction UTF-8 handling for Python 2.7. (#2546)
  • Add repl support for PYTHON_COLORS. (#2545)

file sha256 size
pex 6f761f0efe161938f902ddf1da9fd9a5529514cf2155ebec943c3698336e5fd7 4314770
pex-linux-aarch64 f6cb396d4937f971b88f868aaaf700a8aaf913f2db796c7ca745775231d3c17f 24055701
pex-linux-x86_64 1cb2ede381c2b4a3204044b15b27e175d7114d4cdc08de980243c89b793d22cf 27671950
pex-macos-aarch64 0a6b07b3b523e151f2613e5387863faa47ddddbaea60ad6ac250b8e29bd128a2 21526938
pex-macos-x86_64 e343cd10a0f82323bd2dceaebe8637acb38cc1c9e8c2cad74213476f4bd68906 22041156

pex 2.20.1

19 Sep 22:50
v2.20.1
da262e7
Compare
Choose a tag to compare

2.20.1

This release fixes Pex --interpreter-constraint handling such that
any supplied interpreter constraints which are in principle
unsatisfiable either raise an error or else cause a warning to be issued
when other viable interpreter constraints have also been specified. For
example, --interpreter-constraint ==3.11.*,==3.12.* now errors and
--interpreter-constraint '>=3.8,<3.8' --interpreter-constraint ==3.9.*
now warns, culling >3.8,<3.8 and continuing using only ==3.9.*.

  • Pre-emptively cull unsatisfiable interpreter constraints. (#2542)

file sha256 size
pex 0dfc0295677698ad1c74c77e5f5b2ff19a0cba1ddd629b228aaf5d2bd290bc20 4313097
pex-linux-aarch64 006172bad4e6598a4be846ebe883f2475db93c0558b38d23614d6d3d942a07c3 24054033
pex-linux-x86_64 3e7be4684d67e38278aa5beb34dfe8e34b6a4519fda9dc53d1214a829591c146 27670289
pex-macos-aarch64 88814a45df55529fe7c74b5c2dc3c61740ea3c97f310021d286902441d4b3963 21525279
pex-macos-x86_64 a78012827ab3ac5ccaa4f9eddd75d388079a8bffc3722a6392c94b8052e1ead9 22039492

pex 2.20.0

19 Sep 04:10
v2.20.0
ea0dfba
Compare
Choose a tag to compare

2.20.0

This release adds the --pip-log alias for the existing
--preserve-pip-download-log option as well as the ability to specify
the log file path. So, to debug a resolve, you can now specify
--pip-log log.txt and Pex will deposit the Pip resolve log to
log.txt in the current directory for easy tailing or post-resolve
inspection. In addition, the log file itself is more useful in some
cases. When you specify any abbreviated --platform targets, those
targets calculated wheel compatibility tags are included in the Pip
log. Also, when multiple targets are specified, their log outputs are
now merged at the end of the resolve in a serialized fashion with
prefixes on each log line indicating which target the log line
corresponds to.

In addition, a race in Pex's PEP-517 implementation that could (rarely)
lead to spurious metadata generation errors or sdist creation errors is
fixed.

  • Fix intermittent PEP-517 failures. (#2540)
  • Plumb --pip-version to Platform tag calculation. (#2538)
  • Add the ability to specify the --pip-log path. (#2536)

file sha256 size
pex b9637600b512e19bb8ded10cecd7afbf4126d4a1dc8b93aa63e29a9b9d0acf79 4311728
pex-linux-aarch64 af3c3049d9f8bb94f4d3e67eb4f2c6a4d16aede34569f9367adf99c495649a6a 24052664
pex-linux-x86_64 5186406f5e93ef00139a989235d7467df5ced4e4edf389cd7903b04eea50ec0d 27668910
pex-macos-aarch64 81ed55d4fe7d8ca9ff0ba55f9443e650df283afa7b4b87be2337caecdaa1951a 21523908
pex-macos-x86_64 12a3745d7f80ba679d2763af90b722810cd372cb545bfdc364454b2c241a0798 22038122

pex 2.19.1

17 Sep 01:21
v2.19.1
9098057
Compare
Choose a tag to compare

2.19.1

This release fixes a regression introduced by #2512 in the 2.19.0
release when building PEXes using abbreviated --platform targets.
Instead of failing certain builds that used to succeed, Pex now warns
that the resulting PEX may fail at runtime and that
--complete-platform should be used instead.

  • Only warn when --platform resolves fail tag checks. (#2533)

file sha256 size
pex 86ef2ac38d36aba203dc5b9819b77c3e25fb8588b01c9d15f66b1c94bdbc989b 4310578
pex-linux-aarch64 bfe9e3fc43b93a2cf07aafe7573cd047fa182d8d8bf5a01922db6aace845fcc6 24051503
pex-linux-x86_64 427b1fcbccdafa8c07a81a4e6085802e66de49efb82eba035a9a66a846992bc5 27667757
pex-macos-aarch64 0d61f5f6dade67a303fe0f85f55f6bb5a90652bfc8ea62f38ec3fe8d19a06771 21522752
pex-macos-x86_64 368b2c86902f3e56572913101498986c3b8ee5337d0c0f66b36596f600a43f42 22036967

pex 2.19.0

15 Sep 05:51
v2.19.0
5e689f9
Compare
Choose a tag to compare

2.19.0

This release adds support for a new --pre-resolved-dists resolver as
an alternative to the existing Pip resolver, --lock resolver and
--pex-repository resolvers. Using --pre-resolved-dists dists/dir/
behaves much like --no-pypi --find-links dists/dir/ except that it is
roughly 3x faster.

  • Support --pre-resolved-dists resolver. (#2512)

file sha256 size
pex 1b56d778fcf3b9504838277a7a20d6676b9f947aaa4759873830af2e78bf33ab 4310167
pex-linux-aarch64 e61d4fd3d9ad237fdb4de3eae3ab8b4ccd6dcb9927aa3fa6670f6ed41e859563 24051094
pex-linux-x86_64 46c9b66cfff839cae952ec5daa3fa2e98e2d5c095e630a33d10bb050f21b2280 27667352
pex-macos-aarch64 e8751e169c57b4610cd4f21b345c12977e829e5621c438aaebea691e7f6395ea 21522348
pex-macos-x86_64 4f30267de92e407e0a5454155d4dd06f62809197ec341d4083e81e194fcb1f63 22036558

pex 2.18.1

13 Sep 04:50
v2.18.1
1c9ac9e
Compare
Choose a tag to compare

2.18.1

This release fixes --scie-name-style platform-parent-dir introduced in
#2523. Previously the target platform name also leaked into scies
targeting foreign platforms despite using this option.

  • Fix --scie-name-style platform-parent-dir. (#2526)

file sha256 size
pex 235e2af0106a933f66c6281c56859b964a7eea45f2ce107364acc39f9d7241ad 4306261
pex-linux-aarch64 84d30ea29bf4c46dbeb8f7eda297f9001ff287bdc1218f27dfe413a2c502bbaf 24047200
pex-linux-x86_64 6964d2d564372c7378e13c2d8042d109fefd5021f76c5663304ab6f7ff7a9329 27663445
pex-macos-aarch64 83d34f66c618c961d4b341992abd1725b739c1ccfb82cff0bf44a2e524431ad1 21518443
pex-macos-x86_64 c0043174cc1c15b1696b3e0c31661b0e3a5706283510ef32078de94dd2409b46 22032653

pex 2.18.0

12 Sep 19:24
v2.18.0
d8a60db
Compare
Choose a tag to compare

2.18.0

This release adds support for pex3 cache {dir,info,purge} for
inspecting and managing the Pex cache. Notably, the pex3 cache purge
command is safe in the face of concurrent PEX runs, waiting for in
flight PEX runs to complete and blocking new runs from starting once the
purge is in progress. N.B.: when using pex3 cache purge it is best to
install Pex with the 'management' extra; e.g.:
pip install pex[management]. Alternatively, one of the new Pex scie
binary releases can be used.

In order to release a Pex binary that can support the new pex3 cache
management commands first class, a set of enhancements to project
locking and scie generation were added. When using --project you can
now specify extras; e.g.: --project ./the/project-dir[extra1,extra2].
When creating a Pex scie, you can now better control the output files
using --scie-only to ensure no PEX file is emitted and
--scie-name-style to control how the scie target platform name is
mixed into the scie output file name. Additionally, you can request one
or more shasum-compatible checksum files be emitted for each scie with
--scie-hash-alg.

On the locking front, an obscure bug locking project releases that
contain artifacts that mis-report their version number via their file
name has been fixed.

Finally, the vendored Pip has had its own vendored CA cert bundle
upgraded from that in certifi 2024.7.4 to that in certifi 2024.8.30.

  • Fix locking of sdists rejected by Pip. (#2524)
  • Add --scie-only & --scie-name-style. (#2523)
  • Support --project extras. (#2522)
  • Support shasum file gen via --scie-hash-alg. (#2520)
  • Update vendored Pip's CA cert bundle. (#2517)
  • Introduce pex3 cache {dir,info,purge}. (#2513)

file sha256 size
pex e5bc91c05b0e685a46348d4295c06507da66ba25452d0d2e13f0955e2b02a7c8 4306224
pex-linux-aarch64 a4bfa9e79adf5449b17ba76689a0ff491bd51dfe32864ceb9406aa52a67500e5 24047159
pex-linux-x86_64 214e126ea430fca238ea4803d4087066e2c7e905469c0ba9445735e573fde90c 27663407
pex-macos-aarch64 2693fe1221df2a7845094dd2c76698a322396977f6fcdeb19af52d3888bf35f9 21518404
pex-macos-x86_64 f6dc8fe4d49561158d9deed155bede78762d802084298465e37ac7316464b9d6 22032619

pex 2.17.0

26 Aug 15:21
v2.17.0
4c45f05
Compare
Choose a tag to compare

2.17.0

This release brings support for overriding the versions of setuptools
and wheel Pex bootstraps for non-vendored Pip versions (the modern ones
you select with --pip-version) using the existing
--extra-pip-requirement option introduced in the 2.10.0 release.

  • Support custom setuptools & wheel versions. (#2514)