{ "info": { "author": "Lovely Systems", "author_email": "office@lovelysystems.com", "bugtrack_url": null, "classifiers": [], "description": "Lovely Recipes\n**************\n\n==========================\nFilesystem Buildout Recipe\n==========================\n\nCreating Directories\n====================\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... path = ${buildout:directory}/mystuff\n ... \"\"\")\n >>> print system(buildout),\n Installing data-dir.\n data-dir: Creating directory /sample-buildout/mystuff\n\n >>> ls(sample_buildout)\n - .installed.cfg\n d bin\n - buildout.cfg\n d develop-eggs\n d eggs\n d mystuff\n d parts\n\nIf we change the directory name the old directory ('mystuff') is not deleted.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... path = ${buildout:directory}/otherdir\n ... \"\"\")\n >>> print system(buildout),\n Uninstalling data-dir.\n Installing data-dir.\n data-dir: Creating directory /sample-buildout/otherdir\n\n >>> ls(sample_buildout)\n - .installed.cfg\n d bin\n - buildout.cfg\n d develop-eggs\n d eggs\n d mystuff\n d otherdir\n d parts\n\nWe can also create a full path.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... path = ${buildout:directory}/with/subdir\n ... \"\"\")\n >>> print system(buildout),\n Uninstalling data-dir.\n Installing data-dir.\n data-dir: Cannot create /sample-buildout/with/subdir. /sample-buildout/with is not a directory.\n While:\n Installing data-dir.\n Error: Invalid Path\n\nBut we need to activate this function explicitely.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... createpath = True\n ... path = ${buildout:directory}/with/subdir\n ... \"\"\")\n >>> print system(buildout),\n Installing data-dir.\n data-dir: Creating parent directory /sample-buildout/with\n data-dir: Creating directory /sample-buildout/with/subdir\n\n >>> ls(sample_buildout)\n - .installed.cfg\n d bin\n - buildout.cfg\n d develop-eggs\n d eggs\n d mystuff\n d otherdir\n d parts\n d with\n >>> ls(sample_buildout + '/with')\n d subdir\n\nThere is no update method so the install method is used upon update\nand the directories get recreated.\n\n >>> rmdir(sample_buildout + '/with')\n >>> print system(buildout),\n Updating data-dir.\n The recipe for data-dir doesn't define an update method. Using its install method.\n data-dir: Creating parent directory /sample-buildout/with\n data-dir: Creating directory /sample-buildout/with/subdir\n\nWe can change the owner of the created directory if run as root. This is tested\nin mkdir-root.txt.\n\nIf not run as root, setting the owner is an error:\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... createpath = True\n ... path = ${buildout:directory}/another/with/subdir\n ... owner = nobody\n ... \"\"\")\n >>> print system(buildout),\n While:\n Installing.\n Getting section data-dir.\n Initializing part data-dir.\n Error: Only root can change the owner to nobody.\n\n\nIt is an error when the user does not exist:\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = data-dir\n ... find-links = http://download.zope.org/distribution\n ...\n ... [data-dir]\n ... recipe = lovely.recipe:mkdir\n ... createpath = True\n ... path = ${buildout:directory}/another/with/subdir\n ... owner = someuser\n ... \"\"\")\n >>> print system(buildout),\n While:\n Installing.\n Getting section data-dir.\n Initializing part data-dir.\n Error: The user someuser does not exist.\n\n\nCreating Files\n==============\n\nThe mkfile recipe creates one or more files with a given path, content and\npermissions.\n\nNote that the parent directory needs to exist, otherwise a user error\nis raised.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = script\n ...\n ... [script]\n ... recipe = lovely.recipe:mkfile\n ... path = /x/y/file.sh\n ... content = hoschi\n ... mode = 0755\n ... \"\"\")\n >>> print system(buildout)\n Uninstalling data-dir.\n Installing script.\n script: Cannot create file /x/y/file.sh. /x/y is not a directory.\n While:\n Installing script.\n Error: Invalid path\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = script\n ...\n ... [script]\n ... recipe = lovely.recipe:mkfile\n ... path = file.sh\n ... content = hoschi\n ... mode = 0755\n ... \"\"\")\n >>> print system(buildout)\n Installing script.\n script: Writing file /sample-buildout/file.sh\n \n\n >>> ls(sample_buildout)\n - .installed.cfg\n d bin\n - buildout.cfg\n d develop-eggs\n d eggs\n - file.sh\n d mystuff\n d otherdir\n d parts\n d with\n\nThe content is written to the file.\n\n >>> cat(sample_buildout, 'file.sh')\n hoschi\n\nAnd the mode is set.\n\n >>> import os, stat\n >>> path = os.path.join(sample_buildout, 'file.sh')\n >>> oct(stat.S_IMODE(os.stat(path)[stat.ST_MODE]))\n '0755'\n\nIf we change the filename the old file is deleted.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = script\n ...\n ... [script]\n ... recipe = lovely.recipe:mkfile\n ... path = newfile.sh\n ... content = hoschi\n ... mode = 0755\n ... \"\"\")\n >>> print system(buildout)\n Uninstalling script.\n Installing script.\n script: Writing file /sample-buildout/newfile.sh\n \n\n >>> ls(sample_buildout)\n - .installed.cfg\n d bin\n - buildout.cfg\n d develop-eggs\n d eggs\n d mystuff\n - newfile.sh\n d otherdir\n d parts\n d with\n\nWe can also specify to create the path for the file.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = script\n ...\n ... [script]\n ... recipe = lovely.recipe:mkfile\n ... createpath = On\n ... path = subdir/for/file/file.sh\n ... content = hoschi\n ... mode = 0755\n ... \"\"\")\n >>> print system(buildout)\n Uninstalling script.\n Installing script.\n script: Creating directory /sample-buildout/subdir/for/file\n script: Writing file /sample-buildout/subdir/for/file/file.sh\n\n >>> ls(sample_buildout + '/subdir/for/file')\n - file.sh\n\n\nFile Variations\n---------------\n\nA common use-case is to have variations of a file, for example if init\nscripts have to be created. As an example we create two files with\nvariations \"1\" and \"2\". These variations can be used in the file path\nand in the content of the file via normal string formatting notation.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = script\n ...\n ... [script]\n ... recipe = lovely.recipe:mkfile\n ... variations = 1 2\n ... path = prod_%(variation)s.ini\n ... content = hoschi variation %(variation)s\n ... mode = 0755\n ... \"\"\")\n >>> print system(buildout)\n Uninstalling script.\n Installing script.\n script: Writing file ...sample-buildout/prod_1.ini\n script: Writing file ...sample-buildout/prod_2.ini\n\n >>> cat(sample_buildout, 'prod_1.ini')\n hoschi variation 1\n >>> cat(sample_buildout, 'prod_2.ini')\n hoschi variation 2\n\n=======================\nEgg Box Buildout Recipe\n=======================\n\nThis recipe is derivd from zc.recipe.egg, but instead of just creating\npaths, it generates a directory structure for each top-level\nnamespace. It is also possible to automatically zip the generated\ndirectories which is espacially usefull if used in Google Appengine\nenvironments. The recipies path option is filled with the created path\nso it can be referenced by other buildout sections which may want to\nuse the recipe.\n\n >>> import os\n >>> lovely_recipy_loc = os.path.dirname(os.path.dirname(os.path.dirname(\n ... os.path.dirname(os.path.dirname(__file__)))))\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... develop = %(loc)s\n ... parts = packages\n ... find-links = %(server)s\n ... index = %(server)s/index\n ...\n ... [packages]\n ... recipe = lovely.recipe:eggbox\n ... eggs = demo\n ... lovely.recipe\n ... interpreter = py\n ... \"\"\" % dict(loc=lovely_recipy_loc, server=link_server))\n\n\n >>> print system(buildout)\n Develop: '...lovely.recipe'\n Getting distribution for 'demo'.\n Got demo 0.4c1.\n Getting distribution for 'demoneeded'.\n Got demoneeded 1.2c1.\n Installing packages.\n Generated script '...sample-buildout/bin/demo'.\n Generated interpreter '...sample-buildout/bin/py'.\n\nWe now have a zip file for each top-level directory. Note that the\nzip-files are ending with .egg for pkg_resources compatibility.\n\n >>> ls(sample_buildout + '/parts/packages')\n - easy_install.py.egg\n - eggrecipedemo.py.egg\n - eggrecipedemoneeded.py.egg\n - lovely.egg\n - pkg_resources.py.egg\n - setuptools.egg\n - zc.egg\n\nThe generated interpreter now has the demo zip file in the path.\n\n >>> cat(sample_buildout + '/bin/py')\n #!...\n sys.path[0:0] = [\n '/sample-buildout/parts/packages/easy_install.py.egg',\n '/sample-buildout/parts/packages/eggrecipedemo.py.egg',\n '/sample-buildout/parts/packages/eggrecipedemoneeded.py.egg',\n '/sample-buildout/parts/packages/lovely.egg',\n '/sample-buildout/parts/packages/pkg_resources.py.egg',\n '/sample-buildout/parts/packages/setuptools.egg',\n '/sample-buildout/parts/packages/zc.egg',\n ]...\n\nIt is possible to disable zipping. And also to exclude or include\npatterns of files. So for example we can strip down the uneeded\nsetuptools egg. We can also create a script.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... develop = %(loc)s\n ... parts = packages test\n ... find-links = %(server)s\n ... index = %(server)s/index\n ...\n ... [packages]\n ... zip = False\n ... recipe = lovely.recipe:eggbox\n ... eggs = demo\n ... lovely.recipe\n ... excludes = ^setuptools/.*\n ... ^easy_install.*\n ... ^pkg_resources.*\n ...\n ... [test]\n ... recipe = zc.recipe.egg:scripts\n ... eggs = lovely.recipe\n ... extra-paths = ${packages:path}\n ... interpreter = py\n ... \"\"\" % dict(loc=lovely_recipy_loc, server=link_server))\n >>> print system(buildout),\n Develop: '/Users/bd/sandbox/lovely.recipe'\n Uninstalling packages.\n Installing packages.\n Generated script '/sample-buildout/bin/demo'.\n Installing test.\n Generated interpreter '/sample-buildout/bin/py'.\n\nNote that we still have the same directory structure as the zipped\nversion with a directory for each top-level namespace. The 'lovely'\ndirectory is not in he packages directory because it is a develop egg\nand we have set zipped to false, therefore it is only added to the\npython path.\n\n >>> ls(sample_buildout + '/parts/packages')\n d eggrecipedemo.py\n d eggrecipedemoneeded.py\n d zc\n\n >>> print system(join(sample_buildout, 'bin', 'py') + \\\n ... ' -c \"import lovely.recipe; print lovely.recipe.__file__\"')\n /.../src/lovely/recipe/__init__.py...\n\n\n\nThe test section uses the path of our packages section. Note that due,\nto the development path of lovely.recipe this path is actually\nincluded twice because the script recipe does not check duplicates.\n\n >>> cat(sample_buildout + '/bin/py')\n #!...\n sys.path[0:0] = [\n '/...lovely.recipe/src',\n ...\n '/.../lovely.recipe/src',\n '/sample-buildout/parts/packages/eggrecipedemo.py',\n '/sample-buildout/parts/packages/eggrecipedemoneeded.py',\n '/sample-buildout/parts/packages/zc',\n ]...\n\n\n=================\ni18n Tools Recipe\n=================\n\nThis recipe allows to create i18n tools to extract and merge po files.\n\n\nCreating The Tools\n==================\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = i18n\n ... index = http://download.zope.org/zope3.4\n ... offline = true\n ...\n ... [i18n]\n ... recipe = lovely.recipe:i18n\n ... package = lovely.recipe\n ... domain = recipe\n ... location = src/somewhere\n ... output = locales\n ... maker = z3c.csvvocabulary.csvStrings\n ... \"\"\")\n >>> print system(buildout),\n Installing i18n.\n i18n: setting up i18n tools\n Generated script 'bin/i18nextract'.\n Generated script 'bin/i18nmergeall'.\n Generated script 'bin/i18nstats'.\n\n >>> import os\n >>> ls(os.path.join(sample_buildout, 'bin'))\n - buildout\n - i18nextract\n - i18nmergeall\n - i18nstats\n\n\nThe i18n Extractor\n------------------\n\n >>> cat('bin', 'i18nextract')\n #!...\n \n import sys\n sys.path[0:0] = [\n ...\n ]\n \n import lovely.recipe.i18n.i18nextract\n \n if __name__ == '__main__':\n lovely.recipe.i18n.i18nextract.main(['i18nextract', '-d', 'recipe', '-s', '/sample-buildout/parts/i18n/configure.zcml', '-p', 'src/somewhere', '-o', 'locales', '-m', 'z3c.csvvocabulary.csvStrings'])\n\nWe have a configure.zcml created.\n\n >>> cat('parts', 'i18n', 'configure.zcml')\n \n \n \n\n\ni18n Merge\n----------\n\n >>> cat('bin', 'i18nmergeall')\n #!...\n \n import sys\n sys.path[0:0] = [\n ...\n ]\n \n import lovely.recipe.i18n.i18nmergeall\n \n if __name__ == '__main__':\n lovely.recipe.i18n.i18nmergeall.main(['i18nmergeall', '-l', 'src/somewhere/locales'])\n\ni18n Stats\n----------\n\n >>> cat('bin', 'i18nstats')\n #!...\n \n import sys\n sys.path[0:0] = [\n ...\n ]\n \n import lovely.recipe.i18n.i18nstats\n \n if __name__ == '__main__':\n lovely.recipe.i18n.i18nstats.main(['i18nstats', '-l', 'src/somewhere/locales'])\n\n\nTool Names\n----------\n\nThe created tools are named after the section name. If the section for the\nrecipe is named 'translation' then the tools are named 'translationextract'\nand 'translationmergeall'.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... index = http://download.zope.org/zope3.4\n ... parts = translation\n ...\n ... offline = true\n ...\n ... [translation]\n ... recipe = lovely.recipe:i18n\n ... package = lovely.recipe\n ... domain = recipe\n ... location = src/somewhere\n ... output = locales\n ... maker = z3c.csvvocabulary.csvStrings\n ... \"\"\")\n >>> print system(buildout),\n Uninstalling i18n.\n Installing translation.\n translation: setting up i18n tools\n Generated script 'bin/translationextract'.\n Generated script 'bin/translationmergeall'.\n Generated script 'bin/translationstats'.\n\n\nAdding a custom configure.zcml\n------------------------------\n\nThe created configure.zcml includes the package an assumes that the package\ncontains a configure.zcml. If this is not the case or if additional package\nincludes are needed then the zcml parameter can be used to define the content\nof the generated configure.zcml.\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = i18n\n ...\n ... offline = true\n ...\n ... [i18n]\n ... recipe = lovely.recipe:i18n\n ... package = lovely.recipe\n ... domain = recipe\n ... location = src/somewhere\n ... output = locales\n ... maker = z3c.csvvocabulary.csvStrings\n ... zcml =\n ... \n ... \n ...\n ... \"\"\")\n\n >>> print system(buildout),\n Uninstalling translation.\n Installing i18n.\n i18n: setting up i18n tools\n Generated script 'bin/i18nextract'.\n Generated script 'bin/i18nmergeall'.\n Generated script 'bin/i18nstats'.\n\n >>> cat('bin', 'i18nextract')\n #!...\n \n import sys\n sys.path[0:0] = [\n ...\n ]\n \n import lovely.recipe.i18n.i18nextract\n \n if __name__ == '__main__':\n lovely.recipe.i18n.i18nextract.main(['i18nextract', '-d', 'recipe', '-s', '/sample-buildout/parts/i18n/configure.zcml', '-p', 'src/somewhere', '-o', 'locales', '-m', 'z3c.csvvocabulary.csvStrings'])\n\nAnd the generated configure-zcml contains our extra code.\n\n >>> cat('parts', 'i18n', 'configure.zcml')\n \n \n \n \n \n \n \n\n\n====================\nImportchecker Recipe\n====================\n\nThis recipe creates an importchecker instance in the bin directory.\n\n\nCreating The Script\n===================\n\n >>> write(sample_buildout, 'buildout.cfg',\n ... \"\"\"\n ... [buildout]\n ... parts = checker\n ...\n ... offline = true\n ...\n ... [checker]\n ... recipe = lovely.recipe:importchecker\n ... path = src/lovely\n ... \"\"\")\n >>> print system(buildout),\n Installing checker.\n checker: setting up importchecker\n Generated script 'bin/importchecker'.\n\n >>> import os\n >>> ls(os.path.join(sample_buildout, 'bin'))\n - buildout\n - importchecker\n\n >>> cat('bin', 'importchecker')\n #!...\n \n import sys\n sys.path[0:0] = [\n ...\n ]\n \n import lovely.recipe.importchecker.importchecker\n \n if __name__ == '__main__':\n lovely.recipe.importchecker.importchecker.main(['importchecker', 'src/lovely'])", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://launchpad.net/lovely.recipe", "keywords": "buildout recipe filesystem i18n importchecker", "license": "ZPL 2.1", "maintainer": null, "maintainer_email": null, "name": "lovely.recipe", "package_url": "https://pypi.org/project/lovely.recipe/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/lovely.recipe/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://launchpad.net/lovely.recipe" }, "release_url": "https://pypi.org/project/lovely.recipe/1.0.0/", "requires_dist": null, "requires_python": null, "summary": "Set of helper recipies for zc.buildout", "version": "1.0.0" }, "last_serial": 794369, "releases": { "0.3.1b1": [ { "comment_text": "", "digests": { "md5": "d7f39ed6f2c492563aef81aa2e23b1b2", "sha256": "9becb1a5e0d96605d4529daf3d9476554c46a03c70e9bbc3e3f276acc203cf84" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b1-py2.4.egg", "has_sig": false, "md5_digest": "d7f39ed6f2c492563aef81aa2e23b1b2", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 46648, "upload_time": "2008-01-03T10:59:10", "url": "https://files.pythonhosted.org/packages/62/b3/2f63fc217343e9fe0e06d955e505594707f01f4b7cfedbc5d7cb34cec320/lovely.recipe-0.3.1b1-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "57f1edd0be7d7ae3983643a8e0a382e8", "sha256": "bed144e0c2fd3e2d98c6b52c0180de3464e5dfb30cf5eef678c35c61e56788c9" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b1.tar.gz", "has_sig": false, "md5_digest": "57f1edd0be7d7ae3983643a8e0a382e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14557, "upload_time": "2008-01-03T10:59:09", "url": "https://files.pythonhosted.org/packages/c2/08/bc615c84e154775414bfb51db2a19dca6a67d93663ac375b956a55e3f129/lovely.recipe-0.3.1b1.tar.gz" } ], "0.3.1b5": [ { "comment_text": "", "digests": { "md5": "a5dc387e874dd86e5a190efc750dbe34", "sha256": "c85b154cad612e1add5c10cae8d33ab068dac3d7f66094c5b1bd8c289a2b17f0" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b5-py2.5.egg", "has_sig": false, "md5_digest": "a5dc387e874dd86e5a190efc750dbe34", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 51829, "upload_time": "2008-07-01T08:50:20", "url": "https://files.pythonhosted.org/packages/9c/53/e558ed020d15bd3ed40608da40b5499d1f609723fa74aba7d11dfb0ba382/lovely.recipe-0.3.1b5-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "08eccb796659af866b2c1ebbb6c3a940", "sha256": "a88794344586dc2a56df3a4a7efbe9d9c7960e479b45018dd273d90c755b3ae4" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b5.tar.gz", "has_sig": false, "md5_digest": "08eccb796659af866b2c1ebbb6c3a940", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16209, "upload_time": "2008-07-01T08:50:19", "url": "https://files.pythonhosted.org/packages/32/49/eed83083d57866c42b33456f5d0017177cef05c57b8288218340b8c404e6/lovely.recipe-0.3.1b5.tar.gz" } ], "0.3.1b8": [ { "comment_text": "", "digests": { "md5": "c422fc798f8cf1a166f8a78a331e774b", "sha256": "0b41fafc0a9024c33a3791deac6cc2188f5b7e78c3e0f3db55fd492847933367" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b8-py2.5.egg", "has_sig": false, "md5_digest": "c422fc798f8cf1a166f8a78a331e774b", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 52062, "upload_time": "2008-07-22T20:04:01", "url": "https://files.pythonhosted.org/packages/62/51/0a336ff8cc4a0f8fe24a82839d8d429bfdee7798765be8a45bd7bfa1017c/lovely.recipe-0.3.1b8-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "be0deae82852a28efa3263a304b2bbcd", "sha256": "ca53f42223eb24690eec932c19967872c685b71a2e2be5221add6b013bb505d5" }, "downloads": -1, "filename": "lovely.recipe-0.3.1b8.tar.gz", "has_sig": false, "md5_digest": "be0deae82852a28efa3263a304b2bbcd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17065, "upload_time": "2008-07-22T20:04:00", "url": "https://files.pythonhosted.org/packages/8c/c1/31e8a153a2fb646aac93fa7a08f89131128010c37617d6a0d69236340de4/lovely.recipe-0.3.1b8.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b80237fce6613f4bd92210e3cf8cd1ad", "sha256": "4ddda5d649f1eafdbf6eb13747ce5a0c6d38548422337bb78fdddaab1bb85e57" }, "downloads": -1, "filename": "lovely.recipe-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b80237fce6613f4bd92210e3cf8cd1ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25141, "upload_time": "2010-01-28T10:12:02", "url": "https://files.pythonhosted.org/packages/08/fc/efeb096d4e430d0c6c28ddc01bc47c93e5d0ef5bf8501921d60819e260cb/lovely.recipe-1.0.0.tar.gz" } ], "1.0.0a1": [ { "comment_text": "", "digests": { "md5": "9477db20518bede4fb0f457f1931599b", "sha256": "483b34dcc8960ee07bb7ac8b072e5717e1d84466c3a915ee9aa6fefc325f58a4" }, "downloads": -1, "filename": "lovely.recipe-1.0.0a1-py2.5.egg", "has_sig": false, "md5_digest": "9477db20518bede4fb0f457f1931599b", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 59814, "upload_time": "2008-10-03T16:17:22", "url": "https://files.pythonhosted.org/packages/4a/0f/e28b50e56eefd450aba808787204c048042ff10e5462a9d0dc1dedbd99c9/lovely.recipe-1.0.0a1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "5b6638eeb208e999d928abd1c8cd1081", "sha256": "0b5243e3e72e0f38dab881b4fc343ce9396a9429acdc90f834767adb76d8468f" }, "downloads": -1, "filename": "lovely.recipe-1.0.0a1.tar.gz", "has_sig": false, "md5_digest": "5b6638eeb208e999d928abd1c8cd1081", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21543, "upload_time": "2008-10-03T16:17:20", "url": "https://files.pythonhosted.org/packages/aa/6b/06c7e3464c95da3282d605bbf537cb24603f27579b52501773244c1bb34c/lovely.recipe-1.0.0a1.tar.gz" } ], "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "028dd753466e759e47ba261b70d17b78", "sha256": "50c458bf6e0c864ce690045b88bd9ff198b4118d162c25aa1f33ccc50eab8131" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "028dd753466e759e47ba261b70d17b78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20350, "upload_time": "2009-02-05T16:00:24", "url": "https://files.pythonhosted.org/packages/fe/d6/9507aa1c6aab20902e8c7474ecd20dc01b2a2f4a073eb02d8f83aa63ca9f/lovely.recipe-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "88646297c6391256bdd13635365f008e", "sha256": "24ae7f8f66fb42e155e844e466e08125aa5a2bc9e27aaa83befca6733294bfa7" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b2.tar.gz", "has_sig": false, "md5_digest": "88646297c6391256bdd13635365f008e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20514, "upload_time": "2009-04-03T14:22:33", "url": "https://files.pythonhosted.org/packages/4c/78/ee1bd4c42e966135159294579659844aa3fa3da1960dac635ff9e680fcf2/lovely.recipe-1.0.0b2.tar.gz" } ], "1.0.0b3": [ { "comment_text": "", "digests": { "md5": "5c62dfb31c34539b0a0906727c1f6b10", "sha256": "69dbfe6a77d877c0dfa2b82b7e09975b66df774a5d5ce517af40324f11e3ab55" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b3.tar.gz", "has_sig": false, "md5_digest": "5c62dfb31c34539b0a0906727c1f6b10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20567, "upload_time": "2009-04-14T15:28:36", "url": "https://files.pythonhosted.org/packages/ce/89/3f036048a519350acab2c04d3bc6dc24b937d454225097b1495472e0c3f4/lovely.recipe-1.0.0b3.tar.gz" } ], "1.0.0b4": [ { "comment_text": "", "digests": { "md5": "7dcc909594c17badea1b86377386b1ed", "sha256": "925cb63f0ae28cb222ebc5ae6cd66fc67be947b1dd2cbc59a18d1295ce6c0752" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b4.tar.gz", "has_sig": false, "md5_digest": "7dcc909594c17badea1b86377386b1ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20759, "upload_time": "2009-05-18T11:35:13", "url": "https://files.pythonhosted.org/packages/e0/07/a039ac107a27856a172626513892850aae4a823b3814e58d290c417ec591/lovely.recipe-1.0.0b4.tar.gz" } ], "1.0.0b5": [ { "comment_text": "", "digests": { "md5": "0c3c7d86ca4624e27bda2136ac54ec8f", "sha256": "b6ba83ba71951752951b0e5a637398ab7b1259846093c83a44c614bdbb016cfa" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b5.tar.gz", "has_sig": false, "md5_digest": "0c3c7d86ca4624e27bda2136ac54ec8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20753, "upload_time": "2009-06-18T10:15:59", "url": "https://files.pythonhosted.org/packages/e6/05/54fd3d1988548a4033a8d79e87395a880f7115f97a1b1d5c0cfb5add044c/lovely.recipe-1.0.0b5.tar.gz" } ], "1.0.0b6": [ { "comment_text": "", "digests": { "md5": "1d08fcd439e0cb1cd0eb05b56de515d8", "sha256": "e9c0f14eec8494cc785925d7a07ab497fe8891020ed770355d1e84f87c875506" }, "downloads": -1, "filename": "lovely.recipe-1.0.0b6.tar.gz", "has_sig": false, "md5_digest": "1d08fcd439e0cb1cd0eb05b56de515d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27401, "upload_time": "2009-08-27T10:52:19", "url": "https://files.pythonhosted.org/packages/b7/2f/9db3681c4071c901e4e8cf080e6122d81f106c8be112cf69a33ca333c095/lovely.recipe-1.0.0b6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b80237fce6613f4bd92210e3cf8cd1ad", "sha256": "4ddda5d649f1eafdbf6eb13747ce5a0c6d38548422337bb78fdddaab1bb85e57" }, "downloads": -1, "filename": "lovely.recipe-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b80237fce6613f4bd92210e3cf8cd1ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25141, "upload_time": "2010-01-28T10:12:02", "url": "https://files.pythonhosted.org/packages/08/fc/efeb096d4e430d0c6c28ddc01bc47c93e5d0ef5bf8501921d60819e260cb/lovely.recipe-1.0.0.tar.gz" } ] }