• A fixture for testing WSGI applications conveniently and in-process, in paste.fixture.TestApp

  • A fixture for testing command-line applications, also in paste.fixture.TestFileEnvironment

  • Check components for WSGI-compliance in paste.lint

  • Check filesystem changes, with paste.debug.fsdiff


  • A threaded HTTP server in paste.httpserver

  • A tool for seeing and killing errant threads in the HTTP server, in paste.debug.watchthreads


  • 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


  • 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 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 traceback 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