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