1 Features 2 ======== 3 4 Testing 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 17 Server 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 25 Dispatching 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 40 Web 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 62 Tools 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 86 Authentication 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 104 Debugging 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 128 Other 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