{ "info": { "author": "Tom Willis", "author_email": "me@twillis.me", "bugtrack_url": null, "classifiers": [ "Framework :: Pyramid", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI" ], "description": "===================\n pyramid_appengine\n===================\n\nA scaffold to help you get started writing a pyramid aplication that\nwill run on Google App Engine.\n\nLooking for a new maintainer\n============================\n\nI don't do python anymore, or appengine for that matter. If anyone is interested in taking this scaffold over I will be happy to transfer it. \n\nInstallation\n============\n\npyramid_appengine can be installed via pip or easy_install\n\n::\n\n $ pip install pyramid_appengine\n\n\n\nOnce installation has completed, an appengine_starter template will be\nmade avaialable to use to create projects.\n\n::\n\n $ pcreate --l\n Available templates:\n appengine_starter: Pyramid scaffold for appengine\n ...\n\n\n\nGetting Started\n===============\nThe project generated from the scaffold utilizes buildout 2 which no\nlonger attempts to provide full or partial isolation from system\npython installations. As a result it is a good idea to use a\nvirtualenv to provide that isolation.\n\nThis can be accomplished by simply creating a new virtualenv and using\nit's interpreter to run bootstrap.py. Using virtualenv is out of scope\nbut there is plenty of information on the internet on how to do it.\n\n\nTo get started, first create your project skeleton.\n\n::\n\n $ pcreate -t appengine_starter mynewproject\n\nA buildout environment for your project will be created. once\ncomplete, run the buildout as usual\n\n\n::\n\n $ cd meynewproject\n $ virtualenv -p /usr/bin/python2.7 .env\n $ .env/bin/python2.7 bootstrap.py\n $ ./bin/buildout\n\n\nThe buildout will take care of downloading and installing the App\nEngine SDK (currently 1.6.3). it will be located in\n\"./parts/google_appengine\" all utils for deploying and running the\ndevelopment server will be located in \"./bin\"\n\nYour source code for your project will be located at\n\"./src/mynewproject\", a bundle of your source and it's dependencies\nwill be located at \"./parts/mynewproject\"\n\n\nRunning your project for development\n====================================\n\n::\n\n $ ./bin/supervisord\n\nyour pyramid site will be running on port 8000 so point your browser\nat\n\n::\n\n http://localhost:8000\n\nThe app engine admin console for your app is on port 8010\n\n\nYou will find the supervisor service on port 9999 at\n\n:: \n\n http://localhost:9999\n\nFrom there you can check to see if the service is running, and you can\nstart/stop/restart and tail the log.\n\n\n\nDeploying your application to App Engine\n========================================\n\nAssuming you have created an application id \"mynewproject\" on app engine, the\napplication can be deployed like so.\n\n::\n\n $ ./bin/appcfg update parts/mynewproject -A mynewproject -V dev\n\nThen your application will be running at...\n\n::\n\n http://dev.mynewproject.appspot.com\n\n\nWhat It Does And Why\n====================\n\nMost pyramid scaffolds create a project directory structure that is an\ninstallable through the pip/easy_install . However, App Engine\napplications do not support that format. Instead App Engine assumes\nthat everything is contained in one directory including all of the\nprojects dependencies not provided by the App Engine run time. \n\nSo a directory structure for an application deployable to App Engine\nlooks like this...\n\n::\n\n /myproject/\n /myproject/app.yaml\n /myproject/index.yaml\n /myproject/queue.yaml\n /myproject/pyramid\n /myproject/verlruse\n /myproject/jinja2\n /myproject/newfangledlib\n\nBecause of this directory structure, which is vastly different from\nwhat is expected by other tools, we need a way to develop in your\ntypical python egg format, but deploy in an App Engine format.\n\nEnter Buildout\n--------------\n\nBuildout is a tool that can be used to support the kind of setup where\nyou develop your application as an egg but deploy what App Engine\nexpects. If you aren't familiar with buildout you may want to read up\non it. It has some of the same goals as virtualenv, but has more\nfeatures via recipes to help with deployment.\n\nFor running the buildout you typically do ...\n\n::\n\n $ /path/to/python bootstrap.py\n $ ./bin/buildout\n\nThe buildout.cfg file distributed with python_appengine does the\nfollowing.\n\n - creates a buildout environment where the source for your project\n is located at ./src/nameofproject\n\nWhen buildout is run ...\n\n - all the dependencies for your project are downloaded and setup in\n the buildout environment\n - the appengine sdk is downloaded and installed in the buildout\n environment under ./parts/google_appengine .\n - tools such as devappserver, appcfg which are tools distributed\n with the app engine sdk are put in the buildouts bin directory\n - a supervisor script to run the dev_appserver.py is generated\n\n \nBuildout and Virtualenv\n-----------------------\n\nIn order for Google App Engine's Dev Server and upload script to\nfunction correctly all files which are being used by the project must\nbe collected together into a flat hierarchy, as described above.\n\nBy default, however, buildout will not create directories for any\npackages already present in the system's site-packages directory.\n\nSince buildout 2.0 has been released, the suggested way to provide\npackage isolation is to create a virtualenv and then use that\ninterpreter to bootstrap your buildout.\n\n\nManaging dependencies for deployment\n====================================\n\nAs mentioned earlier, all dependencies must be contained in the\napplications deployment directory under parts or provided by the app\nengine runtime environment. As your application gets bigger and bigger\nyou will likely edit the buildout.cfg from time to time to add more\ndependencies so that they are deployed with your application.\n\nTo update the dependencies for your application edit the packages\nattribute under the stanza for your project in the buildout.cfg and\nthen run ./bin/buildout again to have the dependencies symlinked or\ncopied to parts/mynewproject\n\n\nTesting\n=======\n\nAs a general rule, having a thorough unit test suite is good. But in\nthe authors opinion it is essential for app engine applications. The\nmain reason being that app engine requires you to specify the\ndatastore indexes you need to support the application at deployment\ntime via the index.yaml.\n\nThe app engine sdk will update your index.yaml for you when you are\nrunning your application on the development server. But it requires\nyou use something that generates an HTTP request in order to trigger\nthe behavior. So in theory, you would have to make sure you hit every\npage of your application before you deploy to insure any new index\nneeds caused by new or updated queries are recorded. \n\nThis method is error prone and time consuming. A better way is to have\nyour unit tests generate it. \n\nThe project generated by the scaffold includes everything you need to\ndo this. By using py.test and hooks specified in conftest.py, a couple\nthings are guaranteed.\n\n #. a clean appengine environment is initialized before each test\n #. any changes to index.yaml are written after each test\n\nTests can be run from the root of the project directory like so.\n\n::\n\n $ ../../bin/python setup.py test\n\nor ...\n\n::\n\n $ ../../bin/py.test\n\n\n0.8.5\n--------\n\nupdate buildout to new bootstrap file\nundo setuptools pin\nupdate for app engine sdk 1.9.17\n\n\n0.8.4\n--------\n\nupdate for app engine sdk 1.9.11\n\nremove mako and chameleon dependencies since they are no longer required for pyramid as of version 1.5\n\n\n0.8.3.1\n---------\n\nsomehow 0.8.3 got zipped with a README.rst instead of a readme.rst\n\n\n0.8.3\n--------\n\nupgrade sdk to 1.8.7\n\nfix setuptools craziness with rod.recipe.appengine by pinning\nsetuptools in versions.cfg\n\nadd flag in supervisor config for devappserver to avoid checking for\nsdk updates when it starts up so that the app either comes up or\nerrors out, not just hangs there waiting for user input that it will\nnever get.\n\n\nSlight modification to docs to give an actual opinion on whether to\nuse virtualenv or not. As in yes, use a virtualenv for less python\npackaging pain. \n\n\n\n0.8.2-a2\n---------\n\nrebuild with all the artifacts (reademe.rst, CHANGES.txt etc.....)\n\n0.8.2-a1\n---------\n\nadded supervisord scripts to run dev_appserver\n\nApp Engine SDK version bumped to 1.8.0\n\n\n0.8.1\n----------------\n\ninclude versions.cfg template for scaffold\n\n\n\n0.8\n----------------\n\nbump sdk to 1.7.5\n\nbump pyramid version to 1.4\n\nupgrade to buildout 2.0\n\nadded versions.cfg to make managing versions of dependencies easier.\n\n0.7\n----------------\n\nbump sdk version to 1.7.2\n\nadding \"unzip=true\" to the buildout.cfg template to help out with eggs\nthat are distributed that way\n\npinning to pyramid version 1.3\n\n\n0.6.1\n-----------------\nbump SDK version to 1.6.6\n\n0.6: 06-13-2012\n------------------\n\nchanged buildout.cfg to ignore site-packages which should fix a lot of\nissues with various namespaces packages that pyramid potentially\ndepends on.\n\n\n\n0.5.4.1: 05-05-2012\n-------------------\n\ndoc corrections\n\n\n\n0.5.4\n-----------------\n\nupgrading buildout to appengine sdk 1.6.5 and pyramid 1.3\n\nchanged application template to not use an ini file because it doesn't\nreally add any value on appengine, but handling the paste*\ndependencies is troublesome for the recipe rod.recipe.appengine under\nsome circumstances.\n\nThis is just the default behavior of course, there's nothing stopping\nyou from deploying with an ini file if you wish.\n\n\n0.5.3: 03-27-2012\n-----------------\n\nupgrading buildout to appengine sdk 1.6.4, the first SDK which works\nwith python2.7.\n\n\n0.5.2: 03-23-2012\n-----------------\n\nfixes to address github issue #6\n\nusage of project vs package used incorrectly.\n\nhttps://github.com/twillis/pyramid_appengine/issues/6\n\n\n\n0.5.1: 03-21-2012\n-----------------\n\nminor changes to readme.rst \n\n\n0.5: 03-21-2012 \n---------------\n\ninitial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/twillis/pyramid_appengine", "keywords": "web pyramid pylons google-app-engine", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "pyramid_appengine", "package_url": "https://pypi.org/project/pyramid_appengine/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyramid_appengine/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/twillis/pyramid_appengine" }, "release_url": "https://pypi.org/project/pyramid_appengine/0.8.5/", "requires_dist": null, "requires_python": null, "summary": "Scaffold + Tools for creating/developing pyramid applications on Google App Engine", "version": "0.8.5" }, "last_serial": 1416202, "releases": { "0.5.1dev": [ { "comment_text": "", "digests": { "md5": "9f22ad6776f9453e39e7ab3390322b88", "sha256": "654597d19a8f61dbf38427e89bafa01a5dd42f0ade6ac94d72876a8b04583260" }, "downloads": -1, "filename": "pyramid_appengine-0.5.1dev.tar.gz", "has_sig": false, "md5_digest": "9f22ad6776f9453e39e7ab3390322b88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76303, "upload_time": "2012-03-21T14:48:03", "url": "https://files.pythonhosted.org/packages/3d/fb/d057392653fe914847006e0b8d71ca41ce9d6223709a09b025524bf91327/pyramid_appengine-0.5.1dev.tar.gz" } ], "0.5.2dev": [ { "comment_text": "", "digests": { "md5": "ecde1cad2967510ca646f094005b3a13", "sha256": "2a4fb8752b13f53c4faa05c087b430db469ed3af6731cde6eb60db5f41db624b" }, "downloads": -1, "filename": "pyramid_appengine-0.5.2dev.tar.gz", "has_sig": false, "md5_digest": "ecde1cad2967510ca646f094005b3a13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76396, "upload_time": "2012-03-23T18:17:44", "url": "https://files.pythonhosted.org/packages/12/35/ec51d01baa6cc177b404b6d9093eab2a8b9a577770a4084532fc559521e7/pyramid_appengine-0.5.2dev.tar.gz" } ], "0.5.3dev": [ { "comment_text": "", "digests": { "md5": "827d6a0720a21f557f50340a45f860d2", "sha256": "c0fdab0ba7aec7a9c6edb92452a2a57068ec976170f4e4a37ec3cde5a0008adc" }, "downloads": -1, "filename": "pyramid_appengine-0.5.3dev.tar.gz", "has_sig": false, "md5_digest": "827d6a0720a21f557f50340a45f860d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76139, "upload_time": "2012-03-28T03:57:06", "url": "https://files.pythonhosted.org/packages/7e/44/e0bdf24846878f09b0f4c0dac45b6f935771c7834bc174388e9248bbb1d0/pyramid_appengine-0.5.3dev.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "75a6e3ed59a2096fd3a7541e71833d2f", "sha256": "c075900ea8975bcee64addcd24e52f4c24beaa34bac899374345ccac84350abd" }, "downloads": -1, "filename": "pyramid_appengine-0.5.4.tar.gz", "has_sig": false, "md5_digest": "75a6e3ed59a2096fd3a7541e71833d2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75916, "upload_time": "2012-05-05T23:00:49", "url": "https://files.pythonhosted.org/packages/49/5a/ebd85b18d991c47f64ce7ef1b1f17eebaa167549e923bc714aeb84770cc5/pyramid_appengine-0.5.4.tar.gz" } ], "0.5.4.1": [ { "comment_text": "", "digests": { "md5": "2050d1ffa1269f43b7c6069b8d127510", "sha256": "ee06c81054c6eebbe977761c2678002b28ba43d3b6e6568f65424b8a3125eb15" }, "downloads": -1, "filename": "pyramid_appengine-0.5.4.1.tar.gz", "has_sig": false, "md5_digest": "2050d1ffa1269f43b7c6069b8d127510", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75909, "upload_time": "2012-05-05T23:12:04", "url": "https://files.pythonhosted.org/packages/f7/b3/98cad1f3845967b5a074144cd4d35d74200d49268fe74c2a8256b9478d07/pyramid_appengine-0.5.4.1.tar.gz" } ], "0.5dev": [ { "comment_text": "", "digests": { "md5": "47646ec0f7131958bf4524158d6e5f01", "sha256": "71d274aac4c71065c19a157f4516bca25321e48a848f7dab5ab607872cd2fb69" }, "downloads": -1, "filename": "pyramid_appengine-0.5dev.tar.gz", "has_sig": false, "md5_digest": "47646ec0f7131958bf4524158d6e5f01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76281, "upload_time": "2012-03-21T14:26:09", "url": "https://files.pythonhosted.org/packages/61/3f/0643a4e35d594785638c02ccda2734547ed2ca6a03d9e6aa860f0cb8c90b/pyramid_appengine-0.5dev.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "50113d9a72f4241797199273da0a9f2e", "sha256": "8d8cb3672db77288133b0b3892946cc2ea458e3d32c56122a9478448b2f5136a" }, "downloads": -1, "filename": "pyramid_appengine-0.6.tar.gz", "has_sig": false, "md5_digest": "50113d9a72f4241797199273da0a9f2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76505, "upload_time": "2012-06-13T14:25:03", "url": "https://files.pythonhosted.org/packages/64/2c/601220c16e6611785d6f2878ee29fffc68242f9b208baa6c35dec7a81b6c/pyramid_appengine-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "bfd106a0164d6a53301fe8bd0d8c333e", "sha256": "bf1b19ca7ba336ce1fa3adbc4a12982b2709e687ab1fbf9d66d22adaeeaaa449" }, "downloads": -1, "filename": "pyramid_appengine-0.7.tar.gz", "has_sig": false, "md5_digest": "bfd106a0164d6a53301fe8bd0d8c333e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80387, "upload_time": "2012-09-20T12:30:31", "url": "https://files.pythonhosted.org/packages/2a/9b/51d25dfa3bd273d4ac3f9babc2d5eb65dfa2d5cbd23f6ddad478187a2fb8/pyramid_appengine-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "505604c11748d8f0182531778b8999ee", "sha256": "f7cee35244a27daf6e910299242fccbee38e83440e4dc210d32604908566417c" }, "downloads": -1, "filename": "pyramid_appengine-0.8.tar.gz", "has_sig": false, "md5_digest": "505604c11748d8f0182531778b8999ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79596, "upload_time": "2013-02-20T15:41:26", "url": "https://files.pythonhosted.org/packages/84/a7/8a3c80519069f2103671cf71e4e7c5988491ebe428f1d5cd5e0bb8e32b80/pyramid_appengine-0.8.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "775b2340474b145adcf833f69c7c51c7", "sha256": "e7851eabdbba888cbe62dee685029a4cca2c740608bb1105aab4661f655f7dae" }, "downloads": -1, "filename": "pyramid_appengine-0.8.1.tar.gz", "has_sig": false, "md5_digest": "775b2340474b145adcf833f69c7c51c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79735, "upload_time": "2013-03-12T15:07:47", "url": "https://files.pythonhosted.org/packages/cc/8a/91cc329f5a9d9e1f5ab50be736b12fa7b41fd2959683e608b9808c9080d0/pyramid_appengine-0.8.1.tar.gz" } ], "0.8.2-a1": [ { "comment_text": "", "digests": { "md5": "376f7760db64ffe6f117da63d3515842", "sha256": "cab2d3dcbeb7b0fa53461adafd0b08ddf0448d2058077e672dd824664a55a696" }, "downloads": -1, "filename": "pyramid_appengine-0.8.2-a1.tar.gz", "has_sig": false, "md5_digest": "376f7760db64ffe6f117da63d3515842", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5340, "upload_time": "2013-06-02T20:41:07", "url": "https://files.pythonhosted.org/packages/02/29/748521d6249b59979620965c40e656d7267dce015d446215f3b33f81e2fc/pyramid_appengine-0.8.2-a1.tar.gz" } ], "0.8.2-a2": [ { "comment_text": "", "digests": { "md5": "31f46d2061eb00b2f701efc95ad44d57", "sha256": "da1853c0b22959cd00a064d148f82768ad37ccbefe9e320e075bc9cb35f5b586" }, "downloads": -1, "filename": "pyramid_appengine-0.8.2-a2.tar.gz", "has_sig": false, "md5_digest": "31f46d2061eb00b2f701efc95ad44d57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80180, "upload_time": "2013-06-07T13:53:32", "url": "https://files.pythonhosted.org/packages/70/af/d1822e3eb197df737662cf80a2eef75366b1a8015a2c9df3da171a1e3c28/pyramid_appengine-0.8.2-a2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "bae949457fd1e1450a502f32519b1bc8", "sha256": "5ca9186a06f727a1d423c44f7b819cb59ad01fb26b802d2f68570c3ad74a7189" }, "downloads": -1, "filename": "pyramid_appengine-0.8.3.tar.gz", "has_sig": false, "md5_digest": "bae949457fd1e1450a502f32519b1bc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80114, "upload_time": "2013-11-09T15:35:14", "url": "https://files.pythonhosted.org/packages/8f/a8/fc04a2b7ad283b20937821cca1bb0161588f728be133abeb183907f5ae51/pyramid_appengine-0.8.3.tar.gz" } ], "0.8.3.1": [ { "comment_text": "", "digests": { "md5": "02ea7dd3d8cebf5b6e13b98baa2260eb", "sha256": "2ac1ef522c9b17b87f94cdb219130238096bbbc93ccdbecca62fad1a7ed02d3d" }, "downloads": -1, "filename": "pyramid_appengine-0.8.3.1.tar.gz", "has_sig": false, "md5_digest": "02ea7dd3d8cebf5b6e13b98baa2260eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80732, "upload_time": "2013-11-16T22:25:03", "url": "https://files.pythonhosted.org/packages/f9/fc/b49a029e4083946581370ebebc6a89280b06ad140d009da62b586b48baf3/pyramid_appengine-0.8.3.1.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "ed41f9c13d160593876c0ef709684931", "sha256": "55bb0842fc6ecc678f2efcaa98a358af59a6088dd6ba6292b22525dd1c9ace12" }, "downloads": -1, "filename": "pyramid_appengine-0.8.4.tar.gz", "has_sig": false, "md5_digest": "ed41f9c13d160593876c0ef709684931", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6259, "upload_time": "2014-09-19T15:29:34", "url": "https://files.pythonhosted.org/packages/2b/4e/57c00a4681700f3edc5f509e78b7e07035ba1ebfbad1d730b4bd187770b8/pyramid_appengine-0.8.4.tar.gz" } ], "0.8.4.1": [ { "comment_text": "", "digests": { "md5": "71522e3eda316cb406ecdd7c5e8f0e62", "sha256": "ba989545b44e8e51b24d421420fee729684fe6dfd865319ececba3d4d3f6e8b7" }, "downloads": -1, "filename": "pyramid_appengine-0.8.4.1.tar.gz", "has_sig": false, "md5_digest": "71522e3eda316cb406ecdd7c5e8f0e62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80286, "upload_time": "2014-09-19T17:31:14", "url": "https://files.pythonhosted.org/packages/ed/fd/493ba25b438d9edfd4d18acf78754ae62eb1f7f5b4acfbe3e8fb18e12190/pyramid_appengine-0.8.4.1.tar.gz" } ], "0.8.4.2": [ { "comment_text": "", "digests": { "md5": "a362279b64529f2cea5e53b54898bd4a", "sha256": "89acd8003812b2d983ffcd020175a8fecdbaa1512c1dc6db4748ec443db46c29" }, "downloads": -1, "filename": "pyramid_appengine-0.8.4.2.tar.gz", "has_sig": false, "md5_digest": "a362279b64529f2cea5e53b54898bd4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80308, "upload_time": "2014-09-20T15:17:17", "url": "https://files.pythonhosted.org/packages/10/89/2df5231edbea6e095a6d5b064940e56ab7c42911df075d41e2c9112182a1/pyramid_appengine-0.8.4.2.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "f2490b0eff453aecf99168c7a241c106", "sha256": "247241c66f2594573d7af605b97e487bd3e3ddc8b2283eacdd0f48abc3e68cc6" }, "downloads": -1, "filename": "pyramid_appengine-0.8.5.tar.gz", "has_sig": false, "md5_digest": "f2490b0eff453aecf99168c7a241c106", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80759, "upload_time": "2015-02-09T13:44:25", "url": "https://files.pythonhosted.org/packages/2d/31/56ae408b04b21cce6659776117910fe7a199138cb5a13d84254cdbc27c54/pyramid_appengine-0.8.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f2490b0eff453aecf99168c7a241c106", "sha256": "247241c66f2594573d7af605b97e487bd3e3ddc8b2283eacdd0f48abc3e68cc6" }, "downloads": -1, "filename": "pyramid_appengine-0.8.5.tar.gz", "has_sig": false, "md5_digest": "f2490b0eff453aecf99168c7a241c106", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80759, "upload_time": "2015-02-09T13:44:25", "url": "https://files.pythonhosted.org/packages/2d/31/56ae408b04b21cce6659776117910fe7a199138cb5a13d84254cdbc27c54/pyramid_appengine-0.8.5.tar.gz" } ] }