{ "info": { "author": "Dylan Jay", "author_email": "software@pretaweb.com", "bugtrack_url": null, "classifiers": [], "description": "What does it do?\r\n****************\r\n\r\nIf you are new to remote application management, hostout can help you to\r\ndeploy your first site in minutes. Hostout is compatible with Plone, django, or any other\r\nbuildout based environment.\r\n \r\nHostout is a zc.buildout recipe_\r\nHostout generates a script which logs into your remote host(s) and performs preset and customizable commands. e.g.\r\n\r\n$ bin/hostout productionserver deploy\r\n\r\n$ bin/hostout server1 server2 supervisorctl restart instance1\r\n\r\n$ bin/hostout all cmd ls -al\r\n\r\n$ bin/hostout staging mylocalfabriccommand\r\n\r\nHow does it do that?\r\n********************\r\n\r\nCommands can easily be added from a local fabric_ script, hostout command plugins or just the\r\nbuiltin commands to help you bootstrap and deploy your buildout to remote hosts.\r\n\r\nWhy is hostout awesome?\r\n***********************\r\nManaging multiple environments can be a real pain and a barrier to development.\r\nHostout puts all of the settings for all of your environments in an easy-to-manage format.\r\n\r\n.. _recipe: http://pypi.python.org/pypi/zc.buildout#recipes\r\n.. _fabric: http://fabfile.org\r\n\r\n.. contents::\r\n\r\n\n\n\nInstalling hostout\n******************\n\nFirst follow the instructions and to get your development buildout running on your development machine.\nYou can add this recipe to a buildout for Plone, django or any other buildout based environment.\n\nAdd the collective.hostout part to your development buildout.\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = host1\n...\n... [host1]\n... recipe = collective.hostout\n... host = 127.0.0.1:10022\n... user = root\n... password = root\n... path = /usr/local/plone/host1\n... \"\"\" % globals())\n\nIf you don't include your password you will be prompted for it later. \n \nNext rerun your buildout to install the hostout script in your buildout bin directory\n\n>>> print system('bin/buildout -N')\nInstalling host1.\nGenerated script '/sample-buildout/bin/hostout'.\n\nThe generated script is run with a command and host(s) as arguments\n\n>>> print system('bin/hostout')\ncmdline is: bin/hostout host1 [host2...] [all] cmd1 [cmd2...] [arg1 arg2...]\nValid hosts are: host1\n\n\nEach host refers to the name of a part with recipe=collective.hostout in your buildout.\nEach host corresponds to a host and remote path which is the default location for commands to act on.\n\n>>> print system('bin/hostout host1')\n cmdline is: bin/hostout host1 [host2...] [all] cmd1 [cmd2...] [arg1 arg2...]\n Valid commands are:\n bootstrap : Install python and users needed to run buildout\n buildout : Run the buildout on the remote server\n deploy : predeploy, uploadeggs, uploadbuildout, buildout and then postdeploy\n postdeploy : Perform any final plugin tasks\n predeploy : Install buildout and its dependencies if needed. Hookpoint for plugins\n resetpermissions : Ensure ownership and permissions are correct on buildout and cache\n run : Execute cmd on remote as login user\n sudo : Execute cmd on remote as root user\n uploadbuildout : Upload buildout pinned to local picked versions + uploaded eggs\n uploadeggs : Any develop eggs are released as eggs and uploaded to the server\n\n>>> print system('bin/hostout host1 run pwd')\nHostout: Running command 'run' from '.../fabfile.py'\nLogging into the following hosts as root:\n 127.0.0.1\n[127.0.0.1] run: sh -c \"cd /usr/local/plone/host1 && pwd\"\n[127.0.0.1] out: CMD RECIEVED\nDone.\n\nDefinitions\n***********\n\nbuildout\n zc.buildout is a tool for creating an isolated environment for running applications. It is controlled\n by a configuration file(s) called a buidout file.\n\nbuildout recipe\n A buildout file consists of parts each of which has a recipe which is in charge of installing a particular\n piece of softare. \n \ndeploy\n Take a an application you are developing and move it to a host server for use. Often deployment will be\n to a staging location for limited use in testing or production for mainstream use. Production, staging\n and development often have different but related to buildouts and could involve different numbers of hosts\n for each.\n\nhost\n In the context of this document this a machine or VPS running linux which you would like to deploy your\n application to.\n\nfabric file\n see fabric_\n\nUsing builtin deploy command\n****************************\n\nOften we have a buildout installed and working on a development machine and we need to get it working on\none or many hosts quickly and easily. \n\nFirst you will need a linux host. You'll need a linux with ssh access and sudo access. VPS and cloud hosting is\nnow cheap and plentiful with options as low as $11USD a month. If you're not sure, pick a pay per hour \noption pre-configured with Ubuntu and give it a go for example rackspacecloud or amazon EC2.\n\nNext you need a production buildout for your application. There are plenty available whether it be for Plone, \ngrok, django, BFG, pylons. Often a buildout will come in several files, one for development and one for production. \nJust remember that to get the best performance you will need to understand your buildout.\n\nFor this example we've added a development egg\nto our buildout as well.\n\n>>> mkdir('example')\n\n>>> write('example', 'example.py',\n... \"\"\"\n... def run():\n... print \"example\"\n...\n... \"\"\")\n\n>>> write('example', 'setup.py',\n... \"\"\"\n... from setuptools import setup\n...\n... setup(\n... name = \"example\",\n... entry_points = {'default': ['mkdir = mkdir:Mkdir']},\n... )\n... \"\"\")\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = example host1\n... develop = example\n...\n... [example]\n... recipe = zc.recipe.egg\n... eggs = example\n... \n... [host1]\n... recipe = collective.hostout\n... host = 127.0.0.1:10022\n... user = root\n... password = root\n...\n... \"\"\" % globals())\n>>> print system('bin/buildout -N')\nDevelop: '.../example'\nUninstalling host1.\nInstalling example.\nInstalling host1.\n\n\nThe deploy command will login to your host and setup a buildout environment if it doesn't exist, upload\nand installs the buildout. The deploy command is actually five commands\n\npredeploy\n Bootstrap the server if needed.\n \nuploadeggs\n Any develop eggs are released as eggs and uploaded to the server\n \nuploadbuildout\n A special buildout is prepared referencing uploaded eggs and all other eggs pinned to the local picked versions\n \nbuildout\n Run the buildout on the remote server\n \npostdeploy\n Perform any final plugin tasks\n\n>>> print system('bin/hostout host1 deploy')\n running clean\n ...\n creating '...example-0.0.0dev_....egg' and adding '...' to it\n ...\n Hostout: Running command 'predeploy' from '.../collective.hostout/collective/hostout/fabfile.py'\n ...\n Hostout: Running command 'uploadeggs' from '.../collective.hostout/collective/hostout/fabfile.py'\n Hostout: Preparing eggs for transport\n Hostout: Develop egg /sample-buildout/example changed. Releasing with hash ...\n Hostout: Eggs to transport:\n \texample = 0.0.0dev-...\n Hostout: Wrote versions to /sample-buildout/host1.cfg\n ...\n Hostout: Running command 'uploadbuildout' from '.../collective.hostout/collective/hostout/fabfile.py'\n ...\n Hostout: Running command 'buildout' from '.../collective/hostout/fabfile.py'\n ...\n Hostout: Running command 'postdeploy' from '.../collective.hostout/collective/hostout/fabfile.py'\n ...\n\nWe now have a live version of our buildout deployed to our host\n\nBootstrapping\n-------------\n\nHostout has a builtin bootstrap command that is called if the predeploy command doesn't find buildout\ninstalled at the remote path.\nBootstrap not only installs buildout but\nalso installs the correct version of python, development tools, needed libraries and creates users needed to\nmanage the buildout. The buildin bootstrap may not work for all versions of linux so look\nfor hostout plugins that match the distribution of linux you installed.\n\nDeploy options\n--------------\n\nbuildout\n The configuration file you which to build on the remote host. Note this doesn't have\n to be the same .cfg as the hostout section is in but the versions of the eggs will be determined\n from the buildout with the hostout section in. Defaults to buildout.cfg\n\neffective-user\n The user which will own the buildout files. Defaults to #TODO\n\npath\n The absolute path on the remote host where the buildout will be created.\n Defaults to ~${hostout:effective-user}/buildout\n\npre-commands\n A series of shell commands executed as root before the buildout is run. You can use this \n to shut down your application. If these commands fail they will be ignored.\n \npost-commands\n A series of shell commands executed as root after the buildout is run. You can use this \n to startup your application. If these commands fail they will be ignored.\n\nparts\n Runs the buildout with a parts value equal to this\n \ninclude\n Additional configuration files or directories needed to run this buildout\n \nbuildout-cache\n If you want to override the default location for the buildout-cache on the host\n\npython-version\n The version of python to install during bootstrapping. Defaults to version\n used in the local buildout. (UNIMPLIMENTED) \n\n\nUsing command plugins\n*********************\n\nYou use commands others have made via the extends option.\nName a buildout recipe egg in the extends option and buildout will download\nand merge any fabfiles and other configuration options from that recipe into\nyour current hostout configuration. The following are examples of builtin\nplugins others are available on pypi.\n\ncollective.hostout:supervisor\n-----------------------------\nThis recipe is an example of a hostout plugin. It will set pre and post commands to stop and then \nrestart supervisor after the deployment. It takes the following options\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = host1\n...\n... [host1]\n... recipe = collective.hostout\n... host = 127.0.0.1:10022\n... password = root\n... extends = collective.hostout:supervisor\n... supervisor = supervisor\n... init.d = True\n...\n... \"\"\")\n\n>>> print system('bin/buildout -N')\n Uninstalling host1.\n Uninstalling example.\n Installing host1.\n\n>>> print system('bin/hostout host1')\n cmdline is: bin/hostout host1 [host2...] [all] cmd1 [cmd2...] [arg1 arg2...]\n Valid commands are:\n ...\n installonstartup : Installs supervisor into your init.d scripts in order to ensure that supervisor is started on boot\n ...\n supervisorctl : Takes command line arguments and runs supervisorctl on the remote host\n supervisorshutdown : Shutdown the supervisor daemon\n supervisorstartup : Start the supervisor daemon\n ...\n \nThe following options maybe used\n\nsupervisor\n The name of the supervisor part to stop and restart\n \ninit.d\n If set the supervisord script will be linked into init.d so any machine restart will also\n start supervisor\n\nIn addition supervisor plugin will shutdown supervisor during pre-deployment and startup\nsupervisor during post-deployment.\n\n>>> print system('bin/hostout host1 deploy')\n Hostout: Running command 'predeploy' from '/.../collective/hostout/supervisor/fabfile.py'\n Logging into the following hosts as :\n 127.0.0.1\n [127.0.0.1] sudo: /var/lib/plone/host1/bin/supervisorctl shutdown || echo 'Failed to shutdown'\n ...\n Hostout: Running command 'postdeploy' from '/.../collective/hostout/supervisor/fabfile.py'\n ...\n [127.0.0.1] sudo: /var/lib/plone/host1/bin/supervisord\n ...\n [127.0.0.1] sudo: /var/lib/plone/host1/bin/supervisorctl status\n ...\n Hostout: Running command 'postdeploy' from '.../collective.hostout/collective/hostout/fabfile.py'\n ...\n\n\ncollective.hostout:mrdeveloper\n------------------------------\nif you include this extension your hostout deployment will fail if you have any uncommited modifications\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = host1 example\n... extensions =\n... mr.developer\n... sources = sources\n... sources-dir = .\n... auto-checkout = example\n... [sources]\n... example = fs example\n...\n... [example]\n... recipe = zc.recipe.egg\n... eggs = example\n...\n... [host1]\n... recipe = collective.hostout\n... host = 127.0.0.1:10022\n... password = root\n... extends = collective.hostout:mrdeveloper\n...\n... \"\"\" )\n\n>>> print system('bin/buildout -N')\n mr.developer: Filesystem package 'example' doesn't need a checkout.\n Develop: '/sample-buildout/./example'\n Uninstalling host1.\n Installing _mr.developer.\n Getting distribution for 'elementtree'.\n Got elementtree 1.2.6-20050316.\n Generated script '/sample-buildout/bin/develop'.\n Installing example.\n Installing host1.\n\n\n#>>> print system('bin/hostout host1 deploy')\nPackage 'example1' has been modified.\nHostout aborted\n\n\ncollective.hostout:ubuntu\n-------------------------\n(NOT CURRENTLY IMPLEMENTED)\nif you include this extension native ubuntu packages will be used on your remote host instead \nof the more generic plone unified installer.\n\n**Warning: this will change your system packages as needed to get the correct python version**\n\n\ncollective.hostout.datafs \n-------------------------\n(NOT IMPLEMENTED)\nAdding this extension will provide addition commands for manipulating the ZODB database files\nof a zope or plone installation.\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = host1\n...\n... [host1]\n... recipe = collective.hostout\n... host = localhost:10022\n... password = root\n... extends = collective.hostout:datafs\n... filestorage = \n... ${buildout:directory}/var/filestorage/Data01.fs\n... ${buildout:directory}/var/filestorage/Data02.fs\n... \n...\n... \"\"\" % globals())\n\n#>>> print system('bin/buildout -N')\n\n#>>> print system('bin/hostout host1 upload')\nThis will overwrite the following filestorage files on your host.\n- var/filestorage/Data.fs\nAre you sure you want to do this [y/N]?\n\n#>>> print system('bin/hostout host1 download')\nThis will overwrite the following filestorage files on your local buildout directory.\n- var/filestorage/Data.fs\nAre you sure you want to do this [y/N]?\n\n#>>> print system('bin/hostout host1 backup')\nRunning repozo to create backup on remote server 'host1'\n...\n\n\nAdding your own commands\n************************\n\nHostout uses fabric files. Fabric is any easy way to write python that\ncolls commands on a host over ssh. You can create your own fabric files as follows:\n\n\n>>> write('fabfile.py',\"\"\"\n... def echo(cmdline1):\n... hostout = get('hostout')\n... bin = \"%s/bin\" % hostout.getRemoteBuildoutPath()\n... option1 = hostout.options['option1']\n... run(\"echo '%s %s'\" % (option1, cmdline1) )\n... \"\"\")\n\nReference this file in the fabfiles option of your hostout part.\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = host1\n...\n... [host1]\n... recipe = collective.hostout\n... host = 127.0.0.1:10022\n... fabfiles = fabfile.py\n... option1 = buildout\n... user = root\n... password = root\n...\n... \"\"\" )\n\n>>> print system('bin/buildout -N')\nUninstalling host1.\nInstalling host1.\n\n>>> print system('bin/hostout host1 echo \"is cool\"')\nHostout: Running command 'echo' from 'fabfile.py'\nLogging into the following hosts as root:\n 127.0.0.1\n[127.0.0.1] run: echo 'buildout is cool'\n[127.0.0.1] out: CMD RECIEVED\nDone.\n\n\n\nSharing hostout options\n***********************\n\nFor more complicated arrangements you can use the extends value to share defaults \nbetween multiple hostout definitions\n\n>>> write('buildout.cfg',\n... \"\"\"\n... [buildout]\n... parts = prod staging\n...\n... [hostout]\n... recipe = collective.hostout\n... password = blah\n... user = root\n... identity-file = id_dsa.pub\n... pre-commands =\n... ${buildout:directory}/bin/supervisorctl shutdown || echo 'Unable to shutdown'\n... post-commands = \n... ${buildout:directory}/bin/supervisord\n... effective-user = plone\n... include = config/haproxy.in\n... \n... \n... [prod]\n... recipe = collective.hostout\n... extends = hostout\n... host = localhost:10022\n... buildout =\n... config/prod.cfg\n... path = /var/plone/prod\n...\n... [staging]\n... recipe = collective.hostout\n... extends = hostout\n... host = staging.prod.com\n... buildout =\n... config/staging.cfg\n... path = /var/plone/staging\n...\n... \"\"\" % globals())\n\n>>> print system('bin/buildout -N')\n Uninstalling host1.\n Uninstalling example.\n Uninstalling _mr.developer.\n Installing hostout.\n Installing staging.\n Installing prod.\n\n#>>> print system('bin/hostout deploy')\nInvalid hostout hostouts are: prod staging\n\n\n\nDetailed Hostout Options\n************************\n\nhost\n the IP or hostname of the host to deploy to. by default it will connect to port 22 using ssh.\n You can override the port by using hostname:port\n\nuser\n The user which hostout will attempt to login to your host as. Will read a users ssh config to get a default.\n\npassword\n The password for the login user. If not given then hostout will ask each time.\n \nidentity-file\n A public key for the login user.\n\nextends \n Specifies another part which contains defaults for this hostout\n \nfabfiles\n Path to fabric files that contain commands which can then be called from the hostout\n script. Commands can access hostout options via hostout.options from the fabric environment.\n\n\n\n\nTodo list\n*********\n\n- use latest fabric and thus switch to python2.6\n\n- finish ubuntu bootstrap\n\n- plugins for database handling including backing up, moving between development, staging and production\n regardless of location.\n \n- plugins for cloud api's such as Amazon Ec2 or Rackspace Cloud\n\n- Integrate with SCM to tag all parts so deployments can be rolled back.\n\n- Handle basic rollback when no SCM exists, for instance when buildout fails.\n\n- Automatically setup host with password-less ssh login.\n\n- Help deploy DNS settings, possibly by hosting company specific plugins\n\n- Incorporate unified installer environment setup scripts directly.\n\n- Support firewalled servers by an optional tunnel back to a client side web proxy.\n\n- Explore ways to make an even easier transition from default plone install to fully hosted site.\n\nCredits\n*******\n\nDylan Jay ( software at pretaweb dot com )\n\n\n\n\n\nRelease History\n***************\n\n0.9.4 (2009-01-31)\n------------------\n- commandline changed to allow multsite and arguments\n- mr.developer plugin\n- supervisor plugin\n- documentation clearer and more details\n- ssh tests now working\n- Nice listing of available commands\n\n0.9.3\n-----\n- Fixed how extends works\n- fabric commands have hostout in environment rather than argument\n- new command to reset permissions\n- fab_hosts etc is set for all commands\n- supervisor recipe now uses fabfile\n\n0.9.2 (2009-09-26)\n------------------\n- can extend from recipe directly instead of a buildout part\n- supervisor plugin recipe\n- fixed version pinning for recipes\n\n\n0.9.1 (2009-09-17)\n------------------\n- fix bug in lowering case of package names in versions\n\n\n0.9 (2009-09-15)\n----------------\n- new commandline to allow deploying to multiple hosts at once\n- ability to take defaults from another part using 'extends' option\n- fabfiles option to create your own hostout commands\n- moved hostout cfg generation to deployment time\n- egg releases hash of contents as version numbers and won't be built or uploaded unless changed\n- new parts option to only install specified parts\n- many option names simplified (backwards compatibility maintained)\n- pre-commmands now runs before buildout initialisation\n- buildout now run as 'effective-user' rather than root. pre and post commands still run as root\n- eggs released directly to the download cache rather than a seperate dist directory\n- version recognition only done once for all hostout parts\n\n\n0.1.3 (2009-05-06)\n------------------\n\n- Fixed getting fabfile as a resource when packaged as an egg\n- Allow for specifying extra configuration not in the buildout files\n\n0.1.2 (2009-04-24)\n------------------\n\nInitial release. Basic uploading of eggs and running of remote buildout.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://svn.plone.org/svn/collective/collective.hostout", "keywords": "buildout,fabric,deploy,deployment,server,plone,django,host,hosting", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "collective.hostout", "package_url": "https://pypi.org/project/collective.hostout/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.hostout/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://svn.plone.org/svn/collective/collective.hostout" }, "release_url": "https://pypi.org/project/collective.hostout/0.9.4/", "requires_dist": null, "requires_python": null, "summary": "collective.hostout will help you control multiple application environments\n with the minimum amount of effort. You can manage local, staging and deployment environments\n with one easy tool.", "version": "0.9.4" }, "last_serial": 4706124, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "1a4a5b9033ddfdc7e1fa6e86fdf8d737", "sha256": "d6925a5b10e791c6a7a937ff1428e03e2d846dc0b4e4ff903d4be32735a99909" }, "downloads": -1, "filename": "collective.hostout-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1a4a5b9033ddfdc7e1fa6e86fdf8d737", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13289, "upload_time": "2009-04-28T03:11:55", "url": "https://files.pythonhosted.org/packages/aa/eb/c522d94c1e62c04f7e2f4c42fa4830e30074c301b2ea3d9091ab7e261ea5/collective.hostout-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "cc7cbe31a7b6a99f74f613a239da06ab", "sha256": "a85e9f7d41a8ff48cace6c326fea0a224995ebd38c8fda935066e85eb0c5fd05" }, "downloads": -1, "filename": "collective.hostout-0.1.3-py2.4.egg", "has_sig": false, "md5_digest": "cc7cbe31a7b6a99f74f613a239da06ab", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 29538, "upload_time": "2009-05-06T14:45:38", "url": "https://files.pythonhosted.org/packages/9d/7f/7b459464c4fc5931d56dabfbac5039804f70ae79e1bd7c626f7a408e311f/collective.hostout-0.1.3-py2.4.egg" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "740f4e3e5186720b074f11427a20cc9f", "sha256": "9c9f33e6d265cc449448c1bfb0d93f74429efc136cbae46098e3f7d670d08496" }, "downloads": -1, "filename": "collective.hostout-0.1.4.tar.gz", "has_sig": false, "md5_digest": "740f4e3e5186720b074f11427a20cc9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14003, "upload_time": "2009-06-06T17:54:08", "url": "https://files.pythonhosted.org/packages/40/06/ebead331701fd9ad384eff9d39705404f5bf65481a0db909f7ff78e0f5b5/collective.hostout-0.1.4.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "dac3fe471a41f994a41b4b5f56e465e3", "sha256": "b498143bcf49fe5b7867feb4e29727dc828dc7120df7b8a8620a9f63f0af36d4" }, "downloads": -1, "filename": "collective.hostout-0.9.tar.gz", "has_sig": false, "md5_digest": "dac3fe471a41f994a41b4b5f56e465e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17546, "upload_time": "2009-09-15T15:10:47", "url": "https://files.pythonhosted.org/packages/10/3c/2e6cf8e8c10c10d132097da27166d78cd9fa1514c1fdefe6b710fc42ae70/collective.hostout-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "c765e76f047397b2686fc07aa016f678", "sha256": "61af608895d90636c00420ace774589ceb571247679864b8a96e29e14a310984" }, "downloads": -1, "filename": "collective.hostout-0.9.1.tar.gz", "has_sig": false, "md5_digest": "c765e76f047397b2686fc07aa016f678", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18260, "upload_time": "2009-09-16T17:09:57", "url": "https://files.pythonhosted.org/packages/76/d2/9f921f0b96581788a909af6e696a1ef5988172ed2cd26c8fe78c2d92c7e2/collective.hostout-0.9.1.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "e236a62df8824a25c13eead3fb66d1c1", "sha256": "376d3c4fbd660aa3fb1065c6ad2208f23ab40b75dff7d0660f09f8afc8375b65" }, "downloads": -1, "filename": "collective.hostout-0.9.3.tar.gz", "has_sig": false, "md5_digest": "e236a62df8824a25c13eead3fb66d1c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36812, "upload_time": "2010-01-31T16:26:19", "url": "https://files.pythonhosted.org/packages/9f/b0/4a7322d89588209d93d8fdc78b9cc09f4daa9b5e32a49dd8dc1e55d021de/collective.hostout-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "706d860989edbccbf375b62cd077ed0e", "sha256": "714a60d114765691d007e21ad18eadc1d797799fa55e7c36c5bb84f921b8dbf3" }, "downloads": -1, "filename": "collective.hostout-0.9.4.tar.gz", "has_sig": false, "md5_digest": "706d860989edbccbf375b62cd077ed0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36833, "upload_time": "2010-01-31T16:42:51", "url": "https://files.pythonhosted.org/packages/de/7e/bbe12356080ea0e85af1e9c5ae7f0796bde684e1c353631e4fa48a844ffd/collective.hostout-0.9.4.tar.gz" } ], "1.0a1": [ { "comment_text": "", "digests": { "md5": "0617c3187c66a87183e6401db5d38df9", "sha256": "a80caae3e414bf4a99e666492fe4a2e926289c2abbe0ecb7318fc7aeebedd622" }, "downloads": -1, "filename": "collective.hostout-1.0a1.tar.gz", "has_sig": false, "md5_digest": "0617c3187c66a87183e6401db5d38df9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24389, "upload_time": "2010-02-14T16:41:22", "url": "https://files.pythonhosted.org/packages/5d/1c/9679463385e4d2560db45ed3db34d3ca46f4f4a0e254c3c32eca3151eb08/collective.hostout-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "4738cd4552363ed09acb09cc352cd612", "sha256": "24e71c8a7e2697785fb38a06f4944ea7154ae16a0dbde3d66d4671f9b5c1b13c" }, "downloads": -1, "filename": "collective.hostout-1.0a2.tar.gz", "has_sig": false, "md5_digest": "4738cd4552363ed09acb09cc352cd612", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26580, "upload_time": "2010-05-26T17:37:22", "url": "https://files.pythonhosted.org/packages/ed/cb/ddb40923f164c9643c293ffdc91769ace1aafc81ab129fbc907d8ce5794f/collective.hostout-1.0a2.tar.gz" } ], "1.0a3": [ { "comment_text": "", "digests": { "md5": "423ea2188fd9cdef6a1566ad3c9d0d00", "sha256": "204c6b2f4429373e2e3b48c5b437bc70f06c017a40e7f8505e6f32f211c35021" }, "downloads": -1, "filename": "collective.hostout-1.0a3.tar.gz", "has_sig": false, "md5_digest": "423ea2188fd9cdef6a1566ad3c9d0d00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27073, "upload_time": "2010-06-02T18:12:41", "url": "https://files.pythonhosted.org/packages/b4/b5/2e05048ccf022bfa001ef11daf232252d7ae1e58a181a2d40a47d5f95c5d/collective.hostout-1.0a3.tar.gz" } ], "1.0a4": [ { "comment_text": "", "digests": { "md5": "de6158db5a7e524f2445fed82442ae25", "sha256": "e2e6a33842ac44e8f8c58cf28dff56e53d7a9ac96b880f609d6f8f94142b7644" }, "downloads": -1, "filename": "collective.hostout-1.0a4.tar.gz", "has_sig": false, "md5_digest": "de6158db5a7e524f2445fed82442ae25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47355, "upload_time": "2011-01-06T03:14:40", "url": "https://files.pythonhosted.org/packages/84/28/f6e19edb9ea6bbe08734a25346cd330c753d533f15cc1889b8c84853a985/collective.hostout-1.0a4.tar.gz" } ], "1.0a5": [ { "comment_text": "", "digests": { "md5": "ca90aa0e7ab011caf182ceaa9b47b584", "sha256": "9799bd5846944e729840aee29409621c954cb0f234e3ee7edd14fd5b0706dd36" }, "downloads": -1, "filename": "collective.hostout-1.0a5.zip", "has_sig": false, "md5_digest": "ca90aa0e7ab011caf182ceaa9b47b584", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70610, "upload_time": "2011-03-21T02:42:07", "url": "https://files.pythonhosted.org/packages/4f/86/195122ccc831c213c72f075657b1ac0095e32d057ca175c7344148ff77a3/collective.hostout-1.0a5.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "706d860989edbccbf375b62cd077ed0e", "sha256": "714a60d114765691d007e21ad18eadc1d797799fa55e7c36c5bb84f921b8dbf3" }, "downloads": -1, "filename": "collective.hostout-0.9.4.tar.gz", "has_sig": false, "md5_digest": "706d860989edbccbf375b62cd077ed0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36833, "upload_time": "2010-01-31T16:42:51", "url": "https://files.pythonhosted.org/packages/de/7e/bbe12356080ea0e85af1e9c5ae7f0796bde684e1c353631e4fa48a844ffd/collective.hostout-0.9.4.tar.gz" } ] }