diff options
| author | Barry Warsaw <barry@ubuntu.com> | 2011-09-08 15:38:18 -0400 |
|---|---|---|
| committer | git-ubuntu importer <ubuntu-devel-discuss@lists.ubuntu.com> | 2011-09-08 20:35:12 +0000 |
| commit | 33fffd4c9708054bb8e14c111cf9b5c1eb5577b5 (patch) | |
| tree | 6c0964ac628554b87e63c3ba48078f89dd1168a2 | |
| parent | e4a0e5670c2fad1040219a35dcea439fc7d27cf9 (diff) | |
1.6.4-0ubuntu1 (patches unapplied)import/1.6.4-0ubuntu1ubuntu/oneiric-develubuntu/oneiric
Imported using git-ubuntu import.
Notes
Notes:
* New upstream release.
- This version includes the upstream fix for posix_local layouts,
used in Debian and Ubuntu. (LP: #839588)
- debian/patches/remove_syspath0_on_reinvoke.patch (or its moral
equivalent) has been applied upstream and is no longer necessary.
| -rw-r--r-- | PKG-INFO | 177 | ||||
| -rw-r--r-- | debian/changelog | 10 | ||||
| -rw-r--r-- | debian/patches/add_distribute.patch | 31 | ||||
| -rw-r--r-- | debian/patches/look_for_external_files.patch | 19 | ||||
| -rw-r--r-- | debian/patches/remove_syspath0_on_reinvoke.patch | 24 | ||||
| -rw-r--r-- | debian/patches/series | 1 | ||||
| -rw-r--r-- | docs/index.txt | 126 | ||||
| -rw-r--r-- | docs/news.txt | 49 | ||||
| -rw-r--r-- | setup.py | 4 | ||||
| -rw-r--r-- | virtualenv.egg-info/PKG-INFO | 177 | ||||
| -rw-r--r-- | virtualenv.egg-info/SOURCES.txt | 4 | ||||
| -rw-r--r--[-rwxr-xr-x] | virtualenv.py | 388 | ||||
| -rw-r--r-- | virtualenv_support/distribute-0.6.15.tar.gz | bin | 289103 -> 0 bytes | |||
| -rw-r--r-- | virtualenv_support/distribute-0.6.19.tar.gz | bin | 0 -> 399367 bytes | |||
| -rw-r--r-- | virtualenv_support/pip-1.0.2.tar.gz | bin | 0 -> 105820 bytes | |||
| -rw-r--r-- | virtualenv_support/pip-1.0.tar.gz | bin | 100102 -> 0 bytes |
16 files changed, 721 insertions, 289 deletions
@@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: virtualenv -Version: 1.6 +Version: 1.6.4 Summary: Virtual Python Environment builder Home-page: http://www.virtualenv.org Author: Jannis Leidel, Carl Meyer and Brian Rosner @@ -18,14 +18,13 @@ Description: It was written by Ian Bicking, sponsored by the `Open Planning Project <http://openplans.org>`_ and is now maintained by a - `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`. + `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_. It is licensed under an `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_. - You can install it with ``easy_install virtualenv``, or from the `git - repository <https://github.com/pypa/virtualenv>`_ or from a `tarball - <https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_ - ``easy_install virtualenv==dev``. + You can install it with ``easy_install virtualenv``, or the `latest + development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_ + with ``easy_install virtualenv==dev``. What It Does ------------ @@ -36,7 +35,7 @@ Description: and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install - everything into ``/usr/lib/python2.4/site-packages`` (or whatever your + everything into ``/usr/lib/python2.7/site-packages`` (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded. @@ -51,7 +50,7 @@ Description: In all these cases, ``virtualenv`` can help you. It creates an environment that has its own installation directories, that doesn't share libraries with other virtualenv environments (and optionally - doesn't use the globally installed libraries either). + doesn't access the globally installed libraries either). The basic usage is:: @@ -91,8 +90,9 @@ Description: PyPy Support ~~~~~~~~~~~~ - Beginning with virtualenv version 1.5 there is experimental `PyPy - <http://pypy.org>`_ support. Currently only PyPy trunk is supported. + Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is + supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5. + To use PyPy 1.5, you need a version of virtualenv >= 1.6.1. Creating Your Own Bootstrap Scripts ----------------------------------- @@ -179,13 +179,15 @@ Description: $ source bin/activate - This will change your ``$PATH`` to point to the virtualenv ``bin/`` - directory. Unlike workingenv, this is all it - does; it's a convenience. But if you use the complete path like - ``/path/to/env/bin/python script.py`` you do not need to activate the - environment first. You have to use ``source`` because it changes the - environment in-place. After activating an environment you can use the - function ``deactivate`` to undo the changes. + This will change your ``$PATH`` to point to the virtualenv's ``bin/`` + directory. (You have to use ``source`` because it changes your shell + environment in-place.) This is all it does; it's purely a convenience. If + you directly run a script or the python interpreter from the virtualenv's + ``bin/`` directory (e.g. ``path/to/env/bin/pip`` or + ``/path/to/env/bin/python script.py``) there's no need for activation. + + After activating an environment you can use the function ``deactivate`` to + undo the changes to your ``$PATH``. The ``activate`` script will also modify your shell prompt to indicate which environment is currently active. You can disable this behavior, @@ -196,7 +198,7 @@ Description: On Windows you just do:: - > \path\to\env\bin\activate.bat + > \path\to\env\Scripts\activate.bat And use ``deactivate.bat`` to undo the changes. @@ -226,13 +228,14 @@ Description: activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) - This will change ``sys.path`` and even change ``sys.prefix``, but also - allow you to use an existing interpreter. Items in your environment - will show up first on ``sys.path``, before global items. However, - this cannot undo the activation of other environments, or modules that - have been imported. You shouldn't try to, for instance, activate an - environment before a web request; you should activate *one* - environment as early as possible, and not do it again in that process. + This will change ``sys.path`` and even change ``sys.prefix``, but also allow + you to use an existing interpreter. Items in your environment will show up + first on ``sys.path``, before global items. However, global items will + always be accessible -- this technique does not support the + ``--no-site-packages`` flag. Also, this cannot undo the activation of other + environments, or modules that have been imported. You shouldn't try to, for + instance, activate an environment before a web request; you should activate + *one* environment as early as possible, and not do it again in that process. Making Environments Relocatable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -272,6 +275,44 @@ Description: Currently the ``--no-site-packages`` option will not be honored if you use this on an environment. + The ``--extra-search-dir`` Option + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + When it creates a new environment, virtualenv installs either + setuptools or distribute, and pip. In normal operation, the latest + releases of these packages are fetched from the `Python Package Index + <http://pypi.python.org>`_ (PyPI). In some circumstances, this + behavior may not be wanted, for example if you are using virtualenv + during a deployment and do not want to depend on Internet access and + PyPI availability. + + As an alternative, you can provide your own versions of setuptools, + distribute and/or pip on the filesystem, and tell virtualenv to use + those distributions instead of downloading them from the Internet. To + use this feature, pass one or more ``--extra-search-dir`` options to + virtualenv like this:: + + $ virtualenv --extra-search-dir=/path/to/distributions ENV + + The ``/path/to/distributions`` path should point to a directory that + contains setuptools, distribute and/or pip distributions. Setuptools + distributions must be ``.egg`` files; distribute and pip distributions + should be `.tar.gz` source distributions. + + Virtualenv will still download these packages if no satisfactory local + distributions are found. + + If you are really concerned about virtualenv fetching these packages + from the Internet and want to ensure that it never will, you can also + provide an option ``--never-download`` like so:: + + $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV + + If this option is provided, virtualenv will never try to download + setuptools/distribute or pip. Instead, it will exit with status code 1 + if it fails to find local distributions for any of these required + packages. + Compare & Contrast with Alternatives ------------------------------------ @@ -310,6 +351,43 @@ Description: I *strongly* recommend anyone doing application development or deployment use one of these tools. + Contributing + ------------ + + Refer to the `contributing to pip`_ documentation - it applies equally to + virtualenv. + + Virtualenv's release schedule is tied to pip's -- each time there's a new pip + release, there will be a new virtualenv release that bundles the new version of + pip. + + .. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html + + Running the tests + ~~~~~~~~~~~~~~~~~ + + Virtualenv's test suite is small and not yet at all comprehensive, but we aim + to grow it. + + The easy way to run tests (handles test dependencies automatically):: + + $ python setup.py test + + If you want to run only a selection of the tests, you'll need to run them + directly with nose instead. Create a virtualenv, and install required + packages:: + + $ pip install nose mock + + Run nosetests:: + + $ nosetests + + Or select just a single test file to run:: + + $ nosetests tests.test_virtualenv + + Other Documentation and Links ----------------------------- @@ -341,6 +419,55 @@ Description: Changes & News -------------- + Next release (1.7) schedule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Beta release mid-July 2011, final release early August. + + 1.6.4 (2011-07-21) + ~~~~~~~~~~~~~~~~~~ + + * Restored ability to run on Python 2.4, too. + + 1.6.3 (2011-07-16) + ~~~~~~~~~~~~~~~~~~ + + * Restored ability to run on Python < 2.7. + + 1.6.2 (2011-07-16) + ~~~~~~~~~~~~~~~~~~ + + * Updated embedded distribute release to 0.6.19. + + * Updated embedded pip release to 1.0.2. + + * Fixed #141 - Be smarter about finding pkg_resources when using the + non-default Python intepreter (by using the ``-p`` option). + + * Fixed #112 - Fixed path in docs. + + * Fixed #109 - Corrected doctests of a Logger method. + + * Fixed #118 - Fixed creating virtualenvs on platforms that use the + "posix_local" install scheme, such as Ubuntu with Python 2.7. + + * Add missing library to Python 3 virtualenvs (``_dummy_thread``). + + + 1.6.1 (2011-04-30) + ~~~~~~~~~~~~~~~~~~ + + * Start to use git-flow. + + * Added support for PyPy 1.5 + + * Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat. + + * Added progress meter for pip installation as well as setuptools. Thanks Ethan + Jucovy. + + * Added --never-download and --search-dir options. Thanks Ethan Jucovy. + 1.6 ~~~ diff --git a/debian/changelog b/debian/changelog index c14e862..42d5b18 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +python-virtualenv (1.6.4-0ubuntu1) oneiric; urgency=low + + * New upstream release. + - This version includes the upstream fix for posix_local layouts, + used in Debian and Ubuntu. (LP: #839588) + - debian/patches/remove_syspath0_on_reinvoke.patch (or its moral + equivalent) has been applied upstream and is no longer necessary. + + -- Barry Warsaw <barry@ubuntu.com> Thu, 08 Sep 2011 15:38:18 -0400 + python-virtualenv (1.6-2ubuntu1) oneiric; urgency=low * debian/patches/remove_syspath0_on_reinvoke.patch diff --git a/debian/patches/add_distribute.patch b/debian/patches/add_distribute.patch index 41259b4..5e091b5 100644 --- a/debian/patches/add_distribute.patch +++ b/debian/patches/add_distribute.patch @@ -5,11 +5,9 @@ Description: Add --distribute as an option in virtualenv.py Origin: vendor, http://patches.ubuntu.com/p/python-virtualenv/python-virtualenv_1.4.5-1ubuntu1.patch Author: Piotr Ożarowski <piotr@debian.org>, Carl Chenet <chaica@ohmytux.com> -Index: virtualenv-1.6/virtualenv.py -=================================================================== ---- virtualenv-1.6.orig/virtualenv.py 2011-04-07 00:01:39.000000000 +0200 -+++ virtualenv-1.6/virtualenv.py 2011-04-07 00:08:07.000000000 +0200 -@@ -678,9 +678,16 @@ +--- a/virtualenv.py ++++ b/virtualenv.py +@@ -726,9 +726,16 @@ parser.add_option( '--distribute', dest='use_distribute', @@ -27,28 +25,29 @@ Index: virtualenv-1.6/virtualenv.py + help='Use Setuptools instead of Distribute. Set environ variable ' + 'VIRTUALENV_USE_SETUPTOOLS to make it the default.') + default_search_dirs = file_search_dirs() parser.add_option( - '--prompt=', -@@ -818,7 +825,7 @@ +@@ -884,7 +891,7 @@ def create_environment(home_dir, site_packages=True, clear=False, - unzip_setuptools=False, use_distribute=False, + unzip_setuptools=False, use_distribute=True, - prompt=None): + prompt=None, search_dirs=None, never_download=False): """ Creates a new environment in ``home_dir``. -@@ -837,10 +844,10 @@ +@@ -903,11 +910,11 @@ install_distutils(home_dir) - if use_distribute or os.environ.get('VIRTUALENV_USE_DISTRIBUTE'): -- install_distribute(py_executable, unzip=unzip_setuptools) -- else: +- install_distribute(py_executable, unzip=unzip_setuptools, + if not use_distribute or os.environ.get('VIRTUALENV_USE_SETUPTOOLS'): - install_setuptools(py_executable, unzip=unzip_setuptools) -+ else: -+ install_distribute(py_executable, unzip=unzip_setuptools) - - install_pip(py_executable) ++ install_setuptools(py_executable, unzip=unzip_setuptools, + search_dirs=search_dirs, never_download=never_download) + else: +- install_setuptools(py_executable, unzip=unzip_setuptools, ++ install_distribute(py_executable, unzip=unzip_setuptools, + search_dirs=search_dirs, never_download=never_download) + install_pip(py_executable, search_dirs=search_dirs, never_download=never_download) diff --git a/debian/patches/look_for_external_files.patch b/debian/patches/look_for_external_files.patch index 3350eb5..c8cb96d 100644 --- a/debian/patches/look_for_external_files.patch +++ b/debian/patches/look_for_external_files.patch @@ -1,23 +1,20 @@ # Description: store files in /usr/share/python-virtualenv/ # Author: Carl Chenet <chaica@ohmytux.com> -Index: python-virtualenv-1.4.9/setup.py -=================================================================== ---- python-virtualenv-1.4.9.orig/setup.py -+++ python-virtualenv-1.4.9/setup.py -@@ -63,6 +63,6 @@ setup(name='virtualenv', +--- a/setup.py ++++ b/setup.py +@@ -51,7 +51,7 @@ license='MIT', py_modules=['virtualenv'], packages=['virtualenv_support'], - package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']}, + #package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']}, + test_suite='nose.collector', + tests_require=['nose', 'Mock'], **kw - ) -Index: virtualenv-1.4.9/virtualenv.py -=================================================================== ---- virtualenv-1.4.9.orig/virtualenv.py 2010-07-06 01:09:36.000000000 +0200 -+++ virtualenv-1.4.9/virtualenv.py 2010-07-06 02:20:52.000000000 +0200 -@@ -346,7 +346,8 @@ +--- a/virtualenv.py ++++ b/virtualenv.py +@@ -586,7 +586,8 @@ def file_search_dirs(): here = os.path.dirname(os.path.abspath(__file__)) dirs = ['.', here, diff --git a/debian/patches/remove_syspath0_on_reinvoke.patch b/debian/patches/remove_syspath0_on_reinvoke.patch deleted file mode 100644 index 136d8be..0000000 --- a/debian/patches/remove_syspath0_on_reinvoke.patch +++ /dev/null @@ -1,24 +0,0 @@ -Description: When reinvoked, sys.path[0] will point into /usr/share/pyshared - on Debian, which will cause the following import to pick up the wrong version - (i.e. the 2.7 version when -p python3 is used). We don't need sys.path[0], so - just remove it permanently. -Author: Barry Warsaw <barry@ubuntu.com> -Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=625784 -Forwarded: not-needed ---- a/virtualenv.py -+++ b/virtualenv.py -@@ -469,6 +469,14 @@ - project_name = 'distribute' - bootstrap_script = DISTRIBUTE_SETUP_PY - try: -+ # When reinvoked, sys.path[0] will point into /usr/share/pyshared -+ # on Debian, which will cause the following import to pick up the -+ # wrong version (i.e. the 2.7 version when -p python3 is used). -+ # We don't need sys.path[0], so just remove it permanently. See -+ # Debian bug 625785. -+ if (os.environ.get('VIRTUALENV_INTERPRETER_RUNNING', '') == 'true' -+ and sys.path[0] == '/usr/share/pyshared'): -+ del sys.path[0] - # check if the global Python has distribute installed or plain - # setuptools - import pkg_resources diff --git a/debian/patches/series b/debian/patches/series index 7994981..b98eb5e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,2 @@ look_for_external_files.patch add_distribute.patch -remove_syspath0_on_reinvoke.patch diff --git a/docs/index.txt b/docs/index.txt index 72a1af8..4fe4c32 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -23,14 +23,13 @@ of `virtual-python It was written by Ian Bicking, sponsored by the `Open Planning Project <http://openplans.org>`_ and is now maintained by a -`group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`. +`group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_. It is licensed under an `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_. -You can install it with ``easy_install virtualenv``, or from the `git -repository <https://github.com/pypa/virtualenv>`_ or from a `tarball -<https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_ -``easy_install virtualenv==dev``. +You can install it with ``easy_install virtualenv``, or the `latest +development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_ +with ``easy_install virtualenv==dev``. What It Does ------------ @@ -41,7 +40,7 @@ The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install -everything into ``/usr/lib/python2.4/site-packages`` (or whatever your +everything into ``/usr/lib/python2.7/site-packages`` (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded. @@ -56,7 +55,7 @@ Also, what if you can't install packages into the global In all these cases, ``virtualenv`` can help you. It creates an environment that has its own installation directories, that doesn't share libraries with other virtualenv environments (and optionally -doesn't use the globally installed libraries either). +doesn't access the globally installed libraries either). The basic usage is:: @@ -96,8 +95,9 @@ the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed. PyPy Support ~~~~~~~~~~~~ -Beginning with virtualenv version 1.5 there is experimental `PyPy -<http://pypy.org>`_ support. Currently only PyPy trunk is supported. +Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is +supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5. +To use PyPy 1.5, you need a version of virtualenv >= 1.6.1. Creating Your Own Bootstrap Scripts ----------------------------------- @@ -184,13 +184,15 @@ On Posix systems you can do:: $ source bin/activate -This will change your ``$PATH`` to point to the virtualenv ``bin/`` -directory. Unlike workingenv, this is all it -does; it's a convenience. But if you use the complete path like -``/path/to/env/bin/python script.py`` you do not need to activate the -environment first. You have to use ``source`` because it changes the -environment in-place. After activating an environment you can use the -function ``deactivate`` to undo the changes. +This will change your ``$PATH`` to point to the virtualenv's ``bin/`` +directory. (You have to use ``source`` because it changes your shell +environment in-place.) This is all it does; it's purely a convenience. If +you directly run a script or the python interpreter from the virtualenv's +``bin/`` directory (e.g. ``path/to/env/bin/pip`` or +``/path/to/env/bin/python script.py``) there's no need for activation. + +After activating an environment you can use the function ``deactivate`` to +undo the changes to your ``$PATH``. The ``activate`` script will also modify your shell prompt to indicate which environment is currently active. You can disable this behavior, @@ -201,7 +203,7 @@ value before running the ``activate`` script. On Windows you just do:: - > \path\to\env\bin\activate.bat + > \path\to\env\Scripts\activate.bat And use ``deactivate.bat`` to undo the changes. @@ -231,13 +233,14 @@ can setup the environment like:: activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) -This will change ``sys.path`` and even change ``sys.prefix``, but also -allow you to use an existing interpreter. Items in your environment -will show up first on ``sys.path``, before global items. However, -this cannot undo the activation of other environments, or modules that -have been imported. You shouldn't try to, for instance, activate an -environment before a web request; you should activate *one* -environment as early as possible, and not do it again in that process. +This will change ``sys.path`` and even change ``sys.prefix``, but also allow +you to use an existing interpreter. Items in your environment will show up +first on ``sys.path``, before global items. However, global items will +always be accessible -- this technique does not support the +``--no-site-packages`` flag. Also, this cannot undo the activation of other +environments, or modules that have been imported. You shouldn't try to, for +instance, activate an environment before a web request; you should activate +*one* environment as early as possible, and not do it again in that process. Making Environments Relocatable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -277,6 +280,44 @@ layout). Currently the ``--no-site-packages`` option will not be honored if you use this on an environment. +The ``--extra-search-dir`` Option +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When it creates a new environment, virtualenv installs either +setuptools or distribute, and pip. In normal operation, the latest +releases of these packages are fetched from the `Python Package Index +<http://pypi.python.org>`_ (PyPI). In some circumstances, this +behavior may not be wanted, for example if you are using virtualenv +during a deployment and do not want to depend on Internet access and +PyPI availability. + +As an alternative, you can provide your own versions of setuptools, +distribute and/or pip on the filesystem, and tell virtualenv to use +those distributions instead of downloading them from the Internet. To +use this feature, pass one or more ``--extra-search-dir`` options to +virtualenv like this:: + + $ virtualenv --extra-search-dir=/path/to/distributions ENV + +The ``/path/to/distributions`` path should point to a directory that +contains setuptools, distribute and/or pip distributions. Setuptools +distributions must be ``.egg`` files; distribute and pip distributions +should be `.tar.gz` source distributions. + +Virtualenv will still download these packages if no satisfactory local +distributions are found. + +If you are really concerned about virtualenv fetching these packages +from the Internet and want to ensure that it never will, you can also +provide an option ``--never-download`` like so:: + + $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV + +If this option is provided, virtualenv will never try to download +setuptools/distribute or pip. Instead, it will exit with status code 1 +if it fails to find local distributions for any of these required +packages. + Compare & Contrast with Alternatives ------------------------------------ @@ -315,6 +356,43 @@ There are several alternatives that create isolated environments: I *strongly* recommend anyone doing application development or deployment use one of these tools. +Contributing +------------ + +Refer to the `contributing to pip`_ documentation - it applies equally to +virtualenv. + +Virtualenv's release schedule is tied to pip's -- each time there's a new pip +release, there will be a new virtualenv release that bundles the new version of +pip. + +.. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html + +Running the tests +~~~~~~~~~~~~~~~~~ + +Virtualenv's test suite is small and not yet at all comprehensive, but we aim +to grow it. + +The easy way to run tests (handles test dependencies automatically):: + + $ python setup.py test + +If you want to run only a selection of the tests, you'll need to run them +directly with nose instead. Create a virtualenv, and install required +packages:: + + $ pip install nose mock + +Run nosetests:: + + $ nosetests + +Or select just a single test file to run:: + + $ nosetests tests.test_virtualenv + + Other Documentation and Links ----------------------------- diff --git a/docs/news.txt b/docs/news.txt index 081841c..4e20e0f 100644 --- a/docs/news.txt +++ b/docs/news.txt @@ -1,6 +1,55 @@ Changes & News -------------- +Next release (1.7) schedule +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Beta release mid-July 2011, final release early August. + +1.6.4 (2011-07-21) +~~~~~~~~~~~~~~~~~~ + +* Restored ability to run on Python 2.4, too. + +1.6.3 (2011-07-16) +~~~~~~~~~~~~~~~~~~ + +* Restored ability to run on Python < 2.7. + +1.6.2 (2011-07-16) +~~~~~~~~~~~~~~~~~~ + +* Updated embedded distribute release to 0.6.19. + +* Updated embedded pip release to 1.0.2. + +* Fixed #141 - Be smarter about finding pkg_resources when using the + non-default Python intepreter (by using the ``-p`` option). + +* Fixed #112 - Fixed path in docs. + +* Fixed #109 - Corrected doctests of a Logger method. + +* Fixed #118 - Fixed creating virtualenvs on platforms that use the + "posix_local" install scheme, such as Ubuntu with Python 2.7. + +* Add missing library to Python 3 virtualenvs (``_dummy_thread``). + + +1.6.1 (2011-04-30) +~~~~~~~~~~~~~~~~~~ + +* Start to use git-flow. + +* Added support for PyPy 1.5 + +* Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat. + +* Added progress meter for pip installation as well as setuptools. Thanks Ethan + Jucovy. + +* Added --never-download and --search-dir options. Thanks Ethan Jucovy. + 1.6 ~~~ @@ -26,7 +26,7 @@ f.close() setup(name='virtualenv', # If you change the version here, change it in virtualenv.py and # docs/conf.py as well - version="1.6", + version="1.6.4", description="Virtual Python Environment builder", long_description=long_description, classifiers=[ @@ -52,5 +52,7 @@ setup(name='virtualenv', py_modules=['virtualenv'], packages=['virtualenv_support'], package_data={'virtualenv_support': ['*-py%s.egg' % sys.version[:3], '*.tar.gz']}, + test_suite='nose.collector', + tests_require=['nose', 'Mock'], **kw ) diff --git a/virtualenv.egg-info/PKG-INFO b/virtualenv.egg-info/PKG-INFO index 78223b1..601625c 100644 --- a/virtualenv.egg-info/PKG-INFO +++ b/virtualenv.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: virtualenv -Version: 1.6 +Version: 1.6.4 Summary: Virtual Python Environment builder Home-page: http://www.virtualenv.org Author: Jannis Leidel, Carl Meyer and Brian Rosner @@ -18,14 +18,13 @@ Description: It was written by Ian Bicking, sponsored by the `Open Planning Project <http://openplans.org>`_ and is now maintained by a - `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`. + `group of developers <https://github.com/pypa/virtualenv/raw/master/AUTHORS.txt>`_. It is licensed under an `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_. - You can install it with ``easy_install virtualenv``, or from the `git - repository <https://github.com/pypa/virtualenv>`_ or from a `tarball - <https://github.com/pypa/virtualenv/tarball/master#egg=virtualenv-dev>`_ - ``easy_install virtualenv==dev``. + You can install it with ``easy_install virtualenv``, or the `latest + development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_ + with ``easy_install virtualenv==dev``. What It Does ------------ @@ -36,7 +35,7 @@ Description: and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install - everything into ``/usr/lib/python2.4/site-packages`` (or whatever your + everything into ``/usr/lib/python2.7/site-packages`` (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded. @@ -51,7 +50,7 @@ Description: In all these cases, ``virtualenv`` can help you. It creates an environment that has its own installation directories, that doesn't share libraries with other virtualenv environments (and optionally - doesn't use the globally installed libraries either). + doesn't access the globally installed libraries either). The basic usage is:: @@ -91,8 +90,9 @@ Description: PyPy Support ~~~~~~~~~~~~ - Beginning with virtualenv version 1.5 there is experimental `PyPy - <http://pypy.org>`_ support. Currently only PyPy trunk is supported. + Beginning with virtualenv version 1.5 `PyPy <http://pypy.org>`_ is + supported. To use PyPy 1.4 or 1.4.1, you need a version of virtualenv >= 1.5. + To use PyPy 1.5, you need a version of virtualenv >= 1.6.1. Creating Your Own Bootstrap Scripts ----------------------------------- @@ -179,13 +179,15 @@ Description: $ source bin/activate - This will change your ``$PATH`` to point to the virtualenv ``bin/`` - directory. Unlike workingenv, this is all it - does; it's a convenience. But if you use the complete path like - ``/path/to/env/bin/python script.py`` you do not need to activate the - environment first. You have to use ``source`` because it changes the - environment in-place. After activating an environment you can use the - function ``deactivate`` to undo the changes. + This will change your ``$PATH`` to point to the virtualenv's ``bin/`` + directory. (You have to use ``source`` because it changes your shell + environment in-place.) This is all it does; it's purely a convenience. If + you directly run a script or the python interpreter from the virtualenv's + ``bin/`` directory (e.g. ``path/to/env/bin/pip`` or + ``/path/to/env/bin/python script.py``) there's no need for activation. + + After activating an environment you can use the function ``deactivate`` to + undo the changes to your ``$PATH``. The ``activate`` script will also modify your shell prompt to indicate which environment is currently active. You can disable this behavior, @@ -196,7 +198,7 @@ Description: On Windows you just do:: - > \path\to\env\bin\activate.bat + > \path\to\env\Scripts\activate.bat And use ``deactivate.bat`` to undo the changes. @@ -226,13 +228,14 @@ Description: activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) - This will change ``sys.path`` and even change ``sys.prefix``, but also - allow you to use an existing interpreter. Items in your environment - will show up first on ``sys.path``, before global items. However, - this cannot undo the activation of other environments, or modules that - have been imported. You shouldn't try to, for instance, activate an - environment before a web request; you should activate *one* - environment as early as possible, and not do it again in that process. + This will change ``sys.path`` and even change ``sys.prefix``, but also allow + you to use an existing interpreter. Items in your environment will show up + first on ``sys.path``, before global items. However, global items will + always be accessible -- this technique does not support the + ``--no-site-packages`` flag. Also, this cannot undo the activation of other + environments, or modules that have been imported. You shouldn't try to, for + instance, activate an environment before a web request; you should activate + *one* environment as early as possible, and not do it again in that process. Making Environments Relocatable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -272,6 +275,44 @@ Description: Currently the ``--no-site-packages`` option will not be honored if you use this on an environment. + The ``--extra-search-dir`` Option + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + When it creates a new environment, virtualenv installs either + setuptools or distribute, and pip. In normal operation, the latest + releases of these packages are fetched from the `Python Package Index + <http://pypi.python.org>`_ (PyPI). In some circumstances, this + behavior may not be wanted, for example if you are using virtualenv + during a deployment and do not want to depend on Internet access and + PyPI availability. + + As an alternative, you can provide your own versions of setuptools, + distribute and/or pip on the filesystem, and tell virtualenv to use + those distributions instead of downloading them from the Internet. To + use this feature, pass one or more ``--extra-search-dir`` options to + virtualenv like this:: + + $ virtualenv --extra-search-dir=/path/to/distributions ENV + + The ``/path/to/distributions`` path should point to a directory that + contains setuptools, distribute and/or pip distributions. Setuptools + distributions must be ``.egg`` files; distribute and pip distributions + should be `.tar.gz` source distributions. + + Virtualenv will still download these packages if no satisfactory local + distributions are found. + + If you are really concerned about virtualenv fetching these packages + from the Internet and want to ensure that it never will, you can also + provide an option ``--never-download`` like so:: + + $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV + + If this option is provided, virtualenv will never try to download + setuptools/distribute or pip. Instead, it will exit with status code 1 + if it fails to find local distributions for any of these required + packages. + Compare & Contrast with Alternatives ------------------------------------ @@ -310,6 +351,43 @@ Description: I *strongly* recommend anyone doing application development or deployment use one of these tools. + Contributing + ------------ + + Refer to the `contributing to pip`_ documentation - it applies equally to + virtualenv. + + Virtualenv's release schedule is tied to pip's -- each time there's a new pip + release, there will be a new virtualenv release that bundles the new version of + pip. + + .. _contributing to pip: http://www.pip-installer.org/en/latest/how-to-contribute.html + + Running the tests + ~~~~~~~~~~~~~~~~~ + + Virtualenv's test suite is small and not yet at all comprehensive, but we aim + to grow it. + + The easy way to run tests (handles test dependencies automatically):: + + $ python setup.py test + + If you want to run only a selection of the tests, you'll need to run them + directly with nose instead. Create a virtualenv, and install required + packages:: + + $ pip install nose mock + + Run nosetests:: + + $ nosetests + + Or select just a single test file to run:: + + $ nosetests tests.test_virtualenv + + Other Documentation and Links ----------------------------- @@ -341,6 +419,55 @@ Description: Changes & News -------------- + Next release (1.7) schedule + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Beta release mid-July 2011, final release early August. + + 1.6.4 (2011-07-21) + ~~~~~~~~~~~~~~~~~~ + + * Restored ability to run on Python 2.4, too. + + 1.6.3 (2011-07-16) + ~~~~~~~~~~~~~~~~~~ + + * Restored ability to run on Python < 2.7. + + 1.6.2 (2011-07-16) + ~~~~~~~~~~~~~~~~~~ + + * Updated embedded distribute release to 0.6.19. + + * Updated embedded pip release to 1.0.2. + + * Fixed #141 - Be smarter about finding pkg_resources when using the + non-default Python intepreter (by using the ``-p`` option). + + * Fixed #112 - Fixed path in docs. + + * Fixed #109 - Corrected doctests of a Logger method. + + * Fixed #118 - Fixed creating virtualenvs on platforms that use the + "posix_local" install scheme, such as Ubuntu with Python 2.7. + + * Add missing library to Python 3 virtualenvs (``_dummy_thread``). + + + 1.6.1 (2011-04-30) + ~~~~~~~~~~~~~~~~~~ + + * Start to use git-flow. + + * Added support for PyPy 1.5 + + * Fixed #121 -- added sanity-checking of the -p argument. Thanks Paul Nasrat. + + * Added progress meter for pip installation as well as setuptools. Thanks Ethan + Jucovy. + + * Added --never-download and --search-dir options. Thanks Ethan Jucovy. + 1.6 ~~~ diff --git a/virtualenv.egg-info/SOURCES.txt b/virtualenv.egg-info/SOURCES.txt index 064e102..3a15c55 100644 --- a/virtualenv.egg-info/SOURCES.txt +++ b/virtualenv.egg-info/SOURCES.txt @@ -13,8 +13,8 @@ virtualenv.egg-info/entry_points.txt virtualenv.egg-info/not-zip-safe virtualenv.egg-info/top_level.txt virtualenv_support/__init__.py -virtualenv_support/distribute-0.6.15.tar.gz -virtualenv_support/pip-1.0.tar.gz +virtualenv_support/distribute-0.6.19.tar.gz +virtualenv_support/pip-1.0.2.tar.gz virtualenv_support/setuptools-0.6c11-py2.4.egg virtualenv_support/setuptools-0.6c11-py2.5.egg virtualenv_support/setuptools-0.6c11-py2.6.egg diff --git a/virtualenv.py b/virtualenv.py index f49f3a3..c173dd4 100755..100644 --- a/virtualenv.py +++ b/virtualenv.py @@ -1,9 +1,10 @@ +#!/usr/bin/env python """Create a "virtual" Python installation """ # If you change the version here, change it in setup.py # and docs/conf.py as well. -virtualenv_version = "1.6" +virtualenv_version = "1.6.4" import base64 import sys @@ -40,6 +41,7 @@ py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1]) is_jython = sys.platform.startswith('java') is_pypy = hasattr(sys, 'pypy_version_info') +is_win = (sys.platform == 'win32') abiflags = getattr(sys, 'abiflags', '') if is_pypy: @@ -115,7 +117,7 @@ elif majver == 3: #"dis", #"doctest", #"dummy_threading", - #"_dummy_thread", + "_dummy_thread", #"email", #"filecmp", #"fileinput", @@ -337,7 +339,7 @@ class Logger(object): def level_matches(self, level, consumer_level): """ - >>> l = Logger() + >>> l = Logger([]) >>> l.level_matches(3, 4) False >>> l.level_matches(3, 2) @@ -355,7 +357,7 @@ class Logger(object): start, stop = level.start, level.stop if start is not None and start > consumer_level: return False - if stop is not None or stop <= consumer_level: + if stop is not None and stop <= consumer_level: return False return True else: @@ -457,7 +459,12 @@ def _find_file(filename, dirs): return join(dir, filename) return filename -def _install_req(py_executable, unzip=False, distribute=False): +def _install_req(py_executable, unzip=False, distribute=False, + search_dirs=None, never_download=False): + + if search_dirs is None: + search_dirs = file_search_dirs() + if not distribute: setup_fn = 'setuptools-0.6c11-py%s.egg' % sys.version[:3] project_name = 'setuptools' @@ -465,22 +472,34 @@ def _install_req(py_executable, unzip=False, distribute=False): source = None else: setup_fn = None - source = 'distribute-0.6.15.tar.gz' + source = 'distribute-0.6.19.tar.gz' project_name = 'distribute' bootstrap_script = DISTRIBUTE_SETUP_PY - try: - # check if the global Python has distribute installed or plain - # setuptools - import pkg_resources - if not hasattr(pkg_resources, '_distribute'): - location = os.path.dirname(pkg_resources.__file__) - logger.notify("A globally installed setuptools was found (in %s)" % location) - logger.notify("Use the --no-site-packages option to use distribute in " - "the virtualenv.") - except ImportError: - pass - search_dirs = file_search_dirs() + # If we are running under -p, we need to remove the current + # directory from sys.path temporarily here, so that we + # definitely get the pkg_resources from the site directory of + # the interpreter we are running under, not the one + # virtualenv.py is installed under (which might lead to py2/py3 + # incompatibility issues) + _prev_sys_path = sys.path + if os.environ.get('VIRTUALENV_INTERPRETER_RUNNING'): + sys.path = sys.path[1:] + + try: + try: + # check if the global Python has distribute installed or plain + # setuptools + import pkg_resources + if not hasattr(pkg_resources, '_distribute'): + location = os.path.dirname(pkg_resources.__file__) + logger.notify("A globally installed setuptools was found (in %s)" % location) + logger.notify("Use the --no-site-packages option to use distribute in " + "the virtualenv.") + except ImportError: + pass + finally: + sys.path = _prev_sys_path if setup_fn is not None: setup_fn = _find_file(setup_fn, search_dirs) @@ -515,12 +534,23 @@ def _install_req(py_executable, unzip=False, distribute=False): else: # the source is found, let's chdir if source is not None and os.path.exists(source): + logger.info('Using existing %s egg: %s' % (project_name, source)) os.chdir(os.path.dirname(source)) # in this case, we want to be sure that PYTHONPATH is unset (not # just empty, really unset), else CPython tries to import the # site.py that it's in virtualenv_support remove_from_env.append('PYTHONPATH') else: + if never_download: + logger.fatal("Can't find any local distributions of %s to install " + "and --never-download is set. Either re-run virtualenv " + "without the --never-download option, or place a %s " + "distribution (%s) in one of these " + "locations: %r" % (project_name, project_name, + setup_fn or source, + search_dirs)) + sys.exit(1) + logger.info('No %s egg found; downloading' % project_name) cmd.extend(['--always-copy', '-U', project_name]) logger.start_progress('Installing %s...' % project_name) @@ -567,16 +597,23 @@ def file_search_dirs(): dirs.append(os.path.join(os.path.dirname(virtualenv.__file__), 'virtualenv_support')) return [d for d in dirs if os.path.isdir(d)] -def install_setuptools(py_executable, unzip=False): - _install_req(py_executable, unzip) +def install_setuptools(py_executable, unzip=False, + search_dirs=None, never_download=False): + _install_req(py_executable, unzip, + search_dirs=search_dirs, never_download=never_download) -def install_distribute(py_executable, unzip=False): - _install_req(py_executable, unzip, distribute=True) +def install_distribute(py_executable, unzip=False, + search_dirs=None, never_download=False): + _install_req(py_executable, unzip, distribute=True, + search_dirs=search_dirs, never_download=never_download) _pip_re = re.compile(r'^pip-.*(zip|tar.gz|tar.bz2|tgz|tbz)$', re.I) -def install_pip(py_executable): +def install_pip(py_executable, search_dirs=None, never_download=False): + if search_dirs is None: + search_dirs = file_search_dirs() + filenames = [] - for dir in file_search_dirs(): + for dir in search_dirs: filenames.extend([join(dir, fn) for fn in os.listdir(dir) if _pip_re.search(fn)]) filenames = [(os.path.basename(filename).lower(), i, filename) for i, filename in enumerate(filenames)] @@ -591,9 +628,18 @@ def install_pip(py_executable): easy_install_script = 'easy_install-script.py' cmd = [py_executable, join(os.path.dirname(py_executable), easy_install_script), filename] if filename == 'pip': + if never_download: + logger.fatal("Can't find any local distributions of pip to install " + "and --never-download is set. Either re-run virtualenv " + "without the --never-download option, or place a pip " + "source distribution (zip/tar.gz/tar.bz2) in one of these " + "locations: %r" % search_dirs) + sys.exit(1) logger.info('Installing pip from network...') else: - logger.info('Installing %s' % os.path.basename(filename)) + logger.info('Installing existing %s distribution: %s' % ( + os.path.basename(filename), filename)) + logger.start_progress('Installing pip...') logger.indent += 2 def _filter_setup(line): return filter_ez_setup(line, 'pip') @@ -602,6 +648,7 @@ def install_pip(py_executable): filter_stdout=_filter_setup) finally: logger.indent -= 2 + logger.end_progress() def filter_ez_setup(line, project_name='setuptools'): if not line.strip(): @@ -682,6 +729,22 @@ def main(): help='Use Distribute instead of Setuptools. Set environ variable ' 'VIRTUALENV_USE_DISTRIBUTE to make it the default ') + default_search_dirs = file_search_dirs() + parser.add_option( + '--extra-search-dir', + dest="search_dirs", + action="append", + default=default_search_dirs, + help="Directory to look for setuptools/distribute/pip distributions in. " + "You can add any number of additional --extra-search-dir paths.") + + parser.add_option( + '--never-download', + dest="never_download", + action="store_true", + help="Never download anything from the network. Instead, virtualenv will fail " + "if local distributions of setuptools/distribute/pip are not present.") + parser.add_option( '--prompt=', dest='prompt', @@ -742,7 +805,9 @@ def main(): create_environment(home_dir, site_packages=not options.no_site_packages, clear=options.clear, unzip_setuptools=options.unzip_setuptools, use_distribute=options.use_distribute or majver > 2, - prompt=options.prompt) + prompt=options.prompt, + search_dirs=options.search_dirs, + never_download=options.never_download) if 'after_install' in globals(): after_install(options, home_dir) @@ -819,7 +884,7 @@ def call_subprocess(cmd, show_stdout=True, def create_environment(home_dir, site_packages=True, clear=False, unzip_setuptools=False, use_distribute=False, - prompt=None): + prompt=None, search_dirs=None, never_download=False): """ Creates a new environment in ``home_dir``. @@ -838,11 +903,13 @@ def create_environment(home_dir, site_packages=True, clear=False, install_distutils(home_dir) if use_distribute or os.environ.get('VIRTUALENV_USE_DISTRIBUTE'): - install_distribute(py_executable, unzip=unzip_setuptools) + install_distribute(py_executable, unzip=unzip_setuptools, + search_dirs=search_dirs, never_download=never_download) else: - install_setuptools(py_executable, unzip=unzip_setuptools) + install_setuptools(py_executable, unzip=unzip_setuptools, + search_dirs=search_dirs, never_download=never_download) - install_pip(py_executable) + install_pip(py_executable, search_dirs=search_dirs, never_download=never_download) install_activate(home_dir, bin_dir, prompt) @@ -945,6 +1012,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): prefix = sys.prefix mkdir(lib_dir) fix_lib64(lib_dir) + fix_local_scheme(home_dir) stdlib_dirs = [os.path.dirname(os.__file__)] if sys.platform == 'win32': stdlib_dirs.append(join(os.path.dirname(stdlib_dirs[0]), 'DLLs')) @@ -987,7 +1055,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): logger.info('Deleting %s' % site_packages_filename) os.unlink(site_packages_filename) - if is_pypy: + if is_pypy or is_win: stdinc_dir = join(prefix, 'include') else: stdinc_dir = join(prefix, 'include', py_version + abiflags) @@ -1200,6 +1268,21 @@ def install_distutils(home_dir): writefile(os.path.join(distutils_path, '__init__.py'), DISTUTILS_INIT) writefile(os.path.join(distutils_path, 'distutils.cfg'), DISTUTILS_CFG, overwrite=False) +def fix_local_scheme(home_dir): + """ + Platforms that use the "posix_local" install scheme (like Ubuntu with + Python 2.7) need to be given an additional "local" location, sigh. + """ + try: + import sysconfig + except ImportError: + pass + else: + if sysconfig._get_default_scheme() == 'posix_local': + local_path = os.path.join(home_dir, 'local') + if not os.path.exists(local_path): + os.symlink(os.path.abspath(home_dir), local_path) + def fix_lib64(lib_dir): """ Some platforms (particularly Gentoo on x64) put things in lib64/pythonX.Y @@ -1228,9 +1311,16 @@ def resolve_interpreter(exe): break if not os.path.exists(exe): logger.fatal('The executable %s (from --python=%s) does not exist' % (exe, exe)) - sys.exit(3) + raise SystemExit(3) + if not is_executable(exe): + logger.fatal('The executable %s (from --python=%s) is not executable' % (exe, exe)) + raise SystemExit(3) return exe +def is_executable(exe): + """Checks a file is executable""" + return os.access(exe, os.X_OK) + ############################################################ ## Relocating the environment: @@ -1560,37 +1650,35 @@ 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 -AIOc2an2AKxRCP4P1A2QJQ== +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 """) - - ##file ez_setup.py EZ_SETUP_PY = convert(""" eJzNWmtv49a1/a5fwSgwJGE0NN8PDzRFmkyBAYrcIo8CFx5XPk+LHYpUSWoctch/v+ucQ1KkZDrt @@ -1662,93 +1750,89 @@ dX85nKW3umfYbtu8713Sylhb2i3v2qaoc8C7S2P3pME8uIGedi1IxXbL+adi+P2fT8Xy/m+/PrxZ BDaonX65d/fwEjNqlDjLVIvM9X+XVxF7 """) - - ##file distribute_setup.py DISTRIBUTE_SETUP_PY = convert(""" -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 """) - - ##file activate.sh ACTIVATE_SH = convert(""" eJytVU1v4jAQPW9+xTT0ANVS1GsrDlRFAqmFqmG72m0rY5IJsRRslDiktNr/vuMQ8tFQpNU2B4I9 @@ -1767,8 +1851,6 @@ WAo3/36oSOTfgjwEEQKt15e9Xpqm52+oaXxszmnE9GLl65RH2OMmS6+u5acKxDmlPgj2eT5/gQOX LLK0j1y0Uwbmn438VZkVpqlfNKa/YET/53j+99G8H8tUhr9ZSXs2 """) - - ##file activate.fish ACTIVATE_FISH = convert(""" eJydVm1v4jgQ/s6vmA1wBxUE7X2stJVYlVWR2lK13d6d9laRk0yIr8HmbIe0++tvnIQQB9pbXT5A @@ -1792,8 +1874,6 @@ mWmZmIIpnDFrbXakvKWeZhLwhvrbUH8fahhqD0YUcBDJjEBMQwiznE4y5QbHrbhHBOnUAYzb2tVN jJa65e+eE2Ya30E2GurxUP8ssA6e/wOnvo3V78d3vTcvMB3n7l3iX1JXWqk= """) - - ##file activate.csh ACTIVATE_CSH = convert(""" eJx9U11vmzAUffevOCVRu+UB9pws29Kl0iq1aVWllaZlcgxciiViItsQdb9+xiQp+dh4QOB7Pu49 @@ -1807,8 +1887,6 @@ lXiVyXa9Sy3JdClEyK1dD6Nos9mEf8iKlOpmqSNTZnYjNEWiUYn2pKNB3ttcLJ3HmYYXy6Un76f7 r8rRsC1TpTJj7f19m5sUf/V3Ir+x/yjtLu8KjLX/CmN/AcVGUUo= """) - - ##file activate.bat ACTIVATE_BAT = convert(""" eJyFUkEKgzAQvAfyhz0YaL9QEWpRqlSjWGspFPZQTevFHOr/adQaU1GaUzI7Mzu7ZF89XhKkEJS8 @@ -1817,8 +1895,6 @@ sX9mtzxIeJDE/mg4OGp47qoLo3NHX2jsMB3AiDht5hryAUOEifoTdCXbSh7V0My2NMq/Xbh5MEjU ZT63gpgNT9lKOJ/CtHsvT99re3pX303kydn4HeyOeAg5cjf2EW1D6HOPkg9NGKhu """) - - ##file deactivate.bat DEACTIVATE_BAT = convert(""" eJxzSE3OyFfIT0vj4spMU0hJTcvMS01RiPf3cYkP8wwKCXX0iQ8I8vcNCFHQ4FIAguLUEgWIgK0q @@ -1826,8 +1902,6 @@ FlWqXJpcICVYpGzx2BAZ4uHv5+Hv6wq1BWINXBTdKriEKkI1DhW2QAfhttcxxANiFZCBbglQSJUL i2dASrm4rFz9XLgAwJNbyQ== """) - - ##file distutils-init.py DISTUTILS_INIT = convert(""" eJytV92L4zYQf/dfMU0ottuse7RvC6FQrg8Lxz2Ugz4si9HacqKuIxlJ2ST313dG8odkO9d7aGBB @@ -1854,8 +1928,6 @@ gtEMcW1xKr/he4/6IQ6FUXP+0gkioHY5iwC9Eyx3HKO7af0zPPe+XyLn7fAY78k4aiR387bCr5XT 5C4rFgwLGfMvJuAMew== """) - - ##file distutils.cfg DISTUTILS_CFG = convert(""" eJxNj00KwkAMhfc9xYNuxe4Ft57AjYiUtDO1wXSmNJnK3N5pdSEEAu8nH6lxHVlRhtDHMPATA4uH @@ -1863,8 +1935,6 @@ xJ4EFmGbvfJiicSHFRzUSISMY6hq3GLCRLnIvSTnEefN0FIjw5tF0Hkk9Q5dRunBsVoyFi24aaLg 9FDOlL0FPGluf4QjcInLlxd6f6rqkgPu/5nHLg0cXCscXoozRrP51DRT3j9QNl99AP53T2Q= """) - - ##file activate_this.py ACTIVATE_THIS = convert(""" eJyNUlGL2zAMfvevEBlHEujSsXsL9GGDvW1jD3sZpQQ3Ua7aJXawnbT595Ocpe0dO5ghseVP+vRJ @@ -1878,8 +1948,6 @@ xu/Lx8M/UvCLTxW7VULHxB1PRRbrYfvWNY5S8it008jOjcleaMqVBDnUXcWULV2YK9JEQ92OfC96 3vMWehjQNJmE5VePlZbL61nzX3S93ZcfDqznnkb9AZ3GWJU= """) - - if __name__ == '__main__': main() diff --git a/virtualenv_support/distribute-0.6.15.tar.gz b/virtualenv_support/distribute-0.6.15.tar.gz Binary files differdeleted file mode 100644 index 74c1207..0000000 --- a/virtualenv_support/distribute-0.6.15.tar.gz +++ /dev/null diff --git a/virtualenv_support/distribute-0.6.19.tar.gz b/virtualenv_support/distribute-0.6.19.tar.gz Binary files differnew file mode 100644 index 0000000..647aa11 --- /dev/null +++ b/virtualenv_support/distribute-0.6.19.tar.gz diff --git a/virtualenv_support/pip-1.0.2.tar.gz b/virtualenv_support/pip-1.0.2.tar.gz Binary files differnew file mode 100644 index 0000000..94d7b66 --- /dev/null +++ b/virtualenv_support/pip-1.0.2.tar.gz diff --git a/virtualenv_support/pip-1.0.tar.gz b/virtualenv_support/pip-1.0.tar.gz Binary files differdeleted file mode 100644 index 81ab41d..0000000 --- a/virtualenv_support/pip-1.0.tar.gz +++ /dev/null |
