{ "info": { "author": "Tim Savannah", "author_email": "kata198@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Installation/Setup" ], "description": "VirtualEnvOnDemand\n==================\n\nVirtualEnvOnDemand contains two primary parts:\n\n**Managing Environments**\n\n VirtualEnvOnDemand provides a simple means for an application or series of applications to create a persistent OR temporary\n virtual environment (virtualenv), install packages within that environment, activate it, etc.\n\n**On-Demand importing**\n\n VirtualEnvOnDemand also provides an \"on demand\" importer, which allows you to automatically install providing packages\n when imports fail\n\nUsing VirtualEnvOnDemand allows you to be explicit and pythonify your virtualenv deployment and required packages,\nand not rely on a \"black box\" of the target system to provide your deps, nor are you forced to couple creating/transferring \na virtualenv with your program.\n\nIt also allows you to easily share scripts/applications with others, without requiring them to have any dependencies (other than virtualenv)\ninstalled on their system. They also do not need to know how to create virtualenvs, rely on them being active, etc.\n\n\nCross-platform\n--------------\n\nVirtualEnvOnDemand (since version 6.0.0) is now compatible across Windows, Unix/Linux/Mac, and Cygwin.\n\nSo by using VirtualEnvOnDemand, you can assure that your package requirements/installations are cross-platform,\n\nand require no special code on Windows vs Linux.\n\n\n\nManaging Virtualenvs / Persistent Virtualenvs\n---------------------------------------------\n\n**Persistent Environment**\n\nYou can use VirtualEnvOnDemand to create a virtualenv post-deployment, to both make explicit your dependencies/virtualenv setup,\n\nand to ensure that on any target system your project can run, so long as virtualenv is installed.\n\nThe general idea is that your project contains a file, like \"venv.py\", which your application will import.\n\nThink of it like a django settings.py, but for virtualenv and package dependencies.\n\nFor most cases, your venv.py can consistent of a single call to the following method:\n\n\tdef setupAndActivateEnv(parentDirectory, name, packages, myVersion=None, forceInstallPackages=False, enableOnDemandImporter=False, printDebug=False):\n\n\t\t'''\n\n\t\t\tsetupAndActivateEnv - \n\n\n\t\t\t\t@param parentDirectory - This is the directory wherein the virtualenv will be created\n\n\t\t\t\t@param name - This is the name of the virtualenv root folder\n\n\t\t\t\t@param packages - A list of packages to install. You can use pip modifiers, like '==' and '<'. May be any of the following:\n\n\n\t\t\t\t\tList - A list/tuple/set of package names (optionally including version requirements, e.x. MyPkg==1.2.3)\n\n\t\t\t\t\tDict - A dictionary of package names to versions. If no value is present (i.e. evaluates to False, like '' or None), the latest will be fetched.\n\n\t\t\t\t\tString - Directly becomes contents of requirements.txt file to be ingested by pip\n\n\n\t\t\t\t Note: if the virtualenv exists already, updates to this field will go unnoticed unless \n\n\t\t\t\t\t\"myVersion\" increases, or \"forceInstallPackages\" is set. @see #myVersion parameter below.\n\n\t\t\t\t\tYou can also use \" VirtualEnvOnDemand.installPackages( packages, venvInfo ) \" to force install/update of #packages ,\n\n\t\t\t\t\t where \"venvInfo\" is the return of this function.\n\n\n\t\t\t\t\t@see #VirtualEnvOnDemand.InstallPackages.installPackages\n\n\n\t\t\t\t@param myVersion - Any sort of version string. You can use __version__ from your module if you so please. Use None to disable.\n\n\n\t\t\t\t\tWhen defined, this represents your virtualenv's \"version\".\n\n\t\t\t\t\tIf you are inheriting an existing virtualenv, and this method is passed a higher #myVersion than is currently marked in the\n\n\n\t\t\t\t\t virtualenv directory, this method will attempt to install/update any packages as found in #packages.\n\n\n\t\t\t\t@param forceInstallPackages Default False - If True, will attempt to install/update any packages found in #packages every time.\n\n\n\t\t\t\t\tOn production and deployed code, you will likely want to leave this as False, as it carries a performence penality with every script invocation\n\n\t\t\t\t\t to check for updates. Instead, bump the value of \"myVersion\" e.g. from \"1.2.0\" to \"1.2.0.1\" or similar, or \n\n\t\t\t\t\t explicitly call #VirtualEnvOnDemand.InstallPackages.installPackages from an admin servlet, for example.\n\n\n\t\t\t\t@param enableOnDemandImporter Default False - If True, will use this env as the global \"on demand\" importer. \n\n\t\t\t\t\t@see #VirtualEnvOnDemand.GlobalEnv.enableOnDemandImporter\n\n\n\t\t\t\t@param printDebug Default False - If True, will print debug messages about what's going on to stderr.\n\n\t\t'''\n\nFor example:\n\n\tfrom VirtualEnvOnDemand import setupAndActivateEnv\n\n\timport tempfile\n\n\n\t# Import version from module to use below\n\n\tfrom MyProject import __version__ as myProjectVersion\n\n\n\tMY_PACKAGES = ['AdvancedHTMLParser', 'IndexedRedis']\n\n\n\tsetupAndActivateEnv(tempfile.gettempdir(), 'MyProjectEnv', MY_PACKAGES, myVersion=myProjectVersion, forceInstallPackages=False, enableOnDemandImporter=False, printDebug=False)\n\n\nAnd that's it! Simply put the above into a \"venv.py\" or similar, and import it from your module or cgi script or whatever.\n\nIf the virtualenv at $tempdir$/MyProjectEnv does not exist, it will be created, and the packages in \"MY\\_PACKAGES\" array will be installed.\n\nWhen the \"myVersion\" parameter is changed, (in this example, it is linked to the project's module version), it will check that all packages in \"MY\\_PACKAGES\" are installed\nand at the latest version.\n\n\n**Activate a virtualenv**\n\nYou can activate any virtualenv by path, and even activate multiple virtualenvs (unlike from the shell \"activate\" method.)\n\nSimple call *VirtualEnvOnDemand.activateEnv* with a given path\n\nExample:\n\n\tfrom VirtualEnvOnDemand import activateEnv\n\n\tactivateEnv('/path/to/env')\n\n\n**Install Packages into a Virtualenv**\n\nYou can explicitly cause packages to be installed/updated by using the \"installPackages\" method.\n\n\tdef installPackages(packages, venvDir, stdout=sys.stdout, stderr=sys.stderr):\n\n\t\t'''\n\n\t\t\tinstallPackages - Installs packages into a created virtual environment\n\n\n\t\t\t\t@param packages - Describes the required packages. Takes one of the following forms:\n\n\n\t\t\t\t\tString - Directly becomes contents of requirements.txt file to be ingested by pip\n\n\t\t\t\t\tList - A list/tuple/set of package names (optionally including version requirements, e.x. MyPkg==1.2.3)\n\n\t\t\t\t\tDict - A dictionary of package names to versions. If no value is present, the latest will be fetched.\n\n\n\t\t\t\t@param venvDir - Path to a created virtualenv directory. This should be the 'virtualenvDirectory' key from the return of createEnv, or just the VirtualEnvInfo object itself will work.\n\n\t\t\t\t@param stdout - Stream to be used as stdout for installation. Default is sys.stdout. Use \"None\" to swallow output.\n\n\t\t\t\t@param stderr - Stream to be used as stderr for installation. Default is sys.stderr. Use \"None\" to swallow output.\n\n\n\t\t\t\t@return - The generated requirements.txt used to install packages.\n\n\n\t\t\t\t@raises - \n\n\t\t\t\t\tVirtualEnvOnDemand.exceptions.PipInstallFailed - if cannot install packages\n\n\t\t\t\t\tVirtualEnvOnDemand.exceptions.VirtualEnvDoesNotExist - If given venvDir does not exist\n\n\t\t\t\t\tOthers (Exception, etc) - If permissions problem to write to specified directory, etc\n\n\t\t'''\n\n\n\nFor example:\n\n\tfrom VirtualEnvOnDemand import installPackages\n\n\tinstallPackages(['SimpleHttpFetch', '/path/to/env', stdout=None, stderr=None)\n\n\nYou can also attempt to install/update a package only if an import fails, with the \"ensureImport\" method instead of the \"import\" keyword.\n\n\tdef ensureImport(importName, venvDir, packageName=None, stdout=None, stderr=None):\n\n\t\t'''\n\n\t\t\tensureImport - Try to import a module, and upon failure to import try to install package into provided virtualenv\n\n\n\t\t\t@param importName - The name of the module to import\n\n\t\t\t@param venvDir - The path to a virtualenv, likely created by createEnv or the global env (fetched via getGlobalVirtualEnvInfo()).\n\n\t\t\t@param packageName - If the package name differs from the import name (like biopython package provides \"Bio\" module), install this package if import fails. This may contain version info (like AdvancedHTMLParser>6.0)\n\n\t\t\t@param stdout - Stream to use for stdout as package info, or None to silence. Default None. NOTE: This differs from elsewhere where sys.stdout is default.\n\n\t\t\t@param stderr - Stream to use for stderr as package info, or None to silence. Default None. NOTE: This differs from elsewhere where sys.stderr is default.\n\n\n\t\t\t@return - The imported module\n\n\n\t\t\t@raises - ImportError if cannot import.\n\n\n\t\t\t\tNOTE: With this method, PipInstallFailed will be intercepted and ImportError thrown instead, as this is intended to be a drop-in replacement for \"import\" when the package name differs.\n\n\t\t'''\n\n\nFor example:\n\n\tfrom VirtualEnvOnDemand import ensureImport\n\n\tBio = ensureImport('Bio', '/path/to/myenv', packageName='biopython')\n\n\nThere are many other methods and useful features, please check out the full documentation for further info (link below, in \"Full Documentation\" section).\n}\n\n\nOn-Demand Importing\n-------------------\n\nVirtualEnvOnDemand has the ability to automatically attempt to install packages at import-time, when an import fails.\n\nThis is recommended for developemnt and quick-and-dirty scripts. For production projects, you should use a persistent environment (see \"Persistent Virtualenvs\" section above).\n\nYou may call *VirtualEnvOnDemand.enableOnDemandImporter()* to add a hook to python imports, and if an import fails, it will try to install the providing package using pip.\n\nThe default (controlled by deferSetup flag to *enableOnDemandImporter*) is to not setup the global virtualenv until needed (like when an import fails local). This allows the on demand importer to be used without penality if all requires modules are present, but still gives the robustness to install those that aren't.\n\nYour existing pip.conf provides the options and index url that will be searched.\n\nThis works fine and well, so long as modules have the same name as their package. When this is not the case, there are alternative functions.\n\nTo handle these using the global env created by *enableOnDemandImporter*, use:\n\n\tMyModule = VirtualEnvOnDemand.ensureImportGlobal('MyModule', 'MyPackage')\n\nThis will raise \"ImportError\" if MyModule cannot be imported and MyPackage cannot be installed, or if MyPackage does not provide MyMdoule.\n\nThere is more advanced usage, wherein you can create and stack multiple virtualenvs and handle them directory or for certain imports instead of using the global hook. See the documentation link below, and \"example\\_explicit.py\" in the source distribution for more information on that.\n\n**On-Demand Example**\n\nThe following example shows using \"enableOnDemandImporter\" to automatically fetch and install to current runtime any unavailable imports.\n\n\t#!/usr/bin/env python\n\n\timport sys\n\n\tfrom VirtualEnvOnDemand import enableOnDemandImporter, ensureImportGlobal\n\n\t# Activate the hook\n\tenableOnDemandImporter()\n\n\t# The following imports are not available without external installation\n\timport IndexedRedis\n\tfrom AdvancedHTMLParser.exceptions import *\n\n\t# The following import will go into the global venv where the module and package have different names\n\n\tBio = ensureImportGlobal('Bio', 'biopython')\n\n\ttry:\n\t\timport mODULEdoesNotExist\n\texcept ImportError:\n\t\tsys.stdout.write('Got import error on really non-existant module, as expected.\\n')\n\n\tif __name__ == '__main__':\n\t\tsys.stdout.write('IndexedRedis version: ' + IndexedRedis.__version__ + '\\n')\n\t\timport AdvancedHTMLParser\n\t\tsys.stdout.write('AdvancedHTMLParser version: ' + AdvancedHTMLParser.__version__ + '\\n')\n\n\n\n**Full Documentation / Pydoc**\n\nAdditional methods can be found at:\n\nhttps://pythonhosted.org/VirtualEnvOnDemand/\n\n\nAdditional examples can be found in the \"examples\" directory, https://github.com/kata198/VirtualEnvOnDemand/tree/master/examples", "description_content_type": null, "docs_url": "https://pythonhosted.org/VirtualEnvOnDemand/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kata198/VirtualEnvOnDemand", "keywords": "virtualenv,on,demand,pip,install,import,runtime,ImportError,reload,module,package", "license": "LGPLv3", "maintainer": "", "maintainer_email": "", "name": "VirtualEnvOnDemand", "package_url": "https://pypi.org/project/VirtualEnvOnDemand/", "platform": "", "project_url": "https://pypi.org/project/VirtualEnvOnDemand/", "project_urls": { "Homepage": "https://github.com/kata198/VirtualEnvOnDemand" }, "release_url": "https://pypi.org/project/VirtualEnvOnDemand/6.0.0/", "requires_dist": null, "requires_python": "", "summary": "Easily create and use virtualenvs and provides the ability for an application to install and use its runtime dependencies at import time", "version": "6.0.0" }, "last_serial": 2519449, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "a5a04f886b9846410ad06e2deda0b6e9", "sha256": "fdddb084b0d473f471801c9b1becaca9a96b2298040d72e04317b32aea5f0ab2" }, "downloads": -1, "filename": "VirtualEnvOnDemand-2.0.0.tar.gz", "has_sig": false, "md5_digest": "a5a04f886b9846410ad06e2deda0b6e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22271, "upload_time": "2015-11-17T21:31:17", "url": "https://files.pythonhosted.org/packages/63/72/1b0ef468a1a8f7ee84a1d8ad0c48efd6f2847954bdd01fc29856b9a2f4ba/VirtualEnvOnDemand-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "2dc43830a6595ee5db88102e71b99afb", "sha256": "1ce9ad93ae55759654e6ae132c9b2339d0579bc0adb4c4289f530ed3ef5ba270" }, "downloads": -1, "filename": "VirtualEnvOnDemand-2.0.1.tar.gz", "has_sig": false, "md5_digest": "2dc43830a6595ee5db88102e71b99afb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22289, "upload_time": "2015-11-17T21:34:21", "url": "https://files.pythonhosted.org/packages/73/44/1edf67c2badb40a7280f520257b304e2791f8698c3acbceab61e63564a05/VirtualEnvOnDemand-2.0.1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "b424a9dbd0592379fd0f8fca7fed6a36", "sha256": "8466829ce0d58b5a9611f9c80952d300b45843ed43a852faed513707218b9f92" }, "downloads": -1, "filename": "VirtualEnvOnDemand-2.1.0.tar.gz", "has_sig": false, "md5_digest": "b424a9dbd0592379fd0f8fca7fed6a36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22815, "upload_time": "2015-11-18T17:32:28", "url": "https://files.pythonhosted.org/packages/e9/62/528f8049b492731250f465d374ddc078e9ebad9aa82c645555436ff5253c/VirtualEnvOnDemand-2.1.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "4d7e8126065a9db0147090ce2bcdb274", "sha256": "c0e9eb2bf2984f2bb7b6ab51b4383ac7af163181f00b433d466f0b06fc43d448" }, "downloads": -1, "filename": "VirtualEnvOnDemand-3.0.0.tar.gz", "has_sig": false, "md5_digest": "4d7e8126065a9db0147090ce2bcdb274", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29080, "upload_time": "2015-11-20T03:48:30", "url": "https://files.pythonhosted.org/packages/38/70/7ea5bd7fa1f9905d04412d13b4a8ec7cd43fc21b700f903e0b4f7651e21f/VirtualEnvOnDemand-3.0.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "eee4ddd3f2957f13d17774bfeb099397", "sha256": "95e7b75b2697f8e3aa2907e841c4bbe8391473cea1e7a1b3950679fefc09d36f" }, "downloads": -1, "filename": "VirtualEnvOnDemand-3.0.1.tar.gz", "has_sig": false, "md5_digest": "eee4ddd3f2957f13d17774bfeb099397", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27836, "upload_time": "2015-11-20T19:27:04", "url": "https://files.pythonhosted.org/packages/14/ef/6337ea2756eb307398bf2344ac43e88de2bb57978ba5179486feeb2b7599/VirtualEnvOnDemand-3.0.1.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "354dc99db4c61dfaf9b2fccb6ae039b4", "sha256": "3d025a310968085d2525b51b83c47142b9cf45b344615a294e771d7b7c667dac" }, "downloads": -1, "filename": "VirtualEnvOnDemand-4.0.0.tar.gz", "has_sig": false, "md5_digest": "354dc99db4c61dfaf9b2fccb6ae039b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31193, "upload_time": "2015-12-18T19:28:24", "url": "https://files.pythonhosted.org/packages/68/75/1ba4b1d6b240ab830e078a3c49a2a8fb0f252e862fe8ce4640ccb9f188d0/VirtualEnvOnDemand-4.0.0.tar.gz" } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "d2728775dabccaf2b048ecd731a94717", "sha256": "7ee9b56e2d97fb845d73529afca6e0615c41b7ae3507957f408225928ee1a1ca" }, "downloads": -1, "filename": "VirtualEnvOnDemand-4.1.0.tar.gz", "has_sig": false, "md5_digest": "d2728775dabccaf2b048ecd731a94717", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31898, "upload_time": "2016-02-10T21:36:37", "url": "https://files.pythonhosted.org/packages/b8/b4/ba46a33203271271d482c963c071eb6441bcffb757047d550fedf29c1e9d/VirtualEnvOnDemand-4.1.0.tar.gz" } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "5ebfd0e3958f273f5fa981bf4afe356e", "sha256": "53761933461ff44e921cdbf7b9b85da4b05b3e8266ff35eceb41476b224202a5" }, "downloads": -1, "filename": "VirtualEnvOnDemand-4.2.0.tar.gz", "has_sig": false, "md5_digest": "5ebfd0e3958f273f5fa981bf4afe356e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32011, "upload_time": "2016-03-31T22:31:43", "url": "https://files.pythonhosted.org/packages/06/44/66400b0f6d6346d31ac828ebe9e43933a0e5c377f67e0b6c83b9ffbd2a80/VirtualEnvOnDemand-4.2.0.tar.gz" } ], "4.2.2": [ { "comment_text": "", "digests": { "md5": "fd8fc25e9799dfe727ae39f07cff5db1", "sha256": "aa8a6aaef8329394f88de740f029f4b9c2b7cc3f32b55cbda9c7195831ebb674" }, "downloads": -1, "filename": "VirtualEnvOnDemand-4.2.2.tar.gz", "has_sig": false, "md5_digest": "fd8fc25e9799dfe727ae39f07cff5db1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32054, "upload_time": "2016-05-16T19:55:53", "url": "https://files.pythonhosted.org/packages/03/dc/5d7d7f1cdd64b8bcf247f801d6bb9a3242a7b20c03016eb8ca6f9174602f/VirtualEnvOnDemand-4.2.2.tar.gz" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "48cdd009c0f63ca39a8d7a8732649f4e", "sha256": "d3bc954451547fd437d9324c128063b644d7487e5cb318a0d7f142f3eb719892" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.0.0.tar.gz", "has_sig": false, "md5_digest": "48cdd009c0f63ca39a8d7a8732649f4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41608, "upload_time": "2016-09-29T03:14:58", "url": "https://files.pythonhosted.org/packages/c6/89/3c631deb4ed7dc308c3dc5a286965ecd126ae4ba571d9d497b8979af70bc/VirtualEnvOnDemand-5.0.0.tar.gz" } ], "5.0.1": [ { "comment_text": "", "digests": { "md5": "87245bd49eb89d40797c382a441b0923", "sha256": "8c29ba452c45a181c54bd43ada8da86e56a43fb1e308d344f0a34b247cd3b0ee" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.0.1.tar.gz", "has_sig": false, "md5_digest": "87245bd49eb89d40797c382a441b0923", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41891, "upload_time": "2016-09-29T04:08:08", "url": "https://files.pythonhosted.org/packages/19/5f/cbf30553af61ed2237319c22860914698b9f12486d13a3e72ccdb977e44c/VirtualEnvOnDemand-5.0.1.tar.gz" } ], "5.0.2": [ { "comment_text": "", "digests": { "md5": "9edba237ff75654e073b0abc0bac382f", "sha256": "731c1cb4677231a9c1026b152309d697652c8213d53b836ee72d16f475bc5cd5" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.0.2.tar.gz", "has_sig": false, "md5_digest": "9edba237ff75654e073b0abc0bac382f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41505, "upload_time": "2016-09-30T21:26:21", "url": "https://files.pythonhosted.org/packages/be/12/aabd20351726edf553cb3d365ad8ac9b9e2c0765ddce0254699d274f9de2/VirtualEnvOnDemand-5.0.2.tar.gz" } ], "5.0.4": [ { "comment_text": "", "digests": { "md5": "1088b47743b218653e3cbf0be4955441", "sha256": "224136c7c5607d16869ec42cb5a378de503262727bf778fc93868746351c6a26" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.0.4.tar.gz", "has_sig": false, "md5_digest": "1088b47743b218653e3cbf0be4955441", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41664, "upload_time": "2016-10-14T19:36:35", "url": "https://files.pythonhosted.org/packages/2f/f3/8be5a3a508d59e5273a4ae64647fd9be46b671fc3df85d48c055467e4dd0/VirtualEnvOnDemand-5.0.4.tar.gz" } ], "5.1.0": [ { "comment_text": "", "digests": { "md5": "08f1a9848ee78faacc2439512c08cb82", "sha256": "4e17a7f1681667f0ea5db9093120a2b47b29b6e927232ddf30a42d72e68358dc" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.1.0.tar.gz", "has_sig": false, "md5_digest": "08f1a9848ee78faacc2439512c08cb82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50390, "upload_time": "2016-10-27T23:05:24", "url": "https://files.pythonhosted.org/packages/4a/61/bbae843e98d1f9ea8bb105d3aba9b3677c5d0c7c47d4d149b22266b74d52/VirtualEnvOnDemand-5.1.0.tar.gz" } ], "5.1.1": [ { "comment_text": "", "digests": { "md5": "2a1daf9d4d84b53db2a21bf89f7a9d17", "sha256": "cfa1a16a23cec9f49bab447ab017d46df9e111483f4aff162d5595fdd361fdb9" }, "downloads": -1, "filename": "VirtualEnvOnDemand-5.1.1.tar.gz", "has_sig": false, "md5_digest": "2a1daf9d4d84b53db2a21bf89f7a9d17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50519, "upload_time": "2016-11-03T19:47:57", "url": "https://files.pythonhosted.org/packages/3d/4f/06fc4ee9d43153afe57f84845999b8983d9baaa17b9be05ba416a7286f27/VirtualEnvOnDemand-5.1.1.tar.gz" } ], "6.0.0": [ { "comment_text": "", "digests": { "md5": "855418700cda26f7e8a45e9ec46e7bc0", "sha256": "135f392464f3558db47d9699fba354fa4ece4d51209fb452eb0de5e6891622c3" }, "downloads": -1, "filename": "VirtualEnvOnDemand-6.0.0.tar.gz", "has_sig": false, "md5_digest": "855418700cda26f7e8a45e9ec46e7bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67522, "upload_time": "2016-12-14T18:58:29", "url": "https://files.pythonhosted.org/packages/bd/6e/a52e27b55117811caa521d581ee4dce9297742e23ce160bd0545a6658f18/VirtualEnvOnDemand-6.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "855418700cda26f7e8a45e9ec46e7bc0", "sha256": "135f392464f3558db47d9699fba354fa4ece4d51209fb452eb0de5e6891622c3" }, "downloads": -1, "filename": "VirtualEnvOnDemand-6.0.0.tar.gz", "has_sig": false, "md5_digest": "855418700cda26f7e8a45e9ec46e7bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67522, "upload_time": "2016-12-14T18:58:29", "url": "https://files.pythonhosted.org/packages/bd/6e/a52e27b55117811caa521d581ee4dce9297742e23ce160bd0545a6658f18/VirtualEnvOnDemand-6.0.0.tar.gz" } ] }