{ "info": { "author": "Steven Arcangeli", "author_email": "arcangeli07@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Pyramid", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: Internet :: WWW/HTTP", "Topic :: Utilities" ], "description": "Pyramid Duh\n===========\n:Master Build: |build|_ |coverage|_\n:0.1 Build: |build-0.1|_ |coverage-0.1|_\n:Documentation: http://pyramid_duh.readthedocs.org/\n:Downloads: http://pypi.python.org/pypi/pyramid_duh\n:Source: https://github.com/stevearc/pyramid_duh\n\n.. |build| image:: https://travis-ci.org/stevearc/pyramid_duh.png?branch=master\n.. _build: https://travis-ci.org/stevearc/pyramid_duh\n.. |coverage| image:: https://coveralls.io/repos/stevearc/pyramid_duh/badge.png?branch=master\n.. _coverage: https://coveralls.io/r/stevearc/pyramid_duh?branch=master\n\n.. |build-0.1| image:: https://travis-ci.org/stevearc/pyramid_duh.png?branch=0.1\n.. _build-0.1: https://travis-ci.org/stevearc/pyramid_duh\n.. |coverage-0.1| image:: https://coveralls.io/repos/stevearc/pyramid_duh/badge.png?branch=0.1\n.. _coverage-0.1: https://coveralls.io/r/stevearc/pyramid_duh?branch=0.1\n\nThis is just a collection of utilities that I found myself putting into *every\nsingle* pyramid project I made. So now they're all in one place.\n\nHere's a quick taste.\n\nDon't do this::\n\n def register_user(request):\n username = request.POST['username']\n password = request.POST['password']\n birthdate = request.POST['birthdate']\n\nDo this::\n\n @argify(birthdate=date)\n def register_user(request, username, password, birthdate):\n ...\n\nWhat urls does this match?\n\n::\n\n @view_config(context=Root, name='package')\n def get_or_list_packages(request):\n ...\n\nWell, it matches\n\n* ``/package``\n* ``/package/``\n* ``/package/1234``\n* ``/package/wait/hold/on``\n* ``/package/this/seems/confusing``\n\nWhaaaat? Let's fix that::\n\n @view_config(context=Root, name='package', subpath=())\n def list_packages(request):\n # return a list of packages\n\n @view_config(context=Root, name='package', subpath=('id/*')\n def get_package(request):\n package_id = request.named_subpaths['id']\n # fetch a single package\n\nThe first one matches\n\n* ``/package``\n* ``/package/``\n\nThe second matches\n\n* ``/package/*``\n* ``/package/*/``\n\nBut that still seems sloppy. You *demand* consistency!\n\n::\n\n @view_config(context=Root, name='package', subpath=())\n @addslash\n def list_packages(request):\n # return a list of packages\n\n @view_config(context=Root, name='package', subpath=('id/*')\n @addslash\n def get_package(request):\n package_id = request.named_subpaths['id']\n # fetch a single package\n\nNow it's just ``/package/`` and ``/package/*/``\n\nThat's the sales pitch. Read the docs for more details.\n\n\nChangelog\n=========\n\n0.1.2\n-----\n* Bug fix: Fix potential timezone issue when converting unix time to datetime\n* Using the 'six' library for python 2/3 compatibility\n\n0.1.1\n-----\n* Bug fix: IStaticResource fails to look up self.request if nested 2-deep\n* Bug fix: Name collisions with version_helper.py\n* Bug fix: Subpath glob matching always respects case\n* Feature: @argify works on view classes\n* Feature: @argify can inject types that consume multiple parameters\n* Feature: Parameter types can be a dotted path\n\n0.1.0\n-----\n* Package released into the wild", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pyramid-duh.readthedocs.org/", "keywords": "pyramid util utility", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pyramid_duh", "package_url": "https://pypi.org/project/pyramid_duh/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyramid_duh/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pyramid-duh.readthedocs.org/" }, "release_url": "https://pypi.org/project/pyramid_duh/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Useful utilities for every pyramid app", "version": "0.1.2" }, "last_serial": 1086275, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "26057cb7ebda9d85ee549009756c9afb", "sha256": "23be49db66764cba74171457a98b4b117e8820e6cf855b7632ee753105fd5513" }, "downloads": -1, "filename": "pyramid_duh-0.1.0.tar.gz", "has_sig": false, "md5_digest": "26057cb7ebda9d85ee549009756c9afb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17255, "upload_time": "2014-01-03T08:08:22", "url": "https://files.pythonhosted.org/packages/25/3a/d9660dcb2af4c1679adf37644456130d900332b9ffe311165360233d008d/pyramid_duh-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5e889e699cf1ced6ee4fac88a1275739", "sha256": "ea130469f5d29aac075bca6c2ae2a3833f4c4b156c189169ddd4c077b30a1646" }, "downloads": -1, "filename": "pyramid_duh-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5e889e699cf1ced6ee4fac88a1275739", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10115, "upload_time": "2014-01-19T10:08:13", "url": "https://files.pythonhosted.org/packages/66/f4/dc5463f9a8db528296c77f832f90dc41253859dc9c3ef2decbd457a87ae1/pyramid_duh-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "9e77df8c1297a47b0cde9359c252934e", "sha256": "85be0cc256588175df4926077e0da091d918f51dbe7f95a1c7a576845dfc6257" }, "downloads": -1, "filename": "pyramid_duh-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9e77df8c1297a47b0cde9359c252934e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13088, "upload_time": "2014-05-09T05:05:06", "url": "https://files.pythonhosted.org/packages/1a/46/18ede3d6d841714f5f730b8ccf182659014d939f1976ce8980445b49ceae/pyramid_duh-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcadce0426a8da8b5d1cf07e3357f1f5", "sha256": "347b60daaaa7ca52fefb262f2fb1bc924528aeca15aeea07e15a9fd272168b06" }, "downloads": -1, "filename": "pyramid_duh-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fcadce0426a8da8b5d1cf07e3357f1f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10991, "upload_time": "2014-05-09T05:05:03", "url": "https://files.pythonhosted.org/packages/63/77/a0125cfeaedcfebbfd7d4269dafc14e2c1a7b4cd9d35a20ed279081daa10/pyramid_duh-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9e77df8c1297a47b0cde9359c252934e", "sha256": "85be0cc256588175df4926077e0da091d918f51dbe7f95a1c7a576845dfc6257" }, "downloads": -1, "filename": "pyramid_duh-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9e77df8c1297a47b0cde9359c252934e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13088, "upload_time": "2014-05-09T05:05:06", "url": "https://files.pythonhosted.org/packages/1a/46/18ede3d6d841714f5f730b8ccf182659014d939f1976ce8980445b49ceae/pyramid_duh-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcadce0426a8da8b5d1cf07e3357f1f5", "sha256": "347b60daaaa7ca52fefb262f2fb1bc924528aeca15aeea07e15a9fd272168b06" }, "downloads": -1, "filename": "pyramid_duh-0.1.2.tar.gz", "has_sig": false, "md5_digest": "fcadce0426a8da8b5d1cf07e3357f1f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10991, "upload_time": "2014-05-09T05:05:03", "url": "https://files.pythonhosted.org/packages/63/77/a0125cfeaedcfebbfd7d4269dafc14e2c1a7b4cd9d35a20ed279081daa10/pyramid_duh-0.1.2.tar.gz" } ] }