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``