1 Paste provides several pieces of "middleware" (or filters) that can be nested 2 to build web applications. Each piece of middleware uses the WSGI (`PEP 333`_) 3 interface, and should be compatible with other middleware based on those 4 interfaces. 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 15 See 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 22 Includes these features... 23 24 Testing 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 35 Dispatching 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 47 Web 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 58 Tools 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 76 Debugging 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 96 Other 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 106 The official development repo is at https://bitbucket.org/ianb/paste. 107 108 For the latest changes see the `news file 109 <http://pythonpaste.org/news.html>`_. 110