Twitter's Python packaging toolchain.
- Change the interpretation of -i (and of PyPIFetcher’s pypi_base) to match pip’s -i. This is useful for compatibility with devpi.
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.
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
- Adds -i/--index option to the pex tool.
- 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)
- 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
- Improves scrubbing of site-packages from PEX environments. RB #289
0.5.1 - 0.5.4
- 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
- Upgrade to setuptools>=1
- twitter.common.python is no longer a namespace package
- Kill the egg distiller. We now delegate .egg generation to bdist_egg. RB #55
- 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.)
- Bug fix: Fix handling of Fetchers with file:// urls.
- Adds the pex tool as a standalone tool.
- Bug fix: Bootstrapped twitter.common.python should declare twitter.common as a namespace package.
- Make twitter.common.python fully standalone by consolidating external dependencies within twitter.common.python.common.
- Initial published version of twitter.common.python.