| Features |
| ======== |
| |
| Testing |
| ------- |
| |
| * A fixture for testing WSGI applications conveniently and in-process, |
| in :class:`paste.fixture.TestApp` |
| |
| * A fixture for testing command-line applications, also in |
| :class:`paste.fixture.TestFileEnvironment` |
| |
| * Check components for WSGI-compliance in :mod:`paste.lint` |
| |
| * Check filesystem changes, with :mod:`paste.debug.fsdiff` |
| |
| Server |
| ------ |
| |
| * A threaded HTTP server in :mod:`paste.httpserver` |
| |
| * A tool for seeing and killing errant threads in the HTTP server, in |
| :mod:`paste.debug.watchthreads` |
| |
| Dispatching |
| ----------- |
| |
| * Chain and cascade WSGI applications (returning the first non-error |
| response) in :mod:`paste.cascade` |
| |
| * Dispatch to several WSGI applications based on URL prefixes, in |
| :mod:`paste.urlmap` |
| |
| * Allow applications to make subrequests and forward requests |
| internally, in :mod:`paste.recursive` |
| |
| * Redirect error pages (e.g., 404 Not Found) to custom error pages, in |
| :mod:`paste.errordocument`. |
| |
| Web Application |
| --------------- |
| |
| * Easily deal with incoming requests and sending a response in |
| :mod:`paste.wsgiwrappers` |
| |
| * Work directly with the WSGI environment in :mod:`paste.request` |
| |
| * Run CGI programs as WSGI applications in :mod:`paste.cgiapp` |
| |
| * Traverse files and load WSGI applications from ``.py`` files (or |
| static files), in :mod:`paste.urlparser` |
| |
| * Serve static directories of files, also in :mod:`paste.urlparser`; also |
| serve using the Setuptools ``pkg_resources`` resource API. |
| |
| * Proxy to other servers, treating external HTTP servers as WSGI |
| applications, in :mod:`paste.proxy`. |
| |
| * Serve files (with support for ``If-Modified-Since``, etc) in |
| :mod:`paste.fileapp` |
| |
| Tools |
| ----- |
| |
| * Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them |
| into proper responses in :mod:`paste.httpexceptions` |
| |
| * Manage HTTP header fields with :mod:`paste.httpheaders` |
| |
| * Handle authentication/identification of requests in :mod:`paste.auth` |
| |
| * Create sessions in :mod:`paste.session` and :mod:`paste.flup_session` |
| |
| * Gzip responses in :mod:`paste.gzipper` |
| |
| * A wide variety of routines for manipulating WSGI requests and |
| producing responses, in :mod:`paste.request`, :mod:`paste.response` and |
| :mod:`paste.wsgilib`. |
| |
| * Create Apache-style logs in :mod:`paste.translogger` |
| |
| * Handy request and response wrappers in :mod:`paste.wsgiwrappers` |
| |
| * Handling of request-local module globals sanely in :mod:`paste.registry` |
| |
| Authentication |
| -------------- |
| |
| * Authentication using cookies in :mod:`paste.auth.cookie` and |
| :mod:`paste.auth.auth_tkt`; login form in :mod:`paste.auth.form` |
| |
| * Authentication using `OpenID <http://openid.net/>`_ in |
| :mod:`paste.auth.open_id`, using `CAS |
| <http://www.ja-sig.org/products/cas/>`_ in :mod:`paste.auth.cas` |
| |
| * HTTP authentication in :mod:`paste.auth.basic` and |
| :mod:`paste.auth.digest` |
| |
| * Dispatch to different authentication methods based on User-Agent, in |
| :mod:`paste.auth.multi` |
| |
| * Grant roles based on IP addresses, in :mod:`paste.auth.grantip` |
| |
| Debugging Filters |
| ----------------- |
| |
| * Catch (optionally email) errors with extended tracebacks (using |
| Zope/ZPT conventions) in :mod:`paste.exceptions` |
| |
| * During debugging, show tracebacks with information about each stack |
| frame, including an interactive prompt that runs in the individual |
| stack frames, in :mod:`paste.evalexception`. |
| |
| * Catch errors presenting a `cgitb |
| <http://python.org/doc/current/lib/module-cgitb.html>`_-based |
| output, in :mod:`paste.cgitb_catcher`. |
| |
| * Profile each request and append profiling information to the HTML, |
| in :mod:`paste.debug.profile` |
| |
| * Capture ``print`` output and present it in the browser for |
| debugging, in :mod:`paste.debug.prints` |
| |
| * Validate all HTML output from applications using the `WDG Validator |
| <http://www.htmlhelp.com/tools/validator/>`_, appending any errors |
| or warnings to the page, in :mod:`paste.debug.wdg_validator` |
| |
| Other Tools |
| ----------- |
| |
| * A file monitor to allow restarting the server when files have been |
| updated (for automatic restarting when editing code) in |
| :mod:`paste.reloader` |
| |
| * A class for generating and traversing URLs, and creating associated |
| HTML code, in :mod:`paste.url` |
| |
| * A small templating language (for internal use) in |
| :mod:`paste.util.template` |
| |
| * A class to help with loops in templates, in :mod:`paste.util.looper` |
| |
| * Import modules and objects given a string, in |
| :mod:`paste.util.import_string` |
| |
| * Ordered dictionary that can have multiple values with the same key, |
| in :mod:`paste.util.multidict` |
| |