{ "info": { "author": "Tobias Rodaebel", "author_email": "tobias.rodaebel@googlemail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Buildout", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "====================\nrod.recipe.appengine\n====================\n\nThe rod.recipe.appengine is a zc.buildout recipe to build, test and deploy\nprojects for the Google App Engine. It makes it easy to use eggs and resolve\ntheir dependencies automatically.\n\nTo be honest, this is a recipe for scrambled eggs. It produces a zip file\ncontaining all configured external packages in a traditional folder hierarchy.\n\n\nCopyright and license\n=====================\n\nCopyright 2009, 2010, 2011 Tobias Rodaebel\n\nThis software is released under the GNU Lesser General Public License,\nVersion 3.\n\n\nCredits\n=======\n\nThanks to Attila Olah who provided a patch which fixes two issues where the\nrecipe wasn't able to find the original pkg_resources.py file. He also enabled\nthe recipe to be used together with distribute as a replacement for setuptools.\n\nAttila Olah also provided a patch for supporting regular expressions when using\nthe exclude option.\n\nThanks to Tom Lynn for submitting a patch which fixes an issue with symlink on\nplatforms other than UNIX.\n\nLots of thanks to Gael Pasgrimaud for submitting a patch that allows for\nzc.recipe.egg options such as extra-paths and entry-points.\n\nA brief documentation\n=====================\n\nThis recipe takes a number of options:\n\nappengine-lib\n Path to an already installed appengine library\n\nappserver-script-name\n The name of the script in GAE to run the dev. server.\n The default is 'dev_appserver.py'. Because there have been\n intermediate versions of the GAE SDK using 'dev_appserver2.py',\n this script name is configurable.\n\nappserver-run-file\n The name of the run function in the \"appserver-script-name\" script.\n This name changed in GAE SDK > 1.7.5. Default is \"_run_file\".\n In previous GAE versions it was \"run_file\". This switch enables\n the use of this recipe for older GAE versions.\n\neggs\n List of required eggs\n\nentry-points\n A list of entry-point identifiers. See zc.recipe.egg for a more detailed\n documentation.\n\nexclude\n A list of basenames and regular expressions to be excluded when setting up\n the application files, e.g. the whole 'tests' directory.\n\nignore-packages\n List of packages that need to be ignored when setting up the applicaton files.\n\nextra-paths\n Extra paths to include in a generated script.\n\ninitialization\n Specify some Python initialization code. This is very limited. In\n particular, be aware that leading whitespace is stripped from the code\n given.\n\npackages\n A list of packages to be included into the zip archive, which will be\n uploaded to the appspot.\n\npatch\n Specifies a patch file for patching the SDK source-tree. This option is\n not allowed if appengine-lib is specified.\n\npatch-options\n List of patch options separated by blanks. (Default=-p1)\n\nserver-script\n The name of the script to run the development server.\n\nsrc\n The directory which contains the project source files.\n\nsymlink-gae-runtime\n When this flag is True, a symlink to the \"_python_runtime.py\"\n script is created in the buildout 'bin' directory. \n This script is needed for newer versions of the GAE SDK.\n You have to manually remove the symlink when you change this \n flag from True to False.\n \nurl\n The url for fetching the google appengine distribution\n\nuse_setuptools_pkg_resources\n Flag whether the recipe shall copy setuptool's pkg_resources.py into the\n app directory rather than writing a dummy version. (Default=False)\n\nzip-name\n The name of the zip archive containing all external packages ready\n to deploy.\n\nzip-packages\n Flag whether external packages shall be zipped into a single zip file.\n (Default=True)\n\n\nTests\n=====\n\nWe will define a buildout template used by the recipe:\n\n >>> buildout_template = \"\"\"\n ... [buildout]\n ... develop = %(dev)s\n ... parts = sample\n ...\n ... [sample]\n ... recipe = rod.recipe.appengine\n ... eggs = foo.bar\n ... packages =\n ... bazpkg\n ... tinypkg\n ... server-script = dev_appserver\n ... zip-packages = False\n ... exclude = .*foo/bar/test.*$\n ... url = http://googleappengine.googlecode.com/files/google_appengine_1.5.0.zip\n ... \"\"\"\n\nWe'll start by creating a buildout:\n\n >>> import os.path\n >>> import rod.recipe.appengine.tests as tests\n >>> egg_src = os.path.join(os.path.split(tests.__file__)[0], 'foo.bar')\n >>> baz_pkg = os.path.join(os.path.split(tests.__file__)[0], 'bazpkg')\n >>> tiny_pkg = os.path.join(os.path.split(tests.__file__)[0], 'tinypkg')\n >>> write('buildout.cfg', buildout_template %\n ... {'dev': egg_src+' '+baz_pkg+' '+tiny_pkg})\n\nRunning the buildout gives us:\n\n >>> print system(buildout)\n Develop: '.../tests/foo.bar'\n Develop: '.../tests/bazpkg'\n Develop: '.../tests/tinypkg'\n Installing sample.\n rod.recipe.appengine: downloading Google App Engine distribution...\n Generated script '/sample-buildout/bin/dev_appserver'.\n Generated script '/sample-buildout/bin/appcfg'.\n\nThis will generate some scripts:\n\n >>> ls('bin')\n - appcfg\n - buildout\n - dev_appserver\n\nAnd now we try to run the appserver script:\n\n >>> print system(os.path.join('bin', 'dev_appserver'), '-h')\n Runs a development application server for an application.\n ...\n\nThere should be a configuration script in bin as well:\n\n >>> print system(os.path.join('bin', 'appcfg'))\n Usage: appcfg [options] \n ...\n\nLet's see if the 'tests' directory has been excluded:\n\n >>> l = os.listdir(os.sep.join(['parts', 'sample', 'foo', 'bar']))\n >>> assert 'tests' not in l\n\nThere should be a baz package within our application directory:\n\n >>> assert 'baz' in os.listdir(os.sep.join(['parts', 'sample']))\n\nLet's define another buildout template used by the recipe:\n\n >>> buildout_template = \"\"\"\n ... [buildout]\n ... develop = %(dev)s\n ... parts = second_sample\n ...\n ... [second_sample]\n ... recipe = rod.recipe.appengine\n ... eggs = foo.bar\n ... use_setuptools_pkg_resources = True\n ... packages =\n ... bazpkg\n ... tinypkg\n ... patch = %(patch)s\n ... patch-options = -p1\n ... zip-packages = False\n ... exclude = tests\n ... url = http://googleappengine.googlecode.com/files/google_appengine_1.5.0.zip\n ... \"\"\"\n\nWe'll start by creating a buildout:\n\n >>> import os.path\n >>> import rod.recipe.appengine.tests as tests\n >>> egg_src = os.path.join(os.path.split(tests.__file__)[0], 'foo.bar')\n >>> baz_pkg = os.path.join(os.path.split(tests.__file__)[0], 'bazpkg')\n >>> tiny_pkg = os.path.join(os.path.split(tests.__file__)[0], 'tinypkg')\n >>> patch = os.path.join(os.path.split(tests.__file__)[0], 'patch.diff')\n >>> write('buildout.cfg', buildout_template %\n ... {'dev': egg_src+' '+baz_pkg+' '+tiny_pkg, 'patch': patch})\n\nRunning the buildout gives us:\n\n >>> output = system(buildout)\n >>> if output.endswith(\n ... \"patching file lib/patched/patched.txt\\n\"): True\n ... else: print output\n True\n\nAnd now we try to run the appserver script:\n\n >>> print system(os.path.join('bin', 'second_sample'), '-h')\n Runs a development application server for an application.\n ...\n\nLet's have a look if all dependent packages are copied into our application\ndirectory:\n\n >>> os.path.isfile(os.path.join('parts', 'second_sample', 'tinymodule.py'))\n True\n >>> os.path.isdir(os.path.join('parts', 'second_sample', 'baz'))\n True\n\nSetuptool's original pkg_resources.py file should be copied into our app\ndirectory:\n\n >>> pkg_resources = os.path.join(\n ... 'parts', 'second_sample', 'pkg_resources.py')\n >>> os.path.isfile(pkg_resources)\n True\n >>> pkg_resources_file = open(pkg_resources, \"r\")\n >>> pkg_resources_file.read().startswith('def _dummy_func')\n False\n >>> pkg_resources_file.close()\n\nWe've configured the recipe to patch the SDK's source tree:\n\n >>> gae_sdk_root = os.path.join('parts', 'google_appengine')\n >>> patched_dir = os.listdir(os.path.join(gae_sdk_root, 'lib'))\n >>> patched_file = open(\n ... os.path.join(gae_sdk_root, 'google', 'appengine', 'tools',\n ... 'dev_appserver.py')).read()[:1300]\n >>> 'patched' in patched_dir\n True\n >>> '# This file is patched by the patch command.' in patched_file\n True\n\nYou can also add some extra script:\n\n >>> buildout_template = \"\"\"\n ... [buildout]\n ... develop = %(dev)s\n ... parts = script_sample\n ...\n ... [script_sample]\n ... recipe = rod.recipe.appengine\n ... eggs = foo.bar\n ... use_setuptools_pkg_resources = True\n ... packages =\n ... bazpkg\n ... tinypkg\n ... zip-packages = False\n ... exclude = tests\n ... url = http://googleappengine.googlecode.com/files/google_appengine_1.5.0.zip\n ... entry-points = manage=django.core:execute_manager\n ... initialization = import settings\n ... arguments = settings\n ... # your script may need some extra-paths\n ... extra-paths =\n ... /some/extra/path\n ... ${buildout:parts-directory}/google_appengine/lib/simplejson\n ... \"\"\"\n\nWe'll start by creating a buildout:\n\n >>> import os.path\n >>> import rod.recipe.appengine.tests as tests\n >>> egg_src = os.path.join(os.path.split(tests.__file__)[0], 'foo.bar')\n >>> baz_pkg = os.path.join(os.path.split(tests.__file__)[0], 'bazpkg')\n >>> tiny_pkg = os.path.join(os.path.split(tests.__file__)[0], 'tinypkg')\n >>> write('buildout.cfg', buildout_template %\n ... {'dev': egg_src+' '+baz_pkg+' '+tiny_pkg})\n\n >>> print 'Start...', system(buildout)\n Start...\n Generated script '/sample-buildout/bin/manage'...\n\nThen you get a script:\n\n >>> cat('bin', 'manage')\n #!...python...\n import sys\n sys.path[0:0] = [\n '/some/extra/path',\n '/sample-buildout/parts/google_appengine/lib/simplejson',\n '/sample-buildout/parts/google_appengine',\n ]\n \n \n import settings\n \n import django.core\n \n if __name__ == '__main__':\n django.core.execute_manager(settings)\n\nChanges\n=======\n\n2.0.6 2014-12-31\n----------------\n\n - use_setuptools_pkg_resources support for pkg_resources as a package\n and the setuptools zip is unpacked during installation [jjmurre] \n\n\n2.0.5 2014-12-30\n----------------\n\n - pkg_resources has changed from a module to a package which broke\n the 'use_setuptools_pkg_resources' option. Now the package is copied if\n it is a package. [jjmurre]\n\n2.0.4 2014-09-04\n----------------\n\n - Added 'ignore-packages' configuration, to exclude problematic packages [jjmurre]\n \n2.0.3 2013-06-17\n----------------\n \n - Fix for issue 18/20/21: appcfg should not use the 'appserver-run-file' config. variable.\n \n2.0.2 2013-06-18\n----------------\n\n - Added 'appserver-script-name' configuration, to accomodate alternative\n appserver scripts names (some versions in the 1.7.x range used\n dev_appserver2.py). [jjmurre]\n\n - Added 'appserver-run-file' configurations, because Google changed this\n name somewhere in the 1.7.x version range. [jjmurre]\n\n - Added 'symlink-gae-runtime'. Throught this switch a symlink to\n the GAE runtime script '_python_runtime.py' can be made in de \n buildout bin directory. This symlink is needed, because the\n developments server had been thouroughly rewritten by Google. [jjmurre]\n\n2.0.1 2013-02-21\n----------------\n\n - Made dev_appserver configurable (dev_appserver/dev_appserver2) [attilaolah]\n\n2.0.0 2011-07-01\n----------------\n\n - Adds support for zc.recipe.eggs options such as entry-points and\n extra-paths.\n\n\n1.7.0 2011-05-16\n----------------\n\n - Adds support for regular expression excludes.\n\n - Minor refactoring and clean-up.\n\n\n1.6.2 2010-04-18\n----------------\n\n - Fixes an issue where symlink fails on platforms other than UNIX.\n\n\n1.6.1 2010-04-03\n----------------\n\n - Fixes an issue where the patch option can't be used without patch-options.\n\n\n1.6.0 2010-04-03\n----------------\n\n - New option to specify a patch file for modifying the Google App Engine\n SDK source tree.\n\n\n1.5.1 2010-03-27\n----------------\n\n - Fixes an issue where setuptools wasn't found.\n\n - Distribute can be used as a replacement for setuptools.\n\n - Added credits for Attila Olah.\n\n\n1.5.0 2010-03-27\n----------------\n\n - Adds option to copy setuptool's original pkg_resources.py file into app\n directory rather than writing a dummy stub.\n\n\n1.4.1 2010-01-18\n----------------\n\n - Fixes an issue where egg contents which are just single modules aren't\n copied into the project.\n\n - http://code.google.com/p/rodrecipes/source/detail?r=14\n\n\n1.4.0 2009-08-26\n----------------\n\n - Added server-script option.\n - Tests added.\n\n\n1.3.1 2009-07-15\n----------------\n\n - Fixed issue when copying egg contents.\n\n\n1.3.0 2009-07-04\n----------------\n\n - Added options zip-packages and exclude.\n\n\n1.2.1 2009-07-03\n----------------\n\n - Uses a much better method for excluding optional c extensions and compiled\n modules.\n - A step forward in platform independence.\n\n\n1.2.0 2009-06-24\n----------------\n\n - Creates appcfg script.\n\n\n1.1.1 2009-06-07\n----------------\n\n - Makes symbolic links for application files.\n - Downloads stay untouched.\n\n\n1.1.0 2009-04-08\n----------------\n \n - Mostly rewritten.\n - Installs google appengine as part.\n - Adding dummy pkg_resources module to handle namespace package relicts.\n - Tests added.\n - Ready for Google App Engine SDK 1.2.0\n\n\n1.0.0b5 2009-01-20\n------------------\n\n - Requires Google App Engine SDK 1.1.8\n\n\n1.0.0b4 2008-09-04\n------------------\n\n - Create and use PROJECT_HOME/var to place temporary project files like\n data base files.\n\n\n1.0.0b3 2008-09-02\n------------------\n\n - Copy package contents to temporary library directory.\n\n\n1.0.0b2 2008-09-02\n------------------\n\n - Installs the whole distribution in the parts directory now. So it is ready\n to test and deploy.\n\n\n1.0.0b1 2008-09-01\n------------------\n\n - First beta release.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://code.google.com/p/rodrecipes", "keywords": "appengine gae zc.buildout recipe zope", "license": "LGPL 3", "maintainer": null, "maintainer_email": null, "name": "rod.recipe.appengine", "package_url": "https://pypi.org/project/rod.recipe.appengine/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rod.recipe.appengine/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://code.google.com/p/rodrecipes" }, "release_url": "https://pypi.org/project/rod.recipe.appengine/2.0.6/", "requires_dist": null, "requires_python": null, "summary": "ZC Buildout recipe for setting up a Google App Engine development environment.", "version": "2.0.6" }, "last_serial": 1366668, "releases": { "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "40dc54da68c378354d3be0d007370287", "sha256": "6b20962ec33aca732743510529200db6549f7180fe3e147a1a0928d06da0daf1" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b1-py2.5.egg", "has_sig": false, "md5_digest": "40dc54da68c378354d3be0d007370287", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 10432, "upload_time": "2008-09-01T08:49:59", "url": "https://files.pythonhosted.org/packages/03/6c/31b0d092ddc5bb05f69e377531f877222c39e0a9e3bfa1a3bc5095cfc002/rod.recipe.appengine-1.0.0b1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "b35107dbb6faa733e395e4f3f6a212fe", "sha256": "19c562efa6efb1f6b27951dee61f9dc301b98098c8d13db459c81b07c0e62a83" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "b35107dbb6faa733e395e4f3f6a212fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4543, "upload_time": "2008-09-01T09:11:55", "url": "https://files.pythonhosted.org/packages/f5/c0/4622a9b900dd9e05b66631451dc6ea6cc06be2e945c96846d2e09e8d35fc/rod.recipe.appengine-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "f8204fae9df5d394ed89845d85b66cfe", "sha256": "2501a80a3478bc4bbcb1a73ed2cd00633757cdfaaaabb8c03b17ccd05ab05729" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b2-py2.5.egg", "has_sig": false, "md5_digest": "f8204fae9df5d394ed89845d85b66cfe", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 11433, "upload_time": "2008-09-02T12:02:23", "url": "https://files.pythonhosted.org/packages/dd/d9/2cc5d73ec03b663c784f9f2b3920caff2eab0dcf4f2c3864cfb5168dedc0/rod.recipe.appengine-1.0.0b2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "1ab2cfb4f550e73b7febd0a687b978b0", "sha256": "29f5e825372440fafdf5296b52cd1dacd456fe0324e0b8bb9b01d5c7519bca8e" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b2.tar.gz", "has_sig": false, "md5_digest": "1ab2cfb4f550e73b7febd0a687b978b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4968, "upload_time": "2008-09-02T12:02:32", "url": "https://files.pythonhosted.org/packages/c1/a4/dfba5d9d44818270879bc94f442e5c169c5557a2add17d70379712e03b3e/rod.recipe.appengine-1.0.0b2.tar.gz" } ], "1.0.0b3": [ { "comment_text": "", "digests": { "md5": "6a5badfb46dbc8f0549b814cbbc6270a", "sha256": "aa3e7396cb3ebc609b1eb7b71073da9cb3ebfe2c5c47ee84de1fdda3d3e669d7" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b3-py2.5.egg", "has_sig": false, "md5_digest": "6a5badfb46dbc8f0549b814cbbc6270a", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 11019, "upload_time": "2008-09-02T16:33:49", "url": "https://files.pythonhosted.org/packages/c4/55/0c5ba34dcee07049c72f5cfd4530f3b0087fe7c639bb22e9811ee9a5cdb3/rod.recipe.appengine-1.0.0b3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "7e2a5222b9b764cf7aa44e16e014b574", "sha256": "77151adbc325a217772b3bd4be0f65fcfaed407378cbee6ce07639b2fb7c8cbe" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b3.tar.gz", "has_sig": false, "md5_digest": "7e2a5222b9b764cf7aa44e16e014b574", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4839, "upload_time": "2008-09-02T16:33:55", "url": "https://files.pythonhosted.org/packages/57/99/da9d353c465630c10ff4b9246ad24aeca122ce601d1651cf87ae31c086cb/rod.recipe.appengine-1.0.0b3.tar.gz" } ], "1.0.0b4": [ { "comment_text": "", "digests": { "md5": "53906bc387e90985a92fa74400feca61", "sha256": "f37337cc0e8ba989f878bf457001a67f408d1abcb2c93c74fa099bb77f2b8ac2" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b4-py2.5.egg", "has_sig": false, "md5_digest": "53906bc387e90985a92fa74400feca61", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 11267, "upload_time": "2008-09-04T13:57:29", "url": "https://files.pythonhosted.org/packages/d2/c8/b86b7d9b73edfcd6e9a45c875b2c0c41da3f6c4955050a1fb8b6c47393ff/rod.recipe.appengine-1.0.0b4-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "c0af7c15d0b5e8afac78920aa0f0a858", "sha256": "850b5a42d524a15bc96904e9b2c6d1b4a1f1039974975ceb365d181c067b8834" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b4-py2.6.egg", "has_sig": false, "md5_digest": "c0af7c15d0b5e8afac78920aa0f0a858", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 10957, "upload_time": "2008-10-19T11:14:29", "url": "https://files.pythonhosted.org/packages/fa/75/2cb26f79b6541cfcd14bd10fc26f10721c700db56cafe4190a855391474c/rod.recipe.appengine-1.0.0b4-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "ee77a79fb6db1e963162031ae06be3a0", "sha256": "9b18ba244531e851d22e9ee8ebd042752aee232bea8afff5712c78d458db0f76" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b4.tar.gz", "has_sig": false, "md5_digest": "ee77a79fb6db1e963162031ae06be3a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4965, "upload_time": "2008-09-04T13:57:33", "url": "https://files.pythonhosted.org/packages/22/a6/ba517f44db9bbf5612ed67fc9d98b8a464f5fcdf06e53d9e0f22a9cfaa35/rod.recipe.appengine-1.0.0b4.tar.gz" } ], "1.0.0b5": [ { "comment_text": "", "digests": { "md5": "1234c4d7c9817ad6a064ca88272ac058", "sha256": "6c95add914c81a02aef4f424eceb886c005f93316e6fa5961f3dbc1082695820" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b5-py2.5.egg", "has_sig": false, "md5_digest": "1234c4d7c9817ad6a064ca88272ac058", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 11013, "upload_time": "2009-01-20T21:52:46", "url": "https://files.pythonhosted.org/packages/80/84/9afbf3d1a2608aa9d074ba9aa97373d2a585f2d5d007e7f44b5527ace0cc/rod.recipe.appengine-1.0.0b5-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "6e981f813e21e2648fa05b516b47e380", "sha256": "06639c41dba5e9f759a32721d9b7c5a17edc7fbd7c540d0edc2c220d711c41f6" }, "downloads": -1, "filename": "rod.recipe.appengine-1.0.0b5.tar.gz", "has_sig": false, "md5_digest": "6e981f813e21e2648fa05b516b47e380", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4993, "upload_time": "2009-01-20T20:34:21", "url": "https://files.pythonhosted.org/packages/d4/de/27afef564131c12dd1c10d407d98fa012e74c72196f023f41c5e3ef4259f/rod.recipe.appengine-1.0.0b5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "793b6cbdab9b4030d28d8db7f1962da5", "sha256": "124ccdbd87bbaa220795a83136de8f8442d3fdb7975b8b6aa5f4aa183d52b63c" }, "downloads": -1, "filename": "rod.recipe.appengine-1.1.0-py2.5.egg", "has_sig": false, "md5_digest": "793b6cbdab9b4030d28d8db7f1962da5", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 13575, "upload_time": "2009-04-09T15:31:42", "url": "https://files.pythonhosted.org/packages/f9/72/59696ca7679d452c251863152c07087dc462ea773970eaa12c75ce551a27/rod.recipe.appengine-1.1.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "59540a2fabd2e077dce67fcfe7cbefaf", "sha256": "502ba005ab4baea190b7228609634e65614b72145a3028bb7e4767fa49a7509f" }, "downloads": -1, "filename": "rod.recipe.appengine-1.1.0.tar.gz", "has_sig": false, "md5_digest": "59540a2fabd2e077dce67fcfe7cbefaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10371, "upload_time": "2009-04-09T15:31:33", "url": "https://files.pythonhosted.org/packages/27/5d/e738b0dc38b61e7ed7bf28f809607627df6f2d0ec97b8af9b7c55872abe1/rod.recipe.appengine-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "140a5f95d528057aa2a33419c1752270", "sha256": "cb683679792300960ec839df84709ce37d3a5575b0a98232e53d5acfc3494376" }, "downloads": -1, "filename": "rod.recipe.appengine-1.1.1-py2.5.egg", "has_sig": false, "md5_digest": "140a5f95d528057aa2a33419c1752270", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 16357, "upload_time": "2009-06-07T23:54:14", "url": "https://files.pythonhosted.org/packages/66/05/377d1c54348b9a3e0e6ea163f8ff3b16759f9247099724d6a1527eaaa3bc/rod.recipe.appengine-1.1.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "b581a4a267a0e7565064cb84d92268df", "sha256": "8c797e322c6605391e396e3337aee65beab4210b06d5a6b8d8d60742a98ca9ae" }, "downloads": -1, "filename": "rod.recipe.appengine-1.1.1.tar.gz", "has_sig": false, "md5_digest": "b581a4a267a0e7565064cb84d92268df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10787, "upload_time": "2009-06-07T23:53:50", "url": "https://files.pythonhosted.org/packages/b2/a2/541e7c6e1de009df54001ea5e9cf99566015072ee1cc832c9c5e133abf0e/rod.recipe.appengine-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "fa8f9e50c1d08e0c39d77a232b06de13", "sha256": "5e9382d051b66f37ad56c78149c85daa2bc2f53422a5cba783b367cd7ecb1710" }, "downloads": -1, "filename": "rod.recipe.appengine-1.2.0-py2.5.egg", "has_sig": false, "md5_digest": "fa8f9e50c1d08e0c39d77a232b06de13", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 16819, "upload_time": "2009-06-24T15:22:48", "url": "https://files.pythonhosted.org/packages/6d/ef/7d134e64d6197259e54749e623f5525bb78ada69c67658f7df538924a7d4/rod.recipe.appengine-1.2.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "3f03a44ec3472fb3d9de0dcb3ae72fa1", "sha256": "6038bbb2789e2df84ad4a6f43f57b1fad76fe3121699def926fb4533702fd0c2" }, "downloads": -1, "filename": "rod.recipe.appengine-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3f03a44ec3472fb3d9de0dcb3ae72fa1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12084, "upload_time": "2009-06-24T15:22:59", "url": "https://files.pythonhosted.org/packages/3c/72/a41c23c6b38f03ced8cd5e99ae1121b90f444f55e76a71a5288a0c659111/rod.recipe.appengine-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "8c2ab34979aed5f75d40b983fce4d933", "sha256": "1ea5f14e29b1ea27db5529be58299838c5832a50b0399642627ee536dbc02f41" }, "downloads": -1, "filename": "rod.recipe.appengine-1.2.1-py2.5.egg", "has_sig": false, "md5_digest": "8c2ab34979aed5f75d40b983fce4d933", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 17138, "upload_time": "2009-07-03T13:55:46", "url": "https://files.pythonhosted.org/packages/d3/e9/c61de6bfda162f9b9565ee57f120c194dee5ff294e2c193fccfe6b4f84db/rod.recipe.appengine-1.2.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "0502d5f3db9e339a94c68d4a5e2ea336", "sha256": "4aa56a24e9e5dc02c505730c8b92591bc97e5393ec27001c3f9ab5355ee2aaa0" }, "downloads": -1, "filename": "rod.recipe.appengine-1.2.1.tar.gz", "has_sig": false, "md5_digest": "0502d5f3db9e339a94c68d4a5e2ea336", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12337, "upload_time": "2009-07-03T13:55:53", "url": "https://files.pythonhosted.org/packages/21/9b/759e69a4f8dd67dee39d0e84e796895509b1b85cd62f100a058dba5e69ab/rod.recipe.appengine-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "8ef490d4725ac85b3b2814ad952561e3", "sha256": "03db461f8fa162771ac8b34023c89a686dfebec8ae2c8c9a17d5e6c126f9ac92" }, "downloads": -1, "filename": "rod.recipe.appengine-1.3.0-py2.5.egg", "has_sig": false, "md5_digest": "8ef490d4725ac85b3b2814ad952561e3", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 18315, "upload_time": "2009-07-04T22:13:39", "url": "https://files.pythonhosted.org/packages/4a/41/5f55d5ab7a341a70d51bd54895574411aedfd954e970e85207749e34b437/rod.recipe.appengine-1.3.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "8bb3301c54a2e4e3d91c9696f03241a4", "sha256": "a6fb445a30acb98bb941d1f097115d72af2c968016501e8ea273e33cb7d6565c" }, "downloads": -1, "filename": "rod.recipe.appengine-1.3.0.tar.gz", "has_sig": false, "md5_digest": "8bb3301c54a2e4e3d91c9696f03241a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12688, "upload_time": "2009-07-04T22:14:13", "url": "https://files.pythonhosted.org/packages/ad/8b/49697aafc43c7fff2b92bd0cacbe84655d379920380b51c3e700cf53f952/rod.recipe.appengine-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "39a1f6b62ddd1be43103a0386760bf64", "sha256": "a54e6b5041116ce8bcf264a2eb86ee201feb5affb195f659b304db32c6c1883d" }, "downloads": -1, "filename": "rod.recipe.appengine-1.3.1-py2.5.egg", "has_sig": false, "md5_digest": "39a1f6b62ddd1be43103a0386760bf64", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 20643, "upload_time": "2009-07-15T10:27:59", "url": "https://files.pythonhosted.org/packages/6c/bb/812f195831cf3496fbcab38866b6040ac4520095af31c2f1169debd132e6/rod.recipe.appengine-1.3.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "2ed65ae844fc105ff134ba32f021b96a", "sha256": "f355f7b3e67e86aed208c0bfb296bc97881360707b30723481bb1a2d3e5a182d" }, "downloads": -1, "filename": "rod.recipe.appengine-1.3.1.tar.gz", "has_sig": false, "md5_digest": "2ed65ae844fc105ff134ba32f021b96a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13753, "upload_time": "2009-07-15T10:27:51", "url": "https://files.pythonhosted.org/packages/61/38/e5a393a91686cb6d63b8f9868e0de794ea0f0754aa567d23b84eb72b7215/rod.recipe.appengine-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "b84f90ccbc829e2d281db6c4528b0e20", "sha256": "b1f2896893d80deed9e172f811d4148df0195ba3de26c7ba9d5b14e9a4c3b139" }, "downloads": -1, "filename": "rod.recipe.appengine-1.4.0-py2.5.egg", "has_sig": false, "md5_digest": "b84f90ccbc829e2d281db6c4528b0e20", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 20894, "upload_time": "2009-08-26T19:21:27", "url": "https://files.pythonhosted.org/packages/3a/ca/8174da4744436ae2ced1e6459fc94e73602d03a9a5867b465e36f6d5399c/rod.recipe.appengine-1.4.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "954e69bbe21b39d3dc4437a233f28fd1", "sha256": "1da70e614a484bd9e1aabc1f901d4a241b4c0a6bc2813b6217c2398f4193fe99" }, "downloads": -1, "filename": "rod.recipe.appengine-1.4.0.tar.gz", "has_sig": false, "md5_digest": "954e69bbe21b39d3dc4437a233f28fd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14058, "upload_time": "2009-08-26T19:21:35", "url": "https://files.pythonhosted.org/packages/2f/d1/1db15d6da9a60d3441440d988c901c1d190f00cc95d1c4b1d704f9c9f673/rod.recipe.appengine-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "f7bdb55a23f1340849d4690fd2b138cb", "sha256": "00429b80ad387e4bcc2ceb847a4ad9015b41ed57e493cf2a0d77c96f365ee91c" }, "downloads": -1, "filename": "rod.recipe.appengine-1.4.1-py2.5.egg", "has_sig": false, "md5_digest": "f7bdb55a23f1340849d4690fd2b138cb", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 19021, "upload_time": "2010-01-18T16:36:27", "url": "https://files.pythonhosted.org/packages/88/86/0681a4d853aa0361c7abb23da79b31d07f553b861ee28905403e17ca186a/rod.recipe.appengine-1.4.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "3f2c02d997555e76d035a7217e6b503e", "sha256": "c68114e8baf0bcabe0fdb4285654c640fe85df203feb7079c917a466017c3465" }, "downloads": -1, "filename": "rod.recipe.appengine-1.4.1.tar.gz", "has_sig": false, "md5_digest": "3f2c02d997555e76d035a7217e6b503e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12051, "upload_time": "2010-01-18T16:36:19", "url": "https://files.pythonhosted.org/packages/87/81/8cef2d2d31d4ef2a24b2189136f376087534f638ee62ed063d20d7cf8845/rod.recipe.appengine-1.4.1.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "154cc82be32a6e1ee7eb73f1d337d06d", "sha256": "3fcfc8c94ead8dcafd41fab900a660e99c019c4b1147b5aca3133bf4af847f52" }, "downloads": -1, "filename": "rod.recipe.appengine-1.5.0-py2.5.egg", "has_sig": false, "md5_digest": "154cc82be32a6e1ee7eb73f1d337d06d", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 19815, "upload_time": "2010-03-27T12:49:34", "url": "https://files.pythonhosted.org/packages/44/af/bdb7ce1d942394b03e3442cc9fe17a29ce787741bdd9972e64334688c459/rod.recipe.appengine-1.5.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "59c237ec64f30201285b57a03e4d000a", "sha256": "96e7ae3059c4f0b65418e67e8de6a831378cbd933c3911eb285c9eb8e222e27c" }, "downloads": -1, "filename": "rod.recipe.appengine-1.5.0.tar.gz", "has_sig": false, "md5_digest": "59c237ec64f30201285b57a03e4d000a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12426, "upload_time": "2010-03-27T12:49:25", "url": "https://files.pythonhosted.org/packages/47/de/84245ac086ebb302f061214de1faf7e154bd8cc70446c558ec9cafedc6f3/rod.recipe.appengine-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "0382d471084041a7f0f2e959113023fc", "sha256": "206ec562b229d24414935fea4edbd09c8474c1548bf7a49d516366b2c1e9f1b1" }, "downloads": -1, "filename": "rod.recipe.appengine-1.5.1-py2.5.egg", "has_sig": false, "md5_digest": "0382d471084041a7f0f2e959113023fc", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 20225, "upload_time": "2010-03-27T15:10:59", "url": "https://files.pythonhosted.org/packages/a8/13/ec783c93d65e58240b6362f60ed64aa63079a653bc78b4e6dbf209de869b/rod.recipe.appengine-1.5.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "095e7cad939a96ff3251d1359236a8cb", "sha256": "f9ff949f597388f39ced29cb0a526e229847d5a36066a2ed6dd8b14e1caa0cd8" }, "downloads": -1, "filename": "rod.recipe.appengine-1.5.1.tar.gz", "has_sig": false, "md5_digest": "095e7cad939a96ff3251d1359236a8cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12703, "upload_time": "2010-03-27T15:10:51", "url": "https://files.pythonhosted.org/packages/99/47/92ea1bbd7b5793f1fdc3c9bd8142bc2cca5676b4d5723df2c55d67be5e57/rod.recipe.appengine-1.5.1.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "0cc38e097bb0bb26e08dbe6d2eb9753f", "sha256": "b9d293db63a31912e6f75c239224a55c338dd715bbb300da380bb652c4949ae7" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.0-py2.5.egg", "has_sig": false, "md5_digest": "0cc38e097bb0bb26e08dbe6d2eb9753f", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 21428, "upload_time": "2010-04-03T14:56:36", "url": "https://files.pythonhosted.org/packages/b9/a4/12e7daafd65a8361c8b7978e20f3d5b0aaadd8354d1645ac36e9c43f8c3f/rod.recipe.appengine-1.6.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "f4233a48564864a39f2dff1acdc0a74f", "sha256": "60ebb1035b0a485f52792aa0a568213796305f17dc07b382b67c9bf2857ad042" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.0.tar.gz", "has_sig": false, "md5_digest": "f4233a48564864a39f2dff1acdc0a74f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13324, "upload_time": "2010-04-03T14:56:26", "url": "https://files.pythonhosted.org/packages/67/72/1fe8b529bfdf47ac9a3e36bb174b629ab543a0d6569030549574cf774771/rod.recipe.appengine-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "1e579845f91c52b2b2bdb1b658cfa287", "sha256": "ba3ba30d70295512196f9b67f0afdb2ca347767b89188e507dcbc3159d6bf562" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.1-py2.5.egg", "has_sig": false, "md5_digest": "1e579845f91c52b2b2bdb1b658cfa287", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 21930, "upload_time": "2010-04-03T20:57:26", "url": "https://files.pythonhosted.org/packages/73/71/e6ed7176aeadc9ddddfb81186d3dd58b44c3d74c033d0cbcf49259f44204/rod.recipe.appengine-1.6.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "89f675e6d1705224fc4d642cec81ebdb", "sha256": "8333d1672e4b3fb731c521882b36a575f622177501b7e792982b1b1291bbb4fc" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.1.tar.gz", "has_sig": false, "md5_digest": "89f675e6d1705224fc4d642cec81ebdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13643, "upload_time": "2010-04-03T20:57:18", "url": "https://files.pythonhosted.org/packages/60/52/9efdfc8bb156b23adeeef2c4de5fd808bd0931acbc67bfae363d4434e787/rod.recipe.appengine-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "35679671c27f4b0b4f1dc475e0c18656", "sha256": "8e5925de9292a42c9d3f3af3d62ac8bf2fcf051166e355d324fac564d3365425" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.2-py2.5.egg", "has_sig": false, "md5_digest": "35679671c27f4b0b4f1dc475e0c18656", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 22087, "upload_time": "2010-04-18T14:17:49", "url": "https://files.pythonhosted.org/packages/d9/cc/8cda2082a2b09c08edad133f168fbc242af9b1cdcb313a8337bc61f0ca64/rod.recipe.appengine-1.6.2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "b768166284abe070eef86debf5c45d94", "sha256": "8ca1640211a6c89481281c9d149dcb7efb40a42551f5503451d537a607d01f6e" }, "downloads": -1, "filename": "rod.recipe.appengine-1.6.2.tar.gz", "has_sig": false, "md5_digest": "b768166284abe070eef86debf5c45d94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13776, "upload_time": "2010-04-18T14:17:45", "url": "https://files.pythonhosted.org/packages/46/5d/f09a9e57dc500e1a5c8b84a480f7c2e03bb01bf0fa89f353e20f2478f36b/rod.recipe.appengine-1.6.2.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "b34c5a84a4b763a41776250a68d1a84e", "sha256": "72b0b9a7abe3b6ef9a51b28b0a6fd70d4829a409acc1acec967691d1f9bbdc74" }, "downloads": -1, "filename": "rod.recipe.appengine-1.7.0.tar.gz", "has_sig": false, "md5_digest": "b34c5a84a4b763a41776250a68d1a84e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17033, "upload_time": "2011-05-16T22:50:24", "url": "https://files.pythonhosted.org/packages/8f/cc/91d8b854005e3afe41b780545261d27262870f1a90726400912dec0a5238/rod.recipe.appengine-1.7.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "8dc39219f40dcff71682e619f5dfa664", "sha256": "56e205e7a6c0b8671fa1cb23185b4d87cd9d27e604fd8f5fad3088b869149a8d" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.0.tar.gz", "has_sig": false, "md5_digest": "8dc39219f40dcff71682e619f5dfa664", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21923, "upload_time": "2011-07-01T15:27:41", "url": "https://files.pythonhosted.org/packages/df/a9/54671bd4ffb8c35aaa406ab51aac11f56afd5fe630d4c88e2432d10eb555/rod.recipe.appengine-2.0.0.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "c2454e3ddc89a124693dba753e44db81", "sha256": "b4fbdd0c2cf673ab9c24beca8658684a725ad14748d19927f3b9d8b21efafcbf" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.2.tar.gz", "has_sig": false, "md5_digest": "c2454e3ddc89a124693dba753e44db81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19635, "upload_time": "2013-06-24T13:11:51", "url": "https://files.pythonhosted.org/packages/fd/74/9c7f1aad27cab69d1c9d110bbf5688df8f629d355506cb94364d87ce2dec/rod.recipe.appengine-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "4bb67d61f010900744cb61c1d1801f9b", "sha256": "d60e43fb94dbd7fd3b7baf556741dda7f0ac6a973e630b02b095ce8c1e2ab3e0" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.3.tar.gz", "has_sig": false, "md5_digest": "4bb67d61f010900744cb61c1d1801f9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18890, "upload_time": "2014-06-17T18:45:51", "url": "https://files.pythonhosted.org/packages/b8/7e/3793bb04b3d19801e7bd62c5fb5982f4877317a03fbb28f24c4b382aae45/rod.recipe.appengine-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "4bcc353ab68f6f77397819d2d86978ac", "sha256": "c7daec84c5587cff88fb8c5d898bd889b3f3f4db2a1139d6d65290c1ac53c716" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.4.tar.gz", "has_sig": false, "md5_digest": "4bcc353ab68f6f77397819d2d86978ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23770, "upload_time": "2014-09-16T18:47:47", "url": "https://files.pythonhosted.org/packages/16/ea/64ee77fd871f4c08e9e121b9f9c24510322d55fa8bf1f84ba130a9dd1f0b/rod.recipe.appengine-2.0.4.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "918a8af99dca93d1c313636274c60f28", "sha256": "b3bbf8673069f7d07842e04fba51755cb7b1d55b333dbe8e42b1d57f5a519083" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.6.tar.gz", "has_sig": false, "md5_digest": "918a8af99dca93d1c313636274c60f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24253, "upload_time": "2015-01-01T08:41:36", "url": "https://files.pythonhosted.org/packages/1e/d5/bc4b0dd30a447a29e8e0aa5f0f4af395af75e6826967d1021c6b0cf5ea52/rod.recipe.appengine-2.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "918a8af99dca93d1c313636274c60f28", "sha256": "b3bbf8673069f7d07842e04fba51755cb7b1d55b333dbe8e42b1d57f5a519083" }, "downloads": -1, "filename": "rod.recipe.appengine-2.0.6.tar.gz", "has_sig": false, "md5_digest": "918a8af99dca93d1c313636274c60f28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24253, "upload_time": "2015-01-01T08:41:36", "url": "https://files.pythonhosted.org/packages/1e/d5/bc4b0dd30a447a29e8e0aa5f0f4af395af75e6826967d1021c6b0cf5ea52/rod.recipe.appengine-2.0.6.tar.gz" } ] }