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