Releases: pex-tool/pex
pex 2.4.1
pex 2.4.0
2.4.0
This release brings new support for preserving arguments passed to the
Python interpreter (like -u
or -W ignore
) either via running a PEX
via Python from the command line like python -u my.pex
or via a
shebang with embedded Python arguments like #!/usr/bin/python -u
.
In addition, PEXes can now be built with --inject-python-args
similar
to the existing --inject-args
but sealing in arguments to pass to
Python instead. When both explicitly passed Python interpreter arguments
and injected Python interpreter arguments are specified, the injected
arguments appear first on the synthesized command line and the
explicitly passed arguments appear last so that the explicit arguments
can trump (which is how Python handles this).
Several bugs existing in the --exclude
implementation since its
introduction are now fixed and the feature is greatly improved to act on
excludes eagerly, never traversing them in the resolve process; thus
avoiding downloads associated with them as well as potentially failing
metadata extraction & wheel builds for ill-behaved sdists.
Finally, a bug was fixed in pex3 lock export
for lock files containing
either locked VCS requirements or locked local project directories.
Previously, these were exported with a <project name>==<version>
requirement, which lost fidelity with the input requirement. Now they
are exported with their original requirement form. Further, since the
--hash
of these styles of locked requirement are unuseable outside
Pex, a new --format
option of pip-no-hashes
is introduced for the
adventurous.
pex 2.3.3
2.3.3
This release fixes pex3 lock create
support for --pip-version
s
23.3.1 and newer. Previously, when locking using indexes that serve
artifacts via re-directs, the resulting lock file would contain the
final re-directed URL instead of the originating index artifact URL.
This could lead to issues when the indexes re-direction scheme changed
or else if authentication parameters in the original index URL were
stripped in the Pip logs.
- Fix artifact URL recording for
pip>=23.3
. (#2421)
pex 2.3.2
pex 2.3.1
pex 2.3.0
2.3.0
This release introduces pex3 lock sync
as a higher-level tool that
can be used to create and maintain a lock as opposed to using a
combination of pex3 lock create
and pex3 lock update
. When there is
no existing lock file, pex3 lock sync --lock lock.json ...
is
equivalent to pex3 lock create --output lock.json ...
, it creates a
new lock. On subsequent uses however,
pex3 lock sync --lock lock.json ...
updates the lock file minimally to
meet any changed requirements or other changed lock settings.
This release also fixes pex --no-build --lock ...
to work with lock
files also created with --no-build
. The known case here is a
--style universal
lock created with --no-build
to achieve a
wheel-only universal lock.
This release includes a fix to clarify the conditions under which
--requierements-pex
can be used to combine the third party
dependencies from a pre-built PEX into a new PEX; namely, that the PEXes
must use the same value for the --pre-install-wheels
option.
Finally, this release fixes pex3 venv
to handle venvs created by
Virtualenv on systems that distinguish purelib
and platlib
site-packages directories. Red Hat distributions are a notable example
of this.
pex 2.2.2
pex 2.2.1
2.2.1
This release trims down the size of the Pex wheel on PyPI and the
released Pex PEX by about 20KB by consolidating image resources.
This release also fixes the release process to remove a window of time
when several links would be dead on at https://docs.pex-tool.org that
pointed to release artifacts that were not yet fully deployed.
pex 2.2.0
2.2.0
This release adds tools to interact with Pex's new embedded offline
documentation. You can browse those docs with pex --docs
or, more
flexibly, with pex3 docs
. See pex3 docs --help
for all the options
available.
This release also returns to SemVer versioning
practices. Simply, you can expect 3 things from Pex version numbers:
- The first component (the major version) will remain 2 as long as
possible. Pex tries very hard to never break existing users and to
allow them to upgrade without fear of breaking. This includes not
breaking Python compatibility. In Pex 2, Python 2.7 is supported as
well as Python 3.5+ for both CPython and PyPy. Pex will only continue
to add support for new CPython and PyPy releases and never remove
support for already supported Python versions while the major version
remains 2. - The second component (the minor version) will be incremented whenever
a release adds a feature. Since Pex is a command line tool only (not
a library), this means you can expect a new subcommand, a new option,
or a new allowable option value was added. Bugs might also have been
fixed. - The third component (the patch version) indicates only bugs were
fixed.
You can expect the minor version to get pretty big going forward!
- Add
pex --docs
and severalpex3 docs
options. (#2365)
pex 2.1.164
2.1.164
This release moves Pex documentation from https://pex.readthedocs.io to
https://docs.pex-tool.org. While legacy versioned docs will remain
available at RTD in perpetuity, going forward only the latest Pex
release docs will be available online at the https://docs.pex-tool.org
site. If you want to see the Pex docs for the version you are currently
using, Pex now supports the pex3 docs
command which will serve the
docs for your Pex version locally, offline, but with full functionality,
including search.
- Re-work Pex documentation. (#2362)