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