4
Summary: The PEX packaging toolchain.
5
Home-page: https://github.com/pantsbuild/pex
8
License: Apache License, Version 2.0
17
* Bug fix: Honor installed sys.excepthook in pex teardown.
18
`RB #1733 <https://rbcommons.com/s/twitter/r/1733>`_
20
* Bug fix: ``UrllibContext`` used ``replace`` as a keyword argument for ``bytes.decode``
21
but this only works on Python 3. `Pull Request #46 <https://github.com/pantsbuild/pex/pull/46>`_
27
* Bug fix: Fixup string formatting in pex/bin/pex.py to support Python 2.6
28
`Pull Request #40 <https://github.com/pantsbuild/pex/pull/40>`_
34
* Performance improvement: Speed up the best-case scenario of dependency resolution.
35
`RB #1685 <https://rbcommons.com/s/twitter/r/1685>`_
37
* Bug fix: Change from ``uuid4().get_hex()`` to ``uuid4().hex`` to maintain Python3
38
compatibility of pex.common.
39
`Pull Request #39 <https://github.com/pantsbuild/pex/pull/39>`_
41
* Bug fix: Actually cache the results of translation. Previously bdist translations
42
would be created in a temporary directory even if a cache location was specified.
43
`RB #1666 <https://rbcommons.com/s/twitter/r/1666>`_
45
* Bug fix: Support all potential abi tag permutations when determining platform
47
`Pull Request #33 <https://github.com/pantsbuild/pex/pull/33>`_
53
* Performance improvement: Don't always write packages to disk if they've already been
54
cached. This can significantly speed up launching PEX files with a large
55
number of non-zip-safe dependencies.
56
`RB #1642 <https://rbcommons.com/s/twitter/r/1642>`_
62
* Bug fix: Allow pex 0.8.x to parse pex files produced by earlier versions of
63
pex and twitter.common.python.
65
* Pin pex to setuptools prior to 9.x until we have a chance to make changes
66
related to PEP440 and the change of pkg_resources.py to a package.
72
* Bug fix: Fix issue where it'd be possible to ``os.path.getmtime`` on a remote ``Link`` object
73
`Issue #29 <https://github.com/pantsbuild/pex/issues/29>`_
79
* *API change*: Decouple translation from package iteration. This removes
80
the Obtainer construct entirely, which likely means if you're using PEX as
81
a library, you will need to change your code if you were doing anything
82
nontrivial. This adds a couple new options to ``resolve`` but simplifies
83
the story around how to cache packages.
84
`RB #785 <https://rbcommons.com/s/twitter/r/785/>`_
86
* Refactor http handling in pex to allow for alternate http implementations. Adds support
87
for `requests <https://github.com/kennethreitz/requests>`_,
88
improving both performance and security. For more information, read the commit notes at
89
`91c7f32 <https://github.com/pantsbuild/pex/commit/91c7f324085c18af714d35947b603a5f60aeb682>`_.
90
`RB #778 <https://rbcommons.com/s/twitter/r/778/>`_
92
* Improvements to API documentation throughout.
94
* Renamed ``Tracer`` to ``TraceLogger`` to prevent nondeterministic isort ordering.
96
* Refactor tox.ini to increase the number of environment combinations and improve coverage.
98
* Adds HTTP retry support for the RequestsContext.
99
`RB #1303 <https://rbcommons.com/s/twitter/r/1303/>`_
101
* Make pex --version correct.
102
`Issue #19 <https://github.com/pantsbuild/pex/issues/19>`_
104
* Bug fix: Fix over-aggressive sys.modules scrubbing for namespace packages. Under
105
certain circumstances, namespace packages in site-packages could conflict with packages
106
within a PEX, causing them to fail importing.
107
`RB #1378 <https://rbcommons.com/s/twitter/r/1378/>`_
109
* Bug fix: Replace uses of ``os.unsetenv(...)`` with ``del os.environ[...]``
110
`Pull Request #11 <https://github.com/pantsbuild/pex/pull/11>`_
112
* Bug fix: Scrub sys.path and sys.modules based upon both supplied path and
113
realpath of files and directories. Newer versions of virtualenv on Linux symlink site-packages
114
which caused those packages to not be removed from sys.path correctly.
115
`Issue #21 <https://github.com/pantsbuild/pex/issues/21>`_
117
* Bug fix: The pex -s option was not correctly pulling in transitive dependencies.
118
`Issue #22 <https://github.com/pantsbuild/pex/issues/22>`_
120
* Bug fix: Adds ``content`` method to HTTP contexts that does HTML content decoding, fixing
121
an encoding issue only experienced when using Python 3.
122
`Issue #10 <https://github.com/pantsbuild/pex/issues/10>`_
128
* Rename ``twitter.common.python`` to ``pex`` and split out from the
129
`twitter/commons <http://github.com/twitter/commons>`_ repo.
135
* Change the interpretation of ``-i`` (and of PyPIFetcher's pypi_base)
136
to match pip's ``-i``. This is useful for compatibility with devpi.
142
* Ensures that .egg/.whl distributions on disk have their mtime updated
143
even though we no longer overwrite them. This gives them a new time
144
lease against their ttl.
146
Without this change, once a distribution aged past the ttl it would
147
never be used again, and builds would re-create the same distributions
148
in tmpdirs over and over again.
154
* Fixes an issue where SourceTranslator would overwrite .egg/.whl
155
distributions already on disk. Instead it should always check to see if
156
a copy already exists and reuse if there.
158
This ordinarily should not be a problem but the zipimporter caches
159
metadata by filename instead of stat/sha, so if the underlying contents
160
changed a runtime error would be thrown due to seemingly corrupt zip file
161
offsets. `RB #684 <https://rbcommons.com/s/twitter/r/684/>`_
167
* Adds ``-i/--index`` option to the pex tool.
173
* Adds ``twitter.common.python.pex_bootstrap`` ``bootstrap_pex_env`` function in
174
order to initialize a PEX environment from within a python interpreter.
175
(Patch contributed by @kwlzn)
177
* Adds stdin=,stdout=,stderr= keyword parameters to the ``PEX.run`` function.
184
* The crawler now defaults to not follow links for security reasons.
185
(Before the default behavior was to implicitly ``--follow-links`` for all
186
requirements.) `RB #293 <https://rbcommons.com/s/twitter/r/293/>`_
192
* Improves scrubbing of site-packages from PEX environments.
193
`RB #289 <https://rbcommons.com/s/twitter/r/289/>`_
199
* Silences exceptions reported during interpreter teardown (the exceptions
200
resulting from incorrect atexit handler behavior) introduced by 0.4.3
201
`RB #253 <https://rbcommons.com/s/twitter/r/253/>`_
202
`RB #249 <https://rbcommons.com/s/twitter/r/249/>`_
204
* Adds ``__hash__`` to ``Link`` so that Packages are hashed correctly in
205
``twitter.common.python.resolver`` ``resolve``
211
* Adds wheel support to ``twitter.common.python``
212
`RB #94 <https://rbcommons.com/s/twitter/r/94/>`_
213
`RB #154 <https://rbcommons.com/s/twitter/r/154/>`_
214
`RB #148 <https://rbcommons.com/s/twitter/r/148/>`_
220
* Adds ``twitter.common.python.finders`` which are additional finders for
221
setuptools including:
222
- find eggs within a .zip
223
- find wheels within a directory
224
- find wheels within a .zip
225
`RB #86 <https://rbcommons.com/s/twitter/r/86/>`_
227
* Adds a new Package abstraction by refactoring Link into Link and Package.
228
`RB #92 <https://rbcommons.com/s/twitter/r/92/>`_
230
* Adds support for PEP425 tagging necessary for wheel support.
231
`RB #87 <https://rbcommons.com/s/twitter/r/87/>`_
233
* Improves python environment isolation by correctly scrubbing namespace
234
packages injected into module ``__path__`` attributes by nspkg pth files.
235
`RB #116 <https://rbcommons.com/s/twitter/r/116/>`_
237
* Adds ``twitter.common.python.resolver`` ``resolve`` method that handles
238
transitive dependency resolution better. This means that if the
239
requirement ``futures==2.1.2`` and an unqualified ``futures>=2`` is pulled in
240
transitively, our resolver will correctly resolve futures 2.1.2 instead
241
of reporting a VersionConflict if any version newer than 2.1.2 is
242
available. `RB #129 <https://rbcommons.com/s/twitter/r/129/>`_
244
* Factors all ``twitter.common.python`` test helpers into
245
``twitter.common.python.testing``
246
`RB #91 <https://rbcommons.com/s/twitter/r/91/>`_
248
* Bug fix: Fix ``OrderedSet`` atexit exceptions
249
`RB #147 <https://rbcommons.com/s/twitter/r/147/>`_
251
* Bug fix: Fix cross-device symlinking (patch from @benjy)
253
* Bug fix: Raise a ``RuntimeError`` if we fail to write ``pkg_resources`` into a .pex
254
`RB #115 <https://rbcommons.com/s/twitter/r/115/>`_
260
* Upgrade to ``setuptools>=1``
266
* ``twitter.common.python`` is no longer a namespace package
272
* Kill the egg distiller. We now delegate .egg generation to bdist_egg.
273
`RB #55 <https://rbcommons.com/s/twitter/r/55/>`_
279
* Short-circuit resolving a distribution if a local exact match is found.
280
`RB #47 <https://rbcommons.com/s/twitter/r/47/>`_
282
* Correctly patch the global ``pkg_resources`` ``WorkingSet`` for the lifetime
283
of the Python interpreter. `RB #52 <https://rbcommons.com/s/twitter/r/52/>`_
285
* Fixes a performance regression in setuptools ``build_zipmanifest``
286
`Setuptools Issue #154 <https://bitbucket.org/pypa/setuptools/issue/154/build_zipmanifest-results-should-be>`_
287
`RB #53 <https://rbcommons.com/s/twitter/r/53/>`_
293
* Plumb through the ``--zip-safe``, ``--always-write-cache``, ``--ignore-errors``
294
and ``--inherit-path`` flags to the pex tool.
296
* Delete the unused ``PythonDirWrapper`` code.
298
* Split ``PEXEnvironment`` resolution into ``twitter.common.python.environment``
299
and deconflate ``WorkingSet``/``Environment`` state.
301
* Removes the monkeypatched zipimporter in favor of keeping all eggs
302
unzipped within PEX files. Refactors the PEX dependency cache in
305
* Adds interpreter detection for Jython and PyPy.
307
* Dependency translation errors should be made uniform.
308
(Patch from @johnsirois)
310
* Adds ``PEX_PROFILE_ENTRIES`` to limit the number of entries reported when
311
``PEX_PROFILE`` is enabled. (Patch from @rgs_)
313
* Bug fix: Several fixes to error handling in ``twitter.common.python.http``
314
(From Marc Abramowitz)
316
* Bug fix: PEX should not always assume that ``$PATH`` was available.
317
(Patch from @jamesbroadhead)
319
* Bug fix: Filename should be part of the .pex cache key or else multiple
320
identical versions will incorrectly resolve (Patch from @tc)
322
* Bug fix: Executed entry points shouldn't be forced to run in an
323
environment with ``__future__`` imports enabled. (Patch from
326
* Bug fix: Detect versionless egg links and fail fast. (Patch from
329
* Bug fix: Handle setuptools>=2.1 correctly in the zipimport monkeypatch
330
(Patch from @johnsirois.)
336
* Bug fix: Fix handling of Fetchers with ``file://`` urls.
342
* Adds the pex tool as a standalone tool.
348
* Bug fix: Bootstrapped ``twitter.common.python`` should declare ``twitter.common``
349
as a namespace package.
355
* Make ``twitter.common.python`` fully standalone by consolidating
356
external dependencies within ``twitter.common.python.common``.
362
* Initial published version of ``twitter.common.python``.
365
Classifier: Intended Audience :: Developers
366
Classifier: License :: OSI Approved :: Apache Software License
367
Classifier: Operating System :: OS Independent
368
Classifier: Programming Language :: Python