Skip to content

Latest commit

 

History

History
440 lines (319 loc) · 14.9 KB

CHANGES.rst

File metadata and controls

440 lines (319 loc) · 14.9 KB

CHANGES

1.0.0.dev3

  • Adds --python-shebang option to the pex tool in order to set the #! shebang to an exact path. #53.
  • Adds support for PEX_PYTHON environment variable which will cause the pex file to reinvoke itself using the interpreter specified, e.g. PEX_PYTHON=python3.4 or PEX_PYTHON=/exact/path/to/interpreter. #27.
  • Adds support for PEX_PATH environment variable which allows merging of PEX environments at runtime. This can be used to inject plugins or entry_points or modules from one PEX into another without explicitly building them together. #30.
  • Consolidates documentation of PEX_ environment variables and adds the --help-variables option to the pex client. Partially addresses #13.
  • Bug fix: PEX_COVERAGE and PEX_PROFILE did not function correctly when SystemExit was raised. Fixes #81.
  • Adds helper method to dump a package subdirectory onto disk from within a zipped PEX file. This can be useful for applications that know they're running within a PEX and would prefer some static assets dumped to disk instead of running as an unzipped PEX file. #12.

1.0.0.dev2

  • Now supports extras for static URLs and installable directories. #65.
  • BREAKING CHANGE: Removes the -s option in favor of specifying directories directly as arguments to the pex command line.
  • Fixes caching in the PEX tool since we don't cache the source distributions of installable directories. #24.

1.0.0.dev1

  • Adds -m and --entry-point alias to the existing -e option for entry points in the pex tool to evoke the similarity to python -m.
  • Adds console script support via -c/--script/--console-script and PEX_SCRIPT. This allows you to reference the named entry point instead of the exact module:name pair. Also supports scripts defined in the scripts section of setup.py. #59.

1.0.0.dev0

  • Adds a number of flag aliases to be more compatible with pip command lines: --no-index, -f, --find-links, --index-url, --no-use-wheel. Removes -p in favor of -o exclusively.
  • BREAKING CHANGE: pex -r now takes requirements.txt filenames and not requirement specs. Requirement specs are now passed as arguments to the pex tool. Use -- to escape command line arguments passed to interpreters spawned by pex. Implements #5.

0.9.0

This is the last release before the 1.0.0 development branch is started.

  • Change the setuptools range to >=2.2,<16 by handling EntryPoint changes as well as being flexible on whether pkg_resources is a package or a module. Fixes #55 and #34.
  • Adds option groups to the pex tool to make the help output slightly more readable.
  • Bug fix: Make pip install pex work better by removing extras_requires on the console_script entry point. Fixes #48
  • New feature: Adds an interpreter cache to the pex tool. If the user does not explicitly disable the wheel feature and attempts to build a pex with wheels but does not have the wheel package installed, pex will download it in order to make the feature work. Implements #47 in order to fix #48

0.8.6

  • Bug fix: Honor installed sys.excepthook in pex teardown. RB #1733
  • Bug fix: UrllibContext used replace as a keyword argument for bytes.decode but this only works on Python 3. Pull Request #46

0.8.5

  • Bug fix: Fixup string formatting in pex/bin/pex.py to support Python 2.6 Pull Request #40

0.8.4

  • Performance improvement: Speed up the best-case scenario of dependency resolution. RB #1685
  • Bug fix: Change from uuid4().get_hex() to uuid4().hex to maintain Python3 compatibility of pex.common. Pull Request #39
  • Bug fix: Actually cache the results of translation. Previously bdist translations would be created in a temporary directory even if a cache location was specified. RB #1666
  • Bug fix: Support all potential abi tag permutations when determining platform compatibility. Pull Request #33

0.8.3

  • Performance improvement: Don't always write packages to disk if they've already been cached. This can significantly speed up launching PEX files with a large number of non-zip-safe dependencies. RB #1642

0.8.2

  • Bug fix: Allow pex 0.8.x to parse pex files produced by earlier versions of pex and twitter.common.python.
  • Pin pex to setuptools prior to 9.x until we have a chance to make changes related to PEP440 and the change of pkg_resources.py to a package.

0.8.1

  • Bug fix: Fix issue where it'd be possible to os.path.getmtime on a remote Link object Issue #29

0.8.0

  • API change: Decouple translation from package iteration. This removes the Obtainer construct entirely, which likely means if you're using PEX as a library, you will need to change your code if you were doing anything nontrivial. This adds a couple new options to resolve but simplifies the story around how to cache packages. RB #785
  • Refactor http handling in pex to allow for alternate http implementations. Adds support for requests, improving both performance and security. For more information, read the commit notes at 91c7f32. RB #778
  • Improvements to API documentation throughout.
  • Renamed Tracer to TraceLogger to prevent nondeterministic isort ordering.
  • Refactor tox.ini to increase the number of environment combinations and improve coverage.
  • Adds HTTP retry support for the RequestsContext. RB #1303
  • Make pex --version correct. Issue #19
  • Bug fix: Fix over-aggressive sys.modules scrubbing for namespace packages. Under certain circumstances, namespace packages in site-packages could conflict with packages within a PEX, causing them to fail importing. RB #1378
  • Bug fix: Replace uses of os.unsetenv(...) with del os.environ[...] Pull Request #11
  • Bug fix: Scrub sys.path and sys.modules based upon both supplied path and realpath of files and directories. Newer versions of virtualenv on Linux symlink site-packages which caused those packages to not be removed from sys.path correctly. Issue #21
  • Bug fix: The pex -s option was not correctly pulling in transitive dependencies. Issue #22
  • Bug fix: Adds content method to HTTP contexts that does HTML content decoding, fixing an encoding issue only experienced when using Python 3. Issue #10

0.7.0

  • Rename twitter.common.python to pex and split out from the twitter/commons repo.

0.6.0

  • Change the interpretation of -i (and of PyPIFetcher's pypi_base) to match pip's -i. This is useful for compatibility with devpi.

0.5.10

  • Ensures that .egg/.whl distributions on disk have their mtime updated even though we no longer overwrite them. This gives them a new time lease against their ttl.

    Without this change, once a distribution aged past the ttl it would never be used again, and builds would re-create the same distributions in tmpdirs over and over again.

0.5.9

  • Fixes an issue where SourceTranslator would overwrite .egg/.whl distributions already on disk. Instead it should always check to see if a copy already exists and reuse if there.

    This ordinarily should not be a problem but the zipimporter caches metadata by filename instead of stat/sha, so if the underlying contents changed a runtime error would be thrown due to seemingly corrupt zip file offsets. RB #684

0.5.8

  • Adds -i/--index option to the pex tool.

0.5.7

  • Adds twitter.common.python.pex_bootstrap bootstrap_pex_env function in order to initialize a PEX environment from within a python interpreter. (Patch contributed by @kwlzn)
  • Adds stdin=,stdout=,stderr= keyword parameters to the PEX.run function. (Patch from @benjy)

0.5.6

  • The crawler now defaults to not follow links for security reasons. (Before the default behavior was to implicitly --follow-links for all requirements.) RB #293

0.5.5

  • Improves scrubbing of site-packages from PEX environments. RB #289

0.5.1 - 0.5.4

  • Silences exceptions reported during interpreter teardown (the exceptions resulting from incorrect atexit handler behavior) introduced by 0.4.3 RB #253 RB #249
  • Adds __hash__ to Link so that Packages are hashed correctly in twitter.common.python.resolver resolve

0.5.0

0.4.3

  • Adds twitter.common.python.finders which are additional finders for setuptools including: - find eggs within a .zip - find wheels within a directory - find wheels within a .zip RB #86
  • Adds a new Package abstraction by refactoring Link into Link and Package. RB #92
  • Adds support for PEP425 tagging necessary for wheel support. RB #87
  • Improves python environment isolation by correctly scrubbing namespace packages injected into module __path__ attributes by nspkg pth files. RB #116
  • Adds twitter.common.python.resolver resolve method that handles transitive dependency resolution better. This means that if the requirement futures==2.1.2 and an unqualified futures>=2 is pulled in transitively, our resolver will correctly resolve futures 2.1.2 instead of reporting a VersionConflict if any version newer than 2.1.2 is available. RB #129
  • Factors all twitter.common.python test helpers into twitter.common.python.testing RB #91
  • Bug fix: Fix OrderedSet atexit exceptions RB #147
  • Bug fix: Fix cross-device symlinking (patch from @benjy)
  • Bug fix: Raise a RuntimeError if we fail to write pkg_resources into a .pex RB #115

0.4.2

  • Upgrade to setuptools>=1

0.4.1

  • twitter.common.python is no longer a namespace package

0.4.0

  • Kill the egg distiller. We now delegate .egg generation to bdist_egg. RB #55

0.3.1

  • Short-circuit resolving a distribution if a local exact match is found. RB #47
  • Correctly patch the global pkg_resources WorkingSet for the lifetime of the Python interpreter. RB #52
  • Fixes a performance regression in setuptools build_zipmanifest Setuptools Issue #154 RB #53

0.3.0

  • Plumb through the --zip-safe, --always-write-cache, --ignore-errors and --inherit-path flags to the pex tool.
  • Delete the unused PythonDirWrapper code.
  • Split PEXEnvironment resolution into twitter.common.python.environment and deconflate WorkingSet/Environment state.
  • Removes the monkeypatched zipimporter in favor of keeping all eggs unzipped within PEX files. Refactors the PEX dependency cache in util.py
  • Adds interpreter detection for Jython and PyPy.
  • Dependency translation errors should be made uniform. (Patch from @johnsirois)
  • Adds PEX_PROFILE_ENTRIES to limit the number of entries reported when PEX_PROFILE is enabled. (Patch from @rgs_)
  • Bug fix: Several fixes to error handling in twitter.common.python.http (From Marc Abramowitz)
  • Bug fix: PEX should not always assume that $PATH was available. (Patch from @jamesbroadhead)
  • Bug fix: Filename should be part of the .pex cache key or else multiple identical versions will incorrectly resolve (Patch from @tc)
  • Bug fix: Executed entry points shouldn't be forced to run in an environment with __future__ imports enabled. (Patch from @lawson_patrick)
  • Bug fix: Detect versionless egg links and fail fast. (Patch from @johnsirois.)
  • Bug fix: Handle setuptools>=2.1 correctly in the zipimport monkeypatch (Patch from @johnsirois.)

0.2.3

  • Bug fix: Fix handling of Fetchers with file:// urls.

0.2.2

  • Adds the pex tool as a standalone tool.

0.2.1

  • Bug fix: Bootstrapped twitter.common.python should declare twitter.common as a namespace package.

0.2.0

  • Make twitter.common.python fully standalone by consolidating external dependencies within twitter.common.python.common.

0.1.0

  • Initial published version of twitter.common.python.