pex

A tool for generating .pex (Python EXecutable) files, lock files and venvs.

APACHE-2.0 License

Downloads
2.5M
Stars
2.4K

Bot releases are hidden (Show)

pex - pex 2.1.28

Published by jsirois over 3 years ago


2.1.28

This is another hotfix release to fix incorrect resolve post-processing failing otherwise correct
resolves.

  • Pex resolver fails to evaluate markers when post-processing resolves to identify which dists
    satisfy direct requirements. (#1196)
pex - pex 2.1.27

Published by jsirois over 3 years ago


2.1.27

This is another hotfix release to fix a regression in Pex --sources-directory handling of
relative paths.

  • Support relative paths in Chroot.symlink. #1194
pex - pex 2.1.26

Published by jsirois over 3 years ago


2.1.26

This is a hotfix release that fixes requirement parsing when there is a local file in the CWD with
the same name as the project name of a remote requirement to be resolved.

  • Requirement parsing handles local non-dist files. (#1190)
pex - pex 2.1.25

Published by jsirois over 3 years ago


2.1.25

This release brings support for a --venv execution mode to complement --unzip and standard
unadorned PEX zip file execution modes. The --venv execution mode will first install the PEX
file into a virtual environment under ${PEX_ROOT}/venvs and then re-execute itself from there.
This mode of execution allows you to ship your PEXed application as a single zipfile that
automatically installs itself in a venv and runs from there to eliminate all PEX startup overhead
on subsequent runs and work like a "normal" application.

There is also support for a new resolution mode when building PEX files that allows you to use the
results of a previous resolve by specifying it as a -pex-repository to resolve from. If you have
many applications sharing a requirements.txt / constraints.txt, this can drastically speed up
resolves.

  • Improve PEX repository error for local projects. (#1184)
  • Use symlinks to add dists in the Pex CLI. (#1185)
  • Suppress pip debug warning. (#1183)
  • Support resolving from a PEX file repository. (#1182)
  • PEXEnvironment for a DistributionTarget. (#1178)
  • Fix plumbing of 2020-resolver to Pip. (#1180)
  • Platform can report supported_tags. (#1177)
  • Record original requirements in PEX-INFO. (#1171)
  • Tighten requirements parsing. (#1170)
  • Type BuildAndInstallRequest. (#1169)
  • Type AtomicDirectory. (#1168)
  • Type SpawnedJob. (#1167)
  • Refresh and type OrderedSet. (#1166)
  • PEXEnvironment recursive runtime resolve. (#1165)
  • Add support for -r / --constraints URL to the CLI. (#1163)
  • Surface Pip dependency conflict information. (#1162)
  • Add support for parsing extras and specifiers. (#1161)
  • Support project_name_and_version metadata. (#1160)
  • docs: fix simple typo, orignal -> original (#1156)
  • Support a --venv mode similar to --unzip mode. (#1153)
  • Remove redundant dep edge label info. (#1152)
  • Remove our reliance on packaging's LegacyVersion. (#1151)
  • Implement PEX_INTERPRETER special mode support. (#1149)
  • Fix PexInfo.copy. (#1148)
pex - pex 2.1.24

Published by jsirois almost 4 years ago


2.1.24

This release upgrades Pip to 20.3.3 + a patch to fix Pex resolves using
the pip-legacy-resolver and --constraints. The Pex package is
also fixed to install for Python 3.9.1+.

  • Upgrade to a patched Pip 20.3.3. (#1143)
  • Fix python requirement to include full 3.9 series. (#1142)
pex - pex 2.1.23

Published by jsirois almost 4 years ago


2.1.23

This release upgrades Pex to the latest Pip which includes support for
the new 2020-resolver (see:
https://pip.pypa.io/en/stable/user_guide/#resolver-changes-2020) as well
as support for macOS BigSur. Although this release defaults to the
legacy resolver behavior, the next release will deprecate the legacy
resolver and support for the legacy resolver will later be removed to
allow continuing Pip upgrades going forward. To switch to the new
resolver, use: --resolver-version pip-2020-resolver.

  • Upgrade Pex to Pip 20.3.1. (#1133)
pex - pex 2.1.22

Published by jsirois almost 4 years ago


2.1.22

This release fixes a deadlock that could be experienced when building
PEX files in highly concurrent environments in addition to fixing
pex --help-variables output.

A new suite of PEX tools is now available in Pex itself and any PEXes
built with the new --include-tools option. Use
PEX_TOOLS=1 pex --help to find out more about the available tools and
their usage.

Finally, the long deprecated exposure of the Pex APIs through _pex has
been removed. To use the Pex APIs you must include pex as a dependency
in your PEX file.

  • Add a dependency graph tool. (#1132)
  • Add a venv tool. (#1128)
  • Remove long deprecated support for _pex module. (#1135)
  • Add an interpreter tool. (#1131)
  • Escape venvs unless PEX_INHERIT_PATH is requested. (#1130)
  • Improve PythonInterpreter venv support. (#1129)
  • Add support for PEX runtime tools & an info tool. (#1127)
  • Exclusive atomic_directory always unlocks. (#1126)
  • Fix PythonInterpreter binary normalization. (#1125)
  • Add a requires_dists function. (#1122)
  • Add an is_exe helper. (#1123)
  • Fix req parsing for local archives & projects. (#1121)
  • Improve PEXEnvironment constructor ergonomics. (#1120)
  • Fix safe_open for single element relative paths. (#1118)
  • Add URLFetcher IT. (#1116)
  • Implement full featured requirment parsing. (#1114)
  • Fix --help-variables docs. (#1113)
  • Switch from optparse to argparse. (#1083)
pex - pex 2.1.21

Published by jsirois almost 4 years ago


2.1.21

  • Fix iter_compatible_interpreters with path. (#1110)
  • Fix Requires-Python environment marker mapping. (#1105)
  • Fix spurious InstalledDistribution env markers. (#1104)
  • Deprecate -R/--resources-directory. (#1103)
  • Fix ResourceWarning for unclosed /dev/null. (#1102)
  • Fix runtime vendoring bytecode compilation races. (#1099)
pex - pex 2.1.20

Published by Eric-Arellano almost 4 years ago


2.1.20

This release improves interpreter discovery to prefer more recent patch versions, e.g. preferring
Python 3.6.10 over 3.6.8.

We recently regained access to the docsite, and https://pex.readthedocs.io/en/latest/ is now
up-to-date.

  • Prefer more recent patch versions in interpreter discovery. (#1088)

  • Fix --pex-python when it's the same as the current interpreter. (#1087)

  • Fix dir_hash vs. bytecode compilation races. (#1080)

  • Fix readthedocs doc generation. (#1081)

pex - pex 2.1.19

Published by benjyw about 4 years ago


2.1.19

This release adds the --python-path option, which allows controlling the
interpreter search paths when building a PEX.

The release also removes --use-first-matching-interpreter, which was a misfeature. If you want to use
fewer interpreters when building a PEX, use more precise values for --interpreter-constraint and/or
--python-path, or use --python or --platform.

  • Add --python-path to change interpreter search paths when building a PEX. (#1077)
  • Remove --use-first-matching-interpreter misfeature. (#1076)
  • Encapsulate --inherit-path handling. (#1072)
pex - pex 2.1.18

Published by jsirois about 4 years ago


2.1.18

This release brings official support for Python 3.9 and adds a new --tmpdir option to explicitly
control the TMPDIR used by Pex and its subprocesses. The latter is useful when building PEXes in
space-constrained environments in the face of large distributions.

The release also fixes --cert and --client-cert so that they work with PEP-518 builds in
addition to fixing bytecode compilation races in highly parallel environments.

  • Add a --tmpdir option to the Pex CLI. (#1068)
  • Honor sys.executable unless macOS Framework. (#1065)
  • Add Python 3.9 support. (#1064)
  • Fix handling of --cert and --client-cert. (#1063)
  • Add atomic_directory exclusive mode. (#1062)
  • Fix --cert for PEP-518 builds. (#1060)
pex - pex 2.1.17

Published by jsirois about 4 years ago


2.1.17

This release fixes a bug in --resolve-local-platforms handling that made it unusable in 2.1.16
(#1043) as well as fixing a long standing file handle leak (#1050) and a bug when running under
macOS framework builds of Python (#1009).

  • Fix --unzip performance regression. (#1056)
  • Fix resource leak in Pex self-isolation. (#1052)
  • Fix use of iter_compatible_interpreters. (#1048)
  • Do not rely on sys.executable being accurate. (#1049)
  • slightly demystify the relationship between platforms and interpreters in the library API and CLI (#1047)
  • Path filter for PythonInterpreter.iter_candidates. (#1046)
  • Add type hints to util.py and tracer.py (#1044)
  • Add type hints to variables.py and platforms.py (#1042)
  • Add type hints to the remaining tests (#1040)
  • Add type hints to most tests (#1036)
  • Use MyPy via type comments (#1032)
pex - pex 2.1.16

Published by jsirois about 4 years ago


2.1.16

This release fixes a bug in sys.path scrubbing / hermeticity (#1025) and a bug in the -D / --sources-directory and -R / --resources-directory options whereby PEP-420 implicit (namespace) packages were not respected (#1021).

  • Improve UnsatisfiableInterpreterConstraintsError. (#1028)
  • Scrub direct sys.path manipulations by .pth files. (#1026)
  • PEX zips now contain directory entries. (#1022)
  • Fix UnsatisfiableInterpreterConstraintsError. (#1024)
pex - pex 2.1.15

Published by Eric-Arellano about 4 years ago


2.1.15

A patch release to fix an issue with the --use-first-matching-interpreter flag.

  • Fix --use-first-matching-interpreter at runtime. (#1014)
pex - pex 2.1.14

Published by Eric-Arellano about 4 years ago


2.1.14

This release adds the --use-first-matching-interpreter flag, which
can speed up performance when building a Pex at the expense of being
compatible with fewer interpreters at runtime.

  • Add --use-first-matching-interpreter. (#1008)
  • Autoformat with Black. (#1006)
pex - pex 2.1.13

Published by jsirois over 4 years ago


2.1.13

The focus of this release is better support of the --platform CLI
arg. Platforms are now better documented and can optionally be resolved
to local interpreters when possible via --resolve-local-platforms to
better support creation of multiplatform PEXes.

  • Add support for resolving --platform locally. (#1000)
  • Improve --platform help. (#1002)
  • Improve and fix --platform help. (#1001)
  • Ensure pip download dir is uncontended. (#998)
pex - pex 2.1.12

Published by benjyw over 4 years ago


2.1.12

A patch release to deploy the PEX_EXTRA_SYS_PATH feature.

  • A PEX_EXTRA_SYS_PATH runtime variable. (#989)
  • Fix typos (#986)
  • Update link to avoid a redirect (#982)
pex - pex 2.1.11

Published by benjyw over 4 years ago


2.1.11

A patch release to fix a symlink issue in remote execution environments.

  • use relative paths within wheel cache (#979)
  • Fix Tox not finding Python 3.8 on OSX. (#976)
pex - pex 2.1.10

Published by jsirois over 4 years ago


2.1.10

This release focuses on the resolver API and resolution performance. Pex 2 resolving using Pip is
now at least at performance parity with Pex 1 in all studied cases and most often is 5% to 10%
faster.

As part of the resolution performance work, Pip networking configuration is now exposed via Pex CLI
options and the NetworkConfiguration API type / new resolver.resolve API parameter.

With network configuration now wired up, the PEX_HTTP_RETRIES and PEX_HTTP_TIMEOUT env var
support in Pex 1 that was never wired into Pex 2 is now dropped in favor of passing --retries
and --timeout via the CLI (See: #94)

  • Expose Pip network configuration. (#974)
  • Restore handling for bad wheel filenames to .can_add() (#973)
  • Fix wheel filename parsing in PEXEnvironment.can_add (#965)
  • Split Pex resolve API. (#970)
  • Add a --local mode for packaging the Pex PEX. (#971)
  • Constrain the virtualenv version used by tox. (#968)
  • Improve Pex packaging. (#961)
  • Make the interpreter cache deterministic. (#960)
  • Fix deprecation warning for rU mode (#956)
  • Fix runtime resolve error message generation. (#955)
  • Kill dead code. (#954)
pex - pex 2.1.9

Published by benjyw over 4 years ago


2.1.9

This release introduces the ability to copy requirements from an existing PEX into a new one.

This can greatly speed up repeatedly creating a PEX when no requirements have changed.
A build tool (such as Pants) can create a "requirements PEX" that contains just a static
set of requirements, and build a final PEX on top of that, without having to re-run pip
to resolve requirements.

  • Support for copying requirements from an existing pex. (#948)