pex


Namepex JSON
Version 1.2.11 PyPI version JSON
download
home_pagehttps://github.com/pantsbuild/pex
SummaryThe PEX packaging toolchain.
upload_time2017-09-01 19:58:33
maintainer
docs_urlNone
author
requires_python
licenseApache License, Version 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            PEX
===
.. image:: https://travis-ci.org/pantsbuild/pex.svg?branch=master
    :target: https://travis-ci.org/pantsbuild/pex

pex is a library for generating .pex (Python EXecutable) files which are
executable Python environments in the spirit of `virtualenvs <http://virtualenv.org>`_.
pex is an expansion upon the ideas outlined in
`PEP 441 <http://legacy.python.org/dev/peps/pep-0441/>`_
and makes the deployment of Python applications as simple as ``cp``.  pex files may even
include multiple platform-specific Python distributions, meaning that a single pex file
can be portable across Linux and OS X.

pex files can be built using the ``pex`` tool.  Build systems such as `Pants
<http://pantsbuild.org/>`_, `Buck <http://facebook.github.io/buck/>`_, and  `{py}gradle <https://github.com/linkedin/pygradle>`_  also
support building .pex files directly.

Still unsure about what pex does or how it works?  Watch this quick lightning
talk: `WTF is PEX? <http://www.youtube.com/watch?v=NmpnGhRwsu0>`_.

pex is licensed under the Apache2 license.


Installation
============

To install pex, simply

.. code-block:: bash

    $ pip install pex

You can also build pex in a git clone using tox:

.. code-block:: bash

    $ tox -e py27-package
    $ cp dist/pex ~/bin

This builds a pex binary in ``dist/pex`` that can be copied onto your ``$PATH``.
The advantage to this approach is that it keeps your Python environment as empty as
possible and is more in-line with what pex does philosophically.


Simple Examples
===============

Launch an interpreter with ``requests``, ``flask`` and ``psutil`` in the environment:

.. code-block:: bash

    $ pex requests flask 'psutil>2,<3'

Or instead freeze your current virtualenv via requirements.txt and execute it anywhere:

.. code-block:: bash

    $ pex -r <(pip freeze) -o my_virtualenv.pex
    $ deactivate
    $ ./my_virtualenv.pex

Run webserver.py in an environment containing ``flask`` as a quick way to experiment:

.. code-block:: bash

    $ pex flask -- webserver.py

Launch Sphinx in an ephemeral pex environment using the Sphinx entry point ``sphinx:main``:

.. code-block:: bash

    $ pex sphinx -e sphinx:main -- --help

Build a standalone pex binary into ``pex.pex`` using the ``pex`` console_scripts entry point:

.. code-block:: bash

    $ pex pex -c pex -o pex.pex

You can also build pex files that use a specific interpreter type:

.. code-block:: bash

    $ pex pex -c pex --python=pypy -o pypy-pex.pex

Most pex options compose well with one another, so the above commands can be
mixed and matched.  For a full list of options, just type ``pex --help``.


Integrating pex into your workflow
==================================

If you use tox (and you should!), a simple way to integrate pex into your
workflow is to add a packaging test environment to your ``tox.ini``:

.. code-block:: ini

    [testenv:package]
    deps = pex
    commands = pex . -o dist/app.pex

Then ``tox -e package`` will produce a relocateable copy of your application
that you can copy to staging or production environments.


Documentation
=============

More documentation about pex, building .pex files, and how .pex files work
is available at https://pex.readthedocs.io.


Development
===========

pex uses `tox <https://testrun.org/tox/en/latest/>`_ for test and development automation.  To run
the test suite, just invoke tox:

.. code-block:: bash

    $ tox

If you don't have tox, you can generate a pex of tox:

.. code-block::

    $ pex tox -c tox -o ~/bin/tox


Contributing
============

To contribute, follow these instructions: http://pantsbuild.org/howto_contribute.html

Release Notes
=============

1.2.11
------

* Leverage `subprocess32` when available. (#411)
  `#411 <https://github.com/pantsbuild/pex/pull/411>`_

* Kill support for python 2.6. (#408)
  `#405 <https://github.com/pantsbuild/pex/issues/405>`_
  `#408 <https://github.com/pantsbuild/pex/pull/408>`_

1.2.10
------

* Allow passing a preamble file to the CLI (#400)
  `#400 <https://github.com/pantsbuild/pex/pull/400>`_

1.2.9
-----

* Add first-class support for multi-interpreter and multi-platform pex construction. (#394)
  `#394 <https://github.com/pantsbuild/pex/pull/394>`_

1.2.8
-----

* Minimum setuptools version should be 20.3 (#391)
  `#391 <https://github.com/pantsbuild/pex/pull/391>`_

* Improve wheel support in pex. (#388)
  `#388 <https://github.com/pantsbuild/pex/pull/388>`_

1.2.7
-----

* Sort keys in PEX-INFO file so the output is deterministic. (#384)
  `#384 <https://github.com/pantsbuild/pex/pull/384>`_

* Pass platform for SourceTranslator (#386)
  `#386 <https://github.com/pantsbuild/pex/pull/386>`_

1.2.6
-----

* Fix for Ambiguous Resolvable bug in transitive dependency resolution (#367)
  `#367 <https://github.com/pantsbuild/pex/pull/367>`_

1.2.5
-----

This release follows-up on 1.2.0 fixing bugs in the pre-release resolving code paths.

* Resolving pre-release when explicitly requested (#372)
  `#374 <https://github.com/pantsbuild/pex/pull/374>`_

* Pass allow_prerelease to other iterators (Static, Caching) (#373)
  `#373 <https://github.com/pantsbuild/pex/pull/373>`_

1.2.4
-----

* Fix bug in cached dependency resolution with exact resolvable. (#365)
  `#365 <https://github.com/pantsbuild/pex/pull/365>`_

* Treat .pth injected paths as extras. (#370)
  `#370 <https://github.com/pantsbuild/pex/pull/370>`_

1.2.3
-----

* Follow redirects on HTTP requests (#361)
  `#361 <https://github.com/pantsbuild/pex/pull/361>`_

* Fix corner case in cached dependency resolution (#362)
  `#362 <https://github.com/pantsbuild/pex/pull/362>`_

1.2.2
-----

* Fix CacheControl import. (#357)
  `#357 <https://github.com/pantsbuild/pex/pull/357>`_

1.2.1
-----

This release is a quick fix for a bootstrapping bug that inadvertently went out in 1.2.0 (Issue
#354).

* Ensure `packaging` dependency is self-contained. (#355)
  `#355 <https://github.com/pantsbuild/pex/pull/355>`_
  `Fixes #354 <https://github.com/pantsbuild/pex/issues/354>`_

1.2.0
-----

This release changes pex requirement resolution behavior. Only stable requirements are resolved by
default now. The previous behavior that included pre-releases can be retained by passing `--pre` on
the pex command line or passing `allow_prereleases=True` via the API.

* Upgrade dependencies to modern version ranges. (#352)
  `#352 <https://github.com/pantsbuild/pex/pull/352>`_

* Add support for controlling prerelease resolution. (#350)
  `#350 <https://github.com/pantsbuild/pex/pull/350>`_
  `Fixes #28 <https://github.com/pantsbuild/pex/issues/28>`_

1.1.20
------

* Add dummy flush method for clean interpreter exit with python3.6 (#343)
  `#343 <https://github.com/pantsbuild/pex/pull/343>`_

1.1.19
------

* Implement --constraints in pex (#335)
  `#335 <https://github.com/pantsbuild/pex/pull/335>`_

* Make sure namespace packages (e.g. virtualenvwrapper) don't break pex (#338)
  `#338 <https://github.com/pantsbuild/pex/pull/338>`_

1.1.18
------

* Expose a PEX instance's path. (#332)
  `#332 <https://github.com/pantsbuild/pex/pull/332>`_

* Check for scripts directory in get_script_from_egg (#328)
  `#328 <https://github.com/pantsbuild/pex/pull/328>`_

1.1.17
------

* Make PEX_PATH unify pex sources, as well as requirements. (#329)
  `#329 <https://github.com/pantsbuild/pex/pull/329>`_

1.1.16
------

* Adjust FileFinder import to work with Python 3.6. (#318)
  `#318 <https://github.com/pantsbuild/pex/pull/318>`_

* Kill zipmanifest monkeypatching. (#322)
  `#322 <https://github.com/pantsbuild/pex/pull/322>`_

* Bump setuptools range to latest. (#323)
  `#323 <https://github.com/pantsbuild/pex/pull/323>`_

1.1.15
------

* Fix #309 by deduplicating output of the distribution finder. (#310)
  `#310 <https://github.com/pantsbuild/pex/pull/310>`_

* Update wheel dependency to >0.26.0. (#304)
  `#304 <https://github.com/pantsbuild/pex/pull/304>`_

1.1.14
------

* Repair Executor error handling for other classes of IOError/OSError. (#292)
  `#292 <https://github.com/pantsbuild/pex/pull/292>`_

* Fix bdist_pex --pex-args. (#285)
  `#285 <https://github.com/pantsbuild/pex/pull/285>`_

* Inherit user site with --inherit-path. (#284)
  `#284 <https://github.com/pantsbuild/pex/pull/284>`_

1.1.13
------

* Repair passing of stdio kwargs to PEX.run(). (#288)
  `#288 <https://github.com/pantsbuild/pex/pull/288>`_

1.1.12
------

* Fix bdist_pex interpreter cache directory. (#286)
  `#286 <https://github.com/pantsbuild/pex/pull/286>`_

* Normalize and edify subprocess execution. (#255)
  `#255 <https://github.com/pantsbuild/pex/pull/255>`_

* Don't ignore exit codes when using setuptools entry points. (#280)
  `#280 <https://github.com/pantsbuild/pex/pull/280>`_
  `Fixes #137 <https://github.com/pantsbuild/pex/issues/137>`_

1.1.11
------

* Update cache dir when bdist_pex.run is called directly.
  `#278 <https://github.com/pantsbuild/pex/pull/278>`_
  `Fixes #274 <https://github.com/pantsbuild/pex/issues/274>`_

1.1.10
------

* Improve failure modes for os.rename() as used in distribution caching.
  `#271 <https://github.com/pantsbuild/pex/pull/271>`_
  `Fixes #265 <https://github.com/pantsbuild/pex/issues/265>`_

1.1.9
-----

* Bugfix: Open setup.py in binary mode.
  `#264 <https://github.com/pantsbuild/pex/pull/264>`_
  `Fixes #263 <https://github.com/pantsbuild/pex/issues/263>`_

1.1.8
-----

* Bugfix: Repair a regression in `--disable-cache`.
  `#261 <https://github.com/pantsbuild/pex/pull/261>`_
  `Fixes #260 <https://github.com/pantsbuild/pex/issues/260>`_

1.1.7
-----

* Add README and supported python versions to PyPI description.
  `#258 <https://github.com/pantsbuild/pex/pull/258>`_

* Use `open` with utf-8 support.
  `#231 <https://github.com/pantsbuild/pex/pull/231>`_

* Add `--pex-root` option.
  `#206 <https://github.com/pantsbuild/pex/pull/206>`_

1.1.6
-----

This release is a quick fix for a regression that inadvertently went out in 1.1.5 (Issue #243).

* Fix the ``bdist_pex`` ``setuptools`` command to work for python2.
  `#246 <https://github.com/pantsbuild/pex/pull/246>`_
  `Fixes #243 <https://github.com/pantsbuild/pex/issues/243>`_

* Upgrade pex dependencies on ``setuptools`` and ``wheel``.
  `#244 <https://github.com/pantsbuild/pex/pull/244>`_
  `Fixes #238 <https://github.com/pantsbuild/pex/issues/238>`_

1.1.5
-----

* Fix ``PEXBuilder.clone`` and thus ``bdist_pex --pex-args`` for ``--python`` and ``--python-shebang``.
  `#234 <https://github.com/pantsbuild/pex/pull/234>`_
  `Fixes #233 <https://github.com/pantsbuild/pex/issues/233>`_

* Fix old ``pkg_resources`` egg version normalization.
  `#227 <https://github.com/pantsbuild/pex/pull/227>`_
  `Fixes #226 <https://github.com/pantsbuild/pex/issues/226>`_

* Fix the ``inherit_path`` handling.
  `#224 <https://github.com/pantsbuild/pex/pull/224>`_

* Fix handling of bad distribution script names when used as the pex entrypoint.
  `#221 <https://github.com/pantsbuild/pex/issues/221>`_
  `Fixes #220 <https://github.com/pantsbuild/pex/issues/220>`_

1.1.4
-----

This release is a quick fix for a regression that inadvertently went out in 1.1.3 (Issue #216).

* Add a test for the regression in ``FixedEggMetadata._zipinfo_name`` and revert the breaking commit.
  `Fixes #216 <https://github.com/pantsbuild/pex/issues/216>`_

1.1.3
-----

This release includes an initial body of work towards Windows support, ABI tag support for CPython 2.x and a fix for version number normalization.

* Add python 2.x abi tag support.
  `#214 <https://github.com/pantsbuild/pex/pull/214>`_
  `Fixes #213 <https://github.com/pantsbuild/pex/issues/213>`_

* Add .idea to .gitignore.
  `#205 <https://github.com/pantsbuild/pex/pull/205>`_

* Don't normalize version numbers as names.
  `#204 <https://github.com/pantsbuild/pex/pull/204>`_

* More fixes for windows.
  `#202 <https://github.com/pantsbuild/pex/pull/202>`_

* Fixes to get pex to work on windows.
  `#198 <https://github.com/pantsbuild/pex/pull/198>`_

1.1.2
-----

* Bump setuptools & wheel version pinning.
  `#194 <https://github.com/pantsbuild/pex/pull/194>`_

* Unescape html in PageParser.href_match_to_url.
  `#191 <https://github.com/pantsbuild/pex/pull/191>`_

* Memoize calls to Crawler.crawl() for performance win in find-links based resolution.
  `#187 <https://github.com/pantsbuild/pex/pull/187>`_

1.1.1
-----

* Fix infinite recursion when ``PEX_PYTHON`` points at a symlink.
  `#182 <https://github.com/pantsbuild/pex/pull/182>`_

* Add ``/etc/pexrc`` to the list of pexrc locations to check.
  `#183 <https://github.com/pantsbuild/pex/pull/183>`_

* Improve error messaging for platform constrained Untranslateable errors.
  `#179 <https://github.com/pantsbuild/pex/pull/179>`_

1.1.0
-----

* Add support for ``.pexrc`` files for influencing the pex environment. See the notes `here
  <https://github.com/pantsbuild/pex/blob/master/docs/buildingpex.rst#tailoring-pex-execution-at-build-time>`_.
  `#128 <https://github.com/pantsbuild/pex/pull/128>`_.

* Bug fix: PEX_PROFILE_FILENAME and PEX_PROFILE_SORT were not respected.
  `#154 <https://github.com/pantsbuild/pex/issues/154>`_.

* Adds the ``bdist_pex`` command to setuptools.
  `#99 <https://github.com/pantsbuild/pex/issues/99>`_.

* Bug fix: We did not normalize package names in ``ResolvableSet``, so it was possible to depend on
  ``sphinx`` and ``Sphinx-1.4a0.tar.gz`` and get two versions build and included into the pex.
  `#147 <https://github.com/pantsbuild/pex/issues/147>`_.

* Adds a pex-identifying User-Agent. `#101 <https://github.com/pantsbuild/pex/issues/101>`_.

1.0.3
-----

* Bug fix: Accommodate OSX ``Python`` python binaries.  Previously the OSX python distributions shipped
  with OSX, XCode and available via https://www.python.org/downloads/ could fail to be detected using
  the ``PythonInterpreter`` class.
  Fixes `#144 <https://github.com/pantsbuild/pex/issues/144>`_.

* Bug fix: PEX_SCRIPT failed when the script was from a not-zip-safe egg.
  Original PR `#139 <https://github.com/pantsbuild/pex/pull/139>`_.

* Bug fix: ``sys.exit`` called without arguments would cause `None` to be printed on stderr since pex 1.0.1.
  `#143 <https://github.com/pantsbuild/pex/pull/143>`_.

1.0.2
-----

* Bug fix: PEX-INFO values were overridden by environment ``Variables`` with default values that were
  not explicitly set in the environment.
  Fixes `#135 <https://github.com/pantsbuild/pex/issues/135>`_.

* Bug fix: Since `69649c1 <https://github.com/pantsbuild/pex/commit/69649c1>`_ we have been unpatching
  the side-effects of ``sys.modules`` after ``PEX.execute``.  This takes all modules imported during
  the PEX lifecycle and sets all their attributes to ``None``.  Unfortunately, ``sys.excepthook``,
  ``atexit`` and ``__del__`` may still try to operate using these tainted modules, causing exceptions
  on interpreter teardown.  This reverts just the ``sys`` unpatching so that the abovementioned
  teardown hooks behave more predictably.
  Fixes `#141 <https://github.com/pantsbuild/pex/issues/141>`_.

1.0.1
-----

* Allow PEXBuilder to optionally copy files into the PEX environment instead of hard-linking them.

* Allow PEXBuilder to optionally skip precompilation of .py files into .pyc files.

* Bug fix: PEXBuilder did not respect the target interpreter when compiling source to bytecode.
  Fixes `#127 <https://github.com/pantsbuild/pex/issues/127>`_.

* Bug fix: Fix complex resolutions when using a cache.
  Fixes: `#120 <https://github.com/pantsbuild/pex/issues/120>`_.

1.0.0
-----

The 1.0.0 release of pex introduces a few breaking changes: ``pex -r`` now takes requirements.txt files
instead of requirement specs, ``pex -s`` has now been removed since source specs are accepted as arguments,
and ``pex -p`` has been removed in favor of its alias ``pex -o``.

The pex *command line interface* now adheres to semver insofar as backwards incompatible CLI
changes will invoke a major version change.  Any backwards incompatible changes to the PEX
environment variable semantics will also result in a major version change.  The pex *API* adheres
to semver insofar as backwards incompatible API changes will invoke minor version changes.

For users of the PEX API, it is recommended to add minor version ranges, e.g. ``pex>=1.0,<1.1``.
For users of the PEX CLI, major version ranges such as ``pex>=1,<2`` should be sufficient.

* BREAKING CHANGE: Removes the ``-s`` option in favor of specifying directories directly as
  arguments to the pex command line.

* 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 <https://github.com/pantsbuild/pex/issues/5>`_.

* 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.

* Adds ``--python-shebang`` option to the pex tool in order to set the ``#!`` shebang to an exact
  path.  `#53 <https://github.com/pantsbuild/pex/issues/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 <https://github.com/pantsbuild/pex/issues/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 <https://github.com/pantsbuild/pex/issues/30>`_.

* Consolidates documentation of ``PEX_`` environment variables and adds the ``--help-variables`` option
  to the pex client.  Partially addresses `#13 <https://github.com/pantsbuild/pex/issues/13>`_.

* 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 <https://github.com/pantsbuild/pex/pull/12>`_.

* Now supports extras for static URLs and installable directories.
  `#65 <https://github.com/pantsbuild/pex/issues/65>`_.

* 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 <https://github.com/pantsbuild/pex/issues/59>`_.

* Adds more debugging information when encountering unresolvable requirements.
  `#79 <https://github.com/pantsbuild/pex/issues/79>`_.

* Bug fix: ``PEX_COVERAGE`` and ``PEX_PROFILE`` did not function correctly when SystemExit was raised.
  Fixes `#81 <https://github.com/pantsbuild/pex/issues/81>`_.

* Bug fix: Fixes caching in the PEX tool since we don't cache the source distributions of installable
  directories.  `#24 <https://github.com/pantsbuild/pex/issues/24>`_.

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 <https://github.com/pantsbuild/pex/issues/55>`_ and
  `#34 <https://github.com/pantsbuild/pex/issues/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 <https://github.com/pantsbuild/pex/issues/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 <https://github.com/pantsbuild/pex/issues/47>`_ in order to
  fix `#48 <https://github.com/pantsbuild/pex/issues/48>`_

0.8.6
-----

* Bug fix: Honor installed sys.excepthook in pex teardown.
  `RB #1733 <https://rbcommons.com/s/twitter/r/1733>`_

* Bug fix: ``UrllibContext`` used ``replace`` as a keyword argument for ``bytes.decode``
  but this only works on Python 3.  `Pull Request #46 <https://github.com/pantsbuild/pex/pull/46>`_

0.8.5
-----

* Bug fix: Fixup string formatting in pex/bin/pex.py to support Python 2.6
  `Pull Request #40 <https://github.com/pantsbuild/pex/pull/40>`_

0.8.4
-----

* Performance improvement: Speed up the best-case scenario of dependency resolution.
  `RB #1685 <https://rbcommons.com/s/twitter/r/1685>`_

* Bug fix: Change from ``uuid4().get_hex()`` to ``uuid4().hex`` to maintain Python3
  compatibility of pex.common.
  `Pull Request #39 <https://github.com/pantsbuild/pex/pull/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 <https://rbcommons.com/s/twitter/r/1666>`_

* Bug fix: Support all potential abi tag permutations when determining platform
  compatibility.
  `Pull Request #33 <https://github.com/pantsbuild/pex/pull/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 <https://rbcommons.com/s/twitter/r/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 <https://github.com/pantsbuild/pex/issues/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 <https://rbcommons.com/s/twitter/r/785/>`_

* Refactor http handling in pex to allow for alternate http implementations.  Adds support
  for `requests <https://github.com/kennethreitz/requests>`_,
  improving both performance and security.   For more information, read the commit notes at
  `91c7f32 <https://github.com/pantsbuild/pex/commit/91c7f324085c18af714d35947b603a5f60aeb682>`_.
  `RB #778 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/1303/>`_

* Make pex --version correct.
  `Issue #19 <https://github.com/pantsbuild/pex/issues/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 <https://rbcommons.com/s/twitter/r/1378/>`_

* Bug fix: Replace uses of ``os.unsetenv(...)`` with ``del os.environ[...]``
  `Pull Request #11 <https://github.com/pantsbuild/pex/pull/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 <https://github.com/pantsbuild/pex/issues/21>`_

* Bug fix: The pex -s option was not correctly pulling in transitive dependencies.
  `Issue #22 <https://github.com/pantsbuild/pex/issues/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 <https://github.com/pantsbuild/pex/issues/10>`_

0.7.0
-----

* Rename ``twitter.common.python`` to ``pex`` and split out from the
  `twitter/commons <http://github.com/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 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/293/>`_

0.5.5
-----

* Improves scrubbing of site-packages from PEX environments.
  `RB #289 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/253/>`_
  `RB #249 <https://rbcommons.com/s/twitter/r/249/>`_

* Adds ``__hash__`` to ``Link`` so that Packages are hashed correctly in
  ``twitter.common.python.resolver`` ``resolve``

0.5.0
-----

* Adds wheel support to ``twitter.common.python``
  `RB #94 <https://rbcommons.com/s/twitter/r/94/>`_
  `RB #154 <https://rbcommons.com/s/twitter/r/154/>`_
  `RB #148 <https://rbcommons.com/s/twitter/r/148/>`_

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 <https://rbcommons.com/s/twitter/r/86/>`_

* Adds a new Package abstraction by refactoring Link into Link and Package.
  `RB #92 <https://rbcommons.com/s/twitter/r/92/>`_

* Adds support for PEP425 tagging necessary for wheel support.
  `RB #87 <https://rbcommons.com/s/twitter/r/87/>`_

* Improves python environment isolation by correctly scrubbing namespace
  packages injected into module ``__path__`` attributes by nspkg pth files.
  `RB #116 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/129/>`_

* Factors all ``twitter.common.python`` test helpers into
  ``twitter.common.python.testing``
  `RB #91 <https://rbcommons.com/s/twitter/r/91/>`_

* Bug fix: Fix ``OrderedSet`` atexit exceptions
  `RB #147 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/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 <https://rbcommons.com/s/twitter/r/55/>`_

0.3.1
-----

* Short-circuit resolving a distribution if a local exact match is found.
  `RB #47 <https://rbcommons.com/s/twitter/r/47/>`_

* Correctly patch the global ``pkg_resources`` ``WorkingSet`` for the lifetime
  of the Python interpreter. `RB #52 <https://rbcommons.com/s/twitter/r/52/>`_

* Fixes a performance regression in setuptools ``build_zipmanifest``
  `Setuptools Issue #154 <https://bitbucket.org/pypa/setuptools/issue/154/build_zipmanifest-results-should-be>`_
  `RB #53 <https://rbcommons.com/s/twitter/r/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``.

            

Raw data

            {
    "maintainer": "", 
    "docs_url": null, 
    "requires_python": "", 
    "maintainer_email": "", 
    "cheesecake_code_kwalitee_id": null, 
    "keywords": "", 
    "upload_time": "2017-09-01 19:58:33", 
    "author": "", 
    "home_page": "https://github.com/pantsbuild/pex", 
    "github_user": "pantsbuild", 
    "download_url": "https://pypi.python.org/packages/9f/fa/374a621ed7cad3cb9ae90f2c612f527d403de8acbb7e9ba14717526433e8/pex-1.2.11.tar.gz", 
    "platform": "", 
    "version": "1.2.11", 
    "cheesecake_documentation_id": null, 
    "description": "PEX\n===\n.. image:: https://travis-ci.org/pantsbuild/pex.svg?branch=master\n    :target: https://travis-ci.org/pantsbuild/pex\n\npex is a library for generating .pex (Python EXecutable) files which are\nexecutable Python environments in the spirit of `virtualenvs <http://virtualenv.org>`_.\npex is an expansion upon the ideas outlined in\n`PEP 441 <http://legacy.python.org/dev/peps/pep-0441/>`_\nand makes the deployment of Python applications as simple as ``cp``.  pex files may even\ninclude multiple platform-specific Python distributions, meaning that a single pex file\ncan be portable across Linux and OS X.\n\npex files can be built using the ``pex`` tool.  Build systems such as `Pants\n<http://pantsbuild.org/>`_, `Buck <http://facebook.github.io/buck/>`_, and  `{py}gradle <https://github.com/linkedin/pygradle>`_  also\nsupport building .pex files directly.\n\nStill unsure about what pex does or how it works?  Watch this quick lightning\ntalk: `WTF is PEX? <http://www.youtube.com/watch?v=NmpnGhRwsu0>`_.\n\npex is licensed under the Apache2 license.\n\n\nInstallation\n============\n\nTo install pex, simply\n\n.. code-block:: bash\n\n    $ pip install pex\n\nYou can also build pex in a git clone using tox:\n\n.. code-block:: bash\n\n    $ tox -e py27-package\n    $ cp dist/pex ~/bin\n\nThis builds a pex binary in ``dist/pex`` that can be copied onto your ``$PATH``.\nThe advantage to this approach is that it keeps your Python environment as empty as\npossible and is more in-line with what pex does philosophically.\n\n\nSimple Examples\n===============\n\nLaunch an interpreter with ``requests``, ``flask`` and ``psutil`` in the environment:\n\n.. code-block:: bash\n\n    $ pex requests flask 'psutil>2,<3'\n\nOr instead freeze your current virtualenv via requirements.txt and execute it anywhere:\n\n.. code-block:: bash\n\n    $ pex -r <(pip freeze) -o my_virtualenv.pex\n    $ deactivate\n    $ ./my_virtualenv.pex\n\nRun webserver.py in an environment containing ``flask`` as a quick way to experiment:\n\n.. code-block:: bash\n\n    $ pex flask -- webserver.py\n\nLaunch Sphinx in an ephemeral pex environment using the Sphinx entry point ``sphinx:main``:\n\n.. code-block:: bash\n\n    $ pex sphinx -e sphinx:main -- --help\n\nBuild a standalone pex binary into ``pex.pex`` using the ``pex`` console_scripts entry point:\n\n.. code-block:: bash\n\n    $ pex pex -c pex -o pex.pex\n\nYou can also build pex files that use a specific interpreter type:\n\n.. code-block:: bash\n\n    $ pex pex -c pex --python=pypy -o pypy-pex.pex\n\nMost pex options compose well with one another, so the above commands can be\nmixed and matched.  For a full list of options, just type ``pex --help``.\n\n\nIntegrating pex into your workflow\n==================================\n\nIf you use tox (and you should!), a simple way to integrate pex into your\nworkflow is to add a packaging test environment to your ``tox.ini``:\n\n.. code-block:: ini\n\n    [testenv:package]\n    deps = pex\n    commands = pex . -o dist/app.pex\n\nThen ``tox -e package`` will produce a relocateable copy of your application\nthat you can copy to staging or production environments.\n\n\nDocumentation\n=============\n\nMore documentation about pex, building .pex files, and how .pex files work\nis available at https://pex.readthedocs.io.\n\n\nDevelopment\n===========\n\npex uses `tox <https://testrun.org/tox/en/latest/>`_ for test and development automation.  To run\nthe test suite, just invoke tox:\n\n.. code-block:: bash\n\n    $ tox\n\nIf you don't have tox, you can generate a pex of tox:\n\n.. code-block::\n\n    $ pex tox -c tox -o ~/bin/tox\n\n\nContributing\n============\n\nTo contribute, follow these instructions: http://pantsbuild.org/howto_contribute.html\n\nRelease Notes\n=============\n\n1.2.11\n------\n\n* Leverage `subprocess32` when available. (#411)\n  `#411 <https://github.com/pantsbuild/pex/pull/411>`_\n\n* Kill support for python 2.6. (#408)\n  `#405 <https://github.com/pantsbuild/pex/issues/405>`_\n  `#408 <https://github.com/pantsbuild/pex/pull/408>`_\n\n1.2.10\n------\n\n* Allow passing a preamble file to the CLI (#400)\n  `#400 <https://github.com/pantsbuild/pex/pull/400>`_\n\n1.2.9\n-----\n\n* Add first-class support for multi-interpreter and multi-platform pex construction. (#394)\n  `#394 <https://github.com/pantsbuild/pex/pull/394>`_\n\n1.2.8\n-----\n\n* Minimum setuptools version should be 20.3 (#391)\n  `#391 <https://github.com/pantsbuild/pex/pull/391>`_\n\n* Improve wheel support in pex. (#388)\n  `#388 <https://github.com/pantsbuild/pex/pull/388>`_\n\n1.2.7\n-----\n\n* Sort keys in PEX-INFO file so the output is deterministic. (#384)\n  `#384 <https://github.com/pantsbuild/pex/pull/384>`_\n\n* Pass platform for SourceTranslator (#386)\n  `#386 <https://github.com/pantsbuild/pex/pull/386>`_\n\n1.2.6\n-----\n\n* Fix for Ambiguous Resolvable bug in transitive dependency resolution (#367)\n  `#367 <https://github.com/pantsbuild/pex/pull/367>`_\n\n1.2.5\n-----\n\nThis release follows-up on 1.2.0 fixing bugs in the pre-release resolving code paths.\n\n* Resolving pre-release when explicitly requested (#372)\n  `#374 <https://github.com/pantsbuild/pex/pull/374>`_\n\n* Pass allow_prerelease to other iterators (Static, Caching) (#373)\n  `#373 <https://github.com/pantsbuild/pex/pull/373>`_\n\n1.2.4\n-----\n\n* Fix bug in cached dependency resolution with exact resolvable. (#365)\n  `#365 <https://github.com/pantsbuild/pex/pull/365>`_\n\n* Treat .pth injected paths as extras. (#370)\n  `#370 <https://github.com/pantsbuild/pex/pull/370>`_\n\n1.2.3\n-----\n\n* Follow redirects on HTTP requests (#361)\n  `#361 <https://github.com/pantsbuild/pex/pull/361>`_\n\n* Fix corner case in cached dependency resolution (#362)\n  `#362 <https://github.com/pantsbuild/pex/pull/362>`_\n\n1.2.2\n-----\n\n* Fix CacheControl import. (#357)\n  `#357 <https://github.com/pantsbuild/pex/pull/357>`_\n\n1.2.1\n-----\n\nThis release is a quick fix for a bootstrapping bug that inadvertently went out in 1.2.0 (Issue\n#354).\n\n* Ensure `packaging` dependency is self-contained. (#355)\n  `#355 <https://github.com/pantsbuild/pex/pull/355>`_\n  `Fixes #354 <https://github.com/pantsbuild/pex/issues/354>`_\n\n1.2.0\n-----\n\nThis release changes pex requirement resolution behavior. Only stable requirements are resolved by\ndefault now. The previous behavior that included pre-releases can be retained by passing `--pre` on\nthe pex command line or passing `allow_prereleases=True` via the API.\n\n* Upgrade dependencies to modern version ranges. (#352)\n  `#352 <https://github.com/pantsbuild/pex/pull/352>`_\n\n* Add support for controlling prerelease resolution. (#350)\n  `#350 <https://github.com/pantsbuild/pex/pull/350>`_\n  `Fixes #28 <https://github.com/pantsbuild/pex/issues/28>`_\n\n1.1.20\n------\n\n* Add dummy flush method for clean interpreter exit with python3.6 (#343)\n  `#343 <https://github.com/pantsbuild/pex/pull/343>`_\n\n1.1.19\n------\n\n* Implement --constraints in pex (#335)\n  `#335 <https://github.com/pantsbuild/pex/pull/335>`_\n\n* Make sure namespace packages (e.g. virtualenvwrapper) don't break pex (#338)\n  `#338 <https://github.com/pantsbuild/pex/pull/338>`_\n\n1.1.18\n------\n\n* Expose a PEX instance's path. (#332)\n  `#332 <https://github.com/pantsbuild/pex/pull/332>`_\n\n* Check for scripts directory in get_script_from_egg (#328)\n  `#328 <https://github.com/pantsbuild/pex/pull/328>`_\n\n1.1.17\n------\n\n* Make PEX_PATH unify pex sources, as well as requirements. (#329)\n  `#329 <https://github.com/pantsbuild/pex/pull/329>`_\n\n1.1.16\n------\n\n* Adjust FileFinder import to work with Python 3.6. (#318)\n  `#318 <https://github.com/pantsbuild/pex/pull/318>`_\n\n* Kill zipmanifest monkeypatching. (#322)\n  `#322 <https://github.com/pantsbuild/pex/pull/322>`_\n\n* Bump setuptools range to latest. (#323)\n  `#323 <https://github.com/pantsbuild/pex/pull/323>`_\n\n1.1.15\n------\n\n* Fix #309 by deduplicating output of the distribution finder. (#310)\n  `#310 <https://github.com/pantsbuild/pex/pull/310>`_\n\n* Update wheel dependency to >0.26.0. (#304)\n  `#304 <https://github.com/pantsbuild/pex/pull/304>`_\n\n1.1.14\n------\n\n* Repair Executor error handling for other classes of IOError/OSError. (#292)\n  `#292 <https://github.com/pantsbuild/pex/pull/292>`_\n\n* Fix bdist_pex --pex-args. (#285)\n  `#285 <https://github.com/pantsbuild/pex/pull/285>`_\n\n* Inherit user site with --inherit-path. (#284)\n  `#284 <https://github.com/pantsbuild/pex/pull/284>`_\n\n1.1.13\n------\n\n* Repair passing of stdio kwargs to PEX.run(). (#288)\n  `#288 <https://github.com/pantsbuild/pex/pull/288>`_\n\n1.1.12\n------\n\n* Fix bdist_pex interpreter cache directory. (#286)\n  `#286 <https://github.com/pantsbuild/pex/pull/286>`_\n\n* Normalize and edify subprocess execution. (#255)\n  `#255 <https://github.com/pantsbuild/pex/pull/255>`_\n\n* Don't ignore exit codes when using setuptools entry points. (#280)\n  `#280 <https://github.com/pantsbuild/pex/pull/280>`_\n  `Fixes #137 <https://github.com/pantsbuild/pex/issues/137>`_\n\n1.1.11\n------\n\n* Update cache dir when bdist_pex.run is called directly.\n  `#278 <https://github.com/pantsbuild/pex/pull/278>`_\n  `Fixes #274 <https://github.com/pantsbuild/pex/issues/274>`_\n\n1.1.10\n------\n\n* Improve failure modes for os.rename() as used in distribution caching.\n  `#271 <https://github.com/pantsbuild/pex/pull/271>`_\n  `Fixes #265 <https://github.com/pantsbuild/pex/issues/265>`_\n\n1.1.9\n-----\n\n* Bugfix: Open setup.py in binary mode.\n  `#264 <https://github.com/pantsbuild/pex/pull/264>`_\n  `Fixes #263 <https://github.com/pantsbuild/pex/issues/263>`_\n\n1.1.8\n-----\n\n* Bugfix: Repair a regression in `--disable-cache`.\n  `#261 <https://github.com/pantsbuild/pex/pull/261>`_\n  `Fixes #260 <https://github.com/pantsbuild/pex/issues/260>`_\n\n1.1.7\n-----\n\n* Add README and supported python versions to PyPI description.\n  `#258 <https://github.com/pantsbuild/pex/pull/258>`_\n\n* Use `open` with utf-8 support.\n  `#231 <https://github.com/pantsbuild/pex/pull/231>`_\n\n* Add `--pex-root` option.\n  `#206 <https://github.com/pantsbuild/pex/pull/206>`_\n\n1.1.6\n-----\n\nThis release is a quick fix for a regression that inadvertently went out in 1.1.5 (Issue #243).\n\n* Fix the ``bdist_pex`` ``setuptools`` command to work for python2.\n  `#246 <https://github.com/pantsbuild/pex/pull/246>`_\n  `Fixes #243 <https://github.com/pantsbuild/pex/issues/243>`_\n\n* Upgrade pex dependencies on ``setuptools`` and ``wheel``.\n  `#244 <https://github.com/pantsbuild/pex/pull/244>`_\n  `Fixes #238 <https://github.com/pantsbuild/pex/issues/238>`_\n\n1.1.5\n-----\n\n* Fix ``PEXBuilder.clone`` and thus ``bdist_pex --pex-args`` for ``--python`` and ``--python-shebang``.\n  `#234 <https://github.com/pantsbuild/pex/pull/234>`_\n  `Fixes #233 <https://github.com/pantsbuild/pex/issues/233>`_\n\n* Fix old ``pkg_resources`` egg version normalization.\n  `#227 <https://github.com/pantsbuild/pex/pull/227>`_\n  `Fixes #226 <https://github.com/pantsbuild/pex/issues/226>`_\n\n* Fix the ``inherit_path`` handling.\n  `#224 <https://github.com/pantsbuild/pex/pull/224>`_\n\n* Fix handling of bad distribution script names when used as the pex entrypoint.\n  `#221 <https://github.com/pantsbuild/pex/issues/221>`_\n  `Fixes #220 <https://github.com/pantsbuild/pex/issues/220>`_\n\n1.1.4\n-----\n\nThis release is a quick fix for a regression that inadvertently went out in 1.1.3 (Issue #216).\n\n* Add a test for the regression in ``FixedEggMetadata._zipinfo_name`` and revert the breaking commit.\n  `Fixes #216 <https://github.com/pantsbuild/pex/issues/216>`_\n\n1.1.3\n-----\n\nThis release includes an initial body of work towards Windows support, ABI tag support for CPython 2.x and a fix for version number normalization.\n\n* Add python 2.x abi tag support.\n  `#214 <https://github.com/pantsbuild/pex/pull/214>`_\n  `Fixes #213 <https://github.com/pantsbuild/pex/issues/213>`_\n\n* Add .idea to .gitignore.\n  `#205 <https://github.com/pantsbuild/pex/pull/205>`_\n\n* Don't normalize version numbers as names.\n  `#204 <https://github.com/pantsbuild/pex/pull/204>`_\n\n* More fixes for windows.\n  `#202 <https://github.com/pantsbuild/pex/pull/202>`_\n\n* Fixes to get pex to work on windows.\n  `#198 <https://github.com/pantsbuild/pex/pull/198>`_\n\n1.1.2\n-----\n\n* Bump setuptools & wheel version pinning.\n  `#194 <https://github.com/pantsbuild/pex/pull/194>`_\n\n* Unescape html in PageParser.href_match_to_url.\n  `#191 <https://github.com/pantsbuild/pex/pull/191>`_\n\n* Memoize calls to Crawler.crawl() for performance win in find-links based resolution.\n  `#187 <https://github.com/pantsbuild/pex/pull/187>`_\n\n1.1.1\n-----\n\n* Fix infinite recursion when ``PEX_PYTHON`` points at a symlink.\n  `#182 <https://github.com/pantsbuild/pex/pull/182>`_\n\n* Add ``/etc/pexrc`` to the list of pexrc locations to check.\n  `#183 <https://github.com/pantsbuild/pex/pull/183>`_\n\n* Improve error messaging for platform constrained Untranslateable errors.\n  `#179 <https://github.com/pantsbuild/pex/pull/179>`_\n\n1.1.0\n-----\n\n* Add support for ``.pexrc`` files for influencing the pex environment. See the notes `here\n  <https://github.com/pantsbuild/pex/blob/master/docs/buildingpex.rst#tailoring-pex-execution-at-build-time>`_.\n  `#128 <https://github.com/pantsbuild/pex/pull/128>`_.\n\n* Bug fix: PEX_PROFILE_FILENAME and PEX_PROFILE_SORT were not respected.\n  `#154 <https://github.com/pantsbuild/pex/issues/154>`_.\n\n* Adds the ``bdist_pex`` command to setuptools.\n  `#99 <https://github.com/pantsbuild/pex/issues/99>`_.\n\n* Bug fix: We did not normalize package names in ``ResolvableSet``, so it was possible to depend on\n  ``sphinx`` and ``Sphinx-1.4a0.tar.gz`` and get two versions build and included into the pex.\n  `#147 <https://github.com/pantsbuild/pex/issues/147>`_.\n\n* Adds a pex-identifying User-Agent. `#101 <https://github.com/pantsbuild/pex/issues/101>`_.\n\n1.0.3\n-----\n\n* Bug fix: Accommodate OSX ``Python`` python binaries.  Previously the OSX python distributions shipped\n  with OSX, XCode and available via https://www.python.org/downloads/ could fail to be detected using\n  the ``PythonInterpreter`` class.\n  Fixes `#144 <https://github.com/pantsbuild/pex/issues/144>`_.\n\n* Bug fix: PEX_SCRIPT failed when the script was from a not-zip-safe egg.\n  Original PR `#139 <https://github.com/pantsbuild/pex/pull/139>`_.\n\n* Bug fix: ``sys.exit`` called without arguments would cause `None` to be printed on stderr since pex 1.0.1.\n  `#143 <https://github.com/pantsbuild/pex/pull/143>`_.\n\n1.0.2\n-----\n\n* Bug fix: PEX-INFO values were overridden by environment ``Variables`` with default values that were\n  not explicitly set in the environment.\n  Fixes `#135 <https://github.com/pantsbuild/pex/issues/135>`_.\n\n* Bug fix: Since `69649c1 <https://github.com/pantsbuild/pex/commit/69649c1>`_ we have been unpatching\n  the side-effects of ``sys.modules`` after ``PEX.execute``.  This takes all modules imported during\n  the PEX lifecycle and sets all their attributes to ``None``.  Unfortunately, ``sys.excepthook``,\n  ``atexit`` and ``__del__`` may still try to operate using these tainted modules, causing exceptions\n  on interpreter teardown.  This reverts just the ``sys`` unpatching so that the abovementioned\n  teardown hooks behave more predictably.\n  Fixes `#141 <https://github.com/pantsbuild/pex/issues/141>`_.\n\n1.0.1\n-----\n\n* Allow PEXBuilder to optionally copy files into the PEX environment instead of hard-linking them.\n\n* Allow PEXBuilder to optionally skip precompilation of .py files into .pyc files.\n\n* Bug fix: PEXBuilder did not respect the target interpreter when compiling source to bytecode.\n  Fixes `#127 <https://github.com/pantsbuild/pex/issues/127>`_.\n\n* Bug fix: Fix complex resolutions when using a cache.\n  Fixes: `#120 <https://github.com/pantsbuild/pex/issues/120>`_.\n\n1.0.0\n-----\n\nThe 1.0.0 release of pex introduces a few breaking changes: ``pex -r`` now takes requirements.txt files\ninstead of requirement specs, ``pex -s`` has now been removed since source specs are accepted as arguments,\nand ``pex -p`` has been removed in favor of its alias ``pex -o``.\n\nThe pex *command line interface* now adheres to semver insofar as backwards incompatible CLI\nchanges will invoke a major version change.  Any backwards incompatible changes to the PEX\nenvironment variable semantics will also result in a major version change.  The pex *API* adheres\nto semver insofar as backwards incompatible API changes will invoke minor version changes.\n\nFor users of the PEX API, it is recommended to add minor version ranges, e.g. ``pex>=1.0,<1.1``.\nFor users of the PEX CLI, major version ranges such as ``pex>=1,<2`` should be sufficient.\n\n* BREAKING CHANGE: Removes the ``-s`` option in favor of specifying directories directly as\n  arguments to the pex command line.\n\n* BREAKING CHANGE: ``pex -r`` now takes requirements.txt filenames and *not* requirement\n  specs.  Requirement specs are now passed as arguments to the pex tool.  Use ``--`` to escape\n  command line arguments passed to interpreters spawned by pex.  Implements\n  `#5 <https://github.com/pantsbuild/pex/issues/5>`_.\n\n* Adds a number of flag aliases to be more compatible with pip command lines: ``--no-index``,\n  ``-f``, ``--find-links``, ``--index-url``, ``--no-use-wheel``.  Removes ``-p`` in favor of\n  ``-o`` exclusively.\n\n* Adds ``--python-shebang`` option to the pex tool in order to set the ``#!`` shebang to an exact\n  path.  `#53 <https://github.com/pantsbuild/pex/issues/53>`_.\n\n* Adds support for ``PEX_PYTHON`` environment variable which will cause the pex file to reinvoke\n  itself using the interpreter specified, e.g. ``PEX_PYTHON=python3.4`` or\n  ``PEX_PYTHON=/exact/path/to/interpreter``.  `#27 <https://github.com/pantsbuild/pex/issues/27>`_.\n\n* Adds support for ``PEX_PATH`` environment variable which allows merging of PEX environments at\n  runtime.  This can be used to inject plugins or entry_points or modules from one PEX into\n  another without explicitly building them together. `#30 <https://github.com/pantsbuild/pex/issues/30>`_.\n\n* Consolidates documentation of ``PEX_`` environment variables and adds the ``--help-variables`` option\n  to the pex client.  Partially addresses `#13 <https://github.com/pantsbuild/pex/issues/13>`_.\n\n* Adds helper method to dump a package subdirectory onto disk from within a zipped PEX file.  This\n  can be useful for applications that know they're running within a PEX and would prefer some\n  static assets dumped to disk instead of running as an unzipped PEX file.\n  `#12 <https://github.com/pantsbuild/pex/pull/12>`_.\n\n* Now supports extras for static URLs and installable directories.\n  `#65 <https://github.com/pantsbuild/pex/issues/65>`_.\n\n* Adds ``-m`` and ``--entry-point`` alias to the existing ``-e`` option for entry points in\n  the pex tool to evoke the similarity to ``python -m``.\n\n* Adds console script support via ``-c/--script/--console-script`` and ``PEX_SCRIPT``.  This allows\n  you to reference the named entry point instead of the exact ``module:name`` pair.  Also supports\n  scripts defined in the ``scripts`` section of setup.py.\n  `#59 <https://github.com/pantsbuild/pex/issues/59>`_.\n\n* Adds more debugging information when encountering unresolvable requirements.\n  `#79 <https://github.com/pantsbuild/pex/issues/79>`_.\n\n* Bug fix: ``PEX_COVERAGE`` and ``PEX_PROFILE`` did not function correctly when SystemExit was raised.\n  Fixes `#81 <https://github.com/pantsbuild/pex/issues/81>`_.\n\n* Bug fix: Fixes caching in the PEX tool since we don't cache the source distributions of installable\n  directories.  `#24 <https://github.com/pantsbuild/pex/issues/24>`_.\n\n0.9.0\n-----\n\nThis is the last release before the 1.0.0 development branch is started.\n\n* Change the setuptools range to >=2.2,<16 by handling EntryPoint changes as well as\n  being flexible on whether ``pkg_resources`` is a package or a module.  Fixes\n  `#55 <https://github.com/pantsbuild/pex/issues/55>`_ and\n  `#34 <https://github.com/pantsbuild/pex/issues/34>`_.\n\n* Adds option groups to the pex tool to make the help output slightly more readable.\n\n* Bug fix: Make ``pip install pex`` work better by removing ``extras_requires`` on the\n  ``console_script`` entry point.  Fixes `#48 <https://github.com/pantsbuild/pex/issues/48>`_\n\n* New feature: Adds an interpreter cache to the ``pex`` tool.  If the user does not explicitly\n  disable the wheel feature and attempts to build a pex with wheels but does not have the wheel\n  package installed, pex will download it in order to make the feature work.\n  Implements `#47 <https://github.com/pantsbuild/pex/issues/47>`_ in order to\n  fix `#48 <https://github.com/pantsbuild/pex/issues/48>`_\n\n0.8.6\n-----\n\n* Bug fix: Honor installed sys.excepthook in pex teardown.\n  `RB #1733 <https://rbcommons.com/s/twitter/r/1733>`_\n\n* Bug fix: ``UrllibContext`` used ``replace`` as a keyword argument for ``bytes.decode``\n  but this only works on Python 3.  `Pull Request #46 <https://github.com/pantsbuild/pex/pull/46>`_\n\n0.8.5\n-----\n\n* Bug fix: Fixup string formatting in pex/bin/pex.py to support Python 2.6\n  `Pull Request #40 <https://github.com/pantsbuild/pex/pull/40>`_\n\n0.8.4\n-----\n\n* Performance improvement: Speed up the best-case scenario of dependency resolution.\n  `RB #1685 <https://rbcommons.com/s/twitter/r/1685>`_\n\n* Bug fix: Change from ``uuid4().get_hex()`` to ``uuid4().hex`` to maintain Python3\n  compatibility of pex.common.\n  `Pull Request #39 <https://github.com/pantsbuild/pex/pull/39>`_\n\n* Bug fix: Actually cache the results of translation.  Previously bdist translations\n  would be created in a temporary directory even if a cache location was specified.\n  `RB #1666 <https://rbcommons.com/s/twitter/r/1666>`_\n\n* Bug fix: Support all potential abi tag permutations when determining platform\n  compatibility.\n  `Pull Request #33 <https://github.com/pantsbuild/pex/pull/33>`_\n\n0.8.3\n-----\n\n* Performance improvement: Don't always write packages to disk if they've already been\n  cached.  This can significantly speed up launching PEX files with a large\n  number of non-zip-safe dependencies.\n  `RB #1642 <https://rbcommons.com/s/twitter/r/1642>`_\n\n0.8.2\n-----\n\n* Bug fix: Allow pex 0.8.x to parse pex files produced by earlier versions of\n  pex and twitter.common.python.\n\n* Pin pex to setuptools prior to 9.x until we have a chance to make changes\n  related to PEP440 and the change of pkg_resources.py to a package.\n\n0.8.1\n-----\n\n* Bug fix: Fix issue where it'd be possible to ``os.path.getmtime`` on a remote ``Link`` object\n  `Issue #29 <https://github.com/pantsbuild/pex/issues/29>`_\n\n0.8.0\n-----\n\n* *API change*: Decouple translation from package iteration.  This removes\n  the Obtainer construct entirely, which likely means if you're using PEX as\n  a library, you will need to change your code if you were doing anything\n  nontrivial.  This adds a couple new options to ``resolve`` but simplifies\n  the story around how to cache packages.\n  `RB #785 <https://rbcommons.com/s/twitter/r/785/>`_\n\n* Refactor http handling in pex to allow for alternate http implementations.  Adds support\n  for `requests <https://github.com/kennethreitz/requests>`_,\n  improving both performance and security.   For more information, read the commit notes at\n  `91c7f32 <https://github.com/pantsbuild/pex/commit/91c7f324085c18af714d35947b603a5f60aeb682>`_.\n  `RB #778 <https://rbcommons.com/s/twitter/r/778/>`_\n\n* Improvements to API documentation throughout.\n\n* Renamed ``Tracer`` to ``TraceLogger`` to prevent nondeterministic isort ordering.\n\n* Refactor tox.ini to increase the number of environment combinations and improve coverage.\n\n* Adds HTTP retry support for the RequestsContext.\n  `RB #1303 <https://rbcommons.com/s/twitter/r/1303/>`_\n\n* Make pex --version correct.\n  `Issue #19 <https://github.com/pantsbuild/pex/issues/19>`_\n\n* Bug fix: Fix over-aggressive sys.modules scrubbing for namespace packages.  Under\n  certain circumstances, namespace packages in site-packages could conflict with packages\n  within a PEX, causing them to fail importing.\n  `RB #1378 <https://rbcommons.com/s/twitter/r/1378/>`_\n\n* Bug fix: Replace uses of ``os.unsetenv(...)`` with ``del os.environ[...]``\n  `Pull Request #11 <https://github.com/pantsbuild/pex/pull/11>`_\n\n* Bug fix: Scrub sys.path and sys.modules based upon both supplied path and\n  realpath of files and directories.  Newer versions of virtualenv on Linux symlink site-packages\n  which caused those packages to not be removed from sys.path correctly.\n  `Issue #21 <https://github.com/pantsbuild/pex/issues/21>`_\n\n* Bug fix: The pex -s option was not correctly pulling in transitive dependencies.\n  `Issue #22 <https://github.com/pantsbuild/pex/issues/22>`_\n\n* Bug fix: Adds ``content`` method to HTTP contexts that does HTML content decoding, fixing\n  an encoding issue only experienced when using Python 3.\n  `Issue #10 <https://github.com/pantsbuild/pex/issues/10>`_\n\n0.7.0\n-----\n\n* Rename ``twitter.common.python`` to ``pex`` and split out from the\n  `twitter/commons <http://github.com/twitter/commons>`_ repo.\n\n0.6.0\n-----\n\n* Change the interpretation of ``-i`` (and of PyPIFetcher's pypi_base)\n  to match pip's ``-i``.  This is useful for compatibility with devpi.\n\n0.5.10\n------\n\n* Ensures that .egg/.whl distributions on disk have their mtime updated\n  even though we no longer overwrite them. This gives them a new time\n  lease against their ttl.\n\n  Without this change, once a distribution aged past the ttl it would\n  never be used again, and builds would re-create the same distributions\n  in tmpdirs over and over again.\n\n0.5.9\n-----\n\n* Fixes an issue where SourceTranslator would overwrite .egg/.whl\n  distributions already on disk.  Instead it should always check to see if\n  a copy already exists and reuse if there.\n\n  This ordinarily should not be a problem but the zipimporter caches\n  metadata by filename instead of stat/sha, so if the underlying contents\n  changed a runtime error would be thrown due to seemingly corrupt zip file\n  offsets. `RB #684 <https://rbcommons.com/s/twitter/r/684/>`_\n\n0.5.8\n-----\n\n* Adds ``-i/--index`` option to the pex tool.\n\n0.5.7\n-----\n\n* Adds ``twitter.common.python.pex_bootstrap`` ``bootstrap_pex_env`` function in\n  order to initialize a PEX environment from within a python interpreter.\n  (Patch contributed by @kwlzn)\n\n* Adds stdin=,stdout=,stderr= keyword parameters to the ``PEX.run`` function.\n  (Patch from @benjy)\n\n0.5.6\n-----\n\n* The crawler now defaults to not follow links for security reasons.\n  (Before the default behavior was to implicitly ``--follow-links`` for all\n  requirements.) `RB #293 <https://rbcommons.com/s/twitter/r/293/>`_\n\n0.5.5\n-----\n\n* Improves scrubbing of site-packages from PEX environments.\n  `RB #289 <https://rbcommons.com/s/twitter/r/289/>`_\n\n0.5.1 - 0.5.4\n-------------\n\n* Silences exceptions reported during interpreter teardown (the exceptions\n  resulting from incorrect atexit handler behavior) introduced by 0.4.3\n  `RB #253 <https://rbcommons.com/s/twitter/r/253/>`_\n  `RB #249 <https://rbcommons.com/s/twitter/r/249/>`_\n\n* Adds ``__hash__`` to ``Link`` so that Packages are hashed correctly in\n  ``twitter.common.python.resolver`` ``resolve``\n\n0.5.0\n-----\n\n* Adds wheel support to ``twitter.common.python``\n  `RB #94 <https://rbcommons.com/s/twitter/r/94/>`_\n  `RB #154 <https://rbcommons.com/s/twitter/r/154/>`_\n  `RB #148 <https://rbcommons.com/s/twitter/r/148/>`_\n\n0.4.3\n-----\n\n* Adds ``twitter.common.python.finders`` which are additional finders for\n  setuptools including:\n  - find eggs within a .zip\n  - find wheels within a directory\n  - find wheels within a .zip\n  `RB #86 <https://rbcommons.com/s/twitter/r/86/>`_\n\n* Adds a new Package abstraction by refactoring Link into Link and Package.\n  `RB #92 <https://rbcommons.com/s/twitter/r/92/>`_\n\n* Adds support for PEP425 tagging necessary for wheel support.\n  `RB #87 <https://rbcommons.com/s/twitter/r/87/>`_\n\n* Improves python environment isolation by correctly scrubbing namespace\n  packages injected into module ``__path__`` attributes by nspkg pth files.\n  `RB #116 <https://rbcommons.com/s/twitter/r/116/>`_\n\n* Adds ``twitter.common.python.resolver`` ``resolve`` method that handles\n  transitive dependency resolution better.  This means that if the\n  requirement ``futures==2.1.2`` and an unqualified ``futures>=2`` is pulled in\n  transitively, our resolver will correctly resolve futures 2.1.2 instead\n  of reporting a VersionConflict if any version newer than 2.1.2 is\n  available. `RB #129 <https://rbcommons.com/s/twitter/r/129/>`_\n\n* Factors all ``twitter.common.python`` test helpers into\n  ``twitter.common.python.testing``\n  `RB #91 <https://rbcommons.com/s/twitter/r/91/>`_\n\n* Bug fix: Fix ``OrderedSet`` atexit exceptions\n  `RB #147 <https://rbcommons.com/s/twitter/r/147/>`_\n\n* Bug fix: Fix cross-device symlinking (patch from @benjy)\n\n* Bug fix: Raise a ``RuntimeError`` if we fail to write ``pkg_resources`` into a .pex\n  `RB #115 <https://rbcommons.com/s/twitter/r/115/>`_\n\n0.4.2\n-----\n\n* Upgrade to ``setuptools>=1``\n\n0.4.1\n-----\n\n* ``twitter.common.python`` is no longer a namespace package\n\n0.4.0\n-----\n\n* Kill the egg distiller.  We now delegate .egg generation to bdist_egg.\n  `RB #55 <https://rbcommons.com/s/twitter/r/55/>`_\n\n0.3.1\n-----\n\n* Short-circuit resolving a distribution if a local exact match is found.\n  `RB #47 <https://rbcommons.com/s/twitter/r/47/>`_\n\n* Correctly patch the global ``pkg_resources`` ``WorkingSet`` for the lifetime\n  of the Python interpreter. `RB #52 <https://rbcommons.com/s/twitter/r/52/>`_\n\n* Fixes a performance regression in setuptools ``build_zipmanifest``\n  `Setuptools Issue #154 <https://bitbucket.org/pypa/setuptools/issue/154/build_zipmanifest-results-should-be>`_\n  `RB #53 <https://rbcommons.com/s/twitter/r/53/>`_\n\n0.3.0\n-----\n\n* Plumb through the ``--zip-safe``, ``--always-write-cache``, ``--ignore-errors``\n  and ``--inherit-path`` flags to the pex tool.\n\n* Delete the unused ``PythonDirWrapper`` code.\n\n* Split ``PEXEnvironment`` resolution into ``twitter.common.python.environment``\n  and deconflate ``WorkingSet``/``Environment`` state.\n\n* Removes the monkeypatched zipimporter in favor of keeping all eggs\n  unzipped within PEX files.  Refactors the PEX dependency cache in\n  ``util.py``\n\n* Adds interpreter detection for Jython and PyPy.\n\n* Dependency translation errors should be made uniform.\n  (Patch from @johnsirois)\n\n* Adds ``PEX_PROFILE_ENTRIES`` to limit the number of entries reported when\n  ``PEX_PROFILE`` is enabled. (Patch from @rgs_)\n\n* Bug fix: Several fixes to error handling in ``twitter.common.python.http``\n  (From Marc Abramowitz)\n\n* Bug fix: PEX should not always assume that ``$PATH`` was available.\n  (Patch from @jamesbroadhead)\n\n* Bug fix: Filename should be part of the .pex cache key or else multiple\n  identical versions will incorrectly resolve (Patch from @tc)\n\n* Bug fix: Executed entry points shouldn't be forced to run in an\n  environment with ``__future__`` imports enabled. (Patch from\n  @lawson_patrick)\n\n* Bug fix: Detect versionless egg links and fail fast. (Patch from\n  @johnsirois.)\n\n* Bug fix: Handle setuptools>=2.1 correctly in the zipimport monkeypatch\n  (Patch from @johnsirois.)\n\n0.2.3\n-----\n\n* Bug fix: Fix handling of Fetchers with ``file://`` urls.\n\n0.2.2\n-----\n\n* Adds the pex tool as a standalone tool.\n\n0.2.1\n-----\n\n* Bug fix: Bootstrapped ``twitter.common.python`` should declare ``twitter.common``\n  as a namespace package.\n\n0.2.0\n-----\n\n* Make ``twitter.common.python`` fully standalone by consolidating\n  external dependencies within ``twitter.common.python.common``.\n\n0.1.0\n-----\n\n* Initial published version of ``twitter.common.python``.\n", 
    "tox": true, 
    "lcname": "pex", 
    "bugtrack_url": null, 
    "github": true, 
    "coveralls": false, 
    "name": "pex", 
    "license": "Apache License, Version 2.0", 
    "travis_ci": true, 
    "github_project": "pex", 
    "summary": "The PEX packaging toolchain.", 
    "split_keywords": [], 
    "author_email": "", 
    "urls": [
        {
            "has_sig": true, 
            "upload_time": "2017-09-01T19:58:28", 
            "comment_text": "", 
            "python_version": "3.6", 
            "url": "https://pypi.python.org/packages/0b/26/1f5411ecd8b4c1789887d7ec1a4591de363e2bb25d253068626c35823dfc/pex-1.2.11-py2.py3-none-any.whl", 
            "md5_digest": "3474e8c6c721d8bcca118cbcc1f4dadc", 
            "downloads": 0, 
            "filename": "pex-1.2.11-py2.py3-none-any.whl", 
            "packagetype": "bdist_wheel", 
            "path": "0b/26/1f5411ecd8b4c1789887d7ec1a4591de363e2bb25d253068626c35823dfc/pex-1.2.11-py2.py3-none-any.whl", 
            "size": 111213
        }, 
        {
            "has_sig": true, 
            "upload_time": "2017-09-01T19:58:33", 
            "comment_text": "", 
            "python_version": "source", 
            "url": "https://pypi.python.org/packages/9f/fa/374a621ed7cad3cb9ae90f2c612f527d403de8acbb7e9ba14717526433e8/pex-1.2.11.tar.gz", 
            "md5_digest": "a69da8e229365aecd76c6a7dbb4dac64", 
            "downloads": 0, 
            "filename": "pex-1.2.11.tar.gz", 
            "packagetype": "sdist", 
            "path": "9f/fa/374a621ed7cad3cb9ae90f2c612f527d403de8acbb7e9ba14717526433e8/pex-1.2.11.tar.gz", 
            "size": 600275
        }
    ], 
    "_id": null, 
    "cheesecake_installability_id": null
}