1Paste provides several pieces of "middleware" (or filters) that can be nested 2to build web applications. Each piece of middleware uses the WSGI (`PEP 333`_) 3interface, and should be compatible with other middleware based on those 4interfaces. 5 6.. _PEP 333: http://www.python.org/dev/peps/pep-0333.html 7 8* `Paste project at Bitbucket (source code, bug tracker) 9 <https://bitbucket.org/ianb/paste/>`_ 10* `Paste on the Python Cheeseshop (PyPI) 11 <https://pypi.python.org/pypi/Paste>`_ 12* `Paste documentation 13 <http://pythonpaste.org/>`_ 14 15See also: 16 17* `PasteDeploy <http://pythonpaste.org/deploy/>`_ 18* `PasteScript <http://pythonpaste.org/script/>`_ 19* `WebTest <http://webtest.pythonpaste.org/>`_ 20* `WebOb <http://docs.webob.org/>`_ 21 22Includes these features... 23 24Testing 25------- 26 27* A fixture for testing WSGI applications conveniently and in-process, 28 in ``paste.fixture`` 29 30* A fixture for testing command-line applications, also in 31 ``paste.fixture`` 32 33* Check components for WSGI-compliance in ``paste.lint`` 34 35Dispatching 36----------- 37 38* Chain and cascade WSGI applications (returning the first non-error 39 response) in ``paste.cascade`` 40 41* Dispatch to several WSGI applications based on URL prefixes, in 42 ``paste.urlmap`` 43 44* Allow applications to make subrequests and forward requests 45 internally, in ``paste.recursive`` 46 47Web Application 48--------------- 49 50* Run CGI programs as WSGI applications in ``paste.cgiapp`` 51 52* Traverse files and load WSGI applications from ``.py`` files (or 53 static files), in ``paste.urlparser`` 54 55* Serve static directories of files, also in ``paste.urlparser``; also 56 in that module serving from Egg resources using ``pkg_resources``. 57 58Tools 59----- 60 61* Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them 62 into proper responses in ``paste.httpexceptions`` 63 64* Several authentication techniques, including HTTP (Basic and 65 Digest), signed cookies, and CAS single-signon, in the 66 ``paste.auth`` package. 67 68* Create sessions in ``paste.session`` and ``paste.flup_session`` 69 70* Gzip responses in ``paste.gzip`` 71 72* A wide variety of routines for manipulating WSGI requests and 73 producing responses, in ``paste.request``, ``paste.response`` and 74 ``paste.wsgilib`` 75 76Debugging Filters 77----------------- 78 79* Catch (optionally email) errors with extended tracebacks (using 80 Zope/ZPT conventions) in ``paste.exceptions`` 81 82* Catch errors presenting a `cgitb 83 <http://docs.python.org/2/library/cgitb.html>`_-based 84 output, in ``paste.cgitb_catcher``. 85 86* Profile each request and append profiling information to the HTML, 87 in ``paste.debug.profile`` 88 89* Capture ``print`` output and present it in the browser for 90 debugging, in ``paste.debug.prints`` 91 92* Validate all HTML output from applications using the `WDG Validator 93 <http://www.htmlhelp.com/tools/validator/>`_, appending any errors 94 or warnings to the page, in ``paste.debug.wdg_validator`` 95 96Other Tools 97----------- 98 99* A file monitor to allow restarting the server when files have been 100 updated (for automatic restarting when editing code) in 101 ``paste.reloader`` 102 103* A class for generating and traversing URLs, and creating associated 104 HTML code, in ``paste.url`` 105 106The official development repo is at https://bitbucket.org/ianb/paste. 107 108For the latest changes see the `news file 109<http://pythonpaste.org/news.html>`_. 110