bug 661908 - update virtualenv to the latest release. r=jhammel
authorTed Mielczarek <ted.mielczarek@gmail.com>
Wed, 25 Apr 2012 13:37:16 -0400
changeset 96777 6f6115262c4bd3f179f3edae91feacf660fdcf30
parent 96776 a0c0d4a72648e6031825ae8d1023e57b5cdec827
child 96778 94e9ab59900efb7d527b1a19f04b86025887afa2
push id1439
push userlsblakk@mozilla.com
push dateMon, 04 Jun 2012 20:19:22 +0000
treeherdermozilla-aurora@ea74834dccd3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjhammel
bugs661908
milestone15.0a1
bug 661908 - update virtualenv to the latest release. r=jhammel
other-licenses/virtualenv/AUTHORS.txt
other-licenses/virtualenv/LICENSE.txt
other-licenses/virtualenv/MANIFEST.in
other-licenses/virtualenv/PKG-INFO
other-licenses/virtualenv/docs/_build/_sources/index.txt
other-licenses/virtualenv/docs/_build/_sources/license.txt
other-licenses/virtualenv/docs/_build/_sources/news.txt
other-licenses/virtualenv/docs/index.txt
other-licenses/virtualenv/docs/license.txt
other-licenses/virtualenv/docs/news.txt
other-licenses/virtualenv/setup.py
other-licenses/virtualenv/virtualenv.egg-info/PKG-INFO
other-licenses/virtualenv/virtualenv.egg-info/SOURCES.txt
other-licenses/virtualenv/virtualenv.egg-info/dependency_links.txt
other-licenses/virtualenv/virtualenv.egg-info/entry_points.txt
other-licenses/virtualenv/virtualenv.egg-info/not-zip-safe
other-licenses/virtualenv/virtualenv.egg-info/top_level.txt
other-licenses/virtualenv/virtualenv.py
other-licenses/virtualenv/virtualenv_embedded/activate.bat
other-licenses/virtualenv/virtualenv_embedded/activate.csh
other-licenses/virtualenv/virtualenv_embedded/activate.fish
other-licenses/virtualenv/virtualenv_embedded/activate.ps1
other-licenses/virtualenv/virtualenv_embedded/activate.sh
other-licenses/virtualenv/virtualenv_embedded/activate_this.py
other-licenses/virtualenv/virtualenv_embedded/deactivate.bat
other-licenses/virtualenv/virtualenv_embedded/distribute_setup.py
other-licenses/virtualenv/virtualenv_embedded/distutils-init.py
other-licenses/virtualenv/virtualenv_embedded/distutils.cfg
other-licenses/virtualenv/virtualenv_embedded/ez_setup.py
other-licenses/virtualenv/virtualenv_embedded/site.py
other-licenses/virtualenv/virtualenv_support/distribute-0.6.24.tar.gz
other-licenses/virtualenv/virtualenv_support/distribute-0.6.8.tar.gz
other-licenses/virtualenv/virtualenv_support/pip-0.7.1.tar.gz
other-licenses/virtualenv/virtualenv_support/pip-1.1.tar.gz
other-licenses/virtualenv/virtualenv_support/setuptools-0.6c11-py2.7.egg
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/AUTHORS.txt
@@ -0,0 +1,44 @@
+Author
+------
+
+Ian Bicking
+
+Maintainers
+-----------
+
+Brian Rosner
+Carl Meyer
+Jannis Leidel
+
+Contributors
+------------
+
+Alex Grönholm
+Anatoly Techtonik
+Antonio Cuni
+Armin Ronacher
+Cap Petschulat
+CBWhiz
+Chris McDonough
+Christian Stefanescu
+Christopher Nilsson
+Cliff Xuan
+Curt Micol
+Doug Hellmann
+Doug Napoleone
+Douglas Creager
+Ethan Jucovy
+Gunnlaugur Thor Briem
+Greg Haskins
+Jason R. Coombs
+Jeff Hammel
+Jonathan Griffin
+Jorge Vargas
+Josh Bronson
+Kumar McMillan
+Lars Francke
+Philip Jenvey
+Ronny Pfannschmidt
+Stefano Rivera
+Tarek Ziadé
+Vinay Sajip
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/LICENSE.txt
@@ -0,0 +1,22 @@
+Copyright (c) 2007 Ian Bicking and Contributors
+Copyright (c) 2009 Ian Bicking, The Open Planning Project
+Copyright (c) 2011-2012 The virtualenv developers
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- a/other-licenses/virtualenv/MANIFEST.in
+++ b/other-licenses/virtualenv/MANIFEST.in
@@ -1,7 +1,9 @@
 recursive-include docs *.txt
 recursive-include scripts *
 recursive-include virtualenv_support *.egg *.tar.gz
-recursive-exclude virtualenv_support *.py
+recursive-include virtualenv_embedded *
 recursive-exclude docs/_templates *.*
 include virtualenv_support/__init__.py
 include *.py
+include AUTHORS.txt
+include LICENSE.txt
\ No newline at end of file
--- a/other-licenses/virtualenv/PKG-INFO
+++ b/other-licenses/virtualenv/PKG-INFO
@@ -1,93 +1,154 @@
 Metadata-Version: 1.0
 Name: virtualenv
-Version: 1.4.8
+Version: 1.7.1.2
 Summary: Virtual Python Environment builder
-Home-page: http://virtualenv.openplans.org
-Author: Ian Bicking
-Author-email: ianb@colorstudy.com
+Home-page: http://www.virtualenv.org
+Author: Jannis Leidel, Carl Meyer and Brian Rosner
+Author-email: python-virtualenv@groups.google.com
 License: MIT
 Description: 
         
-        Status and License
-        ------------------
-        
-        ``virtualenv`` is a successor to `workingenv
-        <http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
-        of `virtual-python
-        <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_.
+        Installation
+        ------------
         
-        It is written by Ian Bicking, and sponsored by the `Open Planning
-        Project <http://openplans.org>`_.  It is licensed under an
-        `MIT-style permissive license <license.html>`_.
+        You can install virtualenv with ``pip install virtualenv``, or the `latest
+        development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+        with ``pip install virtualenv==dev``.
         
-        You can install it with ``easy_install virtualenv``, or from the `hg
-        repository <http://bitbucket.org/ianb/virtualenv>`_ or from a `tarball
-        <http://bitbucket.org/ianb/virtualenv/get/tip.gz#egg=virtualenv-tip>`_
-        ``easy_install virtualenv==tip``.
+        You can also use ``easy_install``, or if you have no Python package manager
+        available at all, you can just grab the single file `virtualenv.py`_ and run
+        it with ``python virtualenv.py``.
+        
+        .. _virtualenv.py: https://raw.github.com/pypa/virtualenv/master/virtualenv.py
         
         What It Does
         ------------
         
         ``virtualenv`` is a tool to create isolated Python environments.
         
         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.
         
         Or more generally, what if you want to install an application *and
         leave it be*?  If an application works, any change in its libraries or
         the versions of those libraries can break the application.
         
         Also, what if you can't install packages into the global
         ``site-packages`` directory?  For instance, on a shared host.
         
         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::
         
-        $ python virtualenv.py ENV
+            $ python virtualenv.py ENV
         
         If you install it you can also just do ``virtualenv ENV``.
         
-        This creates ``ENV/lib/python2.4/site-packages`` (or
-        ``ENV/lib/python2.5/site-packages`` on Python 2.5, etc), where any
-        libraries you install will go.  It also creates ``ENV/bin/python``,
-        which is a Python interpreter that uses this environment.  Anytime you
-        use that interpreter (including when a script has
-        ``#!/path/to/ENV/bin/python`` in it) the libraries in that environment
-        will be used.  (**Note for Windows:** scripts and executables on
-        Windows go in ``ENV\Scripts\``; everywhere you see ``bin/`` replace it
-        with ``Scripts\``)
+        This creates ``ENV/lib/pythonX.X/site-packages``, where any libraries you
+        install will go.  It also creates ``ENV/bin/python``, which is a Python
+        interpreter that uses this environment.  Anytime you use that interpreter
+        (including when a script has ``#!/path/to/ENV/bin/python`` in it) the libraries
+        in that environment will be used.
         
-        It also installs `Setuptools
-        <http://peak.telecommunity.com/DevCenter/setuptools>`_ for you, and if
-        you use ``ENV/bin/easy_install`` the packages will be installed into
+        It also installs either `Setuptools
+        <http://peak.telecommunity.com/DevCenter/setuptools>`_ or `distribute
+        <http://pypi.python.org/pypi/distribute>`_ into the environment. To use
+        Distribute instead of setuptools, just call virtualenv like this::
+        
+            $ python virtualenv.py --distribute ENV
+        
+        You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE.
+        
+        A new virtualenv also includes the `pip <http://pypy.python.org/pypi/pip>`_
+        installer, so you can use ``ENV/bin/pip`` to install additional packages into
         the environment.
         
-        If you use the ``--distribute`` option, it will install `distribute
-        <http://pypi.python.org/pypi/distribute>`_ for you, instead of setuptools,
-        and if you use `ENV/bin/easy_install`` the packages will be installed into the
-        environment.
+        Environment variables and configuration files
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        virtualenv can not only be configured by passing command line options such as
+        ``--distribute`` but also by two other means:
+        
+        - Environment variables
+        
+          Each command line option is automatically used to look for environment
+          variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means
+          the name of the command line options are capitalized and have dashes
+          (``'-'``) replaced with underscores (``'_'``).
+        
+          For example, to automatically install Distribute instead of setuptools
+          you can also set an environment variable::
+        
+              $ export VIRTUALENV_USE_DISTRIBUTE=true
+              $ python virtualenv.py ENV
+        
+          It's the same as passing the option to virtualenv directly::
+        
+              $ python virtualenv.py --distribute ENV
+        
+          This also works for appending command line options, like ``--find-links``.
+          Just leave an empty space between the passsed values, e.g.::
+        
+              $ export VIRTUALENV_EXTRA_SEARCH_DIR="/path/to/dists /path/to/other/dists"
+              $ virtualenv ENV
+        
+          is the same as calling::
+        
+              $ python virtualenv.py --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/other/dists ENV
+        
+        - Config files
         
-        To use Distribute just call virtualenv like this::
+          virtualenv also looks for a standard ini config file. On Unix and Mac OS X
+          that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's
+          ``%HOME%\\virtualenv\\virtualenv.ini``.
+        
+          The names of the settings are derived from the long command line option,
+          e.g. the option ``--distribute`` would look like this::
+        
+              [virtualenv]
+              distribute = true
+        
+          Appending options like ``--extra-search-dir`` can be written on multiple
+          lines::
+        
+              [virtualenv]
+              extra-search-dir =
+                  /path/to/dists
+                  /path/to/other/dists
         
-        $ python virtualenv.py --distribute ENV
+        Please have a look at the output of ``virtualenv --help`` for a full list
+        of supported options.
+        
+        Windows Notes
+        ~~~~~~~~~~~~~
+        
+        Some paths within the virtualenv are slightly different on Windows: scripts and
+        executables on Windows go in ``ENV\Scripts\`` instead of ``ENV/bin/`` and
+        libraries go in ``ENV\Lib\`` rather than ``ENV/lib/``.
         
-        You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE (since 1.4.4)
-        and be a good Comrade
+        To create a virtualenv under a path with spaces in it on Windows, you'll need
+        the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed.
+        
+        PyPy Support
+        ~~~~~~~~~~~~
+        
+        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
         -----------------------------------
         
         While this creates an environment, it doesn't put anything into the
         environment.  Developers may find it useful to distribute a script
         that sets up a particular environment, for example a script that
         installs a particular web application.
@@ -103,145 +164,207 @@ Description:
         This returns a string that (written to disk of course) can be used
         as a bootstrap script with your own customizations.  The script
         will be the standard virtualenv.py script, with your extra text
         added (your extra text should be Python code).
         
         If you include these functions, they will be called:
         
         ``extend_parser(optparse_parser)``:
-        You can add or remove options from the parser here.
+            You can add or remove options from the parser here.
         
         ``adjust_options(options, args)``:
-        You can change options here, or change the args (if you accept
-        different kinds of arguments, be sure you modify ``args`` so it is
-        only ``[DEST_DIR]``).
+            You can change options here, or change the args (if you accept
+            different kinds of arguments, be sure you modify ``args`` so it is
+            only ``[DEST_DIR]``).
         
         ``after_install(options, home_dir)``:
         
-        After everything is installed, this function is called.  This
-        is probably the function you are most likely to use.  An
-        example would be::
+            After everything is installed, this function is called.  This
+            is probably the function you are most likely to use.  An
+            example would be::
         
-        def after_install(options, home_dir):
-        if sys.platform == 'win32':
-        bin = 'Scripts'
-        else:
-        bin = 'bin'
-        subprocess.call([join(home_dir, bin, 'easy_install'),
-        'MyPackage'])
-        subprocess.call([join(home_dir, bin, 'my-package-script'),
-        'setup', home_dir])
+                def after_install(options, home_dir):
+                    if sys.platform == 'win32':
+                        bin = 'Scripts'
+                    else:
+                        bin = 'bin'
+                    subprocess.call([join(home_dir, bin, 'easy_install'),
+                                     'MyPackage'])
+                    subprocess.call([join(home_dir, bin, 'my-package-script'),
+                                     'setup', home_dir])
         
-        This example immediately installs a package, and runs a setup
-        script from that package.
+            This example immediately installs a package, and runs a setup
+            script from that package.
         
         Bootstrap Example
         ~~~~~~~~~~~~~~~~~
         
         Here's a more concrete example of how you could use this::
         
-        import virtualenv, textwrap
-        output = virtualenv.create_bootstrap_script(textwrap.dedent("""
-        import os, subprocess
-        def after_install(options, home_dir):
-        etc = join(home_dir, 'etc')
-        if not os.path.exists(etc):
-        os.makedirs(etc)
-        subprocess.call([join(home_dir, 'bin', 'easy_install'),
-        'BlogApplication'])
-        subprocess.call([join(home_dir, 'bin', 'paster'),
-        'make-config', 'BlogApplication',
-        join(etc, 'blog.ini')])
-        subprocess.call([join(home_dir, 'bin', 'paster'),
-        'setup-app', join(etc, 'blog.ini')])
-        """))
-        f = open('blog-bootstrap.py', 'w').write(output)
+            import virtualenv, textwrap
+            output = virtualenv.create_bootstrap_script(textwrap.dedent("""
+            import os, subprocess
+            def after_install(options, home_dir):
+                etc = join(home_dir, 'etc')
+                if not os.path.exists(etc):
+                    os.makedirs(etc)
+                subprocess.call([join(home_dir, 'bin', 'easy_install'),
+                                 'BlogApplication'])
+                subprocess.call([join(home_dir, 'bin', 'paster'),
+                                 'make-config', 'BlogApplication',
+                                 join(etc, 'blog.ini')])
+                subprocess.call([join(home_dir, 'bin', 'paster'),
+                                 'setup-app', join(etc, 'blog.ini')])
+            """))
+            f = open('blog-bootstrap.py', 'w').write(output)
         
         Another example is available `here
-        <https://svn.openplans.org/svn/fassembler/trunk/fassembler/create-venv-script.py>`_.
+        <https://github.com/socialplanning/fassembler/blob/master/fassembler/create-venv-script.py>`_.
         
         activate script
         ~~~~~~~~~~~~~~~
         
         In a newly created virtualenv there will be a ``bin/activate`` shell
-        script, or a ``Scripts/activate.bat`` batch file on Windows.
+        script. For Windows systems, activation scripts are provided for CMD.exe
+        and Powershell.
         
         On Posix systems you can do::
         
-        $ source bin/activate
+            $ 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,
         which can be useful if you have your own custom prompt that already
         displays the active environment name.  To do so, set the
         ``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
         value before running the ``activate`` script.
         
         On Windows you just do::
         
-        > \path\to\env\bin\activate.bat
+            > \path\to\env\Scripts\activate
+        
+        And type `deactivate` to undo the changes.
+        
+        Based on your active shell (CMD.exe or Powershell.exe), Windows will use
+        either activate.bat or activate.ps1 (as appropriate) to activate the
+        virtual environment. If using Powershell, see the notes about code signing
+        below.
+        
+        .. note::
+        
+            If using Powershell, the ``activate`` script is subject to the
+            `execution policies`_ on the system. By default on Windows 7, the system's
+            excution policy is set to ``Restricted``, meaning no scripts like the
+            ``activate`` script are allowed to be executed. But that can't stop us
+            from changing that slightly to allow it to be executed.
         
-        And use ``deactivate.bat`` to undo the changes.
+            In order to use the script, you have to relax your system's execution
+            policy to ``AllSigned``, meaning all scripts on the system must be
+            digitally signed to be executed. Since the virtualenv activation
+            script is signed by one of the authors (Jannis Leidel) this level of
+            the execution policy suffices. As an adminstrator run::
+        
+                PS C:\> Set-ExecutionPolicy AllSigned
         
-        The ``--no-site-packages`` Option
-        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+            Then you'll be asked to trust the signer, when executing the script.
+            You will be prompted with the following::
+        
+                PS C:\> virtualenv .\foo
+                New python executable in C:\foo\Scripts\python.exe
+                Installing setuptools................done.
+                Installing pip...................done.
+                PS C:\> .\foo\scripts\activate
         
-        If you build with ``virtualenv --no-site-packages ENV`` it will *not*
-        inherit any packages from ``/usr/lib/python2.5/site-packages`` (or
-        wherever your global site-packages directory is).  This can be used if
-        you don't have control over site-packages and don't want to depend on
-        the packages there, or you just want more isolation from the global
-        system.
+                Do you want to run software from this untrusted publisher?
+                File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
+                CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
+                and is not trusted on your system. Only run scripts from trusted publishers.
+                [V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
+                (default is "D"):A
+                (foo) PS C:\>
+        
+            If you select ``[A] Always Run``, the certificate will be added to the
+            Trusted Publishers of your user account, and will be trusted in this
+            user's context henceforth. If you select ``[R] Run Once``, the script will
+            be run, but you will be prometed on a subsequent invocation. Advanced users
+            can add the signer's certificate to the Trusted Publishers of the Computer
+            account to apply to all users (though this technique is out of scope of this
+            document).
+        
+            Alternatively, you may relax the system execution policy to allow running
+            of local scripts without verifying the code signature using the following::
+        
+                PS C:\> Set-ExecutionPolicy RemoteSigned
+        
+            Since the ``activate.ps1`` script is generated locally for each virtualenv,
+            it is not considered a remote script and can then be executed.
+        
+        .. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx
+        
+        The ``--system-site-packages`` Option
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        If you build with ``virtualenv --system-site-packages ENV``, your virtual
+        environment will inherit packages from ``/usr/lib/python2.7/site-packages``
+        (or wherever your global site-packages directory is).
+        
+        This can be used if you have control over the global site-packages directory,
+        and you want to depend on the packages there.  If you want isolation from the
+        global system, do not use this flag.
         
         Using Virtualenv without ``bin/python``
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
         Sometimes you can't or don't want to use the Python interpreter
         created by the virtualenv.  For instance, in a `mod_python
         <http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_
         environment, there is only one interpreter.
         
         Luckily, it's easy.  You must use the custom Python interpreter to
         *install* libraries.  But to *use* libraries, you just have to be sure
         the path is correct.  A script is available to correct the path.  You
         can setup the environment like::
         
-        activate_this = '/path/to/env/bin/activate_this.py'
-        execfile(activate_this, dict(__file__=activate_this))
+            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 (as if the ``--system-site-packages`` flag had been used
+        in creating the environment, whether it was or not).  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
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         
         Note: this option is somewhat experimental, and there are probably
         caveats that have not yet been identified.  Also this does not
         currently work on Windows.
         
         Normally environments are tied to a specific path.  That means that
         you cannot move an environment around or copy it to another computer.
         You can fix up an environment to make it relocatable with the
         command::
         
-        $ virtualenv --relocatable ENV
+            $ virtualenv --relocatable ENV
         
         This will make some of the files created by setuptools or distribute
         use relative paths, and will change all the scripts to use ``activate_this.py``
         instead of using the location of the Python interpreter to select the
         environment.
         
         **Note:** you must run this after you've installed *any* packages into
         the environment.  If you make an environment relocatable, then
@@ -254,81 +377,646 @@ Description:
         incompatibilities: a different version of Python, when one platform
         uses UCS2 for its internal unicode representation and another uses
         UCS4 (a compile-time option), obvious platform changes like Windows
         vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C
         libraries on the system, if those C libraries are located somewhere
         different (either different versions, or a different filesystem
         layout).
         
-        Currently the ``--no-site-packages`` option will not be honored if you
-        use this on an environment.
+        If you use this flag to create an environment, currently, the
+        ``--system-site-packages`` option will be implied.
+        
+        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. The local distribution lookup is done in this order and the
+        following locations:
+        
+            #. The current directory.
+            #. The directory where virtualenv.py is located.
+            #. A ``virtualenv_support`` directory relative to the directory where
+               virtualenv.py is located.
+            #. If the file being executed is not named virtualenv.py (i.e. is a boot
+               script), a ``virtualenv_support`` directory relative to wherever
+               virtualenv.py is actually installed.
         
         Compare & Contrast with Alternatives
         ------------------------------------
         
         There are several alternatives that create isolated environments:
         
         * ``workingenv`` (which I do not suggest you use anymore) is the
-        predecessor to this library.  It used the main Python interpreter,
-        but relied on setting ``$PYTHONPATH`` to activate the environment.
-        This causes problems when running Python scripts that aren't part of
-        the environment (e.g., a globally installed ``hg`` or ``bzr``).  It
-        also conflicted a lot with Setuptools.
+          predecessor to this library.  It used the main Python interpreter,
+          but relied on setting ``$PYTHONPATH`` to activate the environment.
+          This causes problems when running Python scripts that aren't part of
+          the environment (e.g., a globally installed ``hg`` or ``bzr``).  It
+          also conflicted a lot with Setuptools.
         
         * `virtual-python
-        <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_
-        is also a predecessor to this library.  It uses only symlinks, so it
-        couldn't work on Windows.  It also symlinks over the *entire*
-        standard library and global ``site-packages``.  As a result, it
-        won't see new additions to the global ``site-packages``.
+          <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_
+          is also a predecessor to this library.  It uses only symlinks, so it
+          couldn't work on Windows.  It also symlinks over the *entire*
+          standard library and global ``site-packages``.  As a result, it
+          won't see new additions to the global ``site-packages``.
         
-        This script only symlinks a small portion of the standard library
-        into the environment, and so on Windows it is feasible to simply
-        copy these files over.  Also, it creates a new/empty
-        ``site-packages`` and also adds the global ``site-packages`` to the
-        path, so updates are tracked separately.  This script also installs
-        Setuptools automatically, saving a step and avoiding the need for
-        network access.
+          This script only symlinks a small portion of the standard library
+          into the environment, and so on Windows it is feasible to simply
+          copy these files over.  Also, it creates a new/empty
+          ``site-packages`` and also adds the global ``site-packages`` to the
+          path, so updates are tracked separately.  This script also installs
+          Setuptools automatically, saving a step and avoiding the need for
+          network access.
         
         * `zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ doesn't
-        create an isolated Python environment in the same style, but
-        achieves similar results through a declarative config file that sets
-        up scripts with very particular packages.  As a declarative system,
-        it is somewhat easier to repeat and manage, but more difficult to
-        experiment with.  ``zc.buildout`` includes the ability to setup
-        non-Python systems (e.g., a database server or an Apache instance).
+          create an isolated Python environment in the same style, but
+          achieves similar results through a declarative config file that sets
+          up scripts with very particular packages.  As a declarative system,
+          it is somewhat easier to repeat and manage, but more difficult to
+          experiment with.  ``zc.buildout`` includes the ability to setup
+          non-Python systems (e.g., a database server or an Apache instance).
         
         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/contributing.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
         -----------------------------
         
         * James Gardner has written a tutorial on using `virtualenv with
-        Pylons
-        <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_.
+          Pylons
+          <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_.
         
         * `Blog announcement
-        <http://blog.ianbicking.org/2007/10/10/workingenv-is-dead-long-live-virtualenv/>`_.
+          <http://blog.ianbicking.org/2007/10/10/workingenv-is-dead-long-live-virtualenv/>`_.
         
         * Doug Hellmann wrote a description of his `command-line work flow
-        using virtualenv (virtualenvwrapper)
-        <http://www.doughellmann.com/articles/CompletelyDifferent-2008-05-virtualenvwrapper/index.html>`_
-        including some handy scripts to make working with multiple
-        environments easier.  He also wrote `an example of using virtualenv
-        to try IPython
-        <http://www.doughellmann.com/articles/CompletelyDifferent-2008-02-ipython-and-virtualenv/index.html>`_.
+          using virtualenv (virtualenvwrapper)
+          <http://www.doughellmann.com/articles/CompletelyDifferent-2008-05-virtualenvwrapper/index.html>`_
+          including some handy scripts to make working with multiple
+          environments easier.  He also wrote `an example of using virtualenv
+          to try IPython
+          <http://www.doughellmann.com/articles/CompletelyDifferent-2008-02-ipython-and-virtualenv/index.html>`_.
         
         * Chris Perkins created a `showmedo video including virtualenv
-        <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
+          <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
         
         * `Using virtualenv with mod_wsgi
-        <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
+          <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
         
         * `virtualenv commands
-        <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
-        workflow-related tools around virtualenv.
+          <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
+          workflow-related tools around virtualenv.
+        
+        Status and License
+        ------------------
+        
+        ``virtualenv`` is a successor to `workingenv
+        <http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
+        of `virtual-python
+        <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-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>`_.
+        It is licensed under an
+        `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
+        
+        Changes & News
+        --------------
+        
+        1.7.1.2 (2012-02-17)
+        ~~~~~~~~~~~~~~~~~~~~
+        
+        * Fixed minor issue in `--relocatable`. Thanks, Cap Petschulat.
+        
+        1.7.1.1 (2012-02-16)
+        ~~~~~~~~~~~~~~~~~~~~
+        
+        * Bumped the version string in ``virtualenv.py`` up, too.
+        
+        * Fixed rST rendering bug of long description.
+        
+        1.7.1 (2012-02-16)
+        ~~~~~~~~~~~~~~~~~~
+        
+        * Update embedded pip to version 1.1.
+        
+        * Fix `--relocatable` under Python 3. Thanks Doug Hellmann.
+        
+        * Added environ PATH modification to activate_this.py. Thanks Doug
+          Napoleone. Fixes #14.
+        
+        * Support creating virtualenvs directly from a Python build directory on
+          Windows. Thanks CBWhiz. Fixes #139.
+        
+        * Use non-recursive symlinks to fix things up for posix_local install
+          scheme. Thanks michr.
+        
+        * Made activate script available for use with msys and cygwin on Windows.
+          Thanks Greg Haskins, Cliff Xuan, Jonathan Griffin and Doug Napoleone.
+          Fixes #176.
+        
+        * Fixed creation of virtualenvs on Windows when Python is not installed for
+          all users. Thanks Anatoly Techtonik for report and patch and Doug
+          Napoleone for testing and confirmation. Fixes #87.
+        
+        * Fixed creation of virtualenvs using -p in installs where some modules
+          that ought to be in the standard library (e.g. `readline`) are actually
+          installed in `site-packages` next to `virtualenv.py`. Thanks Greg Haskins
+          for report and fix. Fixes #167.
+        
+        * Added activation script for Powershell (signed by Jannis Leidel). Many
+          thanks to Jason R. Coombs.
+        
+        1.7 (2011-11-30)
+        ~~~~~~~~~~~~~~~~
+        
+        * Gave user-provided ``--extra-search-dir`` priority over default dirs for
+          finding setuptools/distribute (it already had priority for finding pip).
+          Thanks Ethan Jucovy.
+        
+        * Updated embedded Distribute release to 0.6.24. Thanks Alex Gronholm.
+        
+        * Made ``--no-site-packages`` behavior the default behavior.  The
+          ``--no-site-packages`` flag is still permitted, but displays a warning when
+          used. Thanks Chris McDonough.
+        
+        * New flag: ``--system-site-packages``; this flag should be passed to get the
+          previous default global-site-package-including behavior back.
+        
+        * Added ability to set command options as environment variables and options
+          in a ``virtualenv.ini`` file.
+        
+        * Fixed various encoding related issues with paths. Thanks Gunnlaugur Thor Briem.
+        
+        * Made ``virtualenv.py`` script executable.
+        
+        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
+        ~~~
+        
+        * Added Python 3 support! Huge thanks to Vinay Sajip and Vitaly Babiy.
+        
+        * Fixed creation of virtualenvs on Mac OS X when standard library modules
+          (readline) are installed outside the standard library.
+        
+        * Updated bundled pip to 1.0.
+        
+        1.5.2
+        ~~~~~
+        
+        * Moved main repository to Github: https://github.com/pypa/virtualenv
+        
+        * Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer and Brian Rosner
+        
+        * Fixed a few more pypy related bugs.
+        
+        * Updated bundled pip to 0.8.2.
+        
+        * Handed project over to new team of maintainers.
+        
+        * Moved virtualenv to Github at https://github.com/pypa/virtualenv
+        
+        1.5.1
+        ~~~~~
+        
+        * Added ``_weakrefset`` requirement for Python 2.7.1.
+        
+        * Fixed Windows regression in 1.5
+        
+        1.5
+        ~~~
+        
+        * Include pip 0.8.1.
+        
+        * Add support for PyPy.
+        
+        * Uses a proper temporary dir when installing environment requirements.
+        
+        * Add ``--prompt`` option to be able to override the default prompt prefix.
+        
+        * Fix an issue with ``--relocatable`` on Windows.
+        
+        * Fix issue with installing the wrong version of distribute.
+        
+        * Add fish and csh activate scripts.
+        
+        1.4.9
+        ~~~~~
+        
+        * Include pip 0.7.2
+        
+        1.4.8
+        ~~~~~
+        
+        * Fix for Mac OS X Framework builds that use
+          ``--universal-archs=intel``
+        
+        * Fix ``activate_this.py`` on Windows.
+        
+        * Allow ``$PYTHONHOME`` to be set, so long as you use ``source
+          bin/activate`` it will get unset; if you leave it set and do not
+          activate the environment it will still break the environment.
+        
+        * Include pip 0.7.1
+        
+        1.4.7
+        ~~~~~
+        
+        * Include pip 0.7
+        
+        1.4.6
+        ~~~~~
+        
+        * Allow ``activate.sh`` to skip updating the prompt (by setting
+          ``$VIRTUAL_ENV_DISABLE_PROMPT``).
+        
+        1.4.5
+        ~~~~~
+        
+        * Include pip 0.6.3
+        
+        * Fix ``activate.bat`` and ``deactivate.bat`` under Windows when
+          ``PATH`` contained a parenthesis
+        
+        1.4.4
+        ~~~~~
+        
+        * Include pip 0.6.2 and Distribute 0.6.10
+        
+        * Create the ``virtualenv`` script even when Setuptools isn't
+          installed
+        
+        * Fix problem with ``virtualenv --relocate`` when ``bin/`` has
+          subdirectories (e.g., ``bin/.svn/``); from Alan Franzoni.
+        
+        * If you set ``$VIRTUALENV_USE_DISTRIBUTE`` then virtualenv will use
+          Distribute by default (so you don't have to remember to use
+          ``--distribute``).
+        
+        1.4.3
+        ~~~~~
+        
+        * Include pip 0.6.1
+        
+        1.4.2
+        ~~~~~
+        
+        * Fix pip installation on Windows
+        
+        * Fix use of stand-alone ``virtualenv.py`` (and boot scripts)
+        
+        * Exclude ~/.local (user site-packages) from environments when using
+          ``--no-site-packages``
+        
+        1.4.1
+        ~~~~~
+        
+        * Include pip 0.6
+        
+        1.4
+        ~~~
+        
+        * Updated setuptools to 0.6c11
+        
+        * Added the --distribute option
+        
+        * Fixed packaging problem of support-files
+        
+        1.3.4
+        ~~~~~
+        
+        * Virtualenv now copies the actual embedded Python binary on
+          Mac OS X to fix a hang on Snow Leopard (10.6).
+        
+        * Fail more gracefully on Windows when ``win32api`` is not installed.
+        
+        * Fix site-packages taking precedent over Jython's ``__classpath__``
+          and also specially handle the new ``__pyclasspath__`` entry in
+          ``sys.path``.
+        
+        * Now copies Jython's ``registry`` file to the virtualenv if it exists.
+        
+        * Better find libraries when compiling extensions on Windows.
+        
+        * Create ``Scripts\pythonw.exe`` on Windows.
+        
+        * Added support for the Debian/Ubuntu
+          ``/usr/lib/pythonX.Y/dist-packages`` directory.
+        
+        * Set ``distutils.sysconfig.get_config_vars()['LIBDIR']`` (based on
+          ``sys.real_prefix``) which is reported to help building on Windows.
+        
+        * Make ``deactivate`` work on ksh
+        
+        * Fixes for ``--python``: make it work with ``--relocatable`` and the
+          symlink created to the exact Python version.
+        
+        1.3.3
+        ~~~~~
+        
+        * Use Windows newlines in ``activate.bat``, which has been reported to help
+          when using non-ASCII directory names.
+        
+        * Fixed compatibility with Jython 2.5b1.
+        
+        * Added a function ``virtualenv.install_python`` for more fine-grained
+          access to what ``virtualenv.create_environment`` does.
+        
+        * Fix `a problem <https://bugs.launchpad.net/virtualenv/+bug/241581>`_
+          with Windows and paths that contain spaces.
+        
+        * If ``/path/to/env/.pydistutils.cfg`` exists (or
+          ``/path/to/env/pydistutils.cfg`` on Windows systems) then ignore
+          ``~/.pydistutils.cfg`` and use that other file instead.
+        
+        * Fix ` a problem
+          <https://bugs.launchpad.net/virtualenv/+bug/340050>`_ picking up
+          some ``.so`` libraries in ``/usr/local``.
+        
+        1.3.2
+        ~~~~~
+        
+        * Remove the ``[install] prefix = ...`` setting from the virtualenv
+          ``distutils.cfg`` -- this has been causing problems for a lot of
+          people, in rather obscure ways.
+        
+        * If you use a `boot script <./index.html#boot-script>`_ it will attempt to import ``virtualenv``
+          and find a pre-downloaded Setuptools egg using that.
+        
+        * Added platform-specific paths, like ``/usr/lib/pythonX.Y/plat-linux2``
+        
+        1.3.1
+        ~~~~~
+        
+        * Real Python 2.6 compatibility.  Backported the Python 2.6 updates to
+          ``site.py``, including `user directories
+          <http://docs.python.org/dev/whatsnew/2.6.html#pep-370-per-user-site-packages-directory>`_
+          (this means older versions of Python will support user directories,
+          whether intended or not).
+        
+        * Always set ``[install] prefix`` in ``distutils.cfg`` -- previously
+          on some platforms where a system-wide ``distutils.cfg`` was present
+          with a ``prefix`` setting, packages would be installed globally
+          (usually in ``/usr/local/lib/pythonX.Y/site-packages``).
+        
+        * Sometimes Cygwin seems to leave ``.exe`` off ``sys.executable``; a
+          workaround is added.
+        
+        * Fix ``--python`` option.
+        
+        * Fixed handling of Jython environments that use a
+          jython-complete.jar.
+        
+        1.3
+        ~~~
+        
+        * Update to Setuptools 0.6c9
+        * Added an option ``virtualenv --relocatable EXISTING_ENV``, which
+          will make an existing environment "relocatable" -- the paths will
+          not be absolute in scripts, ``.egg-info`` and ``.pth`` files.  This
+          may assist in building environments that can be moved and copied.
+          You have to run this *after* any new packages installed.
+        * Added ``bin/activate_this.py``, a file you can use like
+          ``execfile("path_to/activate_this.py",
+          dict(__file__="path_to/activate_this.py"))`` -- this will activate
+          the environment in place, similar to what `the mod_wsgi example
+          does <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
+        * For Mac framework builds of Python, the site-packages directory
+          ``/Library/Python/X.Y/site-packages`` is added to ``sys.path``, from
+          Andrea Rech.
+        * Some platform-specific modules in Macs are added to the path now
+          (``plat-darwin/``, ``plat-mac/``, ``plat-mac/lib-scriptpackages``),
+          from Andrea Rech.
+        * Fixed a small Bashism in the ``bin/activate`` shell script.
+        * Added ``__future__`` to the list of required modules, for Python
+          2.3.  You'll still need to backport your own ``subprocess`` module.
+        * Fixed the ``__classpath__`` entry in Jython's ``sys.path`` taking
+          precedent over virtualenv's libs.
+        
+        1.2
+        ~~~
+        
+        * Added a ``--python`` option to select the Python interpreter.
+        * Add ``warnings`` to the modules copied over, for Python 2.6 support.
+        * Add ``sets`` to the module copied over for Python 2.3 (though Python
+          2.3 still probably doesn't work).
+        
+        1.1.1
+        ~~~~~
+        
+        * Added support for Jython 2.5.
+        
+        1.1
+        ~~~
+        
+        * Added support for Python 2.6.
+        * Fix a problem with missing ``DLLs/zlib.pyd`` on Windows.  Create
+        * ``bin/python`` (or ``bin/python.exe``) even when you run virtualenv
+          with an interpreter named, e.g., ``python2.4``
+        * Fix MacPorts Python
+        * Added --unzip-setuptools option
+        * Update to Setuptools 0.6c8
+        * If the current directory is not writable, run ez_setup.py in ``/tmp``
+        * Copy or symlink over the ``include`` directory so that packages will
+          more consistently compile.
+        
+        1.0
+        ~~~
+        
+        * Fix build on systems that use ``/usr/lib64``, distinct from
+          ``/usr/lib`` (specifically CentOS x64).
+        * Fixed bug in ``--clear``.
+        * Fixed typos in ``deactivate.bat``.
+        * Preserve ``$PYTHONPATH`` when calling subprocesses.
+        
+        0.9.2
+        ~~~~~
+        
+        * Fix include dir copying on Windows (makes compiling possible).
+        * Include the main ``lib-tk`` in the path.
+        * Patch ``distutils.sysconfig``: ``get_python_inc`` and
+          ``get_python_lib`` to point to the global locations.
+        * Install ``distutils.cfg`` before Setuptools, so that system
+          customizations of ``distutils.cfg`` won't effect the installation.
+        * Add ``bin/pythonX.Y`` to the virtualenv (in addition to
+          ``bin/python``).
+        * Fixed an issue with Mac Framework Python builds, and absolute paths
+          (from Ronald Oussoren).
+        
+        0.9.1
+        ~~~~~
+        
+        * Improve ability to create a virtualenv from inside a virtualenv.
+        * Fix a little bug in ``bin/activate``.
+        * Actually get ``distutils.cfg`` to work reliably.
+        
+        0.9
+        ~~~
+        
+        * Added ``lib-dynload`` and ``config`` to things that need to be
+          copied over in an environment.
+        * Copy over or symlink the ``include`` directory, so that you can
+          build packages that need the C headers.
+        * Include a ``distutils`` package, so you can locally update
+          ``distutils.cfg`` (in ``lib/pythonX.Y/distutils/distutils.cfg``).
+        * Better avoid downloading Setuptools, and hitting PyPI on environment
+          creation.
+        * Fix a problem creating a ``lib64/`` directory.
+        * Should work on MacOSX Framework builds (the default Python
+          installations on Mac).  Thanks to Ronald Oussoren.
+        
+        0.8.4
+        ~~~~~
+        
+        * Windows installs would sometimes give errors about ``sys.prefix`` that
+          were inaccurate.
+        * Slightly prettier output.
+        
+        0.8.3
+        ~~~~~
+        
+        * Added support for Windows.
+        
+        0.8.2
+        ~~~~~
+        
+        * Give a better warning if you are on an unsupported platform (Mac
+          Framework Pythons, and Windows).
+        * Give error about running while inside a workingenv.
+        * Give better error message about Python 2.3.
+        
+        0.8.1
+        ~~~~~
+        
+        Fixed packaging of the library.
+        
+        0.8
+        ~~~
+        
+        Initial release.  Everything is changed and new!
+        
 Keywords: setuptools deployment installation distutils
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Programming Language :: Python :: 3.2
deleted file mode 100644
--- a/other-licenses/virtualenv/docs/_build/_sources/index.txt
+++ /dev/null
@@ -1,335 +0,0 @@
-virtualenv
-==========
-
-* `Discussion list <http://groups.google.com/group/python-virtualenv/>`_
-* `Bugs <https://bitbucket.org/ianb/virtualenv/issues/>`_
-
-.. contents::
-
-.. toctree::
-   :maxdepth: 1
-
-   news
-   license
-
-.. comment: split here
-
-Status and License
-------------------
-
-``virtualenv`` is a successor to `workingenv
-<http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
-of `virtual-python
-<http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_.
-
-It is written by Ian Bicking, and sponsored by the `Open Planning
-Project <http://openplans.org>`_.  It is licensed under an
-`MIT-style permissive license <license.html>`_.
-
-You can install it with ``easy_install virtualenv``, or from the `hg
-repository <http://bitbucket.org/ianb/virtualenv>`_ or from a `tarball
-<http://bitbucket.org/ianb/virtualenv/get/tip.gz#egg=virtualenv-tip>`_
-``easy_install virtualenv==tip``.
-
-What It Does
-------------
-
-``virtualenv`` is a tool to create isolated Python environments.
-
-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
-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.
-
-Or more generally, what if you want to install an application *and
-leave it be*?  If an application works, any change in its libraries or
-the versions of those libraries can break the application.
-
-Also, what if you can't install packages into the global
-``site-packages`` directory?  For instance, on a shared host.
-
-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).
-
-The basic usage is::
-
-    $ python virtualenv.py ENV
-
-If you install it you can also just do ``virtualenv ENV``.
-
-This creates ``ENV/lib/python2.4/site-packages`` (or
-``ENV/lib/python2.5/site-packages`` on Python 2.5, etc), where any
-libraries you install will go.  It also creates ``ENV/bin/python``,
-which is a Python interpreter that uses this environment.  Anytime you
-use that interpreter (including when a script has
-``#!/path/to/ENV/bin/python`` in it) the libraries in that environment
-will be used.  (**Note for Windows:** scripts and executables on
-Windows go in ``ENV\Scripts\``; everywhere you see ``bin/`` replace it
-with ``Scripts\``)
-
-It also installs `Setuptools
-<http://peak.telecommunity.com/DevCenter/setuptools>`_ for you, and if
-you use ``ENV/bin/easy_install`` the packages will be installed into
-the environment.
-
-If you use the ``--distribute`` option, it will install `distribute
-<http://pypi.python.org/pypi/distribute>`_ for you, instead of setuptools,
-and if you use `ENV/bin/easy_install`` the packages will be installed into the
-environment.
-
-To use Distribute just call virtualenv like this::
-
-    $ python virtualenv.py --distribute ENV
-
-You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE (since 1.4.4) 
-and be a good Comrade
-
-Creating Your Own Bootstrap Scripts
------------------------------------
-
-While this creates an environment, it doesn't put anything into the
-environment.  Developers may find it useful to distribute a script
-that sets up a particular environment, for example a script that
-installs a particular web application.
-
-To create a script like this, call
-``virtualenv.create_bootstrap_script(extra_text)``, and write the
-result to your new bootstrapping script.  Here's the documentation
-from the docstring:
-
-Creates a bootstrap script, which is like this script but with
-extend_parser, adjust_options, and after_install hooks.
-
-This returns a string that (written to disk of course) can be used
-as a bootstrap script with your own customizations.  The script
-will be the standard virtualenv.py script, with your extra text
-added (your extra text should be Python code).
-
-If you include these functions, they will be called:
-
-``extend_parser(optparse_parser)``:
-    You can add or remove options from the parser here.
-
-``adjust_options(options, args)``:
-    You can change options here, or change the args (if you accept
-    different kinds of arguments, be sure you modify ``args`` so it is
-    only ``[DEST_DIR]``).
-
-``after_install(options, home_dir)``:
-
-    After everything is installed, this function is called.  This
-    is probably the function you are most likely to use.  An
-    example would be::
-
-        def after_install(options, home_dir):
-            if sys.platform == 'win32':
-                bin = 'Scripts'
-            else:
-                bin = 'bin'
-            subprocess.call([join(home_dir, bin, 'easy_install'),
-                             'MyPackage'])
-            subprocess.call([join(home_dir, bin, 'my-package-script'),
-                             'setup', home_dir])
-
-    This example immediately installs a package, and runs a setup
-    script from that package.
-
-Bootstrap Example
-~~~~~~~~~~~~~~~~~
-
-Here's a more concrete example of how you could use this::
-
-    import virtualenv, textwrap
-    output = virtualenv.create_bootstrap_script(textwrap.dedent("""
-    import os, subprocess
-    def after_install(options, home_dir):
-        etc = join(home_dir, 'etc')
-        if not os.path.exists(etc):
-            os.makedirs(etc)
-        subprocess.call([join(home_dir, 'bin', 'easy_install'),
-                         'BlogApplication'])
-        subprocess.call([join(home_dir, 'bin', 'paster'),
-                         'make-config', 'BlogApplication',
-                         join(etc, 'blog.ini')])
-        subprocess.call([join(home_dir, 'bin', 'paster'),
-                         'setup-app', join(etc, 'blog.ini')])
-    """))
-    f = open('blog-bootstrap.py', 'w').write(output)
-
-Another example is available `here
-<https://svn.openplans.org/svn/fassembler/trunk/fassembler/create-venv-script.py>`_.
-
-activate script
-~~~~~~~~~~~~~~~
-
-In a newly created virtualenv there will be a ``bin/activate`` shell
-script, or a ``Scripts/activate.bat`` batch file on Windows.
-
-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.
-
-The ``activate`` script will also modify your shell prompt to indicate
-which environment is currently active.  You can disable this behavior,
-which can be useful if you have your own custom prompt that already
-displays the active environment name.  To do so, set the
-``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
-value before running the ``activate`` script.
-
-On Windows you just do::
-
-  > \path\to\env\bin\activate.bat
-
-And use ``deactivate.bat`` to undo the changes.
-
-The ``--no-site-packages`` Option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you build with ``virtualenv --no-site-packages ENV`` it will *not*
-inherit any packages from ``/usr/lib/python2.5/site-packages`` (or
-wherever your global site-packages directory is).  This can be used if
-you don't have control over site-packages and don't want to depend on
-the packages there, or you just want more isolation from the global
-system.
-
-Using Virtualenv without ``bin/python``
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Sometimes you can't or don't want to use the Python interpreter
-created by the virtualenv.  For instance, in a `mod_python
-<http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_
-environment, there is only one interpreter.
-
-Luckily, it's easy.  You must use the custom Python interpreter to
-*install* libraries.  But to *use* libraries, you just have to be sure
-the path is correct.  A script is available to correct the path.  You
-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.
-
-Making Environments Relocatable
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Note: this option is somewhat experimental, and there are probably
-caveats that have not yet been identified.  Also this does not
-currently work on Windows.
-
-Normally environments are tied to a specific path.  That means that
-you cannot move an environment around or copy it to another computer.
-You can fix up an environment to make it relocatable with the
-command::
-
-    $ virtualenv --relocatable ENV
-
-This will make some of the files created by setuptools or distribute
-use relative paths, and will change all the scripts to use ``activate_this.py``
-instead of using the location of the Python interpreter to select the
-environment.
-
-**Note:** you must run this after you've installed *any* packages into
-the environment.  If you make an environment relocatable, then
-install a new package, you must run ``virtualenv --relocatable``
-again.
-
-Also, this **does not make your packages cross-platform**.  You can
-move the directory around, but it can only be used on other similar
-computers.  Some known environmental differences that can cause
-incompatibilities: a different version of Python, when one platform
-uses UCS2 for its internal unicode representation and another uses
-UCS4 (a compile-time option), obvious platform changes like Windows
-vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C
-libraries on the system, if those C libraries are located somewhere
-different (either different versions, or a different filesystem
-layout).
-
-Currently the ``--no-site-packages`` option will not be honored if you
-use this on an environment.
-
-Compare & Contrast with Alternatives
-------------------------------------
-
-There are several alternatives that create isolated environments:
-
-* ``workingenv`` (which I do not suggest you use anymore) is the
-  predecessor to this library.  It used the main Python interpreter,
-  but relied on setting ``$PYTHONPATH`` to activate the environment.
-  This causes problems when running Python scripts that aren't part of
-  the environment (e.g., a globally installed ``hg`` or ``bzr``).  It
-  also conflicted a lot with Setuptools.
-
-* `virtual-python
-  <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_
-  is also a predecessor to this library.  It uses only symlinks, so it
-  couldn't work on Windows.  It also symlinks over the *entire*
-  standard library and global ``site-packages``.  As a result, it
-  won't see new additions to the global ``site-packages``.
-
-  This script only symlinks a small portion of the standard library
-  into the environment, and so on Windows it is feasible to simply
-  copy these files over.  Also, it creates a new/empty
-  ``site-packages`` and also adds the global ``site-packages`` to the
-  path, so updates are tracked separately.  This script also installs
-  Setuptools automatically, saving a step and avoiding the need for
-  network access.
-
-* `zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ doesn't
-  create an isolated Python environment in the same style, but
-  achieves similar results through a declarative config file that sets
-  up scripts with very particular packages.  As a declarative system,
-  it is somewhat easier to repeat and manage, but more difficult to
-  experiment with.  ``zc.buildout`` includes the ability to setup
-  non-Python systems (e.g., a database server or an Apache instance).
-
-I *strongly* recommend anyone doing application development or
-deployment use one of these tools.
-
-Other Documentation and Links
------------------------------
-
-* James Gardner has written a tutorial on using `virtualenv with
-  Pylons
-  <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_.
-
-* `Blog announcement
-  <http://blog.ianbicking.org/2007/10/10/workingenv-is-dead-long-live-virtualenv/>`_.
-
-* Doug Hellmann wrote a description of his `command-line work flow
-  using virtualenv (virtualenvwrapper)
-  <http://www.doughellmann.com/articles/CompletelyDifferent-2008-05-virtualenvwrapper/index.html>`_
-  including some handy scripts to make working with multiple
-  environments easier.  He also wrote `an example of using virtualenv
-  to try IPython
-  <http://www.doughellmann.com/articles/CompletelyDifferent-2008-02-ipython-and-virtualenv/index.html>`_.
-
-* Chris Perkins created a `showmedo video including virtualenv
-  <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
-
-* `Using virtualenv with mod_wsgi
-  <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
-
-* `virtualenv commands
-  <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
-  workflow-related tools around virtualenv.
deleted file mode 100644
--- a/other-licenses/virtualenv/docs/_build/_sources/license.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-License
-=======
-
-Copyright (c) 2007 Ian Bicking and Contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
deleted file mode 100644
--- a/other-licenses/virtualenv/docs/_build/_sources/news.txt
+++ /dev/null
@@ -1,284 +0,0 @@
-Changes & News
---------------
-
-hg tip
-------
-
-* Fix for Mac OS X Framework builds that use
-  ``--universal-archs=intel``
-
-1.4.7
------
-
-* Include pip 0.7
-
-1.4.6
-~~~~~
-
-* Allow ``activate.sh`` to skip updating the prompt (by setting
-  ``$VIRTUAL_ENV_DISABLE_PROMPT``).
-
-1.4.5
-~~~~~
-
-* Include pip 0.6.3
-
-* Fix ``activate.bat`` and ``deactivate.bat`` under Windows when
-  ``PATH`` contained a parenthesis
-
-1.4.4
-~~~~~
-
-* Include pip 0.6.2 and Distribute 0.6.10
-
-* Create the ``virtualenv`` script even when Setuptools isn't
-  installed
-
-* Fix problem with ``virtualenv --relocate`` when ``bin/`` has
-  subdirectories (e.g., ``bin/.svn/``); from Alan Franzoni.
-
-* If you set ``$VIRTUALENV_USE_DISTRIBUTE`` then virtualenv will use
-  Distribute by default (so you don't have to remember to use
-  ``--distribute``).
-
-1.4.3
-~~~~~
-
-* Include pip 0.6.1
-
-1.4.2
-~~~~~
-
-* Fix pip installation on Windows
-
-* Fix use of stand-alone ``virtualenv.py`` (and boot scripts)
-
-* Exclude ~/.local (user site-packages) from environments when using
-  ``--no-site-packages``
-
-1.4.1
-~~~~~
-
-* Include pip 0.6
-
-1.4
-~~~
-
-* Updated setuptools to 0.6c11
-
-* Added the --distribute option
-
-* Fixed packaging problem of support-files
-
-1.3.4
-~~~~~
-
-* Virtualenv now copies the actual embedded Python binary on
-  Mac OS X to fix a hang on Snow Leopard (10.6).
-
-* Fail more gracefully on Windows when ``win32api`` is not installed.
-
-* Fix site-packages taking precedent over Jython's ``__classpath__``
-  and also specially handle the new ``__pyclasspath__`` entry in
-  ``sys.path``.
-
-* Now copies Jython's ``registry`` file to the virtualenv if it exists.
-
-* Better find libraries when compiling extensions on Windows.
-
-* Create ``Scripts\pythonw.exe`` on Windows.
-
-* Added support for the Debian/Ubuntu
-  ``/usr/lib/pythonX.Y/dist-packages`` directory.
-
-* Set ``distutils.sysconfig.get_config_vars()['LIBDIR']`` (based on
-  ``sys.real_prefix``) which is reported to help building on Windows.
-
-* Make ``deactivate`` work on ksh
-
-* Fixes for ``--python``: make it work with ``--relocatable`` and the
-  symlink created to the exact Python version.
-
-1.3.3
-~~~~~
-
-* Use Windows newlines in ``activate.bat``, which has been reported to help
-  when using non-ASCII directory names.
-
-* Fixed compatibility with Jython 2.5b1.
-
-* Added a function ``virtualenv.install_python`` for more fine-grained
-  access to what ``virtualenv.create_environment`` does.
-
-* Fix `a problem <https://bugs.launchpad.net/virtualenv/+bug/241581>`_
-  with Windows and paths that contain spaces.
-
-* If ``/path/to/env/.pydistutils.cfg`` exists (or
-  ``/path/to/env/pydistutils.cfg`` on Windows systems) then ignore
-  ``~/.pydistutils.cfg`` and use that other file instead.
-
-* Fix ` a problem
-  <https://bugs.launchpad.net/virtualenv/+bug/340050>`_ picking up
-  some ``.so`` libraries in ``/usr/local``.
-
-1.3.2
-~~~~~
-
-* Remove the ``[install] prefix = ...`` setting from the virtualenv
-  ``distutils.cfg`` -- this has been causing problems for a lot of
-  people, in rather obscure ways.
-
-* If you use a `boot script <./index.html#boot-script>`_ it will attempt to import ``virtualenv``
-  and find a pre-downloaded Setuptools egg using that.
-
-* Added platform-specific paths, like ``/usr/lib/pythonX.Y/plat-linux2``
-
-1.3.1
-~~~~~
-
-* Real Python 2.6 compatibility.  Backported the Python 2.6 updates to
-  ``site.py``, including `user directories
-  <http://docs.python.org/dev/whatsnew/2.6.html#pep-370-per-user-site-packages-directory>`_
-  (this means older versions of Python will support user directories,
-  whether intended or not).
-
-* Always set ``[install] prefix`` in ``distutils.cfg`` -- previously
-  on some platforms where a system-wide ``distutils.cfg`` was present
-  with a ``prefix`` setting, packages would be installed globally
-  (usually in ``/usr/local/lib/pythonX.Y/site-packages``).
-
-* Sometimes Cygwin seems to leave ``.exe`` off ``sys.executable``; a
-  workaround is added.
-
-* Fix ``--python`` option.
-
-* Fixed handling of Jython environments that use a
-  jython-complete.jar.
-
-1.3
-~~~
-
-* Update to Setuptools 0.6c9
-* Added an option ``virtualenv --relocatable EXISTING_ENV``, which
-  will make an existing environment "relocatable" -- the paths will
-  not be absolute in scripts, ``.egg-info`` and ``.pth`` files.  This
-  may assist in building environments that can be moved and copied.
-  You have to run this *after* any new packages installed.
-* Added ``bin/activate_this.py``, a file you can use like
-  ``execfile("path_to/activate_this.py",
-  dict(__file__="path_to/activate_this.py"))`` -- this will activate
-  the environment in place, similar to what `the mod_wsgi example
-  does <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
-* For Mac framework builds of Python, the site-packages directory
-  ``/Library/Python/X.Y/site-packages`` is added to ``sys.path``, from
-  Andrea Rech.
-* Some platform-specific modules in Macs are added to the path now
-  (``plat-darwin/``, ``plat-mac/``, ``plat-mac/lib-scriptpackages``),
-  from Andrea Rech.
-* Fixed a small Bashism in the ``bin/activate`` shell script.
-* Added ``__future__`` to the list of required modules, for Python
-  2.3.  You'll still need to backport your own ``subprocess`` module.
-* Fixed the ``__classpath__`` entry in Jython's ``sys.path`` taking
-  precedent over virtualenv's libs.
-
-1.2
-~~~
-
-* Added a ``--python`` option to select the Python interpreter.
-* Add ``warnings`` to the modules copied over, for Python 2.6 support.
-* Add ``sets`` to the module copied over for Python 2.3 (though Python
-  2.3 still probably doesn't work).
-
-1.1.1
-~~~~~
-
-* Added support for Jython 2.5.
-
-1.1
-~~~
-
-* Added support for Python 2.6.
-* Fix a problem with missing ``DLLs/zlib.pyd`` on Windows.  Create
-* ``bin/python`` (or ``bin/python.exe``) even when you run virtualenv
-  with an interpreter named, e.g., ``python2.4``
-* Fix MacPorts Python
-* Added --unzip-setuptools option
-* Update to Setuptools 0.6c8
-* If the current directory is not writable, run ez_setup.py in ``/tmp``
-* Copy or symlink over the ``include`` directory so that packages will
-  more consistently compile.
-
-1.0
-~~~
-
-* Fix build on systems that use ``/usr/lib64``, distinct from
-  ``/usr/lib`` (specifically CentOS x64).
-* Fixed bug in ``--clear``.
-* Fixed typos in ``deactivate.bat``.
-* Preserve ``$PYTHONPATH`` when calling subprocesses.
-
-0.9.2
-~~~~~
-
-* Fix include dir copying on Windows (makes compiling possible).
-* Include the main ``lib-tk`` in the path.
-* Patch ``distutils.sysconfig``: ``get_python_inc`` and
-  ``get_python_lib`` to point to the global locations.
-* Install ``distutils.cfg`` before Setuptools, so that system
-  customizations of ``distutils.cfg`` won't effect the installation.
-* Add ``bin/pythonX.Y`` to the virtualenv (in addition to
-  ``bin/python``).
-* Fixed an issue with Mac Framework Python builds, and absolute paths
-  (from Ronald Oussoren).
-
-0.9.1
-~~~~~
-
-* Improve ability to create a virtualenv from inside a virtualenv.
-* Fix a little bug in ``bin/activate``.
-* Actually get ``distutils.cfg`` to work reliably.
-
-0.9
-~~~
-
-* Added ``lib-dynload`` and ``config`` to things that need to be
-  copied over in an environment.
-* Copy over or symlink the ``include`` directory, so that you can
-  build packages that need the C headers.
-* Include a ``distutils`` package, so you can locally update
-  ``distutils.cfg`` (in ``lib/pythonX.Y/distutils/distutils.cfg``).
-* Better avoid downloading Setuptools, and hitting PyPI on environment
-  creation.
-* Fix a problem creating a ``lib64/`` directory.
-* Should work on MacOSX Framework builds (the default Python
-  installations on Mac).  Thanks to Ronald Oussoren.
-
-0.8.4
-~~~~~
-
-* Windows installs would sometimes give errors about ``sys.prefix`` that
-  were inaccurate.
-* Slightly prettier output.
-
-0.8.3
-~~~~~
-
-* Added support for Windows.
-
-0.8.2
-~~~~~
-
-* Give a better warning if you are on an unsupported platform (Mac
-  Framework Pythons, and Windows).
-* Give error about running while inside a workingenv.
-* Give better error message about Python 2.3.
-
-0.8.1
-~~~~~
-
-Fixed packaging of the library.
-
-0.8
-~~~
-
-Initial release.  Everything is changed and new!
--- a/other-licenses/virtualenv/docs/index.txt
+++ b/other-licenses/virtualenv/docs/index.txt
@@ -1,99 +1,159 @@
 virtualenv
 ==========
 
 * `Discussion list <http://groups.google.com/group/python-virtualenv/>`_
-* `Bugs <https://bitbucket.org/ianb/virtualenv/issues/>`_
+* `Bugs <https://github.com/pypa/virtualenv/issues/>`_
 
 .. contents::
 
 .. toctree::
    :maxdepth: 1
 
    news
-   license
 
 .. comment: split here
 
-Status and License
-------------------
-
-``virtualenv`` is a successor to `workingenv
-<http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
-of `virtual-python
-<http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_.
+Installation
+------------
 
-It is written by Ian Bicking, and sponsored by the `Open Planning
-Project <http://openplans.org>`_.  It is licensed under an
-`MIT-style permissive license <license.html>`_.
+You can install virtualenv with ``pip install virtualenv``, or the `latest
+development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+with ``pip install virtualenv==dev``.
 
-You can install it with ``easy_install virtualenv``, or from the `hg
-repository <http://bitbucket.org/ianb/virtualenv>`_ or from a `tarball
-<http://bitbucket.org/ianb/virtualenv/get/tip.gz#egg=virtualenv-tip>`_
-``easy_install virtualenv==tip``.
+You can also use ``easy_install``, or if you have no Python package manager
+available at all, you can just grab the single file `virtualenv.py`_ and run
+it with ``python virtualenv.py``.
+
+.. _virtualenv.py: https://raw.github.com/pypa/virtualenv/master/virtualenv.py
 
 What It Does
 ------------
 
 ``virtualenv`` is a tool to create isolated Python environments.
 
 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.
 
 Or more generally, what if you want to install an application *and
 leave it be*?  If an application works, any change in its libraries or
 the versions of those libraries can break the application.
 
 Also, what if you can't install packages into the global
 ``site-packages`` directory?  For instance, on a shared host.
 
 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::
 
     $ python virtualenv.py ENV
 
 If you install it you can also just do ``virtualenv ENV``.
 
-This creates ``ENV/lib/python2.4/site-packages`` (or
-``ENV/lib/python2.5/site-packages`` on Python 2.5, etc), where any
-libraries you install will go.  It also creates ``ENV/bin/python``,
-which is a Python interpreter that uses this environment.  Anytime you
-use that interpreter (including when a script has
-``#!/path/to/ENV/bin/python`` in it) the libraries in that environment
-will be used.  (**Note for Windows:** scripts and executables on
-Windows go in ``ENV\Scripts\``; everywhere you see ``bin/`` replace it
-with ``Scripts\``)
+This creates ``ENV/lib/pythonX.X/site-packages``, where any libraries you
+install will go.  It also creates ``ENV/bin/python``, which is a Python
+interpreter that uses this environment.  Anytime you use that interpreter
+(including when a script has ``#!/path/to/ENV/bin/python`` in it) the libraries
+in that environment will be used.
 
-It also installs `Setuptools
-<http://peak.telecommunity.com/DevCenter/setuptools>`_ for you, and if
-you use ``ENV/bin/easy_install`` the packages will be installed into
-the environment.
-
-If you use the ``--distribute`` option, it will install `distribute
-<http://pypi.python.org/pypi/distribute>`_ for you, instead of setuptools,
-and if you use `ENV/bin/easy_install`` the packages will be installed into the
-environment.
-
-To use Distribute just call virtualenv like this::
+It also installs either `Setuptools
+<http://peak.telecommunity.com/DevCenter/setuptools>`_ or `distribute
+<http://pypi.python.org/pypi/distribute>`_ into the environment. To use
+Distribute instead of setuptools, just call virtualenv like this::
 
     $ python virtualenv.py --distribute ENV
 
-You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE (since 1.4.4) 
-and be a good Comrade
+You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE.
+
+A new virtualenv also includes the `pip <http://pypy.python.org/pypi/pip>`_
+installer, so you can use ``ENV/bin/pip`` to install additional packages into
+the environment.
+
+Environment variables and configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+virtualenv can not only be configured by passing command line options such as
+``--distribute`` but also by two other means:
+
+- Environment variables
+
+  Each command line option is automatically used to look for environment
+  variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means
+  the name of the command line options are capitalized and have dashes
+  (``'-'``) replaced with underscores (``'_'``).
+
+  For example, to automatically install Distribute instead of setuptools
+  you can also set an environment variable::
+
+      $ export VIRTUALENV_USE_DISTRIBUTE=true
+      $ python virtualenv.py ENV
+
+  It's the same as passing the option to virtualenv directly::
+
+      $ python virtualenv.py --distribute ENV
+
+  This also works for appending command line options, like ``--find-links``.
+  Just leave an empty space between the passsed values, e.g.::
+
+      $ export VIRTUALENV_EXTRA_SEARCH_DIR="/path/to/dists /path/to/other/dists"
+      $ virtualenv ENV
+
+  is the same as calling::
+
+      $ python virtualenv.py --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/other/dists ENV
+
+- Config files
+
+  virtualenv also looks for a standard ini config file. On Unix and Mac OS X
+  that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's
+  ``%HOME%\\virtualenv\\virtualenv.ini``.
+
+  The names of the settings are derived from the long command line option,
+  e.g. the option ``--distribute`` would look like this::
+
+      [virtualenv]
+      distribute = true
+
+  Appending options like ``--extra-search-dir`` can be written on multiple
+  lines::
+
+      [virtualenv]
+      extra-search-dir =
+          /path/to/dists
+          /path/to/other/dists
+
+Please have a look at the output of ``virtualenv --help`` for a full list
+of supported options.
+
+Windows Notes
+~~~~~~~~~~~~~
+
+Some paths within the virtualenv are slightly different on Windows: scripts and
+executables on Windows go in ``ENV\Scripts\`` instead of ``ENV/bin/`` and
+libraries go in ``ENV\Lib\`` rather than ``ENV/lib/``.
+
+To create a virtualenv under a path with spaces in it on Windows, you'll need
+the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed.
+
+PyPy Support
+~~~~~~~~~~~~
+
+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
 -----------------------------------
 
 While this creates an environment, it doesn't put anything into the
 environment.  Developers may find it useful to distribute a script
 that sets up a particular environment, for example a script that
 installs a particular web application.
@@ -158,58 +218,118 @@ Here's a more concrete example of how yo
                          'make-config', 'BlogApplication',
                          join(etc, 'blog.ini')])
         subprocess.call([join(home_dir, 'bin', 'paster'),
                          'setup-app', join(etc, 'blog.ini')])
     """))
     f = open('blog-bootstrap.py', 'w').write(output)
 
 Another example is available `here
-<https://svn.openplans.org/svn/fassembler/trunk/fassembler/create-venv-script.py>`_.
+<https://github.com/socialplanning/fassembler/blob/master/fassembler/create-venv-script.py>`_.
 
 activate script
 ~~~~~~~~~~~~~~~
 
 In a newly created virtualenv there will be a ``bin/activate`` shell
-script, or a ``Scripts/activate.bat`` batch file on Windows.
+script. For Windows systems, activation scripts are provided for CMD.exe
+and Powershell.
 
 On Posix systems you can do::
 
-  $ source bin/activate
+    $ 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,
 which can be useful if you have your own custom prompt that already
 displays the active environment name.  To do so, set the
 ``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
 value before running the ``activate`` script.
 
 On Windows you just do::
 
-  > \path\to\env\bin\activate.bat
+    > \path\to\env\Scripts\activate
+
+And type `deactivate` to undo the changes.
+
+Based on your active shell (CMD.exe or Powershell.exe), Windows will use
+either activate.bat or activate.ps1 (as appropriate) to activate the
+virtual environment. If using Powershell, see the notes about code signing
+below.
+
+.. note::
+
+    If using Powershell, the ``activate`` script is subject to the
+    `execution policies`_ on the system. By default on Windows 7, the system's
+    excution policy is set to ``Restricted``, meaning no scripts like the
+    ``activate`` script are allowed to be executed. But that can't stop us
+    from changing that slightly to allow it to be executed.
 
-And use ``deactivate.bat`` to undo the changes.
+    In order to use the script, you have to relax your system's execution
+    policy to ``AllSigned``, meaning all scripts on the system must be
+    digitally signed to be executed. Since the virtualenv activation
+    script is signed by one of the authors (Jannis Leidel) this level of
+    the execution policy suffices. As an adminstrator run::
+
+        PS C:\> Set-ExecutionPolicy AllSigned
 
-The ``--no-site-packages`` Option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    Then you'll be asked to trust the signer, when executing the script.
+    You will be prompted with the following::
+
+        PS C:\> virtualenv .\foo
+        New python executable in C:\foo\Scripts\python.exe
+        Installing setuptools................done.
+        Installing pip...................done.
+        PS C:\> .\foo\scripts\activate
 
-If you build with ``virtualenv --no-site-packages ENV`` it will *not*
-inherit any packages from ``/usr/lib/python2.5/site-packages`` (or
-wherever your global site-packages directory is).  This can be used if
-you don't have control over site-packages and don't want to depend on
-the packages there, or you just want more isolation from the global
-system.
+        Do you want to run software from this untrusted publisher?
+        File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
+        CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
+        and is not trusted on your system. Only run scripts from trusted publishers.
+        [V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
+        (default is "D"):A
+        (foo) PS C:\>
+
+    If you select ``[A] Always Run``, the certificate will be added to the
+    Trusted Publishers of your user account, and will be trusted in this
+    user's context henceforth. If you select ``[R] Run Once``, the script will
+    be run, but you will be prometed on a subsequent invocation. Advanced users
+    can add the signer's certificate to the Trusted Publishers of the Computer
+    account to apply to all users (though this technique is out of scope of this
+    document).
+
+    Alternatively, you may relax the system execution policy to allow running
+    of local scripts without verifying the code signature using the following::
+
+        PS C:\> Set-ExecutionPolicy RemoteSigned
+
+    Since the ``activate.ps1`` script is generated locally for each virtualenv,
+    it is not considered a remote script and can then be executed.
+
+.. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx
+
+The ``--system-site-packages`` Option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you build with ``virtualenv --system-site-packages ENV``, your virtual
+environment will inherit packages from ``/usr/lib/python2.7/site-packages``
+(or wherever your global site-packages directory is).
+
+This can be used if you have control over the global site-packages directory,
+and you want to depend on the packages there.  If you want isolation from the
+global system, do not use this flag.
 
 Using Virtualenv without ``bin/python``
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Sometimes you can't or don't want to use the Python interpreter
 created by the virtualenv.  For instance, in a `mod_python
 <http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_
 environment, there is only one interpreter.
@@ -217,23 +337,25 @@ environment, there is only one interpret
 Luckily, it's easy.  You must use the custom Python interpreter to
 *install* libraries.  But to *use* libraries, you just have to be sure
 the path is correct.  A script is available to correct the path.  You
 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 (as if the ``--system-site-packages`` flag had been used
+in creating the environment, whether it was or not).  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
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Note: this option is somewhat experimental, and there are probably
 caveats that have not yet been identified.  Also this does not
 currently work on Windows.
 
@@ -260,18 +382,65 @@ computers.  Some known environmental dif
 incompatibilities: a different version of Python, when one platform
 uses UCS2 for its internal unicode representation and another uses
 UCS4 (a compile-time option), obvious platform changes like Windows
 vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C
 libraries on the system, if those C libraries are located somewhere
 different (either different versions, or a different filesystem
 layout).
 
-Currently the ``--no-site-packages`` option will not be honored if you
-use this on an environment.
+If you use this flag to create an environment, currently, the
+``--system-site-packages`` option will be implied.
+
+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. The local distribution lookup is done in this order and the
+following locations:
+
+    #. The current directory.
+    #. The directory where virtualenv.py is located.
+    #. A ``virtualenv_support`` directory relative to the directory where
+       virtualenv.py is located.
+    #. If the file being executed is not named virtualenv.py (i.e. is a boot
+       script), a ``virtualenv_support`` directory relative to wherever
+       virtualenv.py is actually installed.
 
 Compare & Contrast with Alternatives
 ------------------------------------
 
 There are several alternatives that create isolated environments:
 
 * ``workingenv`` (which I do not suggest you use anymore) is the
   predecessor to this library.  It used the main Python interpreter,
@@ -301,16 +470,53 @@ There are several alternatives that crea
   up scripts with very particular packages.  As a declarative system,
   it is somewhat easier to repeat and manage, but more difficult to
   experiment with.  ``zc.buildout`` includes the ability to setup
   non-Python systems (e.g., a database server or an Apache instance).
 
 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/contributing.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
 -----------------------------
 
 * James Gardner has written a tutorial on using `virtualenv with
   Pylons
   <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_.
 
 * `Blog announcement
@@ -328,8 +534,22 @@ Other Documentation and Links
   <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
 
 * `Using virtualenv with mod_wsgi
   <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
 
 * `virtualenv commands
   <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
   workflow-related tools around virtualenv.
+
+Status and License
+------------------
+
+``virtualenv`` is a successor to `workingenv
+<http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
+of `virtual-python
+<http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-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>`_.
+It is licensed under an
+`MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
deleted file mode 100644
--- a/other-licenses/virtualenv/docs/license.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-License
-=======
-
-Copyright (c) 2007 Ian Bicking and Contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- a/other-licenses/virtualenv/docs/news.txt
+++ b/other-licenses/virtualenv/docs/news.txt
@@ -1,27 +1,192 @@
 Changes & News
 --------------
 
+1.7.1.2 (2012-02-17)
+~~~~~~~~~~~~~~~~~~~~
+
+* Fixed minor issue in `--relocatable`. Thanks, Cap Petschulat.
+
+1.7.1.1 (2012-02-16)
+~~~~~~~~~~~~~~~~~~~~
+
+* Bumped the version string in ``virtualenv.py`` up, too.
+
+* Fixed rST rendering bug of long description.
+
+1.7.1 (2012-02-16)
+~~~~~~~~~~~~~~~~~~
+
+* Update embedded pip to version 1.1.
+
+* Fix `--relocatable` under Python 3. Thanks Doug Hellmann.
+
+* Added environ PATH modification to activate_this.py. Thanks Doug
+  Napoleone. Fixes #14.
+
+* Support creating virtualenvs directly from a Python build directory on
+  Windows. Thanks CBWhiz. Fixes #139.
+
+* Use non-recursive symlinks to fix things up for posix_local install
+  scheme. Thanks michr.
+
+* Made activate script available for use with msys and cygwin on Windows.
+  Thanks Greg Haskins, Cliff Xuan, Jonathan Griffin and Doug Napoleone.
+  Fixes #176.
+
+* Fixed creation of virtualenvs on Windows when Python is not installed for
+  all users. Thanks Anatoly Techtonik for report and patch and Doug
+  Napoleone for testing and confirmation. Fixes #87.
+
+* Fixed creation of virtualenvs using -p in installs where some modules
+  that ought to be in the standard library (e.g. `readline`) are actually
+  installed in `site-packages` next to `virtualenv.py`. Thanks Greg Haskins
+  for report and fix. Fixes #167.
+
+* Added activation script for Powershell (signed by Jannis Leidel). Many
+  thanks to Jason R. Coombs.
+
+1.7 (2011-11-30)
+~~~~~~~~~~~~~~~~
+
+* Gave user-provided ``--extra-search-dir`` priority over default dirs for
+  finding setuptools/distribute (it already had priority for finding pip).
+  Thanks Ethan Jucovy.
+
+* Updated embedded Distribute release to 0.6.24. Thanks Alex Gronholm.
+
+* Made ``--no-site-packages`` behavior the default behavior.  The
+  ``--no-site-packages`` flag is still permitted, but displays a warning when
+  used. Thanks Chris McDonough.
+
+* New flag: ``--system-site-packages``; this flag should be passed to get the
+  previous default global-site-package-including behavior back.
+
+* Added ability to set command options as environment variables and options
+  in a ``virtualenv.ini`` file.
+
+* Fixed various encoding related issues with paths. Thanks Gunnlaugur Thor Briem.
+
+* Made ``virtualenv.py`` script executable.
+
+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
+~~~
+
+* Added Python 3 support! Huge thanks to Vinay Sajip and Vitaly Babiy.
+
+* Fixed creation of virtualenvs on Mac OS X when standard library modules
+  (readline) are installed outside the standard library.
+
+* Updated bundled pip to 1.0.
+
+1.5.2
+~~~~~
+
+* Moved main repository to Github: https://github.com/pypa/virtualenv
+
+* Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer and Brian Rosner
+
+* Fixed a few more pypy related bugs.
+
+* Updated bundled pip to 0.8.2.
+
+* Handed project over to new team of maintainers.
+
+* Moved virtualenv to Github at https://github.com/pypa/virtualenv
+
+1.5.1
+~~~~~
+
+* Added ``_weakrefset`` requirement for Python 2.7.1.
+
+* Fixed Windows regression in 1.5
+
+1.5
+~~~
+
+* Include pip 0.8.1.
+
+* Add support for PyPy.
+
+* Uses a proper temporary dir when installing environment requirements.
+
+* Add ``--prompt`` option to be able to override the default prompt prefix.
+
+* Fix an issue with ``--relocatable`` on Windows.
+
+* Fix issue with installing the wrong version of distribute.
+
+* Add fish and csh activate scripts.
+
+1.4.9
+~~~~~
+
+* Include pip 0.7.2
+
 1.4.8
------
+~~~~~
 
 * Fix for Mac OS X Framework builds that use
   ``--universal-archs=intel``
 
 * Fix ``activate_this.py`` on Windows.
 
 * Allow ``$PYTHONHOME`` to be set, so long as you use ``source
   bin/activate`` it will get unset; if you leave it set and do not
   activate the environment it will still break the environment.
 
 * Include pip 0.7.1
 
 1.4.7
------
+~~~~~
 
 * Include pip 0.7
 
 1.4.6
 ~~~~~
 
 * Allow ``activate.sh`` to skip updating the prompt (by setting
   ``$VIRTUAL_ENV_DISABLE_PROMPT``).
--- a/other-licenses/virtualenv/setup.py
+++ b/other-licenses/virtualenv/setup.py
@@ -2,67 +2,57 @@ import sys, os
 try:
     from setuptools import setup
     kw = {'entry_points':
           """[console_scripts]\nvirtualenv = virtualenv:main\n""",
           'zip_safe': False}
 except ImportError:
     from distutils.core import setup
     if sys.platform == 'win32':
-        print 'Note: without Setuptools installed you will have to use "python -m virtualenv ENV"'
+        print('Note: without Setuptools installed you will have to use "python -m virtualenv ENV"')
+        kw = {}
     else:
         kw = {'scripts': ['scripts/virtualenv']}
-import re
 
 here = os.path.dirname(os.path.abspath(__file__))
 
-## Figure out the version from virtualenv.py:
-version_re = re.compile(
-    r'virtualenv_version = "(.*?)"')
-fp = open(os.path.join(here, 'virtualenv.py'))
-version = None
-for line in fp:
-    match = version_re.search(line)
-    if match:
-        version = match.group(1)
-        break
-else:
-    raise Exception("Cannot find version in virtualenv.py")
-fp.close()
-
 ## Get long_description from index.txt:
 f = open(os.path.join(here, 'docs', 'index.txt'))
 long_description = f.read().strip()
 long_description = long_description.split('split here', 1)[1]
 f.close()
-
-## A warning just for Ian (related to distribution):
-try:
-    import getpass
-except ImportError:
-    is_ianb = False
-else:
-    is_ianb = getpass.getuser() == 'ianb'
-
-if is_ianb and 'register' in sys.argv:
-    if 'hg tip\n~~~~~~' in long_description:
-        print >> sys.stderr, (
-            "WARNING: hg tip is in index.txt")
+f = open(os.path.join(here, 'docs', 'news.txt'))
+long_description += "\n\n" + f.read()
+f.close()
 
 setup(name='virtualenv',
-      version=version,
+      # If you change the version here, change it in virtualenv.py and
+      # docs/conf.py as well
+      version="1.7.1.2",
       description="Virtual Python Environment builder",
       long_description=long_description,
       classifiers=[
         'Development Status :: 4 - Beta',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: MIT License',
-      ],
+        'Programming Language :: Python :: 2',
+        'Programming Language :: Python :: 2.4',
+        'Programming Language :: Python :: 2.5',
+        'Programming Language :: Python :: 2.6',
+        'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.1',
+        'Programming Language :: Python :: 3.2',
+        ],
       keywords='setuptools deployment installation distutils',
       author='Ian Bicking',
       author_email='ianb@colorstudy.com',
-      url='http://virtualenv.openplans.org',
+      maintainer='Jannis Leidel, Carl Meyer and Brian Rosner',
+      maintainer_email='python-virtualenv@groups.google.com',
+      url='http://www.virtualenv.org',
       license='MIT',
       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
       )
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/PKG-INFO
@@ -0,0 +1,1022 @@
+Metadata-Version: 1.0
+Name: virtualenv
+Version: 1.7.1.2
+Summary: Virtual Python Environment builder
+Home-page: http://www.virtualenv.org
+Author: Jannis Leidel, Carl Meyer and Brian Rosner
+Author-email: python-virtualenv@groups.google.com
+License: MIT
+Description: 
+        
+        Installation
+        ------------
+        
+        You can install virtualenv with ``pip install virtualenv``, or the `latest
+        development version <https://github.com/pypa/virtualenv/tarball/develop#egg=virtualenv-dev>`_
+        with ``pip install virtualenv==dev``.
+        
+        You can also use ``easy_install``, or if you have no Python package manager
+        available at all, you can just grab the single file `virtualenv.py`_ and run
+        it with ``python virtualenv.py``.
+        
+        .. _virtualenv.py: https://raw.github.com/pypa/virtualenv/master/virtualenv.py
+        
+        What It Does
+        ------------
+        
+        ``virtualenv`` is a tool to create isolated Python environments.
+        
+        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.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.
+        
+        Or more generally, what if you want to install an application *and
+        leave it be*?  If an application works, any change in its libraries or
+        the versions of those libraries can break the application.
+        
+        Also, what if you can't install packages into the global
+        ``site-packages`` directory?  For instance, on a shared host.
+        
+        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 access the globally installed libraries either).
+        
+        The basic usage is::
+        
+            $ python virtualenv.py ENV
+        
+        If you install it you can also just do ``virtualenv ENV``.
+        
+        This creates ``ENV/lib/pythonX.X/site-packages``, where any libraries you
+        install will go.  It also creates ``ENV/bin/python``, which is a Python
+        interpreter that uses this environment.  Anytime you use that interpreter
+        (including when a script has ``#!/path/to/ENV/bin/python`` in it) the libraries
+        in that environment will be used.
+        
+        It also installs either `Setuptools
+        <http://peak.telecommunity.com/DevCenter/setuptools>`_ or `distribute
+        <http://pypi.python.org/pypi/distribute>`_ into the environment. To use
+        Distribute instead of setuptools, just call virtualenv like this::
+        
+            $ python virtualenv.py --distribute ENV
+        
+        You can also set the environment variable VIRTUALENV_USE_DISTRIBUTE.
+        
+        A new virtualenv also includes the `pip <http://pypy.python.org/pypi/pip>`_
+        installer, so you can use ``ENV/bin/pip`` to install additional packages into
+        the environment.
+        
+        Environment variables and configuration files
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        virtualenv can not only be configured by passing command line options such as
+        ``--distribute`` but also by two other means:
+        
+        - Environment variables
+        
+          Each command line option is automatically used to look for environment
+          variables with the name format ``VIRTUALENV_<UPPER_NAME>``. That means
+          the name of the command line options are capitalized and have dashes
+          (``'-'``) replaced with underscores (``'_'``).
+        
+          For example, to automatically install Distribute instead of setuptools
+          you can also set an environment variable::
+        
+              $ export VIRTUALENV_USE_DISTRIBUTE=true
+              $ python virtualenv.py ENV
+        
+          It's the same as passing the option to virtualenv directly::
+        
+              $ python virtualenv.py --distribute ENV
+        
+          This also works for appending command line options, like ``--find-links``.
+          Just leave an empty space between the passsed values, e.g.::
+        
+              $ export VIRTUALENV_EXTRA_SEARCH_DIR="/path/to/dists /path/to/other/dists"
+              $ virtualenv ENV
+        
+          is the same as calling::
+        
+              $ python virtualenv.py --extra-search-dir=/path/to/dists --extra-search-dir=/path/to/other/dists ENV
+        
+        - Config files
+        
+          virtualenv also looks for a standard ini config file. On Unix and Mac OS X
+          that's ``$HOME/.virtualenv/virtualenv.ini`` and on Windows, it's
+          ``%HOME%\\virtualenv\\virtualenv.ini``.
+        
+          The names of the settings are derived from the long command line option,
+          e.g. the option ``--distribute`` would look like this::
+        
+              [virtualenv]
+              distribute = true
+        
+          Appending options like ``--extra-search-dir`` can be written on multiple
+          lines::
+        
+              [virtualenv]
+              extra-search-dir =
+                  /path/to/dists
+                  /path/to/other/dists
+        
+        Please have a look at the output of ``virtualenv --help`` for a full list
+        of supported options.
+        
+        Windows Notes
+        ~~~~~~~~~~~~~
+        
+        Some paths within the virtualenv are slightly different on Windows: scripts and
+        executables on Windows go in ``ENV\Scripts\`` instead of ``ENV/bin/`` and
+        libraries go in ``ENV\Lib\`` rather than ``ENV/lib/``.
+        
+        To create a virtualenv under a path with spaces in it on Windows, you'll need
+        the `win32api <http://sourceforge.net/projects/pywin32/>`_ library installed.
+        
+        PyPy Support
+        ~~~~~~~~~~~~
+        
+        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
+        -----------------------------------
+        
+        While this creates an environment, it doesn't put anything into the
+        environment.  Developers may find it useful to distribute a script
+        that sets up a particular environment, for example a script that
+        installs a particular web application.
+        
+        To create a script like this, call
+        ``virtualenv.create_bootstrap_script(extra_text)``, and write the
+        result to your new bootstrapping script.  Here's the documentation
+        from the docstring:
+        
+        Creates a bootstrap script, which is like this script but with
+        extend_parser, adjust_options, and after_install hooks.
+        
+        This returns a string that (written to disk of course) can be used
+        as a bootstrap script with your own customizations.  The script
+        will be the standard virtualenv.py script, with your extra text
+        added (your extra text should be Python code).
+        
+        If you include these functions, they will be called:
+        
+        ``extend_parser(optparse_parser)``:
+            You can add or remove options from the parser here.
+        
+        ``adjust_options(options, args)``:
+            You can change options here, or change the args (if you accept
+            different kinds of arguments, be sure you modify ``args`` so it is
+            only ``[DEST_DIR]``).
+        
+        ``after_install(options, home_dir)``:
+        
+            After everything is installed, this function is called.  This
+            is probably the function you are most likely to use.  An
+            example would be::
+        
+                def after_install(options, home_dir):
+                    if sys.platform == 'win32':
+                        bin = 'Scripts'
+                    else:
+                        bin = 'bin'
+                    subprocess.call([join(home_dir, bin, 'easy_install'),
+                                     'MyPackage'])
+                    subprocess.call([join(home_dir, bin, 'my-package-script'),
+                                     'setup', home_dir])
+        
+            This example immediately installs a package, and runs a setup
+            script from that package.
+        
+        Bootstrap Example
+        ~~~~~~~~~~~~~~~~~
+        
+        Here's a more concrete example of how you could use this::
+        
+            import virtualenv, textwrap
+            output = virtualenv.create_bootstrap_script(textwrap.dedent("""
+            import os, subprocess
+            def after_install(options, home_dir):
+                etc = join(home_dir, 'etc')
+                if not os.path.exists(etc):
+                    os.makedirs(etc)
+                subprocess.call([join(home_dir, 'bin', 'easy_install'),
+                                 'BlogApplication'])
+                subprocess.call([join(home_dir, 'bin', 'paster'),
+                                 'make-config', 'BlogApplication',
+                                 join(etc, 'blog.ini')])
+                subprocess.call([join(home_dir, 'bin', 'paster'),
+                                 'setup-app', join(etc, 'blog.ini')])
+            """))
+            f = open('blog-bootstrap.py', 'w').write(output)
+        
+        Another example is available `here
+        <https://github.com/socialplanning/fassembler/blob/master/fassembler/create-venv-script.py>`_.
+        
+        activate script
+        ~~~~~~~~~~~~~~~
+        
+        In a newly created virtualenv there will be a ``bin/activate`` shell
+        script. For Windows systems, activation scripts are provided for CMD.exe
+        and Powershell.
+        
+        On Posix systems you can do::
+        
+            $ source bin/activate
+        
+        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,
+        which can be useful if you have your own custom prompt that already
+        displays the active environment name.  To do so, set the
+        ``VIRTUAL_ENV_DISABLE_PROMPT`` environment variable to any non-empty
+        value before running the ``activate`` script.
+        
+        On Windows you just do::
+        
+            > \path\to\env\Scripts\activate
+        
+        And type `deactivate` to undo the changes.
+        
+        Based on your active shell (CMD.exe or Powershell.exe), Windows will use
+        either activate.bat or activate.ps1 (as appropriate) to activate the
+        virtual environment. If using Powershell, see the notes about code signing
+        below.
+        
+        .. note::
+        
+            If using Powershell, the ``activate`` script is subject to the
+            `execution policies`_ on the system. By default on Windows 7, the system's
+            excution policy is set to ``Restricted``, meaning no scripts like the
+            ``activate`` script are allowed to be executed. But that can't stop us
+            from changing that slightly to allow it to be executed.
+        
+            In order to use the script, you have to relax your system's execution
+            policy to ``AllSigned``, meaning all scripts on the system must be
+            digitally signed to be executed. Since the virtualenv activation
+            script is signed by one of the authors (Jannis Leidel) this level of
+            the execution policy suffices. As an adminstrator run::
+        
+                PS C:\> Set-ExecutionPolicy AllSigned
+        
+            Then you'll be asked to trust the signer, when executing the script.
+            You will be prompted with the following::
+        
+                PS C:\> virtualenv .\foo
+                New python executable in C:\foo\Scripts\python.exe
+                Installing setuptools................done.
+                Installing pip...................done.
+                PS C:\> .\foo\scripts\activate
+        
+                Do you want to run software from this untrusted publisher?
+                File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
+                CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
+                and is not trusted on your system. Only run scripts from trusted publishers.
+                [V] Never run  [D] Do not run  [R] Run once  [A] Always run  [?] Help
+                (default is "D"):A
+                (foo) PS C:\>
+        
+            If you select ``[A] Always Run``, the certificate will be added to the
+            Trusted Publishers of your user account, and will be trusted in this
+            user's context henceforth. If you select ``[R] Run Once``, the script will
+            be run, but you will be prometed on a subsequent invocation. Advanced users
+            can add the signer's certificate to the Trusted Publishers of the Computer
+            account to apply to all users (though this technique is out of scope of this
+            document).
+        
+            Alternatively, you may relax the system execution policy to allow running
+            of local scripts without verifying the code signature using the following::
+        
+                PS C:\> Set-ExecutionPolicy RemoteSigned
+        
+            Since the ``activate.ps1`` script is generated locally for each virtualenv,
+            it is not considered a remote script and can then be executed.
+        
+        .. _`execution policies`: http://technet.microsoft.com/en-us/library/dd347641.aspx
+        
+        The ``--system-site-packages`` Option
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        If you build with ``virtualenv --system-site-packages ENV``, your virtual
+        environment will inherit packages from ``/usr/lib/python2.7/site-packages``
+        (or wherever your global site-packages directory is).
+        
+        This can be used if you have control over the global site-packages directory,
+        and you want to depend on the packages there.  If you want isolation from the
+        global system, do not use this flag.
+        
+        Using Virtualenv without ``bin/python``
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        Sometimes you can't or don't want to use the Python interpreter
+        created by the virtualenv.  For instance, in a `mod_python
+        <http://www.modpython.org/>`_ or `mod_wsgi <http://www.modwsgi.org/>`_
+        environment, there is only one interpreter.
+        
+        Luckily, it's easy.  You must use the custom Python interpreter to
+        *install* libraries.  But to *use* libraries, you just have to be sure
+        the path is correct.  A script is available to correct the path.  You
+        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, global items will
+        always be accessible (as if the ``--system-site-packages`` flag had been used
+        in creating the environment, whether it was or not).  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
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        
+        Note: this option is somewhat experimental, and there are probably
+        caveats that have not yet been identified.  Also this does not
+        currently work on Windows.
+        
+        Normally environments are tied to a specific path.  That means that
+        you cannot move an environment around or copy it to another computer.
+        You can fix up an environment to make it relocatable with the
+        command::
+        
+            $ virtualenv --relocatable ENV
+        
+        This will make some of the files created by setuptools or distribute
+        use relative paths, and will change all the scripts to use ``activate_this.py``
+        instead of using the location of the Python interpreter to select the
+        environment.
+        
+        **Note:** you must run this after you've installed *any* packages into
+        the environment.  If you make an environment relocatable, then
+        install a new package, you must run ``virtualenv --relocatable``
+        again.
+        
+        Also, this **does not make your packages cross-platform**.  You can
+        move the directory around, but it can only be used on other similar
+        computers.  Some known environmental differences that can cause
+        incompatibilities: a different version of Python, when one platform
+        uses UCS2 for its internal unicode representation and another uses
+        UCS4 (a compile-time option), obvious platform changes like Windows
+        vs. Linux, or Intel vs. ARM, and if you have libraries that bind to C
+        libraries on the system, if those C libraries are located somewhere
+        different (either different versions, or a different filesystem
+        layout).
+        
+        If you use this flag to create an environment, currently, the
+        ``--system-site-packages`` option will be implied.
+        
+        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. The local distribution lookup is done in this order and the
+        following locations:
+        
+            #. The current directory.
+            #. The directory where virtualenv.py is located.
+            #. A ``virtualenv_support`` directory relative to the directory where
+               virtualenv.py is located.
+            #. If the file being executed is not named virtualenv.py (i.e. is a boot
+               script), a ``virtualenv_support`` directory relative to wherever
+               virtualenv.py is actually installed.
+        
+        Compare & Contrast with Alternatives
+        ------------------------------------
+        
+        There are several alternatives that create isolated environments:
+        
+        * ``workingenv`` (which I do not suggest you use anymore) is the
+          predecessor to this library.  It used the main Python interpreter,
+          but relied on setting ``$PYTHONPATH`` to activate the environment.
+          This causes problems when running Python scripts that aren't part of
+          the environment (e.g., a globally installed ``hg`` or ``bzr``).  It
+          also conflicted a lot with Setuptools.
+        
+        * `virtual-python
+          <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python>`_
+          is also a predecessor to this library.  It uses only symlinks, so it
+          couldn't work on Windows.  It also symlinks over the *entire*
+          standard library and global ``site-packages``.  As a result, it
+          won't see new additions to the global ``site-packages``.
+        
+          This script only symlinks a small portion of the standard library
+          into the environment, and so on Windows it is feasible to simply
+          copy these files over.  Also, it creates a new/empty
+          ``site-packages`` and also adds the global ``site-packages`` to the
+          path, so updates are tracked separately.  This script also installs
+          Setuptools automatically, saving a step and avoiding the need for
+          network access.
+        
+        * `zc.buildout <http://pypi.python.org/pypi/zc.buildout>`_ doesn't
+          create an isolated Python environment in the same style, but
+          achieves similar results through a declarative config file that sets
+          up scripts with very particular packages.  As a declarative system,
+          it is somewhat easier to repeat and manage, but more difficult to
+          experiment with.  ``zc.buildout`` includes the ability to setup
+          non-Python systems (e.g., a database server or an Apache instance).
+        
+        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/contributing.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
+        -----------------------------
+        
+        * James Gardner has written a tutorial on using `virtualenv with
+          Pylons
+          <http://wiki.pylonshq.com/display/pylonscookbook/Using+a+Virtualenv+Sandbox>`_.
+        
+        * `Blog announcement
+          <http://blog.ianbicking.org/2007/10/10/workingenv-is-dead-long-live-virtualenv/>`_.
+        
+        * Doug Hellmann wrote a description of his `command-line work flow
+          using virtualenv (virtualenvwrapper)
+          <http://www.doughellmann.com/articles/CompletelyDifferent-2008-05-virtualenvwrapper/index.html>`_
+          including some handy scripts to make working with multiple
+          environments easier.  He also wrote `an example of using virtualenv
+          to try IPython
+          <http://www.doughellmann.com/articles/CompletelyDifferent-2008-02-ipython-and-virtualenv/index.html>`_.
+        
+        * Chris Perkins created a `showmedo video including virtualenv
+          <http://showmedo.com/videos/video?name=2910000&fromSeriesID=291>`_.
+        
+        * `Using virtualenv with mod_wsgi
+          <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
+        
+        * `virtualenv commands
+          <http://thisismedium.com/tech/extending-virtualenv/>`_ for some more
+          workflow-related tools around virtualenv.
+        
+        Status and License
+        ------------------
+        
+        ``virtualenv`` is a successor to `workingenv
+        <http://cheeseshop.python.org/pypi/workingenv.py>`_, and an extension
+        of `virtual-python
+        <http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-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>`_.
+        It is licensed under an
+        `MIT-style permissive license <https://github.com/pypa/virtualenv/raw/master/LICENSE.txt>`_.
+        
+        Changes & News
+        --------------
+        
+        1.7.1.2 (2012-02-17)
+        ~~~~~~~~~~~~~~~~~~~~
+        
+        * Fixed minor issue in `--relocatable`. Thanks, Cap Petschulat.
+        
+        1.7.1.1 (2012-02-16)
+        ~~~~~~~~~~~~~~~~~~~~
+        
+        * Bumped the version string in ``virtualenv.py`` up, too.
+        
+        * Fixed rST rendering bug of long description.
+        
+        1.7.1 (2012-02-16)
+        ~~~~~~~~~~~~~~~~~~
+        
+        * Update embedded pip to version 1.1.
+        
+        * Fix `--relocatable` under Python 3. Thanks Doug Hellmann.
+        
+        * Added environ PATH modification to activate_this.py. Thanks Doug
+          Napoleone. Fixes #14.
+        
+        * Support creating virtualenvs directly from a Python build directory on
+          Windows. Thanks CBWhiz. Fixes #139.
+        
+        * Use non-recursive symlinks to fix things up for posix_local install
+          scheme. Thanks michr.
+        
+        * Made activate script available for use with msys and cygwin on Windows.
+          Thanks Greg Haskins, Cliff Xuan, Jonathan Griffin and Doug Napoleone.
+          Fixes #176.
+        
+        * Fixed creation of virtualenvs on Windows when Python is not installed for
+          all users. Thanks Anatoly Techtonik for report and patch and Doug
+          Napoleone for testing and confirmation. Fixes #87.
+        
+        * Fixed creation of virtualenvs using -p in installs where some modules
+          that ought to be in the standard library (e.g. `readline`) are actually
+          installed in `site-packages` next to `virtualenv.py`. Thanks Greg Haskins
+          for report and fix. Fixes #167.
+        
+        * Added activation script for Powershell (signed by Jannis Leidel). Many
+          thanks to Jason R. Coombs.
+        
+        1.7 (2011-11-30)
+        ~~~~~~~~~~~~~~~~
+        
+        * Gave user-provided ``--extra-search-dir`` priority over default dirs for
+          finding setuptools/distribute (it already had priority for finding pip).
+          Thanks Ethan Jucovy.
+        
+        * Updated embedded Distribute release to 0.6.24. Thanks Alex Gronholm.
+        
+        * Made ``--no-site-packages`` behavior the default behavior.  The
+          ``--no-site-packages`` flag is still permitted, but displays a warning when
+          used. Thanks Chris McDonough.
+        
+        * New flag: ``--system-site-packages``; this flag should be passed to get the
+          previous default global-site-package-including behavior back.
+        
+        * Added ability to set command options as environment variables and options
+          in a ``virtualenv.ini`` file.
+        
+        * Fixed various encoding related issues with paths. Thanks Gunnlaugur Thor Briem.
+        
+        * Made ``virtualenv.py`` script executable.
+        
+        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
+        ~~~
+        
+        * Added Python 3 support! Huge thanks to Vinay Sajip and Vitaly Babiy.
+        
+        * Fixed creation of virtualenvs on Mac OS X when standard library modules
+          (readline) are installed outside the standard library.
+        
+        * Updated bundled pip to 1.0.
+        
+        1.5.2
+        ~~~~~
+        
+        * Moved main repository to Github: https://github.com/pypa/virtualenv
+        
+        * Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer and Brian Rosner
+        
+        * Fixed a few more pypy related bugs.
+        
+        * Updated bundled pip to 0.8.2.
+        
+        * Handed project over to new team of maintainers.
+        
+        * Moved virtualenv to Github at https://github.com/pypa/virtualenv
+        
+        1.5.1
+        ~~~~~
+        
+        * Added ``_weakrefset`` requirement for Python 2.7.1.
+        
+        * Fixed Windows regression in 1.5
+        
+        1.5
+        ~~~
+        
+        * Include pip 0.8.1.
+        
+        * Add support for PyPy.
+        
+        * Uses a proper temporary dir when installing environment requirements.
+        
+        * Add ``--prompt`` option to be able to override the default prompt prefix.
+        
+        * Fix an issue with ``--relocatable`` on Windows.
+        
+        * Fix issue with installing the wrong version of distribute.
+        
+        * Add fish and csh activate scripts.
+        
+        1.4.9
+        ~~~~~
+        
+        * Include pip 0.7.2
+        
+        1.4.8
+        ~~~~~
+        
+        * Fix for Mac OS X Framework builds that use
+          ``--universal-archs=intel``
+        
+        * Fix ``activate_this.py`` on Windows.
+        
+        * Allow ``$PYTHONHOME`` to be set, so long as you use ``source
+          bin/activate`` it will get unset; if you leave it set and do not
+          activate the environment it will still break the environment.
+        
+        * Include pip 0.7.1
+        
+        1.4.7
+        ~~~~~
+        
+        * Include pip 0.7
+        
+        1.4.6
+        ~~~~~
+        
+        * Allow ``activate.sh`` to skip updating the prompt (by setting
+          ``$VIRTUAL_ENV_DISABLE_PROMPT``).
+        
+        1.4.5
+        ~~~~~
+        
+        * Include pip 0.6.3
+        
+        * Fix ``activate.bat`` and ``deactivate.bat`` under Windows when
+          ``PATH`` contained a parenthesis
+        
+        1.4.4
+        ~~~~~
+        
+        * Include pip 0.6.2 and Distribute 0.6.10
+        
+        * Create the ``virtualenv`` script even when Setuptools isn't
+          installed
+        
+        * Fix problem with ``virtualenv --relocate`` when ``bin/`` has
+          subdirectories (e.g., ``bin/.svn/``); from Alan Franzoni.
+        
+        * If you set ``$VIRTUALENV_USE_DISTRIBUTE`` then virtualenv will use
+          Distribute by default (so you don't have to remember to use
+          ``--distribute``).
+        
+        1.4.3
+        ~~~~~
+        
+        * Include pip 0.6.1
+        
+        1.4.2
+        ~~~~~
+        
+        * Fix pip installation on Windows
+        
+        * Fix use of stand-alone ``virtualenv.py`` (and boot scripts)
+        
+        * Exclude ~/.local (user site-packages) from environments when using
+          ``--no-site-packages``
+        
+        1.4.1
+        ~~~~~
+        
+        * Include pip 0.6
+        
+        1.4
+        ~~~
+        
+        * Updated setuptools to 0.6c11
+        
+        * Added the --distribute option
+        
+        * Fixed packaging problem of support-files
+        
+        1.3.4
+        ~~~~~
+        
+        * Virtualenv now copies the actual embedded Python binary on
+          Mac OS X to fix a hang on Snow Leopard (10.6).
+        
+        * Fail more gracefully on Windows when ``win32api`` is not installed.
+        
+        * Fix site-packages taking precedent over Jython's ``__classpath__``
+          and also specially handle the new ``__pyclasspath__`` entry in
+          ``sys.path``.
+        
+        * Now copies Jython's ``registry`` file to the virtualenv if it exists.
+        
+        * Better find libraries when compiling extensions on Windows.
+        
+        * Create ``Scripts\pythonw.exe`` on Windows.
+        
+        * Added support for the Debian/Ubuntu
+          ``/usr/lib/pythonX.Y/dist-packages`` directory.
+        
+        * Set ``distutils.sysconfig.get_config_vars()['LIBDIR']`` (based on
+          ``sys.real_prefix``) which is reported to help building on Windows.
+        
+        * Make ``deactivate`` work on ksh
+        
+        * Fixes for ``--python``: make it work with ``--relocatable`` and the
+          symlink created to the exact Python version.
+        
+        1.3.3
+        ~~~~~
+        
+        * Use Windows newlines in ``activate.bat``, which has been reported to help
+          when using non-ASCII directory names.
+        
+        * Fixed compatibility with Jython 2.5b1.
+        
+        * Added a function ``virtualenv.install_python`` for more fine-grained
+          access to what ``virtualenv.create_environment`` does.
+        
+        * Fix `a problem <https://bugs.launchpad.net/virtualenv/+bug/241581>`_
+          with Windows and paths that contain spaces.
+        
+        * If ``/path/to/env/.pydistutils.cfg`` exists (or
+          ``/path/to/env/pydistutils.cfg`` on Windows systems) then ignore
+          ``~/.pydistutils.cfg`` and use that other file instead.
+        
+        * Fix ` a problem
+          <https://bugs.launchpad.net/virtualenv/+bug/340050>`_ picking up
+          some ``.so`` libraries in ``/usr/local``.
+        
+        1.3.2
+        ~~~~~
+        
+        * Remove the ``[install] prefix = ...`` setting from the virtualenv
+          ``distutils.cfg`` -- this has been causing problems for a lot of
+          people, in rather obscure ways.
+        
+        * If you use a `boot script <./index.html#boot-script>`_ it will attempt to import ``virtualenv``
+          and find a pre-downloaded Setuptools egg using that.
+        
+        * Added platform-specific paths, like ``/usr/lib/pythonX.Y/plat-linux2``
+        
+        1.3.1
+        ~~~~~
+        
+        * Real Python 2.6 compatibility.  Backported the Python 2.6 updates to
+          ``site.py``, including `user directories
+          <http://docs.python.org/dev/whatsnew/2.6.html#pep-370-per-user-site-packages-directory>`_
+          (this means older versions of Python will support user directories,
+          whether intended or not).
+        
+        * Always set ``[install] prefix`` in ``distutils.cfg`` -- previously
+          on some platforms where a system-wide ``distutils.cfg`` was present
+          with a ``prefix`` setting, packages would be installed globally
+          (usually in ``/usr/local/lib/pythonX.Y/site-packages``).
+        
+        * Sometimes Cygwin seems to leave ``.exe`` off ``sys.executable``; a
+          workaround is added.
+        
+        * Fix ``--python`` option.
+        
+        * Fixed handling of Jython environments that use a
+          jython-complete.jar.
+        
+        1.3
+        ~~~
+        
+        * Update to Setuptools 0.6c9
+        * Added an option ``virtualenv --relocatable EXISTING_ENV``, which
+          will make an existing environment "relocatable" -- the paths will
+          not be absolute in scripts, ``.egg-info`` and ``.pth`` files.  This
+          may assist in building environments that can be moved and copied.
+          You have to run this *after* any new packages installed.
+        * Added ``bin/activate_this.py``, a file you can use like
+          ``execfile("path_to/activate_this.py",
+          dict(__file__="path_to/activate_this.py"))`` -- this will activate
+          the environment in place, similar to what `the mod_wsgi example
+          does <http://code.google.com/p/modwsgi/wiki/VirtualEnvironments>`_.
+        * For Mac framework builds of Python, the site-packages directory
+          ``/Library/Python/X.Y/site-packages`` is added to ``sys.path``, from
+          Andrea Rech.
+        * Some platform-specific modules in Macs are added to the path now
+          (``plat-darwin/``, ``plat-mac/``, ``plat-mac/lib-scriptpackages``),
+          from Andrea Rech.
+        * Fixed a small Bashism in the ``bin/activate`` shell script.
+        * Added ``__future__`` to the list of required modules, for Python
+          2.3.  You'll still need to backport your own ``subprocess`` module.
+        * Fixed the ``__classpath__`` entry in Jython's ``sys.path`` taking
+          precedent over virtualenv's libs.
+        
+        1.2
+        ~~~
+        
+        * Added a ``--python`` option to select the Python interpreter.
+        * Add ``warnings`` to the modules copied over, for Python 2.6 support.
+        * Add ``sets`` to the module copied over for Python 2.3 (though Python
+          2.3 still probably doesn't work).
+        
+        1.1.1
+        ~~~~~
+        
+        * Added support for Jython 2.5.
+        
+        1.1
+        ~~~
+        
+        * Added support for Python 2.6.
+        * Fix a problem with missing ``DLLs/zlib.pyd`` on Windows.  Create
+        * ``bin/python`` (or ``bin/python.exe``) even when you run virtualenv
+          with an interpreter named, e.g., ``python2.4``
+        * Fix MacPorts Python
+        * Added --unzip-setuptools option
+        * Update to Setuptools 0.6c8
+        * If the current directory is not writable, run ez_setup.py in ``/tmp``
+        * Copy or symlink over the ``include`` directory so that packages will
+          more consistently compile.
+        
+        1.0
+        ~~~
+        
+        * Fix build on systems that use ``/usr/lib64``, distinct from
+          ``/usr/lib`` (specifically CentOS x64).
+        * Fixed bug in ``--clear``.
+        * Fixed typos in ``deactivate.bat``.
+        * Preserve ``$PYTHONPATH`` when calling subprocesses.
+        
+        0.9.2
+        ~~~~~
+        
+        * Fix include dir copying on Windows (makes compiling possible).
+        * Include the main ``lib-tk`` in the path.
+        * Patch ``distutils.sysconfig``: ``get_python_inc`` and
+          ``get_python_lib`` to point to the global locations.
+        * Install ``distutils.cfg`` before Setuptools, so that system
+          customizations of ``distutils.cfg`` won't effect the installation.
+        * Add ``bin/pythonX.Y`` to the virtualenv (in addition to
+          ``bin/python``).
+        * Fixed an issue with Mac Framework Python builds, and absolute paths
+          (from Ronald Oussoren).
+        
+        0.9.1
+        ~~~~~
+        
+        * Improve ability to create a virtualenv from inside a virtualenv.
+        * Fix a little bug in ``bin/activate``.
+        * Actually get ``distutils.cfg`` to work reliably.
+        
+        0.9
+        ~~~
+        
+        * Added ``lib-dynload`` and ``config`` to things that need to be
+          copied over in an environment.
+        * Copy over or symlink the ``include`` directory, so that you can
+          build packages that need the C headers.
+        * Include a ``distutils`` package, so you can locally update
+          ``distutils.cfg`` (in ``lib/pythonX.Y/distutils/distutils.cfg``).
+        * Better avoid downloading Setuptools, and hitting PyPI on environment
+          creation.
+        * Fix a problem creating a ``lib64/`` directory.
+        * Should work on MacOSX Framework builds (the default Python
+          installations on Mac).  Thanks to Ronald Oussoren.
+        
+        0.8.4
+        ~~~~~
+        
+        * Windows installs would sometimes give errors about ``sys.prefix`` that
+          were inaccurate.
+        * Slightly prettier output.
+        
+        0.8.3
+        ~~~~~
+        
+        * Added support for Windows.
+        
+        0.8.2
+        ~~~~~
+        
+        * Give a better warning if you are on an unsupported platform (Mac
+          Framework Pythons, and Windows).
+        * Give error about running while inside a workingenv.
+        * Give better error message about Python 2.3.
+        
+        0.8.1
+        ~~~~~
+        
+        Fixed packaging of the library.
+        
+        0.8
+        ~~~
+        
+        Initial release.  Everything is changed and new!
+        
+Keywords: setuptools deployment installation distutils
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Programming Language :: Python :: 3.2
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/SOURCES.txt
@@ -0,0 +1,33 @@
+AUTHORS.txt
+LICENSE.txt
+MANIFEST.in
+setup.py
+virtualenv.py
+docs/index.txt
+docs/news.txt
+scripts/virtualenv
+virtualenv.egg-info/PKG-INFO
+virtualenv.egg-info/SOURCES.txt
+virtualenv.egg-info/dependency_links.txt
+virtualenv.egg-info/entry_points.txt
+virtualenv.egg-info/not-zip-safe
+virtualenv.egg-info/top_level.txt
+virtualenv_embedded/activate.bat
+virtualenv_embedded/activate.csh
+virtualenv_embedded/activate.fish
+virtualenv_embedded/activate.ps1
+virtualenv_embedded/activate.sh
+virtualenv_embedded/activate_this.py
+virtualenv_embedded/deactivate.bat
+virtualenv_embedded/distribute_setup.py
+virtualenv_embedded/distutils-init.py
+virtualenv_embedded/distutils.cfg
+virtualenv_embedded/ez_setup.py
+virtualenv_embedded/site.py
+virtualenv_support/__init__.py
+virtualenv_support/distribute-0.6.24.tar.gz
+virtualenv_support/pip-1.1.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
+virtualenv_support/setuptools-0.6c11-py2.7.egg
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/dependency_links.txt
@@ -0,0 +1,1 @@
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/entry_points.txt
@@ -0,0 +1,2 @@
+[console_scripts]
+virtualenv = virtualenv:main
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/not-zip-safe
@@ -0,0 +1,1 @@
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv.egg-info/top_level.txt
@@ -0,0 +1,2 @@
+virtualenv_support
+virtualenv
old mode 100644
new mode 100755
--- a/other-licenses/virtualenv/virtualenv.py
+++ b/other-licenses/virtualenv/virtualenv.py
@@ -1,51 +1,258 @@
 #!/usr/bin/env python
 """Create a "virtual" Python installation
 """
 
-virtualenv_version = "1.4.8"
+# If you change the version here, change it in setup.py
+# and docs/conf.py as well.
+virtualenv_version = "1.7.1.2"
 
+import base64
 import sys
 import os
 import optparse
 import re
 import shutil
 import logging
+import tempfile
+import zlib
+import errno
 import distutils.sysconfig
+from distutils.util import strtobool
+
 try:
     import subprocess
-except ImportError, e:
+except ImportError:
     if sys.version_info <= (2, 3):
-        print 'ERROR: %s' % e
-        print 'ERROR: this script requires Python 2.4 or greater; or at least the subprocess module.'
-        print 'If you copy subprocess.py from a newer version of Python this script will probably work'
+        print('ERROR: %s' % sys.exc_info()[1])
+        print('ERROR: this script requires Python 2.4 or greater; or at least the subprocess module.')
+        print('If you copy subprocess.py from a newer version of Python this script will probably work')
         sys.exit(101)
     else:
         raise
 try:
     set
 except NameError:
     from sets import Set as set
+try:
+    basestring
+except NameError:
+    basestring = str
+
+try:
+    import ConfigParser
+except ImportError:
+    import configparser as ConfigParser
 
 join = os.path.join
 py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1])
+
 is_jython = sys.platform.startswith('java')
-expected_exe = is_jython and 'jython' or 'python'
+is_pypy = hasattr(sys, 'pypy_version_info')
+is_win  = (sys.platform == 'win32')
+abiflags = getattr(sys, 'abiflags', '')
+
+user_dir = os.path.expanduser('~')
+if sys.platform == 'win32':
+    user_dir = os.environ.get('APPDATA', user_dir)  # Use %APPDATA% for roaming
+    default_storage_dir = os.path.join(user_dir, 'virtualenv')
+else:
+    default_storage_dir = os.path.join(user_dir, '.virtualenv')
+default_config_file = os.path.join(default_storage_dir, 'virtualenv.ini')
+
+if is_pypy:
+    expected_exe = 'pypy'
+elif is_jython:
+    expected_exe = 'jython'
+else:
+    expected_exe = 'python'
+
 
 REQUIRED_MODULES = ['os', 'posix', 'posixpath', 'nt', 'ntpath', 'genericpath',
                     'fnmatch', 'locale', 'encodings', 'codecs',
                     'stat', 'UserDict', 'readline', 'copy_reg', 'types',
                     're', 'sre', 'sre_parse', 'sre_constants', 'sre_compile',
-                    'lib-dynload', 'config', 'zlib']
+                    'zlib']
+
+REQUIRED_FILES = ['lib-dynload', 'config']
 
-if sys.version_info[:2] >= (2, 6):
-    REQUIRED_MODULES.extend(['warnings', 'linecache', '_abcoll', 'abc'])
-if sys.version_info[:2] <= (2, 3):
-    REQUIRED_MODULES.extend(['sets', '__future__'])
+majver, minver = sys.version_info[:2]
+if majver == 2:
+    if minver >= 6:
+        REQUIRED_MODULES.extend(['warnings', 'linecache', '_abcoll', 'abc'])
+    if minver >= 7:
+        REQUIRED_MODULES.extend(['_weakrefset'])
+    if minver <= 3:
+        REQUIRED_MODULES.extend(['sets', '__future__'])
+elif majver == 3:
+    # Some extra modules are needed for Python 3, but different ones
+    # for different versions.
+    REQUIRED_MODULES.extend(['_abcoll', 'warnings', 'linecache', 'abc', 'io',
+                             '_weakrefset', 'copyreg', 'tempfile', 'random',
+                             '__future__', 'collections', 'keyword', 'tarfile',
+                             'shutil', 'struct', 'copy'])
+    if minver >= 2:
+        REQUIRED_FILES[-1] = 'config-%s' % majver
+    if minver == 3:
+        # The whole list of 3.3 modules is reproduced below - the current
+        # uncommented ones are required for 3.3 as of now, but more may be
+        # added as 3.3 development continues.
+        REQUIRED_MODULES.extend([
+            #"aifc",
+            #"antigravity",
+            #"argparse",
+            #"ast",
+            #"asynchat",
+            #"asyncore",
+            "base64",
+            #"bdb",
+            #"binhex",
+            "bisect",
+            #"calendar",
+            #"cgi",
+            #"cgitb",
+            #"chunk",
+            #"cmd",
+            #"codeop",
+            #"code",
+            #"colorsys",
+            #"_compat_pickle",
+            #"compileall",
+            #"concurrent",
+            #"configparser",
+            #"contextlib",
+            #"cProfile",
+            #"crypt",
+            #"csv",
+            #"ctypes",
+            #"curses",
+            #"datetime",
+            #"dbm",
+            #"decimal",
+            #"difflib",
+            #"dis",
+            #"doctest",
+            #"dummy_threading",
+            "_dummy_thread",
+            #"email",
+            #"filecmp",
+            #"fileinput",
+            #"formatter",
+            #"fractions",
+            #"ftplib",
+            #"functools",
+            #"getopt",
+            #"getpass",
+            #"gettext",
+            #"glob",
+            #"gzip",
+            "hashlib",
+            "heapq",
+            "hmac",
+            #"html",
+            #"http",
+            #"idlelib",
+            #"imaplib",
+            #"imghdr",
+            #"importlib",
+            #"inspect",
+            #"json",
+            #"lib2to3",
+            #"logging",
+            #"macpath",
+            #"macurl2path",
+            #"mailbox",
+            #"mailcap",
+            #"_markupbase",
+            #"mimetypes",
+            #"modulefinder",
+            #"multiprocessing",
+            #"netrc",
+            #"nntplib",
+            #"nturl2path",
+            #"numbers",
+            #"opcode",
+            #"optparse",
+            #"os2emxpath",
+            #"pdb",
+            #"pickle",
+            #"pickletools",
+            #"pipes",
+            #"pkgutil",
+            #"platform",
+            #"plat-linux2",
+            #"plistlib",
+            #"poplib",
+            #"pprint",
+            #"profile",
+            #"pstats",
+            #"pty",
+            #"pyclbr",
+            #"py_compile",
+            #"pydoc_data",
+            #"pydoc",
+            #"_pyio",
+            #"queue",
+            #"quopri",
+            "reprlib",
+            "rlcompleter",
+            #"runpy",
+            #"sched",
+            #"shelve",
+            #"shlex",
+            #"smtpd",
+            #"smtplib",
+            #"sndhdr",
+            #"socket",
+            #"socketserver",
+            #"sqlite3",
+            #"ssl",
+            #"stringprep",
+            #"string",
+            #"_strptime",
+            #"subprocess",
+            #"sunau",
+            #"symbol",
+            #"symtable",
+            #"sysconfig",
+            #"tabnanny",
+            #"telnetlib",
+            #"test",
+            #"textwrap",
+            #"this",
+            #"_threading_local",
+            #"threading",
+            #"timeit",
+            #"tkinter",
+            #"tokenize",
+            #"token",
+            #"traceback",
+            #"trace",
+            #"tty",
+            #"turtledemo",
+            #"turtle",
+            #"unittest",
+            #"urllib",
+            #"uuid",
+            #"uu",
+            #"wave",
+            "weakref",
+            #"webbrowser",
+            #"wsgiref",
+            #"xdrlib",
+            #"xml",
+            #"xmlrpc",
+            #"zipfile",
+        ])
+
+if is_pypy:
+    # these are needed to correctly display the exceptions that may happen
+    # during the bootstrap
+    REQUIRED_MODULES.extend(['traceback', 'linecache'])
 
 class Logger(object):
 
     """
     Logging object for use in command-line script.  Allows ranges of
     levels, to avoid some redundancy of displayed information.
     """
 
@@ -142,17 +349,17 @@ class Logger(object):
         """Returns the level that stdout runs at"""
         for level, consumer in self.consumers:
             if consumer is sys.stdout:
                 return level
         return self.FATAL
 
     def level_matches(self, level, consumer_level):
         """
-        >>> l = Logger()
+        >>> l = Logger([])
         >>> l.level_matches(3, 4)
         False
         >>> l.level_matches(3, 2)
         True
         >>> l.level_matches(slice(None, 3), 3)
         False
         >>> l.level_matches(slice(None, 3), 2)
         True
@@ -160,185 +367,208 @@ class Logger(object):
         True
         >>> l.level_matches(slice(2, 3), 1)
         False
         """
         if isinstance(level, slice):
             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:
             return level >= consumer_level
 
     #@classmethod
     def level_for_integer(cls, level):
         levels = cls.LEVELS
         if level < 0:
             return levels[0]
         if level >= len(levels):
             return levels[-1]
         return levels[level]
 
     level_for_integer = classmethod(level_for_integer)
 
+# create a silent logger just to prevent this from being undefined
+# will be overridden with requested verbosity main() is called.
+logger = Logger([(Logger.LEVELS[-1], sys.stdout)])
+
 def mkdir(path):
     if not os.path.exists(path):
         logger.info('Creating %s', path)
         os.makedirs(path)
     else:
         logger.info('Directory %s already exists', path)
 
+def copyfileordir(src, dest):
+    if os.path.isdir(src):
+        shutil.copytree(src, dest, True)
+    else:
+        shutil.copy2(src, dest)
+
 def copyfile(src, dest, symlink=True):
     if not os.path.exists(src):
         # Some bad symlink in the src
         logger.warn('Cannot find file %s (bad symlink)', src)
         return
     if os.path.exists(dest):
         logger.debug('File %s already exists', dest)
         return
     if not os.path.exists(os.path.dirname(dest)):
         logger.info('Creating parent directories for %s' % os.path.dirname(dest))
         os.makedirs(os.path.dirname(dest))
-    if symlink and hasattr(os, 'symlink'):
+    if not os.path.islink(src):
+        srcpath = os.path.abspath(src)
+    else:
+        srcpath = os.readlink(src)
+    if symlink and hasattr(os, 'symlink') and not is_win:
         logger.info('Symlinking %s', dest)
-        os.symlink(os.path.abspath(src), dest)
+        try:
+            os.symlink(srcpath, dest)
+        except (OSError, NotImplementedError):
+            logger.info('Symlinking failed, copying to %s', dest)
+            copyfileordir(src, dest)
     else:
         logger.info('Copying to %s', dest)
-        if os.path.isdir(src):
-            shutil.copytree(src, dest, True)
-        else:
-            shutil.copy2(src, dest)
+        copyfileordir(src, dest)
 
 def writefile(dest, content, overwrite=True):
     if not os.path.exists(dest):
         logger.info('Writing %s', dest)
         f = open(dest, 'wb')
-        f.write(content)
+        f.write(content.encode('utf-8'))
         f.close()
         return
     else:
         f = open(dest, 'rb')
         c = f.read()
         f.close()
         if c != content:
             if not overwrite:
                 logger.notify('File %s exists with different content; not overwriting', dest)
                 return
             logger.notify('Overwriting %s with new content', dest)
             f = open(dest, 'wb')
-            f.write(content)
+            f.write(content.encode('utf-8'))
             f.close()
         else:
             logger.info('Content %s already in place', dest)
 
 def rmtree(dir):
     if os.path.exists(dir):
         logger.notify('Deleting tree %s', dir)
         shutil.rmtree(dir)
     else:
         logger.info('Do not need to delete %s; already gone', dir)
 
 def make_exe(fn):
     if hasattr(os, 'chmod'):
-        oldmode = os.stat(fn).st_mode & 07777
-        newmode = (oldmode | 0555) & 07777
+        oldmode = os.stat(fn).st_mode & 0xFFF # 0o7777
+        newmode = (oldmode | 0x16D) & 0xFFF # 0o555, 0o7777
         os.chmod(fn, newmode)
         logger.info('Changed mode of %s to %s', fn, oct(newmode))
 
 def _find_file(filename, dirs):
-    for dir in dirs:
+    for dir in reversed(dirs):
         if os.path.exists(join(dir, filename)):
             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'
         bootstrap_script = EZ_SETUP_PY
         source = None
     else:
         setup_fn = None
-        source = 'distribute-0.6.8.tar.gz'
+        source = 'distribute-0.6.24.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 setup_fn is not None:
         setup_fn = _find_file(setup_fn, search_dirs)
 
     if source is not None:
         source = _find_file(source, search_dirs)
 
     if is_jython and os._name == 'nt':
         # Jython's .bat sys.executable can't handle a command line
         # argument with newlines
-        import tempfile
         fd, ez_setup = tempfile.mkstemp('.py')
         os.write(fd, bootstrap_script)
         os.close(fd)
         cmd = [py_executable, ez_setup]
     else:
         cmd = [py_executable, '-c', bootstrap_script]
     if unzip:
         cmd.append('--always-unzip')
     env = {}
+    remove_from_env = []
     if logger.stdout_level_matches(logger.DEBUG):
         cmd.append('-v')
 
     old_chdir = os.getcwd()
     if setup_fn is not None and os.path.exists(setup_fn):
         logger.info('Using existing %s egg: %s' % (project_name, setup_fn))
         cmd.append(setup_fn)
         if os.environ.get('PYTHONPATH'):
             env['PYTHONPATH'] = setup_fn + os.path.pathsep + os.environ['PYTHONPATH']
         else:
             env['PYTHONPATH'] = setup_fn
     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)
     logger.indent += 2
     cwd = None
     if project_name == 'distribute':
         env['DONT_PATCH_SETUPTOOLS'] = 'true'
 
     def _filter_ez_setup(line):
         return filter_ez_setup(line, project_name)
 
     if not os.access(os.getcwd(), os.W_OK):
-        cwd = '/tmp'
+        cwd = tempfile.mkdtemp()
         if source is not None and os.path.exists(source):
             # the current working dir is hostile, let's copy the
-            # tarball to /tmp
+            # tarball to a temp dir
             target = os.path.join(cwd, os.path.split(source)[-1])
             shutil.copy(source, target)
     try:
         call_subprocess(cmd, show_stdout=False,
                         filter_stdout=_filter_ez_setup,
                         extra_env=env,
+                        remove_from_env=remove_from_env,
                         cwd=cwd)
     finally:
         logger.indent -= 2
         logger.end_progress()
         if os.getcwd() != old_chdir:
             os.chdir(old_chdir)
         if is_jython and os._name == 'nt':
             os.remove(ez_setup)
@@ -352,49 +582,70 @@ def file_search_dirs():
         try:
             import virtualenv
         except ImportError:
             pass
         else:
             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.sort(key=lambda x: os.path.basename(x).lower())
+    filenames = [(os.path.basename(filename).lower(), i, filename) for i, filename in enumerate(filenames)]
+    filenames.sort()
+    filenames = [filename for basename, i, filename in filenames]
     if not filenames:
         filename = 'pip'
     else:
         filename = filenames[-1]
     easy_install_script = 'easy_install'
     if sys.platform == 'win32':
         easy_install_script = 'easy_install-script.py'
-    cmd = [py_executable, join(os.path.dirname(py_executable), easy_install_script), filename]
+    cmd = [join(os.path.dirname(py_executable), easy_install_script), filename]
+    if sys.platform == 'win32':
+        cmd.insert(0, py_executable)
     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')
     try:
         call_subprocess(cmd, show_stdout=False,
                         filter_stdout=_filter_setup)
     finally:
         logger.indent -= 2
+        logger.end_progress()
 
 def filter_ez_setup(line, project_name='setuptools'):
     if not line.strip():
         return Logger.DEBUG
     if project_name == 'distribute':
         for prefix in ('Extracting', 'Now working', 'Installing', 'Before',
                        'Scanning', 'Setuptools', 'Egg', 'Already',
                        'running', 'writing', 'reading', 'installing',
@@ -405,20 +656,123 @@ def filter_ez_setup(line, project_name='
         return Logger.DEBUG
     for prefix in ['Reading ', 'Best match', 'Processing setuptools',
                    'Copying setuptools', 'Adding setuptools',
                    'Installing ', 'Installed ']:
         if line.startswith(prefix):
             return Logger.DEBUG
     return Logger.INFO
 
+
+class UpdatingDefaultsHelpFormatter(optparse.IndentedHelpFormatter):
+    """
+    Custom help formatter for use in ConfigOptionParser that updates
+    the defaults before expanding them, allowing them to show up correctly
+    in the help listing
+    """
+    def expand_default(self, option):
+        if self.parser is not None:
+            self.parser.update_defaults(self.parser.defaults)
+        return optparse.IndentedHelpFormatter.expand_default(self, option)
+
+
+class ConfigOptionParser(optparse.OptionParser):
+    """
+    Custom option parser which updates its defaults by by checking the
+    configuration files and environmental variables
+    """
+    def __init__(self, *args, **kwargs):
+        self.config = ConfigParser.RawConfigParser()
+        self.files = self.get_config_files()
+        self.config.read(self.files)
+        optparse.OptionParser.__init__(self, *args, **kwargs)
+
+    def get_config_files(self):
+        config_file = os.environ.get('VIRTUALENV_CONFIG_FILE', False)
+        if config_file and os.path.exists(config_file):
+            return [config_file]
+        return [default_config_file]
+
+    def update_defaults(self, defaults):
+        """
+        Updates the given defaults with values from the config files and
+        the environ. Does a little special handling for certain types of
+        options (lists).
+        """
+        # Then go and look for the other sources of configuration:
+        config = {}
+        # 1. config files
+        config.update(dict(self.get_config_section('virtualenv')))
+        # 2. environmental variables
+        config.update(dict(self.get_environ_vars()))
+        # Then set the options with those values
+        for key, val in config.items():
+            key = key.replace('_', '-')
+            if not key.startswith('--'):
+                key = '--%s' % key  # only prefer long opts
+            option = self.get_option(key)
+            if option is not None:
+                # ignore empty values
+                if not val:
+                    continue
+                # handle multiline configs
+                if option.action == 'append':
+                    val = val.split()
+                else:
+                    option.nargs = 1
+                if option.action in ('store_true', 'store_false', 'count'):
+                    val = strtobool(val)
+                try:
+                    val = option.convert_value(key, val)
+                except optparse.OptionValueError:
+                    e = sys.exc_info()[1]
+                    print("An error occured during configuration: %s" % e)
+                    sys.exit(3)
+                defaults[option.dest] = val
+        return defaults
+
+    def get_config_section(self, name):
+        """
+        Get a section of a configuration
+        """
+        if self.config.has_section(name):
+            return self.config.items(name)
+        return []
+
+    def get_environ_vars(self, prefix='VIRTUALENV_'):
+        """
+        Returns a generator with all environmental vars with prefix VIRTUALENV
+        """
+        for key, val in os.environ.items():
+            if key.startswith(prefix):
+                yield (key.replace(prefix, '').lower(), val)
+
+    def get_default_values(self):
+        """
+        Overridding to make updating the defaults after instantiation of
+        the option parser possible, update_defaults() does the dirty work.
+        """
+        if not self.process_default_values:
+            # Old, pre-Optik 1.5 behaviour.
+            return optparse.Values(self.defaults)
+
+        defaults = self.update_defaults(self.defaults.copy()) # ours
+        for option in self._get_all_options():
+            default = defaults.get(option.dest)
+            if isinstance(default, basestring):
+                opt_str = option.get_opt_string()
+                defaults[option.dest] = option.check_value(opt_str, default)
+        return optparse.Values(defaults)
+
+
 def main():
-    parser = optparse.OptionParser(
+    parser = ConfigOptionParser(
         version=virtualenv_version,
-        usage="%prog [OPTIONS] DEST_DIR")
+        usage="%prog [OPTIONS] DEST_DIR",
+        formatter=UpdatingDefaultsHelpFormatter())
 
     parser.add_option(
         '-v', '--verbose',
         action='count',
         dest='verbose',
         default=0,
         help="Increase verbosity")
 
@@ -446,34 +800,62 @@ def main():
     parser.add_option(
         '--no-site-packages',
         dest='no_site_packages',
         action='store_true',
         help="Don't give access to the global site-packages dir to the "
              "virtual environment")
 
     parser.add_option(
+        '--system-site-packages',
+        dest='system_site_packages',
+        action='store_true',
+        help="Give access to the global site-packages dir to the "
+             "virtual environment")
+
+    parser.add_option(
         '--unzip-setuptools',
         dest='unzip_setuptools',
         action='store_true',
         help="Unzip Setuptools or Distribute when installing it")
 
     parser.add_option(
         '--relocatable',
         dest='relocatable',
         action='store_true',
         help='Make an EXISTING virtualenv environment relocatable.  '
         'This fixes up scripts and makes all .pth files relative')
 
     parser.add_option(
         '--distribute',
         dest='use_distribute',
         action='store_true',
-        help='Use Distribute instead of Setuptools. Set environ variable'
-        'VIRTUALENV_USE_DISTRIBUTE to make it the default ')
+        help='Use Distribute instead of Setuptools. Set environ variable '
+        'VIRTUALENV_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',
+        help='Provides an alternative prompt prefix for this environment')
 
     if 'extend_parser' in globals():
         extend_parser(parser)
 
     options, args = parser.parse_args()
 
     global logger
 
@@ -489,25 +871,36 @@ def main():
         if interpreter == sys.executable:
             logger.warn('Already using interpreter %s' % interpreter)
         else:
             logger.notify('Running virtualenv with interpreter %s' % interpreter)
             env['VIRTUALENV_INTERPRETER_RUNNING'] = 'true'
             file = __file__
             if file.endswith('.pyc'):
                 file = file[:-1]
-            os.execvpe(interpreter, [interpreter, file] + sys.argv[1:], env)
+            popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
+            raise SystemExit(popen.wait())
+
+    # Force --distribute on Python 3, since setuptools is not available.
+    if majver > 2:
+        options.use_distribute = True
 
+    if os.environ.get('PYTHONDONTWRITEBYTECODE') and not options.use_distribute:
+        print(
+            "The PYTHONDONTWRITEBYTECODE environment variable is "
+            "not compatible with setuptools. Either use --distribute "
+            "or unset PYTHONDONTWRITEBYTECODE.")
+        sys.exit(2)
     if not args:
-        print 'You must provide a DEST_DIR'
+        print('You must provide a DEST_DIR')
         parser.print_help()
         sys.exit(2)
     if len(args) > 1:
-        print 'There must be only one argument: DEST_DIR (you gave %s)' % (
-            ' '.join(args))
+        print('There must be only one argument: DEST_DIR (you gave %s)' % (
+            ' '.join(args)))
         parser.print_help()
         sys.exit(2)
 
     home_dir = args[0]
 
     if os.environ.get('WORKING_ENV'):
         logger.fatal('ERROR: you cannot run virtualenv while in a workingenv')
         logger.fatal('Please deactivate your workingenv, then re-run this script')
@@ -516,56 +909,82 @@ def main():
     if 'PYTHONHOME' in os.environ:
         logger.warn('PYTHONHOME is set.  You *must* activate the virtualenv before using it')
         del os.environ['PYTHONHOME']
 
     if options.relocatable:
         make_environment_relocatable(home_dir)
         return
 
-    create_environment(home_dir, site_packages=not options.no_site_packages, clear=options.clear,
+    if options.no_site_packages:
+        logger.warn('The --no-site-packages flag is deprecated; it is now '
+                    'the default behavior.')
+
+    create_environment(home_dir,
+                       site_packages=options.system_site_packages,
+                       clear=options.clear,
                        unzip_setuptools=options.unzip_setuptools,
-                       use_distribute=options.use_distribute)
+                       use_distribute=options.use_distribute,
+                       prompt=options.prompt,
+                       search_dirs=options.search_dirs,
+                       never_download=options.never_download)
     if 'after_install' in globals():
         after_install(options, home_dir)
 
 def call_subprocess(cmd, show_stdout=True,
                     filter_stdout=None, cwd=None,
-                    raise_on_returncode=True, extra_env=None):
+                    raise_on_returncode=True, extra_env=None,
+                    remove_from_env=None):
     cmd_parts = []
     for part in cmd:
-        if len(part) > 40:
-            part = part[:30]+"..."+part[-5:]
+        if len(part) > 45:
+            part = part[:20]+"..."+part[-20:]
         if ' ' in part or '\n' in part or '"' in part or "'" in part:
             part = '"%s"' % part.replace('"', '\\"')
+        if hasattr(part, 'decode'):
+            try:
+                part = part.decode(sys.getdefaultencoding())
+            except UnicodeDecodeError:
+                part = part.decode(sys.getfilesystemencoding())
         cmd_parts.append(part)
     cmd_desc = ' '.join(cmd_parts)
     if show_stdout:
         stdout = None
     else:
         stdout = subprocess.PIPE
     logger.debug("Running command %s" % cmd_desc)
-    if extra_env:
+    if extra_env or remove_from_env:
         env = os.environ.copy()
-        env.update(extra_env)
+        if extra_env:
+            env.update(extra_env)
+        if remove_from_env:
+            for varname in remove_from_env:
+                env.pop(varname, None)
     else:
         env = None
     try:
         proc = subprocess.Popen(
             cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
             cwd=cwd, env=env)
-    except Exception, e:
+    except Exception:
+        e = sys.exc_info()[1]
         logger.fatal(
             "Error %s while executing command %s" % (e, cmd_desc))
         raise
     all_output = []
     if stdout is not None:
         stdout = proc.stdout
+        encoding = sys.getdefaultencoding()
+        fs_encoding = sys.getfilesystemencoding()
         while 1:
             line = stdout.readline()
+            try:
+                line = line.decode(encoding)
+            except UnicodeDecodeError:
+                line = line.decode(fs_encoding)
             if not line:
                 break
             line = line.rstrip()
             all_output.append(line)
             if filter_stdout:
                 level = filter_stdout(line)
                 if isinstance(level, tuple):
                     level, line = level
@@ -586,80 +1005,144 @@ def call_subprocess(cmd, show_stdout=Tru
                 "Command %s failed with error code %s"
                 % (cmd_desc, proc.returncode))
         else:
             logger.warn(
                 "Command %s had error code %s"
                 % (cmd_desc, proc.returncode))
 
 
-def create_environment(home_dir, site_packages=True, clear=False,
-                       unzip_setuptools=False, use_distribute=False):
+def create_environment(home_dir, site_packages=False, clear=False,
+                       unzip_setuptools=False, use_distribute=False,
+                       prompt=None, search_dirs=None, never_download=False):
     """
     Creates a new environment in ``home_dir``.
 
-    If ``site_packages`` is true (the default) then the global
-    ``site-packages/`` directory will be on the path.
+    If ``site_packages`` is true, then the global ``site-packages/``
+    directory will be on the path.
 
     If ``clear`` is true (default False) then the environment will
     first be cleared.
     """
     home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
 
     py_executable = os.path.abspath(install_python(
         home_dir, lib_dir, inc_dir, bin_dir,
         site_packages=site_packages, clear=clear))
 
-    install_distutils(lib_dir, home_dir)
+    install_distutils(home_dir)
 
+    # use_distribute also is True if VIRTUALENV_DISTRIBUTE env var is set
+    # we also check VIRTUALENV_USE_DISTRIBUTE for backwards compatibility
     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)
+    install_activate(home_dir, bin_dir, prompt)
 
 def path_locations(home_dir):
     """Return the path locations for the environment (where libraries are,
     where scripts go, etc)"""
     # XXX: We'd use distutils.sysconfig.get_python_inc/lib but its
     # prefix arg is broken: http://bugs.python.org/issue3386
     if sys.platform == 'win32':
         # Windows has lots of problems with executables with spaces in
         # the name; this function will remove them (using the ~1
         # format):
         mkdir(home_dir)
         if ' ' in home_dir:
             try:
                 import win32api
             except ImportError:
-                print 'Error: the path "%s" has a space in it' % home_dir
-                print 'To handle these kinds of paths, the win32api module must be installed:'
-                print '  http://sourceforge.net/projects/pywin32/'
+                print('Error: the path "%s" has a space in it' % home_dir)
+                print('To handle these kinds of paths, the win32api module must be installed:')
+                print('  http://sourceforge.net/projects/pywin32/')
                 sys.exit(3)
             home_dir = win32api.GetShortPathName(home_dir)
         lib_dir = join(home_dir, 'Lib')
         inc_dir = join(home_dir, 'Include')
         bin_dir = join(home_dir, 'Scripts')
     elif is_jython:
         lib_dir = join(home_dir, 'Lib')
         inc_dir = join(home_dir, 'Include')
         bin_dir = join(home_dir, 'bin')
+    elif is_pypy:
+        lib_dir = home_dir
+        inc_dir = join(home_dir, 'include')
+        bin_dir = join(home_dir, 'bin')
     else:
         lib_dir = join(home_dir, 'lib', py_version)
-        inc_dir = join(home_dir, 'include', py_version)
+        inc_dir = join(home_dir, 'include', py_version + abiflags)
         bin_dir = join(home_dir, 'bin')
     return home_dir, lib_dir, inc_dir, bin_dir
 
+
+def change_prefix(filename, dst_prefix):
+    prefixes = [sys.prefix]
+
+    if sys.platform == "darwin":
+        prefixes.extend((
+            os.path.join("/Library/Python", sys.version[:3], "site-packages"),
+            os.path.join(sys.prefix, "Extras", "lib", "python"),
+            os.path.join("~", "Library", "Python", sys.version[:3], "site-packages")))
+
+    if hasattr(sys, 'real_prefix'):
+        prefixes.append(sys.real_prefix)
+    prefixes = list(map(os.path.abspath, prefixes))
+    filename = os.path.abspath(filename)
+    for src_prefix in prefixes:
+        if filename.startswith(src_prefix):
+            _, relpath = filename.split(src_prefix, 1)
+            assert relpath[0] == os.sep
+            relpath = relpath[1:]
+            return join(dst_prefix, relpath)
+    assert False, "Filename %s does not start with any of these prefixes: %s" % \
+        (filename, prefixes)
+
+def copy_required_modules(dst_prefix):
+    import imp
+    # If we are running under -p, we need to remove the current
+    # directory from sys.path temporarily here, so that we
+    # definitely get the modules 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:
+        for modname in REQUIRED_MODULES:
+            if modname in sys.builtin_module_names:
+                logger.info("Ignoring built-in bootstrap module: %s" % modname)
+                continue
+            try:
+                f, filename, _ = imp.find_module(modname)
+            except ImportError:
+                logger.info("Cannot import bootstrap module: %s" % modname)
+            else:
+                if f is not None:
+                    f.close()
+                dst_filename = change_prefix(filename, dst_prefix)
+                copyfile(filename, dst_filename)
+                if filename.endswith('.pyc'):
+                    pyfile = filename[:-1]
+                    if os.path.exists(pyfile):
+                        copyfile(pyfile, dst_filename[:-1])
+    finally:
+        sys.path = _prev_sys_path
+
 def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear):
     """Install just the base environment, no distutils patches etc"""
     if sys.executable.startswith(bin_dir):
-        print 'Please use the *system* python to run this script'
+        print('Please use the *system* python to run this script')
         return
 
     if clear:
         rmtree(lib_dir)
         ## FIXME: why not delete it?
         ## Maybe it should delete everything with #!/path/to/venv/python in it
         logger.notify('Not deleting %s', bin_dir)
 
@@ -670,48 +1153,64 @@ def install_python(home_dir, lib_dir, in
         prefix = sys.prefix
     mkdir(lib_dir)
     fix_lib64(lib_dir)
     stdlib_dirs = [os.path.dirname(os.__file__)]
     if sys.platform == 'win32':
         stdlib_dirs.append(join(os.path.dirname(stdlib_dirs[0]), 'DLLs'))
     elif sys.platform == 'darwin':
         stdlib_dirs.append(join(stdlib_dirs[0], 'site-packages'))
-    for stdlib_dir in stdlib_dirs:
-        if not os.path.isdir(stdlib_dir):
-            continue
-        if hasattr(os, 'symlink'):
-            logger.info('Symlinking Python bootstrap modules')
-        else:
-            logger.info('Copying Python bootstrap modules')
-        logger.indent += 2
-        try:
+    if hasattr(os, 'symlink'):
+        logger.info('Symlinking Python bootstrap modules')
+    else:
+        logger.info('Copying Python bootstrap modules')
+    logger.indent += 2
+    try:
+        # copy required files...
+        for stdlib_dir in stdlib_dirs:
+            if not os.path.isdir(stdlib_dir):
+                continue
             for fn in os.listdir(stdlib_dir):
-                if fn != 'site-packages' and os.path.splitext(fn)[0] in REQUIRED_MODULES:
+                bn = os.path.splitext(fn)[0]
+                if fn != 'site-packages' and bn in REQUIRED_FILES:
                     copyfile(join(stdlib_dir, fn), join(lib_dir, fn))
-        finally:
-            logger.indent -= 2
+        # ...and modules
+        copy_required_modules(home_dir)
+    finally:
+        logger.indent -= 2
     mkdir(join(lib_dir, 'site-packages'))
-    writefile(join(lib_dir, 'site.py'), SITE_PY)
-    writefile(join(lib_dir, 'orig-prefix.txt'), prefix)
-    site_packages_filename = join(lib_dir, 'no-global-site-packages.txt')
+    import site
+    site_filename = site.__file__
+    if site_filename.endswith('.pyc'):
+        site_filename = site_filename[:-1]
+    elif site_filename.endswith('$py.class'):
+        site_filename = site_filename.replace('$py.class', '.py')
+    site_filename_dst = change_prefix(site_filename, home_dir)
+    site_dir = os.path.dirname(site_filename_dst)
+    writefile(site_filename_dst, SITE_PY)
+    writefile(join(site_dir, 'orig-prefix.txt'), prefix)
+    site_packages_filename = join(site_dir, 'no-global-site-packages.txt')
     if not site_packages:
         writefile(site_packages_filename, '')
     else:
         if os.path.exists(site_packages_filename):
             logger.info('Deleting %s' % site_packages_filename)
             os.unlink(site_packages_filename)
 
-    stdinc_dir = join(prefix, 'include', py_version)
+    if is_pypy or is_win:
+        stdinc_dir = join(prefix, 'include')
+    else:
+        stdinc_dir = join(prefix, 'include', py_version + abiflags)
     if os.path.exists(stdinc_dir):
         copyfile(stdinc_dir, inc_dir)
     else:
         logger.debug('No include dir %s' % stdinc_dir)
 
-    if sys.exec_prefix != prefix:
+    # pypy never uses exec_prefix, just ignore it
+    if sys.exec_prefix != prefix and not is_pypy:
         if sys.platform == 'win32':
             exec_dir = join(sys.exec_prefix, 'lib')
         elif is_jython:
             exec_dir = join(sys.exec_prefix, 'Lib')
         else:
             exec_dir = join(sys.exec_prefix, 'lib', py_version)
         for fn in os.listdir(exec_dir):
             copyfile(join(exec_dir, fn), join(lib_dir, fn))
@@ -735,59 +1234,104 @@ def install_python(home_dir, lib_dir, in
     if 'Python.framework' in prefix:
         if re.search(r'/Python(?:-32|-64)*$', py_executable):
             # The name of the python executable is not quite what
             # we want, rename it.
             py_executable = os.path.join(
                     os.path.dirname(py_executable), 'python')
 
     logger.notify('New %s executable in %s', expected_exe, py_executable)
+    pcbuild_dir = os.path.dirname(sys.executable)
+    pyd_pth = os.path.join(lib_dir, 'site-packages', 'virtualenv_builddir_pyd.pth')
+    if is_win and os.path.exists(os.path.join(pcbuild_dir, 'build.bat')):
+        logger.notify('Detected python running from build directory %s', pcbuild_dir)
+        logger.notify('Writing .pth file linking to build directory for *.pyd files')
+        writefile(pyd_pth, pcbuild_dir)
+    else:
+        pcbuild_dir = None
+        if os.path.exists(pyd_pth):
+            logger.info('Deleting %s (not Windows env or not build directory python)' % pyd_pth)
+            os.unlink(pyd_pth)
+        
     if sys.executable != py_executable:
         ## FIXME: could I just hard link?
         executable = sys.executable
         if sys.platform == 'cygwin' and os.path.exists(executable + '.exe'):
             # Cygwin misreports sys.executable sometimes
             executable += '.exe'
             py_executable += '.exe'
             logger.info('Executable actually exists in %s' % executable)
         shutil.copyfile(executable, py_executable)
         make_exe(py_executable)
         if sys.platform == 'win32' or sys.platform == 'cygwin':
             pythonw = os.path.join(os.path.dirname(sys.executable), 'pythonw.exe')
             if os.path.exists(pythonw):
                 logger.info('Also created pythonw.exe')
                 shutil.copyfile(pythonw, os.path.join(os.path.dirname(py_executable), 'pythonw.exe'))
+            python_d = os.path.join(os.path.dirname(sys.executable), 'python_d.exe')
+            python_d_dest = os.path.join(os.path.dirname(py_executable), 'python_d.exe')
+            if os.path.exists(python_d):
+                logger.info('Also created python_d.exe')
+                shutil.copyfile(python_d, python_d_dest)
+            elif os.path.exists(python_d_dest):
+                logger.info('Removed python_d.exe as it is no longer at the source')
+                os.unlink(python_d_dest)
+            # we need to copy the DLL to enforce that windows will load the correct one.
+            # may not exist if we are cygwin.
+            py_executable_dll = 'python%s%s.dll' % (
+                sys.version_info[0], sys.version_info[1])
+            py_executable_dll_d = 'python%s%s_d.dll' % (
+                sys.version_info[0], sys.version_info[1])
+            pythondll = os.path.join(os.path.dirname(sys.executable), py_executable_dll)
+            pythondll_d = os.path.join(os.path.dirname(sys.executable), py_executable_dll_d)
+            pythondll_d_dest = os.path.join(os.path.dirname(py_executable), py_executable_dll_d)
+            if os.path.exists(pythondll):
+                logger.info('Also created %s' % py_executable_dll)
+                shutil.copyfile(pythondll, os.path.join(os.path.dirname(py_executable), py_executable_dll))
+            if os.path.exists(pythondll_d):
+                logger.info('Also created %s' % py_executable_dll_d)
+                shutil.copyfile(pythondll_d, pythondll_d_dest)
+            elif os.path.exists(pythondll_d_dest):
+                logger.info('Removed %s as the source does not exist' % pythondll_d_dest)
+                os.unlink(pythondll_d_dest)
+        if is_pypy:
+            # make a symlink python --> pypy-c
+            python_executable = os.path.join(os.path.dirname(py_executable), 'python')
+            logger.info('Also created executable %s' % python_executable)
+            copyfile(py_executable, python_executable)
 
     if os.path.splitext(os.path.basename(py_executable))[0] != expected_exe:
         secondary_exe = os.path.join(os.path.dirname(py_executable),
                                      expected_exe)
         py_executable_ext = os.path.splitext(py_executable)[1]
         if py_executable_ext == '.exe':
             # python2.4 gives an extension of '.4' :P
             secondary_exe += py_executable_ext
         if os.path.exists(secondary_exe):
             logger.warn('Not overwriting existing %s script %s (you must use %s)'
                         % (expected_exe, secondary_exe, py_executable))
         else:
             logger.notify('Also creating executable in %s' % secondary_exe)
             shutil.copyfile(sys.executable, secondary_exe)
             make_exe(secondary_exe)
 
-    if 'Python.framework' in prefix:
-        logger.debug('MacOSX Python framework detected')
-
-        # Make sure we use the the embedded interpreter inside
-        # the framework, even if sys.executable points to
-        # the stub executable in ${sys.prefix}/bin
-        # See http://groups.google.com/group/python-virtualenv/
-        #                              browse_thread/thread/17cab2f85da75951
-        shutil.copy(
-                os.path.join(
-                    prefix, 'Resources/Python.app/Contents/MacOS/%s' % os.path.basename(sys.executable)),
-                py_executable)
+    if '.framework' in prefix:
+        if 'Python.framework' in prefix:
+            logger.debug('MacOSX Python framework detected')
+            # Make sure we use the the embedded interpreter inside
+            # the framework, even if sys.executable points to
+            # the stub executable in ${sys.prefix}/bin
+            # See http://groups.google.com/group/python-virtualenv/
+            #                              browse_thread/thread/17cab2f85da75951
+            original_python = os.path.join(
+                prefix, 'Resources/Python.app/Contents/MacOS/Python')
+        if 'EPD' in prefix:
+            logger.debug('EPD framework detected')
+            original_python = os.path.join(prefix, 'bin/python')
+        shutil.copy(original_python, py_executable)
 
         # Copy the framework's dylib into the virtual
         # environment
         virtual_lib = os.path.join(home_dir, '.Python')
 
         if os.path.exists(virtual_lib):
             os.unlink(virtual_lib)
         copyfile(
@@ -823,70 +1367,145 @@ def install_python(home_dir, lib_dir, in
                 os.unlink(pth)
             os.symlink(os.path.basename(py_executable), pth)
 
     if sys.platform == 'win32' and ' ' in py_executable:
         # There's a bug with subprocess on Windows when using a first
         # argument that has a space in it.  Instead we have to quote
         # the value:
         py_executable = '"%s"' % py_executable
-    cmd = [py_executable, '-c', 'import sys; print sys.prefix']
+    cmd = [py_executable, '-c', """
+import sys
+prefix = sys.prefix
+if sys.version_info[0] == 3:
+    prefix = prefix.encode('utf8')
+if hasattr(sys.stdout, 'detach'):
+    sys.stdout = sys.stdout.detach()
+elif hasattr(sys.stdout, 'buffer'):
+    sys.stdout = sys.stdout.buffer
+sys.stdout.write(prefix)
+"""]
     logger.info('Testing executable with %s %s "%s"' % tuple(cmd))
-    proc = subprocess.Popen(cmd,
+    try:
+        proc = subprocess.Popen(cmd,
                             stdout=subprocess.PIPE)
-    proc_stdout, proc_stderr = proc.communicate()
-    proc_stdout = os.path.normcase(os.path.abspath(proc_stdout.strip()))
-    if proc_stdout != os.path.normcase(os.path.abspath(home_dir)):
+        proc_stdout, proc_stderr = proc.communicate()
+    except OSError:
+        e = sys.exc_info()[1]
+        if e.errno == errno.EACCES:
+            logger.fatal('ERROR: The executable %s could not be run: %s' % (py_executable, e))
+            sys.exit(100)
+        else:
+          raise e
+
+    proc_stdout = proc_stdout.strip().decode("utf-8")
+    proc_stdout = os.path.normcase(os.path.abspath(proc_stdout))
+    norm_home_dir = os.path.normcase(os.path.abspath(home_dir))
+    if hasattr(norm_home_dir, 'decode'):
+        norm_home_dir = norm_home_dir.decode(sys.getfilesystemencoding())
+    if proc_stdout != norm_home_dir:
         logger.fatal(
             'ERROR: The executable %s is not functioning' % py_executable)
         logger.fatal(
             'ERROR: It thinks sys.prefix is %r (should be %r)'
-            % (proc_stdout, os.path.normcase(os.path.abspath(home_dir))))
+            % (proc_stdout, norm_home_dir))
         logger.fatal(
             'ERROR: virtualenv is not compatible with this system or executable')
         if sys.platform == 'win32':
             logger.fatal(
-                'Note: some Windows users have reported this error when they installed Python for "Only this user".  The problem may be resolvable if you install Python "For all users".  (See https://bugs.launchpad.net/virtualenv/+bug/352844)')
+                'Note: some Windows users have reported this error when they '
+                'installed Python for "Only this user" or have multiple '
+                'versions of Python installed. Copying the appropriate '
+                'PythonXX.dll to the virtualenv Scripts/ directory may fix '
+                'this problem.')
         sys.exit(100)
     else:
         logger.info('Got sys.prefix result: %r' % proc_stdout)
 
     pydistutils = os.path.expanduser('~/.pydistutils.cfg')
     if os.path.exists(pydistutils):
         logger.notify('Please make sure you remove any previous custom paths from '
                       'your %s file.' % pydistutils)
     ## FIXME: really this should be calculated earlier
+
+    fix_local_scheme(home_dir)
+
     return py_executable
 
-def install_activate(home_dir, bin_dir):
+def install_activate(home_dir, bin_dir, prompt=None):
+    home_dir = os.path.abspath(home_dir)
     if sys.platform == 'win32' or is_jython and os._name == 'nt':
-        files = {'activate.bat': ACTIVATE_BAT,
-                 'deactivate.bat': DEACTIVATE_BAT}
-        if os.environ.get('OS') == 'Windows_NT' and os.environ.get('OSTYPE') == 'cygwin':
-            files['activate'] = ACTIVATE_SH
+        files = {
+            'activate.bat': ACTIVATE_BAT,
+            'deactivate.bat': DEACTIVATE_BAT,
+            'activate.ps1': ACTIVATE_PS,
+        }
+
+        # MSYS needs paths of the form /c/path/to/file
+        drive, tail = os.path.splitdrive(home_dir.replace(os.sep, '/'))
+        home_dir_msys = (drive and "/%s%s" or "%s%s") % (drive[:1], tail)
+
+        # Run-time conditional enables (basic) Cygwin compatibility
+        home_dir_sh = ("""$(if [ "$OSTYPE" "==" "cygwin" ]; then cygpath -u '%s'; else echo '%s'; fi;)""" % 
+                       (home_dir, home_dir_msys))
+        files['activate'] = ACTIVATE_SH.replace('__VIRTUAL_ENV__', home_dir_sh)
+
     else:
         files = {'activate': ACTIVATE_SH}
+
+        # suppling activate.fish in addition to, not instead of, the
+        # bash script support.
+        files['activate.fish'] = ACTIVATE_FISH
+
+        # same for csh/tcsh support...
+        files['activate.csh'] = ACTIVATE_CSH
+
     files['activate_this.py'] = ACTIVATE_THIS
+    if hasattr(home_dir, 'decode'):
+        home_dir = home_dir.decode(sys.getfilesystemencoding())
+    vname = os.path.basename(home_dir)
     for name, content in files.items():
-        content = content.replace('__VIRTUAL_ENV__', os.path.abspath(home_dir))
-        content = content.replace('__VIRTUAL_NAME__', os.path.basename(os.path.abspath(home_dir)))
+        content = content.replace('__VIRTUAL_PROMPT__', prompt or '')
+        content = content.replace('__VIRTUAL_WINPROMPT__', prompt or '(%s)' % vname)
+        content = content.replace('__VIRTUAL_ENV__', home_dir)
+        content = content.replace('__VIRTUAL_NAME__', vname)
         content = content.replace('__BIN_NAME__', os.path.basename(bin_dir))
         writefile(os.path.join(bin_dir, name), content)
 
-def install_distutils(lib_dir, home_dir):
-    distutils_path = os.path.join(lib_dir, 'distutils')
+def install_distutils(home_dir):
+    distutils_path = change_prefix(distutils.__path__[0], home_dir)
     mkdir(distutils_path)
     ## FIXME: maybe this prefix setting should only be put in place if
     ## there's a local distutils.cfg with a prefix setting?
     home_dir = os.path.abspath(home_dir)
     ## FIXME: this is breaking things, removing for now:
     #distutils_cfg = DISTUTILS_CFG + "\n[install]\nprefix=%s\n" % 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.mkdir(local_path)
+                for subdir_name in os.listdir(home_dir):
+                    if subdir_name == 'local':
+                        continue
+                    os.symlink(os.path.abspath(os.path.join(home_dir, subdir_name)), \
+                                                            os.path.join(local_path, subdir_name))
+
 def fix_lib64(lib_dir):
     """
     Some platforms (particularly Gentoo on x64) put things in lib64/pythonX.Y
     instead of lib/pythonX.Y.  If this is such a platform we'll just create a
     symlink so lib64 points to lib
     """
     if [p for p in distutils.sysconfig.get_config_vars().values()
         if isinstance(p, basestring) and 'lib64' in p]:
@@ -905,70 +1524,90 @@ def resolve_interpreter(exe):
     if os.path.abspath(exe) != exe:
         paths = os.environ.get('PATH', '').split(os.pathsep)
         for path in paths:
             if os.path.exists(os.path.join(path, exe)):
                 exe = os.path.join(path, 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:
 
 def make_environment_relocatable(home_dir):
     """
     Makes the already-existing environment use relative paths, and takes out
     the #!-based environment selection in scripts.
     """
-    activate_this = os.path.join(home_dir, 'bin', 'activate_this.py')
+    home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
+    activate_this = os.path.join(bin_dir, 'activate_this.py')
     if not os.path.exists(activate_this):
         logger.fatal(
             'The environment doesn\'t have a file %s -- please re-run virtualenv '
             'on this environment to update it' % activate_this)
     fixup_scripts(home_dir)
     fixup_pth_and_egg_link(home_dir)
     ## FIXME: need to fix up distutils.cfg
 
 OK_ABS_SCRIPTS = ['python', 'python%s' % sys.version[:3],
                   'activate', 'activate.bat', 'activate_this.py']
 
 def fixup_scripts(home_dir):
     # This is what we expect at the top of scripts:
     shebang = '#!%s/bin/python' % os.path.normcase(os.path.abspath(home_dir))
     # This is what we'll put:
     new_shebang = '#!/usr/bin/env python%s' % sys.version[:3]
-    activate = "import os; activate_this=os.path.join(os.path.dirname(__file__), 'activate_this.py'); execfile(activate_this, dict(__file__=activate_this)); del os, activate_this"
-    bin_dir = os.path.join(home_dir, 'bin')
+    activate = "import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); execfile(activate_this, dict(__file__=activate_this)); del os, activate_this"
+    if sys.platform == 'win32':
+        bin_suffix = 'Scripts'
+    else:
+        bin_suffix = 'bin'
+    bin_dir = os.path.join(home_dir, bin_suffix)
+    home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
     for filename in os.listdir(bin_dir):
         filename = os.path.join(bin_dir, filename)
         if not os.path.isfile(filename):
             # ignore subdirs, e.g. .svn ones.
             continue
         f = open(filename, 'rb')
-        lines = f.readlines()
-        f.close()
+        try:
+            try:
+                lines = f.read().decode('utf-8').splitlines()
+            except UnicodeDecodeError:
+                # This is probably a binary program instead
+                # of a script, so just ignore it.
+                continue
+        finally:
+            f.close()
         if not lines:
             logger.warn('Script %s is an empty file' % filename)
             continue
         if not lines[0].strip().startswith(shebang):
             if os.path.basename(filename) in OK_ABS_SCRIPTS:
                 logger.debug('Cannot make script %s relative' % filename)
             elif lines[0].strip() == new_shebang:
                 logger.info('Script %s has already been made relative' % filename)
             else:
                 logger.warn('Script %s cannot be made relative (it\'s not a normal script that starts with %s)'
                             % (filename, shebang))
             continue
         logger.notify('Making script %s relative' % filename)
         lines = [new_shebang+'\n', activate+'\n'] + lines[1:]
         f = open(filename, 'wb')
-        f.writelines(lines)
+        f.write('\n'.join(lines).encode('utf-8'))
         f.close()
 
 def fixup_pth_and_egg_link(home_dir, sys_path=None):
     """Makes .pth and .egg-link files use relative paths"""
     home_dir = os.path.normcase(os.path.abspath(home_dir))
     if sys_path is None:
         sys_path = sys.path
     for path in sys_path:
@@ -1117,377 +1756,519 @@ def create_bootstrap_script(extra_text, 
     py_exe = 'python%s' % python_version
     content = (('#!/usr/bin/env %s\n' % py_exe)
                + '## WARNING: This file is generated\n'
                + content)
     return content.replace('##EXT' 'END##', extra_text)
 
 ##EXTEND##
 
+def convert(s):
+    b = base64.b64decode(s.encode('ascii'))
+    return zlib.decompress(b).decode('utf-8')
+
 ##file site.py
-SITE_PY = """
-eJzVPGtz2ziS3/krsHSlKGVkOo/ZqS1nPFdO4sx4z5N4J5na3HpSWkqCJI4pkkOQlrVXd7/9+gGA
-AEn5sbP74VSpWCKARqPRbzQYhuFpWcp8ITbFosmkUDKp5mtRJvVaiWVRiXqdVovDMqnqHTydXycr
-qURdCLVTMfaKg+Dp7/wET8WndaoMCvAtaepik9TpPMmynUg3ZVHVciEWTZXmK5HmaZ0mWfoP6FHk
-sXj6+zEIznMBK89SWYkbWSmAq0SxFJe7el3kYtSUuObn8R+Tl+OJUPMqLWvoUGmcgSLrpA5yKReA
-JvRsFJAyreWhKuU8XaZz23FbNNlClFkyl+Lvf+elUdcoClSxkdu1rKTIARmAKQFWiXjA17QS82Ih
-YyFey3mCE/DzllgBQ5vgnikkY16IrMhXsKZczqVSSbUTo1lTEyBCWSwKwCkFDOo0y4JtUV2rMWwp
-7ccWHomE2cNfDLMHrBPn73MO4PghD37O09sJwwbuQXD1mtmmksv0ViQIFn7KWzmf6mejdCkW6XIJ
-NMjrMXYJGAElsnR2VNJ2fKt36LsjwspyZQJzSESZO3MjjYiD81okmQK2bUqkkSLM38pZmuRAjfwG
-pgOIQNJgaJ5Fqmo7D61OFACgwn2sQUo2Sow2SZoDs/6YzAntv6b5otiqMVEAdkuJXxtVu+sfDRAA
-ejsEmAS4WWY3mzxLr2W2GwMCnwD7Sqomq1EgFmkl53VRpVIRAEBtJ+QtID0RSSU1CZkzjdxOiP5E
-kzTHjUUBQ4HHRiTJMl01FUmYWKbAucAV7z78JN6evT4/fa95zABjmV1tAGeAQhvt4AQTiKNGVUdZ
-AQIdBxf4RySLBQrZCucHvNoOR/fudDCCtZdxd4yz4UB2vbl6GlhjDcqE5gpo3H/DkIlaA33+5579
-DoLTfVShhfO37boAmcyTjRTrhPkLOSP4VsP5Li7r9SvgBoVwaiCVws1BBFOEByRxaTYqcilKYLEs
-zeU4AArNqK+/i8AK74v8kPa6wwkAoQpyaHSejWnGXMJC+7Beob4wnXe0Mt0lsPu8KSpSHMD/+Zx0
-UZbk14SjIobibzO5SvMcEUJeCKKDiCZW1ylw4iIWF9SL9ILpJCLWXtwTRaIBXkKmA56Ut8mmzOSE
-xRd1691qhCaTtTB7nTHHQc+a1CvtWrvUQd57EX/ucB2hWa8rCcCbmSd0y6KYiBnobMKmTDYsXvW2
-IM4JBuSJBiFPUE8Yi9+BoqdKNRtpG5FXQLMQQwXLIsuKLZDsOAiEOMBOxij7zAmt0Ab/A1z8P5P1
-fB0EzkwWsAaFyO8DhUDAJMhcc7VGwuM2zcpdJZPmrCmKaiErmuphxD5ixB/YGdcavC9qbdR4ubjL
-xSatUSXNtMlM2eLlUc368RWvG5YBllsRzUzXlk4bXF5WrpOZNC7JTC5REvQmvbLbDnMGA3OSLa7F
-hq0MtAFZZMoWZFixoNJZ1pKcAIDBwpfkadlk1Ekhg4kEJtqUBH+ToEkvtLME7M1mOUCFxOZ7DvYH
-cPsHiNF2nQJ95gABNAxqKdi+WVpX6CC0+ijwjb4Zz/MDp54vtW3iKZdJmmkrn+TBOT08qyoS37ks
-cdREE0PBCvMaXbtVDnREMQ/DMAiMO7RT5mthv02nsyZFezedBnW1OwbuECjkAUMX72GhNB23LKti
-g80WvY+gD0Av44jgQFySopDs43rM9Aop4Grl0nRF8+twpEBVElz+dPbu/PPZR3EirlqtNOmqpC8w
-51meAGeSUge+6EzbqiPoiborRfUl3oGFpn0Fk0SjSQJlUjfAfoD6p6qhZljG3GsMzt6fvr44m/78
-8eyn6cfzT2eAIJgKGRzQktHCNeDzqRj4GxhroWJtIoPeCHrw+vSjfRBMUzX9lV3jExZ27QddHX/9
-RZyciOjX5CaJAvBF2q68Lz8SW37alRKG1vBnVKhxECzkElj4WiKjj56SfznmAUAX6Floe/drkeam
-nZq9KUgORzQCcJhO51miFHaeTiOgFg0Y+MCAmJ1U5N4RDCx37tCxRgU/lQTq5jhkgv8NoJjMaByi
-wSi6Q0wnYPvNPFGSe9HyYdx0irI/nY70hCAUxLbguLA4R8J0QdmvUvAPaftRF8xUkeFPhI/SRFKA
-IQpqG9wkHYLEN0nWSDVyFgVEHI06ZESFlSpiCjD1I7Bo7daNx11qgsuDCGE3IF9WgDaqOpTDzwH4
-DSD2JhjCgIljGKYZYvpn9tgJB3DdIlSbSnWgsJYRl2eX4uWzF4foFkDstrDU8bqjpUvzRtqHS9it
-lawdhHlUNCH+Hrt0WaK+wqfHd8PcxHZn+qyw1FtcyU1xIxeALTKws8viJ2qBCBfWMU9gF0E/kl1l
-PWb8rwTjOV49SAvaYKDehqCY/Tdbf8BBtcwVaAMOUInUOnpmk1JWxU2KRnu2041gc0BjoeUxDkLg
-bJzHZGhawA6BN5kjpbYyAp1UNez4Ed4IErX2otVuMYG7QHX5hb5e58U2n3JEeYKabzS2rIuCpZkX
-O7RbcCDegS0AJAsIkFqiMRRwnQXK1iEgD8uH5QJlyUcHQGAwFYU9DiwTMtESOfrCaRHG+JUg4a0k
-2t0bMwWFLIYYDiRqje0DoyUQEizOKjirGjSToayZbjCxQxKf6y5iDuV8AB0qxmC7RhoadzL0uzoG
-5SwuXKXkjEOz+PnzZ2YbtaY8BSI2w0WjKV6SxYrLHVi3FHSC8Ww460FssAUnEcA0SrOmOPwoipK9
-GtjPSy3bYIwhSqrr8vjoaLvdxjpKL6rVkVoe/fFP33zzp2esExcL4h9YjiMtOmUVH1Ebeobxt8YC
-fWd2rsOPae5zI8EaSfJuyKVD/L5v0kUhjg/HVn8iF7e2Ev83/gQokKmZlKkMtA1bjJ6owyfxSxWK
-J2Lk9h2N2TnQwaa1YkaDQhuoJBhRF2COwXmYF01eR44iVeIrsG4Q6S7krFlFdnLPRpofsFSU05Hl
-gcPnXxADnzMMXxlTPEUtQWyR5svCIf1PzDYJuShaQyB50UT1otDdsBYzxF08XN6tw+cIjVlhqpA7
-UCL8Lg8WQNu5Lzn40f4l2j3HvzQfzxAYSx8Y5tXe3QgFh3DBvZi4UudwNbqdIE1bVs2gYFzVCAoa
-PLUZU1uDIxsZIUj0bkzQzBurewCdOhk4E2ebXYAe7jw9a9dlBccTQh44Ec/piQQ/9bjX9oy3tsky
-Sox0eNSjCgP2NhrtdAF8OTIAJiKsfg65p96W8w+dTeE9GABWcC4FGWzZYyZscX3A8CAcYKee1d83
-mmk8BAI3ifo/DDhhfMITVAqEqRz5jLuPwy1tOX/UQXi/wSGeMrtEEq32yFZXdwzK1J12aZnmqHqd
-PYrnWQFOsVWKxEdtu+8rUCyCj4dsmRZATYaWHE6nE3L2PPmLdD/MQq0ajNfddAZitEkVGTck0xr+
-A6+C0gSU0wFaEjQL5qFC5i/sXyBydr36yx72sIRGhnC77vNCegZDwzHtBwLJqJMaIAQ5kLAvi+Q5
-sjbIgMOcDfJkG5rlXuEmGLECMXMMCGkZwJ0avfgGn8R4kEACipBvayVL8ZUIYfu6kvow1f0v5VKT
-CBg5HchT0BmEEze74GQWTjqZBp+h/RwDHTmUBXDwDDweN1/usrlhWpv4AF/d19sWKVDIlAsJxy6q
-Xwxh3JzsH06cHi2xzCSGobyJvJMRM9M4sNutQcOGGzDennfn0o/dhAWOHUWFeiE3txD+RVWq5oWK
-ML7tpS7cj+aKPm0sthfpLIQ/3gaE4y8eJJl10cG8xSKptmkekYrRKzzxiddDxy7Ws0JHHyneOQJU
-MLV39K4CFqYzviNgeJRVCJtlpLRf3gd750pDC5eHh55fe3X88kt/+ZN9KRj7GSbm2W1dJQrpmTFZ
-mW2Rnn0Li2oRFpfkO31Kp09x0Y+vCgVhnvjw8bNAQnACc5vsHrf0liURm3vX5H0M6qB57iVXZ3XE
-LoAI6i1klKPo8Yz5cGQfu7g7FvYIII9imDs2xUDSfPLPwLlro2COw8Uux0RXV6jxA83ffD0dSF26
-SH7zdXjPLB1iDIn9qOOr2Znp9FwMLtsMqWSSkTfgDKK0X97yju1TjlnlUoCmmezLgFuIH9NulHoL
-v9e9F9mZzwHRA+LgYvYrRJNKJ6BukjSjRDigcXiIes4EwhzbD+PjQbobZUwagU/xbDIYq6irZ7Ax
-EUfe4/5ytOdyapKzAxGj+ZSJ6qNyoM+t22MX7yzaPXLbL/uDtvTfpLMeCchbTThAwAeuwRwJ/v9f
-CSsrhqaV1bij9ZW8W88bYA9Qh3sckTvckP7UfIK0NM4Ey50ST1FAn4otnQNTsg2PDgDKgv2MATi4
-jfo08U1TVXwmSHJeyuoQD8kmAktgjKdBlTV9MEfvZY2Y2G5zSl46BRPFkOqMdDrSriRqPclhkV0X
-Jokh85u0grGgVUbRDx9+PIv6DKCnwUHD4Nx9NFzycDuFcB/BtJEmTvSYMUyhxwz556Uq8ji0q1zN
-Oa1JEWqy9QnbywyayHJ4D+7JEXgneHz4iTHbfC3n11NJB7rIpjjUyZK+wWbExJ7z+oU1KllSdRCs
-ZJ41SCt29LCsa9nkc0qY1xLsua7BxJoMOqblhNAyS1ZiRIMXmIzQ3Ej5ipuk0t5OWRVY9SeadHG0
-ShdC/tYkGQZ6crkEXPA0QzfFPD3lJMRbPmnmajAl502V1jsgQaIKfRhEh9JOx9mOFzrykOS8PxMQ
-j6mPxUdcNrYz4RaGXCZc9FPguEiMxHCAOa1D7qLn0J4XU5x1SsWTE0aqf1BLj4PuDAUACAEorD8c
-61yO3yKpyT1xoj13iYpa0iOlG3sW5HEglNEYY1/+TT99RnR5aw+Wq/1Yru7GctXFcjWI5crHcnU3
-lq5I4MbaNIaRhKFURjfPPVgF4WYheJqzZL7mflhUh8VzAFGUJqAzMsW1pV6ugw98CAipbecEkh62
-VQ0pV+tVBSdFNUjkfjzV0MGjqQp2BlONhB7MSzE+277KDn/sURxTDc6MhrO8LZI6iT25WGXFDMTW
-ojtpAUxEt8iDs2f5zXTG+b6OpQov/+vTDx/eY3cEFZrzbhqGm4iGBZcyeppUK9WXpjbYKIEdqadf
-mUHDNMCDB+ZaeJYD/u8tHfkj44gtHVkXogQPgGptbDe3IiWKOs916Yp+zkzOpw8nIszrsF3UHiKd
-Xl6+Pf10GlISKPzf0BUYQ1tfOlx8TA/boe+/ud0txXEMCLXOpbTGz12TR+uWI+63sQZsx+199qXz
-4MVDDPZgWOqv8t9KKdgSIFSs04GPIdSDg5/fFSb06GMYsVeS5Z61sLNi2xzZc1wUR/SHEtHdCfzT
-L4wxpkAA7UKNTGTQBlMdpW/N6x0UdYA+0Nf73SFYN/TqRjI+Re0iBhxAh7K22373z8vcs9FTsn59
-9v35+4vz15enn35wXEB05T58PHohzn78LKhgAA0Y+0QJnpXXWJoChsW9QSIWBfxrML2xaGpOSsKo
-txcXOne/wTsEWFSKNieG51zXYqFxjoaznvahLkhBjDIdIDmXNah+gy5zYLy04YsCqtCFp3QHZIbO
-aqNDL30Jx1zWoYPOGKQPOrukYBBccwRNVB5cm6iw4jMhfYFlAClto22lQEY5qN75sXMiYvLtXmKO
-BsOTdrBW9FeRi2v0JVZllkIk9yqysqSHYb1Eyzj6oT3yZLyGNKAzHGbWHXnVe7FAq/Uq4rXp8eOW
-0X5rAMOWwd7CunNJ9QJUGIvVTiLCTnxyEMlb+Gq3Xu+Bgg3Do58aN9EwXQqrTyC4FusUAgjgyTVY
-X4wTAEJnJ/wE9LGTHZAFHtdHbzaLw79EmiB+719+GeheV9nh30QJUZDg2pJogJhu57cQ+MQyFmcf
-3o0jRo5qNcVfGqy7BoeEsnyOtFNBC5+pTkdKZktdcODrA2zQfgI1d4ZXsqz08GHXOEIJeKJG5DU8
-UYZ+Edb/WNgTXMq4AxpLyi1meDXLPZg2nwPxcS2zTFchn7+9OAPfEavcUYL4nOcMpuN8CR6q6mos
-vjrWAYVHrtBcIRtX6MLSsfsi9roNZmZR5Gi0d1Jv94myn/1RvVRnlaTKRXuEy2ZYTp13jNwM22F2
-lrm73w3p7HYjuqPkMGNMLyuqa/Q5AzianiYcGEHEhJX0JtnMp4tpXptCtiydgzYFxQtqdQKigiTG
-62LEf0XO6d6iUuaWCTwsd1W6WteYUofBMVW4Y/cfTz9fnL+nkvEXL1vfe4BFJxQPTLi44AQrxzDn
-AV/cajDkrel0iHN1E8JAHQR/uk1ctXDCE/TGcXoR/3Sb+JrPiRMP8gpATTVlV0gwDHCGDUlPKxGM
-q42G8eNWhrWY+WAoI4m3CnQBgLu+Pj/anh2DQtkf0/iIs4plqWk4MoPdSqXuR69xWeLhymI03Ala
-hyTMfGYw9LrXsq8myv30ZBFvHAJG/d7+HKZqqNdVL8dhtn3cQsGttrS/5E7G1Ok3z1GUgYgjd/DY
-ZbJhVay7Mwd61bU9YOJbja6RxEGFHv6Sh9rP8DCxxO5FK2Yg3W4gU4D5DKnvZTTgSaFdAAVCRaEj
-R3In46cvvDU6NuH+NWrdBRbyB1CEukSTSv+LCjgRvvzG7iM3EVqoSo9F5PgrucwLWz+En+0afcvn
-/hoHZYBSmSh2VZKv5IhhTQzMr3xi70nEkrb1OOYq7VRLaO4GD/V2D4P3xWL49MRg1uGDXr9ruetq
-I5862GHwgoAPoUq2oN3Lph7xXu09LMDu+gh2FGGS5LdoD73uQU/DQr/rt4EzHPwwsYx7ae1V5/JJ
-ZBu0XzmvIGCqFR2WOFbYeIiuYW5t4ElrhUP7VFeM2N8DN3qcOlQXLqPgQvVWGOoOnVA/5LslfF0u
-pdrl9uqDblvIG5kV4BZBxIWl6b/a0vRxPJjquAevFhUk6C/aHU/ya/IQ3/z1fCLevP8J/n8tP0BM
-gdexJuJvgIB4U1QQW/GVQLqrjWXtNQdNRaPwzhZBozQ9X2tHZ+XSWwceCeh6e7/Q3uoHgTWG1Ybf
-pQAo8hrpmmxrHU0VOfw211z6bphxkYZ2JdSNSIb9xf9YMH+ke8brepOhonSSBO12XoUX52/O3n88
-i+tb5CPzM3SSCH79C65IH5FWeBw0EfbJvMEnXxyP8QeZlQMOo465zEUCjLlEBG55aeMsvqqfWN86
-qTBwFuVuUcxj7AlcxXeX6i14kGMnvLrXwnnmBWGNxvoQqXVj8TFQQ/zSlfgQOtIYvSYaSQglM7xE
-w4/jcNgGTQRlduHP0+vtwk0M69sQtMAupu2qR/5wq3TWTGcNz2UmQu3E7oS5I5elidrM5u7dqQ+5
-0C9bAHVCmX65TJqsFjKHqILCXLr1DlrVve7EcsLcwrqc7gBRoiLbJjvl1JokSoQ4a0gXd/FIgnJm
-EIX+mFyz7sV7WKLhO5oAnRCl2KFwhqpmvmY55nBAq7ve0fs2zV++iHpE5kk5Rpy3ThysE10mxmgl
-a71+fjAaXz1vzSjlZefeZcd5CRbG5ZQDUJ/l06dPQ/Ef91t+RiXOiuIaXBKAPRQQigtq3mOz9eLs
-bvW9WtMSA0vO1/IKHnyh/LF93uSUnLtjKG2ItH8NjAj3JrL8aPp3bCCnrSo+auUefGSjbcfPeUqv
-VMHkikSVq99Mg4kXI1DEkqAbokTN0zTiQB32Y1c0eE8JE22aX+QtcHyKYCbYimdEHGau0buikkXL
-PRadExES4JBKiHg2uuhJN3UAz+nlTqM5Pc/Tuq2xf+YeH+o7yrV9U4rmK5FsUTLMOjrEcK68eaza
-epfFnSzqeevF/MpNuXVWyc334Q6sDZJWLJcGU3hoNmleyGpujCruWDpPaweM6YdweDC9IIYMUBwM
-oBSChifDsLASbVv/YPfFxfQDnaQempl0AU1tX7rD6ZEk79SRxXE7PyViLCEt35ovY5jlPSV2tT/g
-zSX+oNOKWGDtvRvAverV5PrOP1cwtC8CADj0nhmrIC07ejrCebmRhc9Mqx359hUBTj04hqeE201a
-1U2STfW99Cm6bFN7tKzxtFeE7rz8Zn0WcKgLcDUPdbE0+A6mzgTpibWOplwd4nMdnsfutRv/hkpZ
-oK/3wtPjmPR9xpfgHQ2OPb8yFzceovLN9YFe5b2L5YSqeqJxt1ax1wtPECJd80Vp2SEP+1FTGliu
-K/xQABkAgD/s+EVfdU6BnNI0rhvdl/rvAf3m67vAukpmsGiW8u2+4tEXl9wq1jbhz7JsfL41uJUo
-GQtz1VQLHt/KQylhlW9vEptah+6FCGh++JLvWPADTtMinOzwiYq0m2048i5aWfzuIlXbKfinqKRH
-DdMK3TwsM1wn3ILi2pTHNhgybxLAFO3ILT7BT309WJad4MtqkKCH9XV01/J5/F1r1z0Cu3Jz9tJb
-u3/9wqWBHrufX4ZowC6oJsSDKjotRtN/jehO9LHgcHpDf5b2tXmc5SAe1KhNNEtukrn7HQ+nD/mt
-e219oHM5wt31zpr2Xhs27Nzn5D4380EcPrf33+h0daHZiw0WvYNlyvU6U7laqWmCr/CZkpdDZ8s9
-82Xs5jt6fYtM1M6YO7xRDyAMq+gqILfQD3YdPCl+lSAfzTpXpwVNTQVMTkWUShccvWrbCuBijlpp
-vEmKcElTmEnMN6imKitwR0L9wjk+Mxwqs2qBmghqk6hrg7oZMdHvH8Mp+KDaXL/hWJldHI86QAiu
-ynfe28E1gtOpbQN+edZeBEwnliFk3mwgPq7bO/D+2UQqvnNmoEtXuMFOjNSKXYdTXMRSyx8OUhil
-2O9fafPveTd33P4bW5X2cLaiETr8fszFQkfKDTent/YdOO67Fxb0HkOKiPjdCcJ2a7nP3vuHrTAv
-dCFFqIMWbtUvmeAXinFWBSuyHD4CuXevPPiVcVZnscNg0XCeuYqh/1YBvDVHhnboZUE9Lui/Fshn
-hnZ+X29YZullovd0tlQ84R6Diqedbdy68ljEco8r7xcqPtKV9+A/0JXXr3YCa6Lx0fpgsHTxHp+f
-1YT7nqSWEWDMFIiEyfbOW3aMPRy5hYDgkKe3oX17IOtM53aBMRPIkf0XaBAIfh+ScqumvPeVmHmH
-fG1fuujx9xcfXp9eEC2ml6dv/vP0ezoixrxVx2Y9ONbJi0Om9qFXkubGPfpYb2jyFtuBd4lxXbWG
-0GvvHYkMQBiuoR/a0K4ic5v3DejVIvcHAeJ3L7sDdZ/KHoTcc7503at7mNepHQv0Uy70Mb+ccxnz
-yGRNWRzalKhpb7NYWkZ7Qf6+jXNKbvrqRDul+lVVexIQY1v4RTuAySvkL5u7MlW8NkPCjkr3nc5U
-rYY3IMw9b5DCuXReN0RvGmJQtf/y6AqUXYI5eHYYJ/ZFjNSP83TKvmEU8/BzGRuCeFcQwv76XGFf
-yGwPFYKAFZ5+mQ4jYvSfzmzb06AnSlwd0mWnQ1Q2X+wv3DPt5P41xTOf2r6VQpnjUsx3Q+dlk7nn
-OHZMbwA5f5QWLJZOdS1oviOgcyueCtgbfSZWiLOdiCBK1IcVWLBDdNRvlHGQR7vpYG9o9Uwc7rsK
-414FEeL5/o6Lzm0TPeIFj1D3jFCNuXDgWGCsGdl3x0V8R5A5ryzoNRSe84HnGfrlh/D15ur5sU1K
-Ir9js/uSA6R96Bj2q7aq/M4XHzmjiVeqCdUOYKHKuAv+S+iw5lLsD3B6NbJ7giBz4MSQQq99+Fzd
-jPBeshp2EbV8dwwLEqMnakyLcqqKNe72ybi32FZl9WFwgfT9MHraD0AhlGHfBD/8rg1Qz890PDhr
-6G1x1uHEa4WOPNAhuc8LPMJ4fS123eF0relBw6lc3BaZc4cu7+n9BrFmr4F7eYmO/bagu/KWB/bY
-fr4gNjz++QPG98sp7PAXdznUttfLwUsJ7MRiAQ4ez3YoZB7HYF1AYY5ITWPtppFwvPjdktHhpnZp
-yBXo8FFND74JkgILcmKn2vJbYxD8H2/QG9E=
-""".decode("base64").decode("zlib")
+SITE_PY = convert("""
+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
+Q7wQmAIMcman2gOwRiH4P2ts6wE=
+""")
 
 ##file ez_setup.py
-EZ_SETUP_PY = """
-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
-178BYnMUkw==
-""".decode("base64").decode("zlib")
+EZ_SETUP_PY = convert("""
+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
+BDaonX65d/fwEjNqlDjLVIvM9X+XVxF7
+""")
 
 ##file distribute_setup.py
-DISTRIBUTE_SETUP_PY = """
-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
-""".decode("base64").decode("zlib")
+DISTRIBUTE_SETUP_PY = convert("""
+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
+""")
 
 ##file activate.sh
-ACTIVATE_SH = """
-eJytVFFv2jAQfs+vuIU+QDWK+tqKB6oigdRC1bBOW1sZk1yIpWAj2yGj0/77ziFAUijStPIA2Hc+
-f/7u+64Bk0QYiEWKsMiMhRlCZjCCXNgEfKMyHSLMhOzw0IoVt+jDeazVAmbcJOdeA9Yqg5BLqSzo
-TIKwEAmNoU3Xnhfh9hQ0W/DbA/o0QKNBCyqNAOVKaCUXKC2suBZ8lqIpskQMz9CW4J+x8d0texo+
-Tr717thDbzLw4RWuwSYoi0z3cdvdY6m7DPy1VNoWibu9TDocB4eKeCxOwvgxGYxHg/F9/xiYXfAA
-0v7YAbBd6CS8ehaBLCktmmgSlRGpEVqiv+gPcBnBm0m+Qp6IMIGErxA4/VAoVIuFC9uE26L1ZSkS
-QMjTlCRgFcwJAXWU/sVKu8WSk0bKo+YC4DvJRGW2DFsh52WZWqIjCM4cuRAmXM7RQE5645H7WoPT
-Dl1LulgScozeUX/TC6jpbbVZ/QwG7Kn/GAzHoyPkF09r6xo9HzUxuDzWveDyoG2UeNCv4PJko8rw
-FsImZRvtj572wL4QLgLSBV8qGaGxOnOewXfYGhBgGsM24cu729sutDXb9uo/HvlzExdaY0rdrxmt
-Ys/63Z5Xgdr1GassGfO9koTqe7wDHxGNGw+Wi0p2h7Gb4YiNevd9xq7KtKpFd7j3inds0Q5FrBN7
-LtIUYi5St1/NMi7LKdZpDhdLuwZ6FwkTmhsTUMaMR2SNdc7XLaoXFrahqQdTqtUs6Myu4YoUu6vb
-guspCFm4ytsL6sNB8IFtu7UjFWlUnO00s7nhDWqssdth0Lu567OHx/H9w+TkjYWKd8ItyvlTAo+S
-LxBeanVf/GmhP+rsoR8a4EwpeEpTgRgin0OPdiQZdy7CctYrLcq5XR5BhMTa5VWnk+f5xRtasvrq
-gsZBx6jY5lxjh7sqnbrvnisQp1T6KNiX6fQV9m/D1GC9SvPEQ1v7g+WIrxjaMf9Js/QT5uh/ztB/
-n5/b2Uk0/AXm/2MV
-""".decode("base64").decode("zlib")
+ACTIVATE_SH = convert("""
+eJytVVFvokAQfudXTLEP2pw1fW3jg01NNGm1KV4vd22zrDDIJrhrYJHay/33m0VEKGpyufIg7s63
+M9/OfDO0YBaKBAIRISzTRMMcIU3Qh0zoEOxEpbGHMBeyxz0t1lyjDRdBrJYw50l4YbVgo1LwuJRK
+Q5xKEBp8EaOno41l+bg7Be0O/LaAnhbEmKAGFfmAci1iJZcoNax5LPg8wiRHiQBeoCvBPmfT+zv2
+PH6afR/cs8fBbGTDG9yADlHmSPOY7f4haInA95WKdQ4s91JpeDQO5fZAnKTxczaaTkbTh+EhMqWx
+QWl/rEGsNJ2kV0cRySKleRGTUKWUVB81pT+vD3Dpw0cSfoMsFF4IIV8jcHqRyVPLpTHrkOu89IUr
+EoDHo4gkoBUsiAFVlP4FKjaLFSeNFEeTS4AfJBOV6sKshVwUbmpAkyA4N8kFL+RygQlkpDfum58N
+GO1QWNLFipij/yn1twOHit5V29UvZ8Seh0/OeDo5kPz8at24lp5jRXSuDlXPuWqUjYCNejlXJwtV
+mHcUtpCddTh53hM7I15EpA+2VNLHRMep6Rn8xK0FDkYB7ABnn6J3jWnXbLvQfyzqz61dxDFGVP1a
+o1Xasx7bsipU+zZjlSVjtlUkoXofq9FHlMZtDxaLCrrH2O14wiaDhyFj1wWs2qIl773iTbZohyza
+iD0TUQQBF5HZr6ISgzKKNZrD5UpvgO5FwoT2tgkIMec+tcYm45sO+fPytqGpBy75aufpTG/gmhRb
++u3AjQtC5l1l7QV1dBAcadt+7UhFGpXONprZRviAWtbY3dgZ3N4P2ePT9OFxdjJiruJSuLk7+31f
+x60HKiWc9eH9SBc04XuPGCVYce1SXlDyJcJrjfKr7ebSNpEaQVpg+l3wiAYOJZ9GCAxoR9JMWAiv
++IyoWBSfhOIIIoRar657vSzLLj9Q0xRZX9Kk6SUq0BmPsceNl179Mi8Vii65Pkj21XXf4MAlSy/t
+Exft7A8WX4/iVRkZprZfNK2/YFL/55T+9wm9m86Uhr8A0Hwt
+""")
+
+##file activate.fish
+ACTIVATE_FISH = convert("""
+eJydVm1v4jgQ/s6vmA1wBxUE7X2stJVYlVWR2lK13d6d9laRk0yIr8HmbIe0++tvnIQQB9pbXT5A
+Ys/LM55nZtyHx5RrSHiGsMm1gRAh1xhDwU0Kng8hFzMWGb5jBv2E69SDs0TJDdj3MxilxmzPZzP7
+pVPMMl+q9bjXh1eZQ8SEkAZULoAbiLnCyGSvvV6SC7IoBcS4Nw0wjcFbvJDcjiuTswzFDpiIQaHJ
+lQAjQUi1YRmUboC2uZJig8J4PaCnT5IaDcgsbm/CjinOwgx1KcUTMEhhTgV4g2B1fRk8Le8fv86v
+g7v545UHpZB9rKnp+gXsMhxLunIIpwVQxP/l9c/Hq9Xt1epm4R27bva6AJqN92G4YhbMG2i+LB+u
+grv71c3dY7B6WtzfLy9bePbp0taDTXSwJQJszUnnp0y57mvpPcrF7ZODyhswtd59+/jdgw+fwBNS
+xLSscksUPIDqwwNmCez3PpxGeyBYg6HE0YdcWBxcKczYzuVJi5Wu915vn5oWePCCoPUZBN5B7IgV
+MCi54ZDLG7TUZ0HweXkb3M5vFmSpFm/gthhBx0UrveoPpv9AJ9unIbQYdUoe21bKg2q48sPFGVwu
+H+afrxd1qvclaNlRFyh1EQ2sSccEuNAGWQwysfVpz1tPajUqbqJUnEcIJkWo6OXDaodK8ZiLdbmM
+L1wb+9H0D+pcyPSrX5u5kgWSygRYXCnJUi/KKcuU4cqsAyTKZBiissLc7NFwizvjxtieKBVCIdWz
+fzilzPaYyljZN0cGN1v7NnaIPNCGmVy3GKuJaQ6iVjE1Qfm+36hglErwmnAD8hu0dDy4uICBA8ZV
+pQr/q/+O0KFW2kjelu9Dgb9SDBsWV4F4x5CswgS0zBVlk5tDMP5bVtUGpslbm81Lu2sdKq7uNMGh
+MVQ4fy9xhogC1lS5guhISa0DlBWv0O8odT6/LP+4WZzDV6FzIkEqC0uolGZSZoMnlpxplmD2euaT
+O4hkTpPnbztDccey0bhjDaBIqaWQa0uwEtQEwtyU56i4fq54F9IE3ORR6mKriODM4XOYZwaVYLYz
+7SPbKkz4i7VkB6/Ot1upDE3znNqYKpM8raa0Bx8vfvntJ32UENsM4aI6gJL+jJwhxhh3jVIDOcpi
+m0r2hmEtS8XXXNBk71QCDXTBNhhPiHX2LtHkrVIlhoEshH/EZgdq53Eirqs5iFKMnkOmqZTtr3Xq
+djvPTWZT4S3NT5aVLgurMPUWI07BRVYqkQrmtCKohNY8qu9EdACoT6ki0a66XxVF4f9AQ3W38yO5
+mWmZmIIpnDFrbXakvKWeZhLwhvrbUH8fahhqD0YUcBDJjEBMQwiznE4y5QbHrbhHBOnUAYzb2tVN
+jJa65e+eE2Ya30E2GurxUP8ssA6e/wOnvo3V78d3vTcvMB3n7l3iX1JXWqk=
+""")
+
+##file activate.csh
+ACTIVATE_CSH = convert("""
+eJx9U11vmzAUffevOCVRu+UB9pws29Kl0iq1aVWllaZlcgxciiViItsQdb9+xiQp+dh4QOB7Pu49
+XHqY59IgkwVhVRmLmFAZSrGRNkdgykonhFiqSCRW1sJSmJg8wCDT5QrucRCyHn6WFRKhVGmhKwVp
+kUpNiS3emup3TY6XIn7DVNQyJUwlrgthJD6n/iCNv72uhCzCpFx9CRkThRQGKe08cWXJ9db/yh/u
+pvzl9mn+PLnjj5P5D1yM8QmXlzBkSdXwZ0H/BBc0mEo5FE5qI2jKhclHOOvy9HD/OO/6YO1mX9vx
+sY0H/tPIV0dtqel0V7iZvWyNg8XFcBA0ToEqVeqOdNUEQFvN41SumAv32VtJrakQNSmLWmgp4oJM
+yDoBHgoydtoEAs47r5wHHnUal5vbJ8oOI+9wI86vb2d8Nrm/4Xy4RZ8R85E4uTZPB5EZPnTaaAGu
+E59J8BE2J8XgrkbLeXMlVoQxznEYFYY8uFFdxsKQRx90Giwx9vSueHP1YNaUSFG4vTaErNSYuBOF
+lXiVyXa9Sy3JdClEyK1dD6Nos9mEf8iKlOpmqSNTZnYjNEWiUYn2pKNB3ttcLJ3HmYYXy6Un76f7
+r8rRsC1TpTJj7f19m5sUf/V3Ir+x/yjtLu8KjLX/CmN/AcVGUUo=
+""")
 
 ##file activate.bat
-ACTIVATE_BAT = """
-eJyFUssKgzAQvAfyD3swYH+hItSiVKlGsalQKOyhauvFHOr/U+MzFcWc9jEzO7vkVLw+EmRZUvIt
-GsiCVNydED2e2YhahkgJJVUJtWwgL8qqLnJI0jhKBJiUQPsUv6/YRmJcKDkMlBGOcehOmptctgJj
-e2IP4cfcjyNvFOwVp/JSdWqMygq+MthmkwHNojmfhjuRh3iAGffncsPYhpl2mm5sbY+9QzjC7ylt
-sFy6LTEL3rKRcLsGicrXV++4HVz1jzN4Vta+BnsingM+nMLSiB53KfkBsnmnEA==
-""".decode("base64").decode("zlib")
+ACTIVATE_BAT = convert("""
+eJyFUkEKgzAQvAfyhz0YaL9QEWpRqlSjWGspFPZQTevFHOr/adQaU1GaUzI7Mzu7ZF89XhKkEJS8
+qxaKMMsvboQ+LxxE44VICSW1gEa2UFaibqoS0iyJ0xw2lIA6nX5AHCu1jpRsv5KRjknkac9VLVug
+sX9mtzxIeJDE/mg4OGp47qoLo3NHX2jsMB3AiDht5hryAUOEifoTdCXbSh7V0My2NMq/Xbh5MEjU
+ZT63gpgNT9lKOJ/CtHsvT99re3pX303kydn4HeyOeAg5cjf2EW1D6HOPkg9NGKhu
+""")
 
 ##file deactivate.bat
-DEACTIVATE_BAT = """
+DEACTIVATE_BAT = convert("""
 eJxzSE3OyFfIT0vj4spMU0hJTcvMS01RiPf3cYkP8wwKCXX0iQ8I8vcNCFHQ4FIAguLUEgWIgK0q
 FlWqXJpcICVYpGzx2BAZ4uHv5+Hv6wq1BWINXBTdKriEKkI1DhW2QAfhttcxxANiFZCBbglQSJUL
 i2dASrm4rFz9XLgAwJNbyQ==
-""".decode("base64").decode("zlib")
+""")
+
+##file activate.ps1
+ACTIVATE_PS = convert("""
+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
+QastYw==
+""")
 
 ##file distutils-init.py
-DISTUTILS_INIT = """
-eJytVl2L6zYQffevGBKK7XavKe3bhVBo78uFSyml0IdlEVpbTtR1JCMpm6S/vjOSY0v+uO1DDbs4
-0tF8nJk5sjz32jjQNpPhzd7H1ys3SqqjhcfCL1q18vgbN1YY2Kc/pQWlHXB4l8ZdeCfUO5x1c+nE
-E1gNVwE1V3CxAqQDp6GVqgF3EmBd08nXLGukUfws4IDBVD13p2pYoS3rLk52ltF6hPhLS1XM4EUc
-VsVYKzvBWPkE+WgmLzPZjkaUNmd6KVI3JRwWoRSLM6P98mMG+Dw4q+il8Ev07P7ATCNmRlfQ8/qN
-HwVwB99Y4H0vMHAi6BWZUoEhoqXTNXdSK+A2LN6tE+fJ0E+7MhOdFSEM5lNgrJIKWXDF908wy87D
-xE3UoHsxkegZTaHIHGNSSYfm+ntelpURvCnK7NEWBI/ap/b8Z1m232N2rj7B60V2DRM3B5NpaLSw
-KnfwpvQVTviHOR+F88lhQyBAGlE7be6DoRNg9ldsG3218IHa6MRNU+tGBEYIggwafRk6yzsXDcVU
-9Ua08kYxt+F3x12LRaQi52j0xx/ywFxrdMRqVevzmaummlIYEp0WsCAaX8cFb6buuLUTqEgQQ6/Q
-04iWRoF38m/BdE8VtlBY0bURiB6KG1crpMZwc2fIjqWh+1UrkSLpWUIP8PySwLKv4qPGSVqDuMPy
-dywQ+gS7L1irXVkm5pJsq3l+Ib1lMOvUrxI+/mBBY4KB+WpUtcO06RtzckNvQ6vYj1lGoZM2sdDG
-fryJPYJVn/Cfka8XSqNaoLKhmOlqXMzW9+YBVp1EtIThZtOwzCRvMaARa+0xD0b2kcaJGwJsMbc7
-hLUfY4vKvsCOBdvDnyfuRbzmXRdGTZgPF7oGQkJACWVD22IMQdhx0npt5S2f+pXO+OwH6d+hwiS5
-7IJOjcK2emj1zBy1aONHByfAMoraw6WlrSIFTbGghqASoRCjVncYROFpXM4uYSqhGnuVeGvks4jz
-cjnCoR5GnPW7KOh4maVbdFeoplgJ3wh3MSrAsv/QuMjOspnTKRl1fTYqqNisv7uTVnhF1GhoBFbp
-lh+OcXN2riA5ZrYXtWxlfcDuC8U5kLoN3CCJYXGpesO6dx6rU0zGMtjU6cNlmW0Fid8Sja4ZG+Z3
-fTPbyj+mZnZ2wSQK8RaT9Km0ySRuLpm0DkUUL0ra3WQ2BgGJ7v9I9SKqNKZ/IR4R28RHm+vEz5ic
-nZ2IH7bfub8pU1PR3gr10W7xLTfHh6Z6bgZ7K14G7Mj/1z5J6MFo6V5e07H0Ou78dTyeI+mxKOpI
-eC2KMSj6HKxd6Uudf/n886fPv+f++x1lbASlmjQuPz8OvGA0j7j2eCu/4bcW6SFeCuNJ0W1GQHI5
-iwC9Ey0bjtHd9P4dPA++XxLnZDVuxvFEtlm3lf5a2c02u2LRYXHH/AOs8pIa
-""".decode("base64").decode("zlib")
+DISTUTILS_INIT = convert("""
+eJytV92L4zYQf/dfMU0ottuse7RvC6FQrg8Lxz2Ugz4si9HacqKuIxlJ2ST313dG8odkO9d7aGBB
+luZLv/nNjFacOqUtKJMIvzK3cXlhWgp5MDBsqK5SNYftsBAGpLLA4F1oe2Ytl+9wUvW55TswCi4c
+KibhbFDSglXQCFmDPXIwtm7FawLRbwtPzg2T9gf4gupKv4GS0N262w7V0NvpbCy8cvTo3eAus6C5
+ETU3ICQZX1hFTw/dzR6V/AW1RCN4/XAtbsVXqIXmlVX6liS4lOzEYY9QFB2zx6LfoSNjz1a0pqT9
+QOIfJWQ2E888NEVZNqLlZZnvIB0NpHkimlFdKn2iRRY7yGG/CCJb6Iz280d34SFXBS2yEYPNF0Q7
+yM7oCjpWvbEDQmnhRwOs6zjThpKE8HogwRAgraqYFZgGZvzmzVh+mgz9vskT3hruwyjdFcqyENJw
+bbMPO5jdzonxK68QKT7B57CMRRG5shRSWDTX3dI8LzRndZbnSWL1zfvriUmK4TcGWSnZiEPCrxXv
+bM+sP7VW2is2WgWXCO3sAu3Rzysz3FiNCA8WPyM4gb1JAAmCiyTZbhFjWx3h9SzauuRXC9MFoVbc
+yNTCm1QXOOIfIn/g1kGMhDUBN72hI5XCBQtIXQw8UEEdma6Jaz4vJIJ51Orc15hzzmu6TdFp3ogr
+Aof0c98tsw1SiaiWotHffk3XYCkqdToxWRfTFXqgpg2khcLluOHMVC0zZhLKIomesfSreUNNgbXi
+Ky9VRzwzkBneNoGQyyvGjbsFQqOZvpWIjqH281lJ/jireFgR3cPzSyTGWzQpDNIU+03Fs4XKLkhp
+/n0uFnuF6VphB44b3uWRneSbBoMSioqE8oeF0JY+qTvYfEK+bPLYdoR4McfYQ7wMZj39q0kfP8q+
+FfsymO0GzNlPh644Jje06ulqHpOEQqdJUfoidI2O4CWx4qOglLye6RrFQirpCRXvhoRqXH3sYdVJ
+AItvc+VUsLO2v2hVAWrNIfVGtkG351cUMNncbh/WdowtSPtCdkzYFv6mwYc9o2Jt68ud6wectBr8
+hYAulPSlgzH44YbV3ikjrulEaNJxt+/H3wZ7bXSXje/YY4tfVVrVmUstaDwwOBLMg6iduDB0lMVC
+UyzYx7Ab4kjCqdViEJmDcdk/SKbgsjYXgfMznUWcrtS4z4fmJ/XOM1LPk/iIpqass5XwNbdnLb1Y
+8h3ERXSWZI6rZJxKs1LBqVH65w0Oy4ra0CBYxEeuOMbDmV5GI6E0Ha/wgVTtkX0+OXvqsD02CKLf
+XHbeft85D7tTCMYy2Njp4DJP7gWJr6paVWXZ1+/6YXLv/iE0M90FktiI7yFJD9e7SOLhEkkaMTUO
+azq9i2woBNR0/0eoF1HFMf0H8ChxH/jgcB34GZIz3Qn4/vid+VEamQrOVqAPTrOfmD4MPdVh09tb
+8dLLjvh/61lEP4yW5vJaH4vHcevG8agXvzPGoOhhXNncpTr99PTHx6e/UvffFLaxUSjuSeP286Dw
+gtEMcW1xKr/he4/6IQ6FUXP+0gkioHY5iwC9Eyx3HKO7af0zPPe+XyLn7fAY78k4aiR387bCr5XT
+5C4rFgwLGfMvJuAMew==
+""")
 
 ##file distutils.cfg
-DISTUTILS_CFG = """
+DISTUTILS_CFG = convert("""
 eJxNj00KwkAMhfc9xYNuxe4Ft57AjYiUtDO1wXSmNJnK3N5pdSEEAu8nH6lxHVlRhtDHMPATA4uH
 xJ4EFmGbvfJiicSHFRzUSISMY6hq3GLCRLnIvSTnEefN0FIjw5tF0Hkk9Q5dRunBsVoyFi24aaLg
 9FDOlL0FPGluf4QjcInLlxd6f6rqkgPu/5nHLg0cXCscXoozRrP51DRT3j9QNl99AP53T2Q=
-""".decode("base64").decode("zlib")
+""")
 
 ##file activate_this.py
-ACTIVATE_THIS = """
-eJyNUk2L3DAMvftXiCxLEphmSvc2MIcu9NaWHnopwxCcRNlRN7GD7clM/n0lp5mPZQs1JLb8pKcn
-WUmSPE9w9GReAM9Yt9RhFg7kSzmtoKE6ZGU0ynJ7AfIcJnuEE3Wd0nWgUQcEQWEkF466QzMCf+Ss
-6dGEQqmfgtbaQIWcDxs4HdBElv7og1wBg3gmH0TMjykcrAEyAd3gkP8rMDaocMDbHBWZ9RBdVZIk
-SgU3bRTwWjQrPNc4BPiue/zinHUz7DRxws/eowtkTUSyiMhKfi2y3NHMdXX0itcOpYMOh3Ww61g8
-luJSDFP6tmH3ftyki2eeJ7mifrAugJ/8crReqUqztC0fC4kuGnKGxWf/snXlZb8kzXMmboW0GDod
-Wut62G4hPZF5+pTO5XtiKYOuX/UL+ptcvy2ZTPKvIP1KFdeTiuuHxTXNFXYe/5+km0nmJ3r0KTxG
-YSM6z23fbZ7276Tg9x5LdiuFjok7noks1sP2tWscpeRX6KaRnRuT3WnKlQQ51F3JlC2dmSvSRENd
-j3wvetUDfLOjDDLPYtPwjDJb7yHYeNXyMPMLtdEQKRtl8HQrdLdX3O4YxZP7RvfcNH6ZCPMsi8td
-qZvLAN7yFnoY0DSZhOUXj4WWy+tZ8190ud1tPu5Zzy2N+gOGaVfA
-""".decode("base64").decode("zlib")
+ACTIVATE_THIS = convert("""
+eJyNU01v2zAMvetXEB4K21jmDOstQA4dMGCHbeihlyEIDMWmG62yJEiKE//7kXKdpN2KzYBt8euR
+fKSyLPs8wiEo8wh4wqZTGou4V6Hm0wJa1cSiTkJdr8+GsoTRHuCotBayiWqQEYGtMCgfD1KjGYBe
+5a3p0cRKiAe2NtLADikftnDco0ko/SFEVgEZ8aRC5GLux7i3BpSJ6J1H+i7A2CjiHq9z7JRZuuQq
+siwTIvpxJYCeuWaBpwZdhB+yxy/eWz+ZvVSU8C4E9FFZkyxFsvCT/ZzL8gcz9aXVE14Yyp2M+2W0
+y7n5mp0qN+avKXvbsyyzUqjeWR8hjGE+2iCE1W1tQ82hsCZN9UzlJr+/e/iab8WfqsmPI6pWeUPd
+FrMsd4H/55poeO9n54COhUs+sZNEzNtg/wanpjpuqHJaxs76HtZryI/K3H7KJ/KDIhqcbJ7kI4ar
+XL+sMgXnX0D+Te2Iy5xdP8yueSlQB/x/ED2BTAtyE3K4SYUN6AMNfbO63f4lBW3bUJPbTL+mjSxS
+PyRfJkZRgj+VbFv+EzHFi5pKwUEepa4JslMnwkowSRCXI+m5XvEOvtuBrxHdhLalG0JofYBok6qj
+YdN2dEngUlbC4PG60M1WEN0piu7Nq7on0mgyyUw3iV1etLo6r/81biWdQ9MWHFaePWZYaq+nmp+t
+s3az+sj7eA0jfgPfeoN1
+""")
 
 if __name__ == '__main__':
     main()
 
 ## TODO:
 ## Copy python.exe.manifest
 ## Monkeypatch distutils.sysconfig
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate.bat
@@ -0,0 +1,31 @@
+@echo off
+set VIRTUAL_ENV=__VIRTUAL_ENV__
+
+if not defined PROMPT (
+    set PROMPT=$P$G
+)
+
+if defined _OLD_VIRTUAL_PROMPT (
+    set PROMPT=%_OLD_VIRTUAL_PROMPT%
+)
+
+if defined _OLD_VIRTUAL_PYTHONHOME (
+     set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
+)
+
+set _OLD_VIRTUAL_PROMPT=%PROMPT%
+set PROMPT=__VIRTUAL_WINPROMPT__ %PROMPT%
+
+if defined PYTHONHOME (
+     set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
+     set PYTHONHOME=
+)
+
+if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%; goto SKIPPATH
+
+set _OLD_VIRTUAL_PATH=%PATH%
+
+:SKIPPATH
+set PATH=%VIRTUAL_ENV%\__BIN_NAME__;%PATH%
+
+:END
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate.csh
@@ -0,0 +1,32 @@
+# This file must be used with "source bin/activate.csh" *from csh*.
+# You cannot run it directly.
+# Created by Davide Di Blasi <davidedb@gmail.com>.
+
+alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
+
+# Unset irrelavent variables.
+deactivate nondestructive
+
+setenv VIRTUAL_ENV "__VIRTUAL_ENV__"
+
+set _OLD_VIRTUAL_PATH="$PATH"
+setenv PATH "$VIRTUAL_ENV/__BIN_NAME__:$PATH"
+
+set _OLD_VIRTUAL_PROMPT="$prompt"
+
+if ("__VIRTUAL_PROMPT__" != "") then
+    set env_name = "__VIRTUAL_PROMPT__"
+else
+    if (`basename "$VIRTUAL_ENV"` == "__") then
+        # special case for Aspen magic directories
+        # see http://www.zetadev.com/software/aspen/
+        set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
+    else
+        set env_name = `basename "$VIRTUAL_ENV"`
+    endif
+endif
+set prompt = "[$env_name] $prompt"
+unset env_name
+
+rehash
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate.fish
@@ -0,0 +1,79 @@
+# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
+# you cannot run it directly
+
+function deactivate  -d "Exit virtualenv and return to normal shell environment"
+    # reset old environment variables
+    if test -n "$_OLD_VIRTUAL_PATH" 
+        set -gx PATH $_OLD_VIRTUAL_PATH
+        set -e _OLD_VIRTUAL_PATH
+    end
+    if test -n "$_OLD_VIRTUAL_PYTHONHOME"
+        set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
+        set -e _OLD_VIRTUAL_PYTHONHOME
+    end
+
+    if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
+        functions -e fish_prompt
+        set -e _OLD_FISH_PROMPT_OVERRIDE
+    end
+
+    set -e VIRTUAL_ENV
+    if test "$argv[1]" != "nondestructive"
+        # Self destruct!
+        functions -e deactivate
+    end
+end
+
+# unset irrelavent variables
+deactivate nondestructive
+
+set -gx VIRTUAL_ENV "__VIRTUAL_ENV__"
+
+set -gx _OLD_VIRTUAL_PATH $PATH
+set -gx PATH "$VIRTUAL_ENV/__BIN_NAME__" $PATH
+
+# unset PYTHONHOME if set
+if set -q PYTHONHOME
+    set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
+    set -e PYTHONHOME
+end
+
+if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
+    # fish shell uses a function, instead of env vars,
+    # to produce the prompt. Overriding the existing function is easy.
+    # However, adding to the current prompt, instead of clobbering it,
+    # is a little more work.
+    set -l oldpromptfile (tempfile)
+    if test $status
+        # save the current fish_prompt function...
+        echo "function _old_fish_prompt" >> $oldpromptfile
+        echo -n \# >> $oldpromptfile
+        functions fish_prompt >> $oldpromptfile
+        # we've made the "_old_fish_prompt" file, source it.
+        . $oldpromptfile
+        rm -f $oldpromptfile
+        
+        if test -n "__VIRTUAL_PROMPT__"
+            # We've been given us a prompt override.
+            # 
+            # FIXME: Unsure how to handle this *safely*. We could just eval()
+            #   whatever is given, but the risk is a bit much.
+            echo "activate.fish: Alternative prompt prefix is not supported under fish-shell." 1>&2
+            echo "activate.fish: Alter the fish_prompt in this file as needed." 1>&2
+        end        
+        
+        # with the original prompt function renamed, we can override with our own.
+        function fish_prompt                
+            set -l _checkbase (basename "$VIRTUAL_ENV")
+            if test $_checkbase = "__"
+                # special case for Aspen magic directories
+                # see http://www.zetadev.com/software/aspen/
+                printf "%s[%s]%s %s" (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) (_old_fish_prompt)
+            else
+                printf "%s(%s)%s%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt)
+            end
+        end 
+        set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
+    end
+end
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate.ps1
@@ -0,0 +1,148 @@
+# This file must be dot sourced from PoSh; you cannot run it
+# directly. Do this: . ./activate.ps1
+
+# FIXME: clean up unused vars.
+$script:THIS_PATH = $myinvocation.mycommand.path
+$script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent
+$script:DIR_NAME = split-path $BASE_DIR -Leaf
+
+function global:deactivate ( [switch] $NonDestructive ){
+
+    if ( test-path variable:_OLD_VIRTUAL_PATH ) {
+        $env:PATH = $variable:_OLD_VIRTUAL_PATH
+        remove-variable "_OLD_VIRTUAL_PATH" -scope global
+    }
+
+    if ( test-path function:_old_virtual_prompt ) {
+        $function:prompt = $function:_old_virtual_prompt
+        remove-item function:\_old_virtual_prompt
+    }
+
+    if ($env:VIRTUAL_ENV) {
+        $old_env = split-path $env:VIRTUAL_ENV -leaf
+        remove-item env:VIRTUAL_ENV -erroraction silentlycontinue
+    }
+
+    if ( !$NonDestructive ) {
+        # Self destruct!
+        remove-item function:deactivate
+    }
+}
+
+# unset irrelevant variables
+deactivate -nondestructive
+
+$VIRTUAL_ENV = $BASE_DIR
+$env:VIRTUAL_ENV = $VIRTUAL_ENV
+
+$global:_OLD_VIRTUAL_PATH = $env:PATH
+$env:PATH = "$env:VIRTUAL_ENV/Scripts;" + $env:PATH
+function global:_old_virtual_prompt { "" }
+$function:_old_virtual_prompt = $function:prompt
+function global:prompt {
+    # Add a prefix to the current prompt, but don't discard it.
+    write-host "($(split-path $env:VIRTUAL_ENV -leaf)) " -nonewline
+    & $function:_old_virtual_prompt
+}
+
+# SIG # Begin signature block
+# MIISeAYJKoZIhvcNAQcCoIISaTCCEmUCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
+# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUS5reBwSg3zOUwhXf2jPChZzf
+# yPmggg6tMIIGcDCCBFigAwIBAgIBJDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQG
+# EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp
+# Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy
+# dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjIwMTQ2WhcNMTcxMDI0MjIw
+# MTQ2WjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzAp
+# BgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNV
+# BAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgT2JqZWN0
+# IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyiOLIjUemqAbPJ1J
+# 0D8MlzgWKbr4fYlbRVjvhHDtfhFN6RQxq0PjTQxRgWzwFQNKJCdU5ftKoM5N4YSj
+# Id6ZNavcSa6/McVnhDAQm+8H3HWoD030NVOxbjgD/Ih3HaV3/z9159nnvyxQEckR
+# ZfpJB2Kfk6aHqW3JnSvRe+XVZSufDVCe/vtxGSEwKCaNrsLc9pboUoYIC3oyzWoU
+# TZ65+c0H4paR8c8eK/mC914mBo6N0dQ512/bkSdaeY9YaQpGtW/h/W/FkbQRT3sC
+# pttLVlIjnkuY4r9+zvqhToPjxcfDYEf+XD8VGkAqle8Aa8hQ+M1qGdQjAye8OzbV
+# uUOw7wIDAQABo4IB6TCCAeUwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+# AQYwHQYDVR0OBBYEFNBOD0CZbLhLGW87KLjg44gHNKq3MB8GA1UdIwQYMBaAFE4L
+# 7xqkQFulF2mHMMo0aEPQQa7yMD0GCCsGAQUFBwEBBDEwLzAtBggrBgEFBQcwAoYh
+# aHR0cDovL3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6Al
+# oCOGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0
+# cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysG
+# AQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
+# L3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
+# L2ludGVybWVkaWF0ZS5wZGYwEQYJYIZIAYb4QgEBBAQDAgABMFAGCWCGSAGG+EIB
+# DQRDFkFTdGFydENvbSBDbGFzcyAyIFByaW1hcnkgSW50ZXJtZWRpYXRlIE9iamVj
+# dCBTaWduaW5nIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAcnMLA3Va
+# N4OIE9l4QT5OEtZy5PByBit3oHiqQpgVEQo7DHRsjXD5H/IyTivpMikaaeRxIv95
+# baRd4hoUcMwDj4JIjC3WA9FoNFV31SMljEZa66G8RQECdMSSufgfDYu1XQ+cUKxh
+# D3EtLGGcFGjjML7EQv2Iol741rEsycXwIXcryxeiMbU2TPi7X3elbwQMc4JFlJ4B
+# y9FhBzuZB1DV2sN2irGVbC3G/1+S2doPDjL1CaElwRa/T0qkq2vvPxUgryAoCppU
+# FKViw5yoGYC+z1GaesWWiP1eFKAL0wI7IgSvLzU3y1Vp7vsYaxOVBqZtebFTWRHt
+# XjCsFrrQBngt0d33QbQRI5mwgzEp7XJ9xu5d6RVWM4TPRUsd+DDZpBHm9mszvi9g
+# VFb2ZG7qRRXCSqys4+u/NLBPbXi/m/lU00cODQTlC/euwjk9HQtRrXQ/zqsBJS6U
+# J+eLGw1qOfj+HVBl/ZQpfoLk7IoWlRQvRL1s7oirEaqPZUIWY/grXq9r6jDKAp3L
+# ZdKQpPOnnogtqlU4f7/kLjEJhrrc98mrOWmVMK/BuFRAfQ5oDUMnVmCzAzLMjKfG
+# cVW/iMew41yfhgKbwpfzm3LBr1Zv+pEBgcgW6onRLSAn3XHM0eNtz+AkxH6rRf6B
+# 2mYhLEEGLapH8R1AMAo4BbVFOZR5kXcMCwowggg1MIIHHaADAgECAgIEuDANBgkq
+# hkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0
+# ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
+# ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUg
+# T2JqZWN0IENBMB4XDTExMTIwMzE1MzQxOVoXDTEzMTIwMzE0NTgwN1owgYwxIDAe
+# BgNVBA0TFzU4MTc5Ni1HaDd4Zkp4a3hRU0lPNEUwMQswCQYDVQQGEwJERTEPMA0G
+# A1UECBMGQmVybGluMQ8wDQYDVQQHEwZCZXJsaW4xFjAUBgNVBAMTDUphbm5pcyBM
+# ZWlkZWwxITAfBgkqhkiG9w0BCQEWEmphbm5pc0BsZWlkZWwuaW5mbzCCAiIwDQYJ
+# KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMcPeABYdN7nPq/AkZ/EkyUBGx/l2Yui
+# Lfm8ZdLG0ulMb/kQL3fRY7sUjYPyn9S6PhqqlFnNoGHJvbbReCdUC9SIQYmOEjEA
+# raHfb7MZU10NjO4U2DdGucj2zuO5tYxKizizOJF0e4yRQZVxpUGdvkW/+GLjCNK5
+# L7mIv3Z1dagxDKHYZT74HXiS4VFUwHF1k36CwfM2vsetdm46bdgSwV+BCMmZICYT
+# IJAS9UQHD7kP4rik3bFWjUx08NtYYFAVOd/HwBnemUmJe4j3IhZHr0k1+eDG8hDH
+# KVvPgLJIoEjC4iMFk5GWsg5z2ngk0LLu3JZMtckHsnnmBPHQK8a3opUNd8hdMNJx
+# gOwKjQt2JZSGUdIEFCKVDqj0FmdnDMPfwy+FNRtpBMl1sz78dUFhSrnM0D8NXrqa
+# 4rG+2FoOXlmm1rb6AFtpjAKksHRpYcPk2DPGWp/1sWB+dUQkS3gOmwFzyqeTuXpT
+# 0juqd3iAxOGx1VRFQ1VHLLf3AzV4wljBau26I+tu7iXxesVucSdsdQu293jwc2kN
+# xK2JyHCoZH+RyytrwS0qw8t7rMOukU9gwP8mn3X6mgWlVUODMcHTULjSiCEtvyZ/
+# aafcwjUbt4ReEcnmuZtWIha86MTCX7U7e+cnpWG4sIHPnvVTaz9rm8RyBkIxtFCB
+# nQ3FnoQgyxeJAgMBAAGjggOdMIIDmTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIH
+# gDAuBgNVHSUBAf8EJDAiBggrBgEFBQcDAwYKKwYBBAGCNwIBFQYKKwYBBAGCNwoD
+# DTAdBgNVHQ4EFgQUWyCgrIWo8Ifvvm1/YTQIeMU9nc8wHwYDVR0jBBgwFoAU0E4P
+# QJlsuEsZbzsouODjiAc0qrcwggIhBgNVHSAEggIYMIICFDCCAhAGCysGAQQBgbU3
+# AQICMIIB/zAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9s
+# aWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50
+# ZXJtZWRpYXRlLnBkZjCB9wYIKwYBBQUHAgIwgeowJxYgU3RhcnRDb20gQ2VydGlm
+# aWNhdGlvbiBBdXRob3JpdHkwAwIBARqBvlRoaXMgY2VydGlmaWNhdGUgd2FzIGlz
+# c3VlZCBhY2NvcmRpbmcgdG8gdGhlIENsYXNzIDIgVmFsaWRhdGlvbiByZXF1aXJl
+# bWVudHMgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeSwgcmVsaWFuY2Ugb25seSBm
+# b3IgdGhlIGludGVuZGVkIHB1cnBvc2UgaW4gY29tcGxpYW5jZSBvZiB0aGUgcmVs
+# eWluZyBwYXJ0eSBvYmxpZ2F0aW9ucy4wgZwGCCsGAQUFBwICMIGPMCcWIFN0YXJ0
+# Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MAMCAQIaZExpYWJpbGl0eSBhbmQg
+# d2FycmFudGllcyBhcmUgbGltaXRlZCEgU2VlIHNlY3Rpb24gIkxlZ2FsIGFuZCBM
+# aW1pdGF0aW9ucyIgb2YgdGhlIFN0YXJ0Q29tIENBIHBvbGljeS4wNgYDVR0fBC8w
+# LTAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNzbC5jb20vY3J0YzItY3JsLmNybDCB
+# iQYIKwYBBQUHAQEEfTB7MDcGCCsGAQUFBzABhitodHRwOi8vb2NzcC5zdGFydHNz
+# bC5jb20vc3ViL2NsYXNzMi9jb2RlL2NhMEAGCCsGAQUFBzAChjRodHRwOi8vYWlh
+# LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MyLmNvZGUuY2EuY3J0MCMGA1Ud
+# EgQcMBqGGGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOC
+# AQEAhrzEV6zwoEtKjnFRhCsjwiPykVpo5Eiye77Ve801rQDiRKgSCCiW6g3HqedL
+# OtaSs65Sj2pm3Viea4KR0TECLcbCTgsdaHqw2x1yXwWBQWZEaV6EB05lIwfr94P1
+# SFpV43zkuc+bbmA3+CRK45LOcCNH5Tqq7VGTCAK5iM7tvHwFlbQRl+I6VEL2mjpF
+# NsuRjDOVrv/9qw/a22YJ9R7Y1D0vUSs3IqZx2KMUaYDP7H2mSRxJO2nADQZBtriF
+# gTyfD3lYV12MlIi5CQwe3QC6DrrfSMP33i5Wa/OFJiQ27WPxmScYVhiqozpImFT4
+# PU9goiBv9RKXdgTmZE1PN0NQ5jGCAzUwggMxAgEBMIGTMIGMMQswCQYDVQQGEwJJ
+# TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
+# YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg
+# MiBQcmltYXJ5IEludGVybWVkaWF0ZSBPYmplY3QgQ0ECAgS4MAkGBSsOAwIaBQCg
+# eDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEE
+# AYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJ
+# BDEWBBRVGw0FDSiaIi38dWteRUAg/9Pr6DANBgkqhkiG9w0BAQEFAASCAgCInvOZ
+# FdaNFzbf6trmFDZKMojyx3UjKMCqNjHVBbuKY0qXwFC/ElYDV1ShJ2CBZbdurydO
+# OQ6cIQ0KREOCwmX/xB49IlLHHUxNhEkVv7HGU3EKAFf9IBt9Yr7jikiR9cjIsfHK
+# 4cjkoKJL7g28yEpLLkHt1eo37f1Ga9lDWEa5Zq3U5yX+IwXhrUBm1h8Xr033FhTR
+# VEpuSz6LHtbrL/zgJnCzJ2ahjtJoYevdcWiNXffosJHFaSfYDDbiNsPRDH/1avmb
+# 5j/7BhP8BcBaR6Fp8tFbNGIcWHHGcjqLMnTc4w13b7b4pDhypqElBa4+lCmwdvv9
+# GydYtRgPz8GHeoBoKj30YBlMzRIfFYaIFGIC4Ai3UEXkuH9TxYohVbGm/W0Kl4Lb
+# RJ1FwiVcLcTOJdgNId2vQvKc+jtNrjcg5SP9h2v/C4aTx8tyc6tE3TOPh2f9b8DL
+# S+SbVArJpuJqrPTxDDoO1QNjTgLcdVYeZDE+r/NjaGZ6cMSd8db3EaG3ijD/0bud
+# SItbm/OlNVbQOFRR76D+ZNgPcU5iNZ3bmvQQIg6aSB9MHUpIE/SeCkNl9YeVk1/1
+# GFULgNMRmIYP4KLvu9ylh5Gu3hvD5VNhH6+FlXANwFy07uXks5uF8mfZVxVCnodG
+# xkNCx+6PsrA5Z7WP4pXcmYnMn97npP/Q9EHJWw==
+# SIG # End signature block
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate.sh
@@ -0,0 +1,76 @@
+# This file must be used with "source bin/activate" *from bash*
+# you cannot run it directly
+
+deactivate () {
+    # reset old environment variables
+    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
+        PATH="$_OLD_VIRTUAL_PATH"
+        export PATH
+        unset _OLD_VIRTUAL_PATH
+    fi
+    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
+        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
+        export PYTHONHOME
+        unset _OLD_VIRTUAL_PYTHONHOME
+    fi
+
+    # This should detect bash and zsh, which have a hash command that must
+    # be called to get it to forget past commands.  Without forgetting
+    # past commands the $PATH changes we made may not be respected
+    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
+        hash -r
+    fi
+
+    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
+        PS1="$_OLD_VIRTUAL_PS1"
+        export PS1
+        unset _OLD_VIRTUAL_PS1
+    fi
+
+    unset VIRTUAL_ENV
+    if [ ! "$1" = "nondestructive" ] ; then
+    # Self destruct!
+        unset -f deactivate
+    fi
+}
+
+# unset irrelavent variables
+deactivate nondestructive
+
+VIRTUAL_ENV="__VIRTUAL_ENV__"
+export VIRTUAL_ENV
+
+_OLD_VIRTUAL_PATH="$PATH"
+PATH="$VIRTUAL_ENV/__BIN_NAME__:$PATH"
+export PATH
+
+# unset PYTHONHOME if set
+# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
+# could use `if (set -u; : $PYTHONHOME) ;` in bash
+if [ -n "$PYTHONHOME" ] ; then
+    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
+    unset PYTHONHOME
+fi
+
+if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
+    _OLD_VIRTUAL_PS1="$PS1"
+    if [ "x__VIRTUAL_PROMPT__" != x ] ; then
+        PS1="__VIRTUAL_PROMPT__$PS1"
+    else
+    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
+        # special case for Aspen magic directories
+        # see http://www.zetadev.com/software/aspen/
+        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
+    else
+        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
+    fi
+    fi
+    export PS1
+fi
+
+# This should detect bash and zsh, which have a hash command that must
+# be called to get it to forget past commands.  Without forgetting
+# past commands the $PATH changes we made may not be respected
+if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
+    hash -r
+fi
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/activate_this.py
@@ -0,0 +1,34 @@
+"""By using execfile(this_file, dict(__file__=this_file)) you will
+activate this virtualenv environment.
+
+This can be used when you must use an existing Python interpreter, not
+the virtualenv bin/python
+"""
+
+try:
+    __file__
+except NameError:
+    raise AssertionError(
+        "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
+import sys
+import os
+
+old_os_path = os.environ['PATH']
+os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
+base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+if sys.platform == 'win32':
+    site_packages = os.path.join(base, 'Lib', 'site-packages')
+else:
+    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
+prev_sys_path = list(sys.path)
+import site
+site.addsitedir(site_packages)
+sys.real_prefix = sys.prefix
+sys.prefix = base
+# Move the added items to the front of the path:
+new_sys_path = []
+for item in list(sys.path):
+    if item not in prev_sys_path:
+        new_sys_path.append(item)
+        sys.path.remove(item)
+sys.path[:0] = new_sys_path
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/deactivate.bat
@@ -0,0 +1,17 @@
+@echo off
+
+if defined _OLD_VIRTUAL_PROMPT (
+    set PROMPT=%_OLD_VIRTUAL_PROMPT%
+)
+set _OLD_VIRTUAL_PROMPT=
+
+if defined _OLD_VIRTUAL_PYTHONHOME (
+     set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
+     set _OLD_VIRTUAL_PYTHONHOME=
+)
+
+if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
+
+set _OLD_VIRTUAL_PATH=
+
+:END
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/distribute_setup.py
@@ -0,0 +1,485 @@
+#!python
+"""Bootstrap distribute installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+    from distribute_setup import use_setuptools
+    use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import os
+import sys
+import time
+import fnmatch
+import tempfile
+import tarfile
+from distutils import log
+
+try:
+    from site import USER_SITE
+except ImportError:
+    USER_SITE = None
+
+try:
+    import subprocess
+
+    def _python_cmd(*args):
+        args = (sys.executable,) + args
+        return subprocess.call(args) == 0
+
+except ImportError:
+    # will be used for python 2.3
+    def _python_cmd(*args):
+        args = (sys.executable,) + args
+        # quoting arguments if windows
+        if sys.platform == 'win32':
+            def quote(arg):
+                if ' ' in arg:
+                    return '"%s"' % arg
+                return arg
+            args = [quote(arg) for arg in args]
+        return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
+
+DEFAULT_VERSION = "0.6.24"
+DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
+SETUPTOOLS_FAKED_VERSION = "0.6c11"
+
+SETUPTOOLS_PKG_INFO = """\
+Metadata-Version: 1.0
+Name: setuptools
+Version: %s
+Summary: xxxx
+Home-page: xxx
+Author: xxx
+Author-email: xxx
+License: xxx
+Description: xxx
+""" % SETUPTOOLS_FAKED_VERSION
+
+
+def _install(tarball):
+    # extracting the tarball
+    tmpdir = tempfile.mkdtemp()
+    log.warn('Extracting in %s', tmpdir)
+    old_wd = os.getcwd()
+    try:
+        os.chdir(tmpdir)
+        tar = tarfile.open(tarball)
+        _extractall(tar)
+        tar.close()
+
+        # going in the directory
+        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
+        os.chdir(subdir)
+        log.warn('Now working in %s', subdir)
+
+        # installing
+        log.warn('Installing Distribute')
+        if not _python_cmd('setup.py', 'install'):
+            log.warn('Something went wrong during the installation.')
+            log.warn('See the error message above.')
+    finally:
+        os.chdir(old_wd)
+
+
+def _build_egg(egg, tarball, to_dir):
+    # extracting the tarball
+    tmpdir = tempfile.mkdtemp()
+    log.warn('Extracting in %s', tmpdir)
+    old_wd = os.getcwd()
+    try:
+        os.chdir(tmpdir)
+        tar = tarfile.open(tarball)
+        _extractall(tar)
+        tar.close()
+
+        # going in the directory
+        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
+        os.chdir(subdir)
+        log.warn('Now working in %s', subdir)
+
+        # building an egg
+        log.warn('Building a Distribute egg in %s', to_dir)
+        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
+
+    finally:
+        os.chdir(old_wd)
+    # returning the result
+    log.warn(egg)
+    if not os.path.exists(egg):
+        raise IOError('Could not build the egg.')
+
+
+def _do_download(version, download_base, to_dir, download_delay):
+    egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg'
+                       % (version, sys.version_info[0], sys.version_info[1]))
+    if not os.path.exists(egg):
+        tarball = download_setuptools(version, download_base,
+                                      to_dir, download_delay)
+        _build_egg(egg, tarball, to_dir)
+    sys.path.insert(0, egg)
+    import setuptools
+    setuptools.bootstrap_install_from = egg
+
+
+def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
+                   to_dir=os.curdir, download_delay=15, no_fake=True):
+    # making sure we use the absolute path
+    to_dir = os.path.abspath(to_dir)
+    was_imported = 'pkg_resources' in sys.modules or \
+        'setuptools' in sys.modules
+    try:
+        try:
+            import pkg_resources
+            if not hasattr(pkg_resources, '_distribute'):
+                if not no_fake:
+                    _fake_setuptools()
+                raise ImportError
+        except ImportError:
+            return _do_download(version, download_base, to_dir, download_delay)
+        try:
+            pkg_resources.require("distribute>="+version)
+            return
+        except pkg_resources.VersionConflict:
+            e = sys.exc_info()[1]
+            if was_imported:
+                sys.stderr.write(
+                "The required version of distribute (>=%s) is not available,\n"
+                "and can't be installed while this script is running. Please\n"
+                "install a more recent version first, using\n"
+                "'easy_install -U distribute'."
+                "\n\n(Currently using %r)\n" % (version, e.args[0]))
+                sys.exit(2)
+            else:
+                del pkg_resources, sys.modules['pkg_resources']    # reload ok
+                return _do_download(version, download_base, to_dir,
+                                    download_delay)
+        except pkg_resources.DistributionNotFound:
+            return _do_download(version, download_base, to_dir,
+                                download_delay)
+    finally:
+        if not no_fake:
+            _create_fake_setuptools_pkg_info(to_dir)
+
+def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
+                        to_dir=os.curdir, delay=15):
+    """Download distribute from a specified location and return its filename
+
+    `version` should be a valid distribute version number that is available
+    as an egg for download under the `download_base` URL (which should end
+    with a '/'). `to_dir` is the directory where the egg will be downloaded.
+    `delay` is the number of seconds to pause before an actual download
+    attempt.
+    """
+    # making sure we use the absolute path
+    to_dir = os.path.abspath(to_dir)
+    try:
+        from urllib.request import urlopen
+    except ImportError:
+        from urllib2 import urlopen
+    tgz_name = "distribute-%s.tar.gz" % version
+    url = download_base + tgz_name
+    saveto = os.path.join(to_dir, tgz_name)
+    src = dst = None
+    if not os.path.exists(saveto):  # Avoid repeated downloads
+        try:
+            log.warn("Downloading %s", url)
+            src = urlopen(url)
+            # Read/write all in one block, so we don't create a corrupt file
+            # if the download is interrupted.
+            data = src.read()
+            dst = open(saveto, "wb")
+            dst.write(data)
+        finally:
+            if src:
+                src.close()
+            if dst:
+                dst.close()
+    return os.path.realpath(saveto)
+
+def _no_sandbox(function):
+    def __no_sandbox(*args, **kw):
+        try:
+            from setuptools.sandbox import DirectorySandbox
+            if not hasattr(DirectorySandbox, '_old'):
+                def violation(*args):
+                    pass
+                DirectorySandbox._old = DirectorySandbox._violation
+                DirectorySandbox._violation = violation
+                patched = True
+            else:
+                patched = False
+        except ImportError:
+            patched = False
+
+        try:
+            return function(*args, **kw)
+        finally:
+            if patched:
+                DirectorySandbox._violation = DirectorySandbox._old
+                del DirectorySandbox._old
+
+    return __no_sandbox
+
+def _patch_file(path, content):
+    """Will backup the file then patch it"""
+    existing_content = open(path).read()
+    if existing_content == content:
+        # already patched
+        log.warn('Already patched.')
+        return False
+    log.warn('Patching...')
+    _rename_path(path)
+    f = open(path, 'w')
+    try:
+        f.write(content)
+    finally:
+        f.close()
+    return True
+
+_patch_file = _no_sandbox(_patch_file)
+
+def _same_content(path, content):
+    return open(path).read() == content
+
+def _rename_path(path):
+    new_name = path + '.OLD.%s' % time.time()
+    log.warn('Renaming %s into %s', path, new_name)
+    os.rename(path, new_name)
+    return new_name
+
+def _remove_flat_installation(placeholder):
+    if not os.path.isdir(placeholder):
+        log.warn('Unkown installation at %s', placeholder)
+        return False
+    found = False
+    for file in os.listdir(placeholder):
+        if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
+            found = True
+            break
+    if not found:
+        log.warn('Could not locate setuptools*.egg-info')
+        return
+
+    log.warn('Removing elements out of the way...')
+    pkg_info = os.path.join(placeholder, file)
+    if os.path.isdir(pkg_info):
+        patched = _patch_egg_dir(pkg_info)
+    else:
+        patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO)
+
+    if not patched:
+        log.warn('%s already patched.', pkg_info)
+        return False
+    # now let's move the files out of the way
+    for element in ('setuptools', 'pkg_resources.py', 'site.py'):
+        element = os.path.join(placeholder, element)
+        if os.path.exists(element):
+            _rename_path(element)
+        else:
+            log.warn('Could not find the %s element of the '
+                     'Setuptools distribution', element)
+    return True
+
+_remove_flat_installation = _no_sandbox(_remove_flat_installation)
+
+def _after_install(dist):
+    log.warn('After install bootstrap.')
+    placeholder = dist.get_command_obj('install').install_purelib
+    _create_fake_setuptools_pkg_info(placeholder)
+
+def _create_fake_setuptools_pkg_info(placeholder):
+    if not placeholder or not os.path.exists(placeholder):
+        log.warn('Could not find the install location')
+        return
+    pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
+    setuptools_file = 'setuptools-%s-py%s.egg-info' % \
+            (SETUPTOOLS_FAKED_VERSION, pyver)
+    pkg_info = os.path.join(placeholder, setuptools_file)
+    if os.path.exists(pkg_info):
+        log.warn('%s already exists', pkg_info)
+        return
+
+    log.warn('Creating %s', pkg_info)
+    f = open(pkg_info, 'w')
+    try:
+        f.write(SETUPTOOLS_PKG_INFO)
+    finally:
+        f.close()
+
+    pth_file = os.path.join(placeholder, 'setuptools.pth')
+    log.warn('Creating %s', pth_file)
+    f = open(pth_file, 'w')
+    try:
+        f.write(os.path.join(os.curdir, setuptools_file))
+    finally:
+        f.close()
+
+_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
+
+def _patch_egg_dir(path):
+    # let's check if it's already patched
+    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
+    if os.path.exists(pkg_info):
+        if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
+            log.warn('%s already patched.', pkg_info)
+            return False
+    _rename_path(path)
+    os.mkdir(path)
+    os.mkdir(os.path.join(path, 'EGG-INFO'))
+    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
+    f = open(pkg_info, 'w')
+    try:
+        f.write(SETUPTOOLS_PKG_INFO)
+    finally:
+        f.close()
+    return True
+
+_patch_egg_dir = _no_sandbox(_patch_egg_dir)
+
+def _before_install():
+    log.warn('Before install bootstrap.')
+    _fake_setuptools()
+
+
+def _under_prefix(location):
+    if 'install' not in sys.argv:
+        return True
+    args = sys.argv[sys.argv.index('install')+1:]
+    for index, arg in enumerate(args):
+        for option in ('--root', '--prefix'):
+            if arg.startswith('%s=' % option):
+                top_dir = arg.split('root=')[-1]
+                return location.startswith(top_dir)
+            elif arg == option:
+                if len(args) > index:
+                    top_dir = args[index+1]
+                    return location.startswith(top_dir)
+        if arg == '--user' and USER_SITE is not None:
+            return location.startswith(USER_SITE)
+    return True
+
+
+def _fake_setuptools():
+    log.warn('Scanning installed packages')
+    try:
+        import pkg_resources
+    except ImportError:
+        # we're cool
+        log.warn('Setuptools or Distribute does not seem to be installed.')
+        return
+    ws = pkg_resources.working_set
+    try:
+        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
+                                  replacement=False))
+    except TypeError:
+        # old distribute API
+        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools'))
+
+    if setuptools_dist is None:
+        log.warn('No setuptools distribution found')
+        return
+    # detecting if it was already faked
+    setuptools_location = setuptools_dist.location
+    log.warn('Setuptools installation detected at %s', setuptools_location)
+
+    # if --root or --preix was provided, and if
+    # setuptools is not located in them, we don't patch it
+    if not _under_prefix(setuptools_location):
+        log.warn('Not patching, --root or --prefix is installing Distribute'
+                 ' in another location')
+        return
+
+    # let's see if its an egg
+    if not setuptools_location.endswith('.egg'):
+        log.warn('Non-egg installation')
+        res = _remove_flat_installation(setuptools_location)
+        if not res:
+            return
+    else:
+        log.warn('Egg installation')
+        pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO')
+        if (os.path.exists(pkg_info) and
+            _same_content(pkg_info, SETUPTOOLS_PKG_INFO)):
+            log.warn('Already patched.')
+            return
+        log.warn('Patching...')
+        # let's create a fake egg replacing setuptools one
+        res = _patch_egg_dir(setuptools_location)
+        if not res:
+            return
+    log.warn('Patched done.')
+    _relaunch()
+
+
+def _relaunch():
+    log.warn('Relaunching...')
+    # we have to relaunch the process
+    # pip marker to avoid a relaunch bug
+    if sys.argv[:3] == ['-c', 'install', '--single-version-externally-managed']:
+        sys.argv[0] = 'setup.py'
+    args = [sys.executable] + sys.argv
+    sys.exit(subprocess.call(args))
+
+
+def _extractall(self, path=".", members=None):
+    """Extract all members from the archive to the current working
+       directory and set owner, modification time and permissions on
+       directories afterwards. `path' specifies a different directory
+       to extract to. `members' is optional and must be a subset of the
+       list returned by getmembers().
+    """
+    import copy
+    import operator
+    from tarfile import ExtractError
+    directories = []
+
+    if members is None:
+        members = self
+
+    for tarinfo in members:
+        if tarinfo.isdir():
+            # Extract directories with a safe mode.
+            directories.append(tarinfo)
+            tarinfo = copy.copy(tarinfo)
+            tarinfo.mode = 448 # decimal for oct 0700
+        self.extract(tarinfo, path)
+
+    # Reverse sort directories.
+    if sys.version_info < (2, 4):
+        def sorter(dir1, dir2):
+            return cmp(dir1.name, dir2.name)
+        directories.sort(sorter)
+        directories.reverse()
+    else:
+        directories.sort(key=operator.attrgetter('name'), reverse=True)
+
+    # Set correct owner, mtime and filemode on directories.
+    for tarinfo in directories:
+        dirpath = os.path.join(path, tarinfo.name)
+        try:
+            self.chown(tarinfo, dirpath)
+            self.utime(tarinfo, dirpath)
+            self.chmod(tarinfo, dirpath)
+        except ExtractError:
+            e = sys.exc_info()[1]
+            if self.errorlevel > 1:
+                raise
+            else:
+                self._dbg(1, "tarfile: %s" % e)
+
+
+def main(argv, version=DEFAULT_VERSION):
+    """Install or upgrade setuptools and EasyInstall"""
+    tarball = download_setuptools()
+    _install(tarball)
+
+
+if __name__ == '__main__':
+    main(sys.argv[1:])
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/distutils-init.py
@@ -0,0 +1,97 @@
+import os
+import sys
+import warnings 
+import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
+              # Important! To work on pypy, this must be a module that resides in the
+              # lib-python/modified-x.y.z directory
+
+dirname = os.path.dirname
+
+distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
+if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
+    warnings.warn(
+        "The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
+else:
+    __path__.insert(0, distutils_path)
+    exec(open(os.path.join(distutils_path, '__init__.py')).read())
+
+try:
+    import dist
+    import sysconfig
+except ImportError:
+    from distutils import dist, sysconfig
+try:
+    basestring
+except NameError:
+    basestring = str
+
+## patch build_ext (distutils doesn't know how to get the libs directory
+## path on windows - it hardcodes the paths around the patched sys.prefix)
+
+if sys.platform == 'win32':
+    from distutils.command.build_ext import build_ext as old_build_ext
+    class build_ext(old_build_ext):
+        def finalize_options (self):
+            if self.library_dirs is None:
+                self.library_dirs = []
+            elif isinstance(self.library_dirs, basestring):
+                self.library_dirs = self.library_dirs.split(os.pathsep)
+            
+            self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
+            old_build_ext.finalize_options(self)
+            
+    from distutils.command import build_ext as build_ext_module 
+    build_ext_module.build_ext = build_ext
+
+## distutils.dist patches:
+
+old_find_config_files = dist.Distribution.find_config_files
+def find_config_files(self):
+    found = old_find_config_files(self)
+    system_distutils = os.path.join(distutils_path, 'distutils.cfg')
+    #if os.path.exists(system_distutils):
+    #    found.insert(0, system_distutils)
+        # What to call the per-user config file
+    if os.name == 'posix':
+        user_filename = ".pydistutils.cfg"
+    else:
+        user_filename = "pydistutils.cfg"
+    user_filename = os.path.join(sys.prefix, user_filename)
+    if os.path.isfile(user_filename):
+        for item in list(found):
+            if item.endswith('pydistutils.cfg'):
+                found.remove(item)
+        found.append(user_filename)
+    return found
+dist.Distribution.find_config_files = find_config_files
+
+## distutils.sysconfig patches:
+
+old_get_python_inc = sysconfig.get_python_inc
+def sysconfig_get_python_inc(plat_specific=0, prefix=None):
+    if prefix is None:
+        prefix = sys.real_prefix
+    return old_get_python_inc(plat_specific, prefix)
+sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
+sysconfig.get_python_inc = sysconfig_get_python_inc
+
+old_get_python_lib = sysconfig.get_python_lib
+def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+    if standard_lib and prefix is None:
+        prefix = sys.real_prefix
+    return old_get_python_lib(plat_specific, standard_lib, prefix)
+sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
+sysconfig.get_python_lib = sysconfig_get_python_lib
+
+old_get_config_vars = sysconfig.get_config_vars
+def sysconfig_get_config_vars(*args):
+    real_vars = old_get_config_vars(*args)
+    if sys.platform == 'win32':
+        lib_dir = os.path.join(sys.real_prefix, "libs")
+        if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars:
+            real_vars['LIBDIR'] = lib_dir # asked for all
+        elif isinstance(real_vars, list) and 'LIBDIR' in args:
+            real_vars = real_vars + [lib_dir] # asked for list
+    return real_vars
+sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
+sysconfig.get_config_vars = sysconfig_get_config_vars
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/distutils.cfg
@@ -0,0 +1,6 @@
+# This is a config file local to this virtualenv installation
+# You may include options that will be used by all distutils commands,
+# and by easy_install.  For instance:
+#
+#   [easy_install]
+#   find_links = http://mylocalsite
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/ez_setup.py
@@ -0,0 +1,285 @@
+#!python
+"""Bootstrap setuptools installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+    from ez_setup import use_setuptools
+    use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import sys
+DEFAULT_VERSION = "0.6c11"
+DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
+
+md5_data = {
+    'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
+    'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
+    'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
+    'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
+    'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
+    'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
+    'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
+    'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
+    'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
+    'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
+    'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
+    'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
+    'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
+    'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
+    'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
+    'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
+    'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
+    'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
+    'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
+    'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
+    'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
+    'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
+    'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
+    'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
+    'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
+    'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
+    'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
+    'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
+    'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
+    'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
+    'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
+    'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
+    'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
+    'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
+    'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
+    'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
+    'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
+    'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
+    'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
+    'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
+    'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
+    'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
+}
+
+import sys, os
+try: from hashlib import md5
+except ImportError: from md5 import md5
+
+def _validate_md5(egg_name, data):
+    if egg_name in md5_data:
+        digest = md5(data).hexdigest()
+        if digest != md5_data[egg_name]:
+            print >>sys.stderr, (
+                "md5 validation of %s failed!  (Possible download problem?)"
+                % egg_name
+            )
+            sys.exit(2)
+    return data
+
+def use_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    download_delay=15
+):
+    """Automatically find/download setuptools and make it available on sys.path
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end with
+    a '/').  `to_dir` is the directory where setuptools will be downloaded, if
+    it is not already available.  If `download_delay` is specified, it should
+    be the number of seconds that will be paused before initiating a download,
+    should one be required.  If an older version of setuptools is installed,
+    this routine will print a message to ``sys.stderr`` and raise SystemExit in
+    an attempt to abort the calling script.
+    """
+    was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
+    def do_download():
+        egg = download_setuptools(version, download_base, to_dir, download_delay)
+        sys.path.insert(0, egg)
+        import setuptools; setuptools.bootstrap_install_from = egg
+    try:
+        import pkg_resources
+    except ImportError:
+        return do_download()       
+    try:
+        pkg_resources.require("setuptools>="+version); return
+    except pkg_resources.VersionConflict:
+        e = sys.exc_info()[1]
+        if was_imported:
+            print >>sys.stderr, (
+            "The required version of setuptools (>=%s) is not available, and\n"
+            "can't be installed while this script is running. Please install\n"
+            " a more recent version first, using 'easy_install -U setuptools'."
+            "\n\n(Currently using %r)"
+            ) % (version, e.args[0])
+            sys.exit(2)
+    except pkg_resources.DistributionNotFound:
+        pass
+
+    del pkg_resources, sys.modules['pkg_resources']    # reload ok
+    return do_download()
+
+def download_setuptools(
+    version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+    delay = 15
+):
+    """Download setuptools from a specified location and return its filename
+
+    `version` should be a valid setuptools version number that is available
+    as an egg for download under the `download_base` URL (which should end
+    with a '/'). `to_dir` is the directory where the egg will be downloaded.
+    `delay` is the number of seconds to pause before an actual download attempt.
+    """
+    import urllib2, shutil
+    egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
+    url = download_base + egg_name
+    saveto = os.path.join(to_dir, egg_name)
+    src = dst = None
+    if not os.path.exists(saveto):  # Avoid repeated downloads
+        try:
+            from distutils import log
+            if delay:
+                log.warn("""
+---------------------------------------------------------------------------
+This script requires setuptools version %s to run (even to display
+help).  I will attempt to download it for you (from
+%s), but
+you may need to enable firewall access for this script first.
+I will start the download in %d seconds.
+
+(Note: if this machine does not have network access, please obtain the file
+
+   %s
+
+and place it in this directory before rerunning this script.)
+---------------------------------------------------------------------------""",
+                    version, download_base, delay, url
+                ); from time import sleep; sleep(delay)
+            log.warn("Downloading %s", url)
+            src = urllib2.urlopen(url)
+            # Read/write all in one block, so we don't create a corrupt file
+            # if the download is interrupted.
+            data = _validate_md5(egg_name, src.read())
+            dst = open(saveto,"wb"); dst.write(data)
+        finally:
+            if src: src.close()
+            if dst: dst.close()
+    return os.path.realpath(saveto)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def main(argv, version=DEFAULT_VERSION):
+    """Install or upgrade setuptools and EasyInstall"""
+    try:
+        import setuptools
+    except ImportError:
+        egg = None
+        try:
+            egg = download_setuptools(version, delay=0)
+            sys.path.insert(0,egg)
+            from setuptools.command.easy_install import main
+            return main(list(argv)+[egg])   # we're done here
+        finally:
+            if egg and os.path.exists(egg):
+                os.unlink(egg)
+    else:
+        if setuptools.__version__ == '0.0.1':
+            print >>sys.stderr, (
+            "You have an obsolete version of setuptools installed.  Please\n"
+            "remove it from your system entirely before rerunning this script."
+            )
+            sys.exit(2)
+
+    req = "setuptools>="+version
+    import pkg_resources
+    try:
+        pkg_resources.require(req)
+    except pkg_resources.VersionConflict:
+        try:
+            from setuptools.command.easy_install import main
+        except ImportError:
+            from easy_install import main
+        main(list(argv)+[download_setuptools(delay=0)])
+        sys.exit(0) # try to force an exit
+    else:
+        if argv:
+            from setuptools.command.easy_install import main
+            main(argv)
+        else:
+            print("Setuptools version",version,"or greater has been installed.")
+            print('(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)')
+
+def update_md5(filenames):
+    """Update our built-in md5 registry"""
+
+    import re
+
+    for name in filenames:
+        base = os.path.basename(name)
+        f = open(name,'rb')
+        md5_data[base] = md5(f.read()).hexdigest()
+        f.close()
+
+    data = ["    %r: %r,\n" % it for it in md5_data.items()]
+    data.sort()
+    repl = "".join(data)
+
+    import inspect
+    srcfile = inspect.getsourcefile(sys.modules[__name__])
+    f = open(srcfile, 'rb'); src = f.read(); f.close()
+
+    match = re.search("\nmd5_data = {\n([^}]+)}", src)
+    if not match:
+        print >>sys.stderr, "Internal error!"
+        sys.exit(2)
+
+    src = src[:match.start(1)] + repl + src[match.end(1):]
+    f = open(srcfile,'w')
+    f.write(src)
+    f.close()
+
+
+if __name__=='__main__':
+    if len(sys.argv)>2 and sys.argv[1]=='--md5update':
+        update_md5(sys.argv[2:])
+    else:
+        main(sys.argv[1:])
+
+
+
+
+
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/virtualenv/virtualenv_embedded/site.py
@@ -0,0 +1,737 @@
+"""Append module search paths for third-party packages to sys.path.
+
+****************************************************************
+* This module is automatically imported during initialization. *
+****************************************************************
+
+In earlier versions of Python (up to 1.5a3), scripts or modules that
+needed to use site-specific modules would place ``import site''
+somewhere near the top of their code.  Because of the automatic
+import, this is no longer necessary (but code that does it still
+works).
+
+This will append site-specific paths to the module search path.  On
+Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
+appends lib/python<version>/site-packages as well as lib/site-python.
+It also supports the Debian convention of
+lib/python<version>/dist-packages.  On other platforms (mainly Mac and
+Windows), it uses just sys.prefix (and sys.exec_prefix, if different,
+but this is unlikely).  The resulting directories, if they exist, are
+appended to sys.path, and also inspected for path configuration files.
+
+FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
+Local addons go into /usr/local/lib/python<version>/site-packages
+(resp. /usr/local/lib/site-python), Debian addons install into
+/usr/{lib,share}/python<version>/dist-packages.
+
+A path configuration file is a file whose name has the form
+<package>.pth; its contents are additional directories (one per line)
+to be added to sys.path.  Non-existing directories (or
+non-directories) are never added to sys.path; no directory is added to
+sys.path more than once.  Blank lines and lines beginning with
+'#' are skipped. Lines starting with 'import' are executed.
+
+For example, suppose sys.prefix and sys.exec_prefix are set to
+/usr/local and there is a directory /usr/local/lib/python2.X/site-packages
+with three subdirectories, foo, bar and spam, and two path
+configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
+following:
+
+  # foo package configuration
+  foo
+  bar
+  bletch
+
+and bar.pth contains:
+
+  # bar package configuration
+  bar
+
+Then the following directories are added to sys.path, in this order:
+
+  /usr/local/lib/python2.X/site-packages/bar
+  /usr/local/lib/python2.X/site-packages/foo
+
+Note that bletch is omitted because it doesn't exist; bar precedes foo
+because bar.pth comes alphabetically before foo.pth; and spam is
+omitted because it is not mentioned in either path configuration file.
+
+After these path manipulations, an attempt is made to import a module
+named sitecustomize, which can perform arbitrary additional
+site-specific customizations.  If this import fails with an
+ImportError exception, it is silently ignored.
+
+"""
+
+import sys
+import os
+try:
+    import __builtin__ as builtins
+except ImportError:
+    import builtins
+try:
+    set
+except NameError:
+    from sets import Set as set
+
+# Prefixes for site-packages; add additional prefixes like /usr/local here
+PREFIXES = [sys.prefix, sys.exec_prefix]
+# Enable per user site-packages directory
+# set it to False to disable the feature or True to force the feature
+ENABLE_USER_SITE = None
+# for distutils.commands.install
+USER_SITE = None
+USER_BASE = None
+
+_is_pypy = hasattr(sys, 'pypy_version_info')
+_is_jython = sys.platform[:4] == 'java'
+if _is_jython:
+    ModuleType = type(os)
+
+def makepath(*paths):
+    dir = os.path.join(*paths)
+    if _is_jython and (dir == '__classpath__' or
+                       dir.startswith('__pyclasspath__')):
+        return dir, dir
+    dir = os.path.abspath(dir)
+    return dir, os.path.normcase(dir)
+
+def abs__file__():
+    """Set all module' __file__ attribute to an absolute path"""
+    for m in sys.modules.values():
+        if ((_is_jython and not isinstance(m, ModuleType)) or
+            hasattr(m, '__loader__')):
+            # only modules need the abspath in Jython. and don't mess
+            # with a PEP 302-supplied __file__
+            continue
+        f = getattr(m, '__file__', None)
+        if f is None:
+            continue
+        m.__file__ = os.path.abspath(f)
+
+def removeduppaths():
+    """ Remove duplicate entries from sys.path along with making them
+    absolute"""
+    # This ensures that the initial path provided by the interpreter contains
+    # only absolute pathnames, even if we're running from the build directory.
+    L = []
+    known_paths = set()
+    for dir in sys.path:
+        # Filter out duplicate paths (on case-insensitive file systems also
+        # if they only differ in case); turn relative paths into absolute
+        # paths.
+        dir, dircase = makepath(dir)
+        if not dircase in known_paths:
+            L.append(dir)
+            known_paths.add(dircase)
+    sys.path[:] = L
+    return known_paths
+
+# XXX This should not be part of site.py, since it is needed even when
+# using the -S option for Python.  See http://www.python.org/sf/586680
+def addbuilddir():
+    """Append ./build/lib.<platform> in case we're running in the build dir
+    (especially for Guido :-)"""
+    from distutils.util import get_platform
+    s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
+    if hasattr(sys, 'gettotalrefcount'):
+        s += '-pydebug'
+    s = os.path.join(os.path.dirname(sys.path[-1]), s)
+    sys.path.append(s)
+
+def _init_pathinfo():
+    """Return a set containing all existing directory entries from sys.path"""
+    d = set()
+    for dir in sys.path:
+        try:
+            if os.path.isdir(dir):
+                dir, dircase = makepath(dir)
+                d.add(dircase)
+        except TypeError:
+            continue
+    return d
+
+def addpackage(sitedir, name, known_paths):
+    """Add a new path to known_paths by combining sitedir and 'name' or execute
+    sitedir if it starts with 'import'"""
+    if known_paths is None:
+        _init_pathinfo()
+        reset = 1
+    else:
+        reset = 0
+    fullname = os.path.join(sitedir, name)
+    try:
+        f = open(fullname, "rU")
+    except IOError:
+        return
+    try:
+        for line in f:
+            if line.startswith("#"):
+                continue
+            if line.startswith("import"):
+                exec(line)
+                continue
+            line = line.rstrip()
+            dir, dircase = makepath(sitedir, line)
+            if not dircase in known_paths and os.path.exists(dir):
+                sys.path.append(dir)
+                known_paths.add(dircase)
+    finally:
+        f.close()
+    if reset:
+        known_paths = None
+    return known_paths
+
+def addsitedir(sitedir, known_paths=None):
+    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
+    'sitedir'"""
+    if known_paths is None:
+        known_paths = _init_pathinfo()
+        reset = 1
+    else:
+        reset = 0
+    sitedir, sitedircase = makepath(sitedir)
+    if not sitedircase in known_paths:
+        sys.path.append(sitedir)        # Add path component
+    try:
+        names = os.listdir(sitedir)
+    except os.error:
+        return
+    names.sort()
+    for name in names:
+        if name.endswith(os.extsep + "pth"):
+            addpackage(sitedir, name, known_paths)
+    if reset:
+        known_paths = None
+    return known_paths
+
+def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_prefix):
+    """Add site-packages (and possibly site-python) to sys.path"""
+    prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
+    if exec_prefix != sys_prefix:
+        prefixes.append(os.path.join(exec_prefix, "local"))
+
+    for prefix in prefixes:
+        if prefix:
+            if sys.platform in ('os2emx', 'riscos') or _is_jython:
+                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
+            elif _is_pypy:
+                sitedirs = [os.path.join(prefix, 'site-packages')]
+            elif sys.platform == 'darwin' and prefix == sys_prefix:
+
+                if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
+
+                    sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
+                                os.path.join(prefix, "Extras", "lib", "python")]
+
+                else: # any other Python distros on OSX work this way
+                    sitedirs = [os.path.join(prefix, "lib",
+                                             "python" + sys.version[:3], "site-packages")]
+
+            elif os.sep == '/':
+                sitedirs = [os.path.join(prefix,
+                                         "lib",
+                                         "python" + sys.version[:3],
+                                         "site-packages"),
+                            os.path.join(prefix, "lib", "site-python"),
+                            os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
+                lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
+                if (os.path.exists(lib64_dir) and 
+                    os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
+                    sitedirs.append(lib64_dir)
+                try:
+                    # sys.getobjects only available in --with-pydebug build
+                    sys.getobjects
+                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
+                except AttributeError:
+                    pass
+                # Debian-specific dist-packages directories:
+                if sys.version[0] == '2':
+                    sitedirs.append(os.path.join(prefix, "lib",
+                                                 "python" + sys.version[:3],
+                                                 "dist-packages"))
+                else:
+                    sitedirs.append(os.path.join(prefix, "lib",
+                                                 "python" + sys.version[0],
+                                                 "dist-packages"))
+                sitedirs.append(os.path.join(prefix, "local/lib",
+                                             "python" + sys.version[:3],
+                                             "dist-packages"))
+                sitedirs.append(os.path.join(prefix, "lib", "dist-python"))
+            else:
+                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
+            if sys.platform == 'darwin':
+                # for framework builds *only* we add the standard Apple
+                # locations. Currently only per-user, but /Library and
+                # /Network/Library could be added too
+                if 'Python.framework' in prefix:
+                    home = os.environ.get('HOME')
+                    if home:
+                        sitedirs.append(
+                            os.path.join(home,
+                                         'Library',
+                                         'Python',
+                                         sys.version[:3],
+                                         'site-packages'))
+            for sitedir in sitedirs:
+                if os.path.isdir(sitedir):
+                    addsitedir(sitedir, known_paths)
+    return None
+
+def check_enableusersite():
+    """Check if user site directory is safe for inclusion
+
+    The function tests for the command line flag (including environment var),
+    process uid/gid equal to effective uid/gid.
+
+    None: Disabled for security reasons
+    False: Disabled by user (command line option)
+    True: Safe and enabled
+    """
+    if hasattr(sys, 'flags') and getattr(sys.flags, 'no_user_site', False):
+        return False
+
+    if hasattr(os, "getuid") and hasattr(os, "geteuid"):
+        # check process uid == effective uid
+        if os.geteuid() != os.getuid():
+            return None
+    if hasattr(os, "getgid") and hasattr(os, "getegid"):
+        # check process gid == effective gid
+        if os.getegid() != os.getgid():
+            return None
+
+    return True
+
+def addusersitepackages(known_paths):
+    """Add a per user site-package to sys.path
+
+    Each user has its own python directory with site-packages in the
+    home directory.
+
+    USER_BASE is the root directory for all Python versions
+
+    USER_SITE is the user specific site-packages directory
+
+    USER_SITE/.. can be used for data.
+    """
+    global USER_BASE, USER_SITE, ENABLE_USER_SITE
+    env_base = os.environ.get("PYTHONUSERBASE", None)
+
+    def joinuser(*args):
+        return os.path.expanduser(os.path.join(*args))
+
+    #if sys.platform in ('os2emx', 'riscos'):
+    #    # Don't know what to put here
+    #    USER_BASE = ''
+    #    USER_SITE = ''
+    if os.name == "nt":
+        base = os.environ.get("APPDATA") or "~"
+        if env_base:
+            USER_BASE = env_base
+        else:
+            USER_BASE = joinuser(base, "Python")
+        USER_SITE = os.path.join(USER_BASE,
+                                 "Python" + sys.version[0] + sys.version[2],
+                                 "site-packages")
+    else:
+        if env_base:
+            USER_BASE = env_base
+        else:
+            USER_BASE = joinuser("~", ".local")
+        USER_SITE = os.path.join(USER_BASE, "lib",
+                                 "python" + sys.version[:3],
+                                 "site-packages")
+
+    if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
+        addsitedir(USER_SITE, known_paths)
+    if ENABLE_USER_SITE:
+        for dist_libdir in ("lib", "local/lib"):
+            user_site = os.path.join(USER_BASE, dist_libdir,
+                                     "python" + sys.version[:3],
+                                     "dist-packages")
+            if os.path.isdir(user_site):
+                addsitedir(user_site, known_paths)
+    return known_paths
+
+
+
+def setBEGINLIBPATH():
+    """The OS/2 EMX port has optional extension modules that do double duty
+    as DLLs (and must use the .DLL file extension) for other extensions.
+    The library search path needs to be amended so these will be found
+    during module import.  Use BEGINLIBPATH so that these are at the start
+    of the library search path.
+
+    """
+    dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
+    libpath = os.environ['BEGINLIBPATH'].split(';')
+    if libpath[-1]:
+        libpath.append(dllpath)
+    else:
+        libpath[-1] = dllpath
+    os.environ['BEGINLIBPATH'] = ';'.join(libpath)
+
+
+def setquit():
+    """Define new built-ins 'quit' and 'exit'.
+    These are simply strings that display a hint on how to exit.
+
+    """
+    if os.sep == ':':
+        eof = 'Cmd-Q'
+    elif os.sep == '\\':
+        eof = 'Ctrl-Z plus Return'
+    else:
+        eof = 'Ctrl-D (i.e. EOF)'
+
+    class Quitter(object):
+        def __init__(self, name):
+            self.name = name
+        def __repr__(self):
+            return 'Use %s() or %s to exit' % (self.name, eof)
+        def __call__(self, code=None):
+            # Shells like IDLE catch the SystemExit, but listen when their
+            # stdin wrapper is closed.
+            try:
+                sys.stdin.close()
+            except:
+                pass
+            raise SystemExit(code)
+    builtins.quit = Quitter('quit')
+    builtins.exit = Quitter('exit')
+
+
+class _Printer(object):
+    """interactive prompt objects for printing the license text, a list of
+    contributors and the copyright notice."""
+
+    MAXLINES = 23
+
+    def __init__(self, name, data, files=(), dirs=()):
+        self.__name = name
+        self.__data = data
+        self.__files = files
+        self.__dirs = dirs
+        self.__lines = None
+
+    def __setup(self):
+        if self.__lines:
+            return
+        data = None
+        for dir in self.__dirs:
+            for filename in self.__files:
+                filename = os.path.join(dir, filename)
+                try:
+                    fp = file(filename, "rU")
+                    data = fp.read()
+                    fp.close()
+                    break
+                except IOError:
+                    pass
+            if data:
+                break
+        if not data:
+            data = self.__data
+        self.__lines = data.split('\n')
+        self.__linecnt = len(self.__lines)
+
+    def __repr__(self):
+        self.__setup()
+        if len(self.__lines) <= self.MAXLINES:
+            return "\n".join(self.__lines)
+        else:
+            return "Type %s() to see the full %s text" % ((self.__name,)*2)
+
+    def __call__(self):
+        self.__setup()
+        prompt = 'Hit Return for more, or q (and Return) to quit: '
+        lineno = 0
+        while 1:
+            try:
+                for i in range(lineno, lineno + self.MAXLINES):
+                    print(self.__lines[i])
+            except IndexError:
+                break
+            else:
+                lineno += self.MAXLINES
+                key = None
+                while key is None:
+                    try:
+                        key = raw_input(prompt)
+                    except NameError:
+                        key = input(prompt)
+                    if key not in ('', 'q'):
+                        key = None
+                if key == 'q':
+                    break
+
+def setcopyright():
+    """Set 'copyright' and 'credits' in __builtin__"""
+    builtins.copyright = _Printer("copyright", sys.copyright)
+    if _is_jython:
+        builtins.credits = _Printer(
+            "credits",
+            "Jython is maintained by the Jython developers (www.jython.org).")
+    elif _is_pypy:
+        builtins.credits = _Printer(
+            "credits",
+            "PyPy is maintained by the PyPy developers: http://codespeak.net/pypy")
+    else:
+        builtins.credits = _Printer("credits", """\
+    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
+    for supporting Python development.  See www.python.org for more information.""")
+    here = os.path.dirname(os.__file__)
+    builtins.license = _Printer(
+        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
+        ["LICENSE.txt", "LICENSE"],
+        [os.path.join(here, os.pardir), here, os.curdir])
+
+
+class _Helper(object):
+    """Define the built-in 'help'.
+    This is a wrapper around pydoc.help (with a twist).
+
+    """
+
+    def __repr__(self):
+        return "Type help() for interactive help, " \
+               "or help(object) for help about object."
+    def __call__(self, *args, **kwds):
+        import pydoc
+        return pydoc.help(*args, **kwds)
+
+def sethelper():
+    builtins.help = _Helper()
+
+def aliasmbcs():
+    """On Windows, some default encodings are not provided by Python,
+    while they are always available as "mbcs" in each locale. Make
+    them usable by aliasing to "mbcs" in such a case."""
+    if sys.platform == 'win32':
+        import locale, codecs
+        enc = locale.getdefaultlocale()[1]
+        if enc.startswith('cp'):            # "cp***" ?
+            try:
+                codecs.lookup(enc)
+            except LookupError:
+                import encodings
+                encodings._cache[enc] = encodings._unknown
+                encodings.aliases.aliases[enc] = 'mbcs'
+
+def setencoding():
+    """Set the string encoding used by the Unicode implementation.  The
+    default is 'ascii', but if you're willing to experiment, you can
+    change this."""
+    encoding = "ascii" # Default value set by _PyUnicode_Init()
+    if 0:
+        # Enable to support locale aware default string encodings.
+        import locale
+        loc = locale.getdefaultlocale()
+        if loc[1]:
+            encoding = loc[1]
+    if 0:
+        # Enable to switch off string to Unicode coercion and implicit
+        # Unicode to string conversion.
+        encoding = "undefined"
+    if encoding != "ascii":
+        # On Non-Unicode builds this will raise an AttributeError...
+        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
+
+
+def execsitecustomize():
+    """Run custom site specific code, if available."""
+    try:
+        import sitecustomize
+    except ImportError:
+        pass
+
+def virtual_install_main_packages():
+    f = open(os.path.join(os.path.dirname(__file__), 'orig-prefix.txt'))
+    sys.real_prefix = f.read().strip()
+    f.close()
+    pos = 2
+    hardcoded_relative_dirs = []
+    if sys.path[0] == '':
+        pos += 1
+    if sys.platform == 'win32':
+        paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
+    elif _is_jython:
+        paths = [os.path.join(sys.real_prefix, 'Lib')]
+    elif _is_pypy:
+        if sys.pypy_version_info >= (1, 5):
+            cpyver = '%d.%d' % sys.version_info[:2]
+        else:
+            cpyver = '%d.%d.%d' % sys.version_info[:3]
+        paths = [os.path.join(sys.real_prefix, 'lib_pypy'),
+                 os.path.join(sys.real_prefix, 'lib-python', 'modified-%s' % cpyver),
+                 os.path.join(sys.real_prefix, 'lib-python', cpyver)]
+        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
+        #
+        # This is hardcoded in the Python executable, but relative to sys.prefix:
+        for path in paths[:]:
+            plat_path = os.path.join(path, 'plat-%s' % sys.platform)
+            if os.path.exists(plat_path):
+                paths.append(plat_path)
+    else:
+        paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
+        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
+        lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
+        if os.path.exists(lib64_path):
+            paths.append(lib64_path)
+        # This is hardcoded in the Python executable, but relative to sys.prefix:
+        plat_path = os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3],
+                                 'plat-%s' % sys.platform)
+        if os.path.exists(plat_path):
+            paths.append(plat_path)
+    # This is hardcoded in the Python executable, but
+    # relative to sys.prefix, so we have to fix up:
+    for path in list(paths):
+        tk_dir = os.path.join(path, 'lib-tk')
+        if os.path.exists(tk_dir):
+            paths.append(tk_dir)
+
+    # These are hardcoded in the Apple's Python executable,
+    # but relative to sys.prefix, so we have to fix them up:
+    if sys.platform == 'darwin':
+        hardcoded_paths = [os.path.join(relative_dir, module)
+                           for relative_dir in hardcoded_relative_dirs
+                           for module in ('plat-darwin', 'plat-mac', 'plat-mac/lib-scriptpackages')]
+
+        for path in hardcoded_paths:
+            if os.path.exists(path):
+                paths.append(path)
+
+    sys.path.extend(paths)
+
+def force_global_eggs_after_local_site_packages():
+    """
+    Force easy_installed eggs in the global environment to get placed
+    in sys.path after all packages inside the virtualenv.  This
+    maintains the "least surprise" result that packages in the
+    virtualenv always mask global packages, never the other way
+    around.
+    
+    """
+    egginsert = getattr(sys, '__egginsert', 0)
+    for i, path in enumerate(sys.path):
+        if i > egginsert and path.startswith(sys.prefix):
+            egginsert = i
+    sys.__egginsert = egginsert + 1
+    
+def virtual_addsitepackages(known_paths):
+    force_global_eggs_after_local_site_packages()
+    return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
+
+def fixclasspath():
+    """Adjust the special classpath sys.path entries for Jython. These
+    entries should follow the base virtualenv lib directories.
+    """
+    paths = []
+    classpaths = []
+    for path in sys.path:
+        if path == '__classpath__' or path.startswith('__pyclasspath__'):
+            classpaths.append(path)
+        else:
+            paths.append(path)
+    sys.path = paths
+    sys.path.extend(classpaths)
+
+def execusercustomize():
+    """Run custom user specific code, if available."""
+    try:
+        import usercustomize
+    except ImportError:
+        pass
+
+
+def main():
+    global ENABLE_USER_SITE
+    virtual_install_main_packages()
+    abs__file__()
+    paths_in_sys = removeduppaths()
+    if (os.name == "posix" and sys.path and
+        os.path.basename(sys.path[-1]) == "Modules"):
+        addbuilddir()
+    if _is_jython:
+        fixclasspath()
+    GLOBAL_SITE_PACKAGES = not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt'))
+    if not GLOBAL_SITE_PACKAGES:
+        ENABLE_USER_SITE = False
+    if ENABLE_USER_SITE is None:
+        ENABLE_USER_SITE = check_enableusersite()
+    paths_in_sys = addsitepackages(paths_in_sys)
+    paths_in_sys = addusersitepackages(paths_in_sys)
+    if GLOBAL_SITE_PACKAGES:
+        paths_in_sys = virtual_addsitepackages(paths_in_sys)
+    if sys.platform == 'os2emx':
+        setBEGINLIBPATH()
+    setquit()
+    setcopyright()
+    sethelper()
+    aliasmbcs()
+    setencoding()
+    execsitecustomize()
+    if ENABLE_USER_SITE:
+        execusercustomize()
+    # Remove sys.setdefaultencoding() so that users cannot change the
+    # encoding after initialization.  The test for presence is needed when
+    # this module is run as a script, because this code is executed twice.
+    if hasattr(sys, "setdefaultencoding"):
+        del sys.setdefaultencoding
+
+main()
+
+def _script():
+    help = """\
+    %s [--user-base] [--user-site]
+
+    Without arguments print some useful information
+    With arguments print the value of USER_BASE and/or USER_SITE separated
+    by '%s'.
+
+    Exit codes with --user-base or --user-site:
+      0 - user site directory is enabled
+      1 - user site directory is disabled by user
+      2 - uses site directory is disabled by super user
+          or for security reasons
+     >2 - unknown error
+    """
+    args = sys.argv[1:]
+    if not args:
+        print("sys.path = [")
+        for dir in sys.path:
+            print("    %r," % (dir,))
+        print("]")
+        def exists(path):
+            if os.path.isdir(path):
+                return "exists"
+            else:
+                return "doesn't exist"
+        print("USER_BASE: %r (%s)" % (USER_BASE, exists(USER_BASE)))
+        print("USER_SITE: %r (%s)" % (USER_SITE, exists(USER_BASE)))
+        print("ENABLE_USER_SITE: %r" %  ENABLE_USER_SITE)
+        sys.exit(0)
+
+    buffer = []
+    if '--user-base' in args:
+        buffer.append(USER_BASE)
+    if '--user-site' in args:
+        buffer.append(USER_SITE)
+
+    if buffer:
+        print(os.pathsep.join(buffer))
+        if ENABLE_USER_SITE:
+            sys.exit(0)
+        elif ENABLE_USER_SITE is False:
+            sys.exit(1)
+        elif ENABLE_USER_SITE is None:
+            sys.exit(2)
+        else:
+            sys.exit(3)
+    else:
+        import textwrap
+        print(textwrap.dedent(help % (sys.argv[0], os.pathsep)))
+        sys.exit(10)
+
+if __name__ == '__main__':
+    _script()
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..654fb50f8765368b176ba349d0e6680191396fa5
GIT binary patch
literal 620771
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