skip to navigation
skip to content

twitter.common.python 0.6.0

Twitter's Python packaging toolchain.

Latest Version: 0.7.0


  • 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 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

  • 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



  • 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


  • 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


  • 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
  • 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.
File Type Py Version Uploaded on Size
twitter.common.python-0.6.0.tar.gz (md5) Source 2014-07-25 49KB