1Features 2======== 3 4Testing 5------- 6 7* A fixture for testing WSGI applications conveniently and in-process, 8 in :class:`paste.fixture.TestApp` 9 10* A fixture for testing command-line applications, also in 11 :class:`paste.fixture.TestFileEnvironment` 12 13* Check components for WSGI-compliance in :mod:`paste.lint` 14 15* Check filesystem changes, with :mod:`paste.debug.fsdiff` 16 17Server 18------ 19 20* A threaded HTTP server in :mod:`paste.httpserver` 21 22* A tool for seeing and killing errant threads in the HTTP server, in 23 :mod:`paste.debug.watchthreads` 24 25Dispatching 26----------- 27 28* Chain and cascade WSGI applications (returning the first non-error 29 response) in :mod:`paste.cascade` 30 31* Dispatch to several WSGI applications based on URL prefixes, in 32 :mod:`paste.urlmap` 33 34* Allow applications to make subrequests and forward requests 35 internally, in :mod:`paste.recursive` 36 37* Redirect error pages (e.g., 404 Not Found) to custom error pages, in 38 :mod:`paste.errordocument`. 39 40Web Application 41--------------- 42 43* Easily deal with incoming requests and sending a response in 44 :mod:`paste.wsgiwrappers` 45 46* Work directly with the WSGI environment in :mod:`paste.request` 47 48* Run CGI programs as WSGI applications in :mod:`paste.cgiapp` 49 50* Traverse files and load WSGI applications from ``.py`` files (or 51 static files), in :mod:`paste.urlparser` 52 53* Serve static directories of files, also in :mod:`paste.urlparser`; also 54 serve using the Setuptools ``pkg_resources`` resource API. 55 56* Proxy to other servers, treating external HTTP servers as WSGI 57 applications, in :mod:`paste.proxy`. 58 59* Serve files (with support for ``If-Modified-Since``, etc) in 60 :mod:`paste.fileapp` 61 62Tools 63----- 64 65* Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them 66 into proper responses in :mod:`paste.httpexceptions` 67 68* Manage HTTP header fields with :mod:`paste.httpheaders` 69 70* Handle authentication/identification of requests in :mod:`paste.auth` 71 72* Create sessions in :mod:`paste.session` and :mod:`paste.flup_session` 73 74* Gzip responses in :mod:`paste.gzipper` 75 76* A wide variety of routines for manipulating WSGI requests and 77 producing responses, in :mod:`paste.request`, :mod:`paste.response` and 78 :mod:`paste.wsgilib`. 79 80* Create Apache-style logs in :mod:`paste.translogger` 81 82* Handy request and response wrappers in :mod:`paste.wsgiwrappers` 83 84* Handling of request-local module globals sanely in :mod:`paste.registry` 85 86Authentication 87-------------- 88 89* Authentication using cookies in :mod:`paste.auth.cookie` and 90 :mod:`paste.auth.auth_tkt`; login form in :mod:`paste.auth.form` 91 92* Authentication using `OpenID <http://openid.net/>`_ in 93 :mod:`paste.auth.open_id`, using `CAS 94 <http://www.ja-sig.org/products/cas/>`_ in :mod:`paste.auth.cas` 95 96* HTTP authentication in :mod:`paste.auth.basic` and 97 :mod:`paste.auth.digest` 98 99* Dispatch to different authentication methods based on User-Agent, in 100 :mod:`paste.auth.multi` 101 102* Grant roles based on IP addresses, in :mod:`paste.auth.grantip` 103 104Debugging Filters 105----------------- 106 107* Catch (optionally email) errors with extended tracebacks (using 108 Zope/ZPT conventions) in :mod:`paste.exceptions` 109 110* During debugging, show tracebacks with information about each stack 111 frame, including an interactive prompt that runs in the individual 112 stack frames, in :mod:`paste.evalexception`. 113 114* Catch errors presenting a `cgitb 115 <http://python.org/doc/current/lib/module-cgitb.html>`_-based 116 output, in :mod:`paste.cgitb_catcher`. 117 118* Profile each request and append profiling information to the HTML, 119 in :mod:`paste.debug.profile` 120 121* Capture ``print`` output and present it in the browser for 122 debugging, in :mod:`paste.debug.prints` 123 124* Validate all HTML output from applications using the `WDG Validator 125 <http://www.htmlhelp.com/tools/validator/>`_, appending any errors 126 or warnings to the page, in :mod:`paste.debug.wdg_validator` 127 128Other Tools 129----------- 130 131* A file monitor to allow restarting the server when files have been 132 updated (for automatic restarting when editing code) in 133 :mod:`paste.reloader` 134 135* A class for generating and traversing URLs, and creating associated 136 HTML code, in :mod:`paste.url` 137 138* A small templating language (for internal use) in 139 :mod:`paste.util.template` 140 141* A class to help with loops in templates, in :mod:`paste.util.looper` 142 143* Import modules and objects given a string, in 144 :mod:`paste.util.import_string` 145 146* Ordered dictionary that can have multiple values with the same key, 147 in :mod:`paste.util.multidict` 148 149