<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Features — Paste v1.7.5.1 documentation</title> <link rel="stylesheet" href="_static/default.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '#', VERSION: '1.7.5.1', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <link rel="top" title="Paste v1.7.5.1 documentation" href="index.html" /> <link rel="next" title="Python Paste Developer Guide" href="DeveloperGuidelines.html" /> <link rel="prev" title="The Paste HTTP Server Thread Pool" href="paste-httpserver-threadpool.html" /> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="DeveloperGuidelines.html" title="Python Paste Developer Guide" accesskey="N">next</a> |</li> <li class="right" > <a href="paste-httpserver-threadpool.html" title="The Paste HTTP Server Thread Pool" accesskey="P">previous</a> |</li> <li><a href="index.html">Paste v1.7.5.1 documentation</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="features"> <h1>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h1> <div class="section" id="testing"> <h2>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>A fixture for testing WSGI applications conveniently and in-process, in <tt class="xref docutils literal"><span class="pre">paste.fixture.TestApp</span></tt></li> <li>A fixture for testing command-line applications, also in <tt class="xref docutils literal"><span class="pre">paste.fixture.TestFileEnvironment</span></tt></li> <li>Check components for WSGI-compliance in <tt class="xref docutils literal"><span class="pre">paste.lint</span></tt></li> <li>Check filesystem changes, with <tt class="xref docutils literal"><span class="pre">paste.debug.fsdiff</span></tt></li> </ul> </div> <div class="section" id="server"> <h2>Server<a class="headerlink" href="#server" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>A threaded HTTP server in <tt class="xref docutils literal"><span class="pre">paste.httpserver</span></tt></li> <li>A tool for seeing and killing errant threads in the HTTP server, in <tt class="xref docutils literal"><span class="pre">paste.debug.watchthreads</span></tt></li> </ul> </div> <div class="section" id="dispatching"> <h2>Dispatching<a class="headerlink" href="#dispatching" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Chain and cascade WSGI applications (returning the first non-error response) in <tt class="xref docutils literal"><span class="pre">paste.cascade</span></tt></li> <li>Dispatch to several WSGI applications based on URL prefixes, in <tt class="xref docutils literal"><span class="pre">paste.urlmap</span></tt></li> <li>Allow applications to make subrequests and forward requests internally, in <tt class="xref docutils literal"><span class="pre">paste.recursive</span></tt></li> <li>Redirect error pages (e.g., 404 Not Found) to custom error pages, in <tt class="xref docutils literal"><span class="pre">paste.errordocument</span></tt>.</li> </ul> </div> <div class="section" id="web-application"> <h2>Web Application<a class="headerlink" href="#web-application" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Easily deal with incoming requests and sending a response in <tt class="xref docutils literal"><span class="pre">paste.wsgiwrappers</span></tt></li> <li>Work directly with the WSGI environment in <tt class="xref docutils literal"><span class="pre">paste.request</span></tt></li> <li>Run CGI programs as WSGI applications in <tt class="xref docutils literal"><span class="pre">paste.cgiapp</span></tt></li> <li>Traverse files and load WSGI applications from <tt class="docutils literal"><span class="pre">.py</span></tt> files (or static files), in <tt class="xref docutils literal"><span class="pre">paste.urlparser</span></tt></li> <li>Serve static directories of files, also in <tt class="xref docutils literal"><span class="pre">paste.urlparser</span></tt>; also serve using the Setuptools <tt class="docutils literal"><span class="pre">pkg_resources</span></tt> resource API.</li> <li>Proxy to other servers, treating external HTTP servers as WSGI applications, in <tt class="xref docutils literal"><span class="pre">paste.proxy</span></tt>.</li> <li>Serve files (with support for <tt class="docutils literal"><span class="pre">If-Modified-Since</span></tt>, etc) in <tt class="xref docutils literal"><span class="pre">paste.fileapp</span></tt></li> </ul> </div> <div class="section" id="tools"> <h2>Tools<a class="headerlink" href="#tools" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Catch HTTP-related exceptions (e.g., <tt class="docutils literal"><span class="pre">HTTPNotFound</span></tt>) and turn them into proper responses in <tt class="xref docutils literal"><span class="pre">paste.httpexceptions</span></tt></li> <li>Manage HTTP header fields with <tt class="xref docutils literal"><span class="pre">paste.httpheaders</span></tt></li> <li>Handle authentication/identification of requests in <tt class="xref docutils literal"><span class="pre">paste.auth</span></tt></li> <li>Create sessions in <tt class="xref docutils literal"><span class="pre">paste.session</span></tt> and <tt class="xref docutils literal"><span class="pre">paste.flup_session</span></tt></li> <li>Gzip responses in <tt class="xref docutils literal"><span class="pre">paste.gzipper</span></tt></li> <li>A wide variety of routines for manipulating WSGI requests and producing responses, in <tt class="xref docutils literal"><span class="pre">paste.request</span></tt>, <tt class="xref docutils literal"><span class="pre">paste.response</span></tt> and <tt class="xref docutils literal"><span class="pre">paste.wsgilib</span></tt>.</li> <li>Create Apache-style logs in <tt class="xref docutils literal"><span class="pre">paste.translogger</span></tt></li> <li>Handy request and response wrappers in <tt class="xref docutils literal"><span class="pre">paste.wsgiwrappers</span></tt></li> <li>Handling of request-local module globals sanely in <tt class="xref docutils literal"><span class="pre">paste.registry</span></tt></li> </ul> </div> <div class="section" id="authentication"> <h2>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Authentication using cookies in <tt class="xref docutils literal"><span class="pre">paste.auth.cookie</span></tt> and <tt class="xref docutils literal"><span class="pre">paste.auth.auth_tkt</span></tt>; login form in <tt class="xref docutils literal"><span class="pre">paste.auth.form</span></tt></li> <li>Authentication using <a class="reference external" href="http://openid.net/">OpenID</a> in <tt class="xref docutils literal"><span class="pre">paste.auth.open_id</span></tt>, using <a class="reference external" href="http://www.ja-sig.org/products/cas/">CAS</a> in <tt class="xref docutils literal"><span class="pre">paste.auth.cas</span></tt></li> <li>HTTP authentication in <tt class="xref docutils literal"><span class="pre">paste.auth.basic</span></tt> and <tt class="xref docutils literal"><span class="pre">paste.auth.digest</span></tt></li> <li>Dispatch to different authentication methods based on User-Agent, in <tt class="xref docutils literal"><span class="pre">paste.auth.multi</span></tt></li> <li>Grant roles based on IP addresses, in <tt class="xref docutils literal"><span class="pre">paste.auth.grantip</span></tt></li> </ul> </div> <div class="section" id="debugging-filters"> <h2>Debugging Filters<a class="headerlink" href="#debugging-filters" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>Catch (optionally email) errors with extended tracebacks (using Zope/ZPT conventions) in <tt class="xref docutils literal"><span class="pre">paste.exceptions</span></tt></li> <li>During debugging, show tracebacks with information about each stack frame, including an interactive prompt that runs in the individual stack frames, in <tt class="xref docutils literal"><span class="pre">paste.evalexception</span></tt>.</li> <li>Catch errors presenting a <a class="reference external" href="http://python.org/doc/current/lib/module-cgitb.html">cgitb</a>-based output, in <tt class="xref docutils literal"><span class="pre">paste.cgitb_catcher</span></tt>.</li> <li>Profile each request and append profiling information to the HTML, in <tt class="xref docutils literal"><span class="pre">paste.debug.profile</span></tt></li> <li>Capture <tt class="docutils literal"><span class="pre">print</span></tt> output and present it in the browser for debugging, in <tt class="xref docutils literal"><span class="pre">paste.debug.prints</span></tt></li> <li>Validate all HTML output from applications using the <a class="reference external" href="http://www.htmlhelp.com/tools/validator/">WDG Validator</a>, appending any errors or warnings to the page, in <tt class="xref docutils literal"><span class="pre">paste.debug.wdg_validator</span></tt></li> </ul> </div> <div class="section" id="other-tools"> <h2>Other Tools<a class="headerlink" href="#other-tools" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li>A file monitor to allow restarting the server when files have been updated (for automatic restarting when editing code) in <tt class="xref docutils literal"><span class="pre">paste.reloader</span></tt></li> <li>A class for generating and traversing URLs, and creating associated HTML code, in <tt class="xref docutils literal"><span class="pre">paste.url</span></tt></li> <li>A small templating language (for internal use) in <tt class="xref docutils literal"><span class="pre">paste.util.template</span></tt></li> <li>A class to help with loops in templates, in <tt class="xref docutils literal"><span class="pre">paste.util.looper</span></tt></li> <li>Import modules and objects given a string, in <tt class="xref docutils literal"><span class="pre">paste.util.import_string</span></tt></li> <li>Ordered dictionary that can have multiple values with the same key, in <tt class="xref docutils literal"><span class="pre">paste.util.multidict</span></tt></li> </ul> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="index.html">Table Of Contents</a></h3> <ul> <li><a class="reference external" href="#">Features</a><ul> <li><a class="reference external" href="#testing">Testing</a></li> <li><a class="reference external" href="#server">Server</a></li> <li><a class="reference external" href="#dispatching">Dispatching</a></li> <li><a class="reference external" href="#web-application">Web Application</a></li> <li><a class="reference external" href="#tools">Tools</a></li> <li><a class="reference external" href="#authentication">Authentication</a></li> <li><a class="reference external" href="#debugging-filters">Debugging Filters</a></li> <li><a class="reference external" href="#other-tools">Other Tools</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="paste-httpserver-threadpool.html" title="previous chapter">The Paste HTTP Server Thread Pool</a></p> <h4>Next topic</h4> <p class="topless"><a href="DeveloperGuidelines.html" title="next chapter">Python Paste Developer Guide</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="_sources/developer-features.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="search.html" method="get"> <input type="text" name="q" size="18" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="DeveloperGuidelines.html" title="Python Paste Developer Guide" >next</a> |</li> <li class="right" > <a href="paste-httpserver-threadpool.html" title="The Paste HTTP Server Thread Pool" >previous</a> |</li> <li><a href="index.html">Paste v1.7.5.1 documentation</a> »</li> </ul> </div> <div class="footer"> © Copyright 2008, Ian Bicking. Last updated on Mar 31, 2011. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5. </div> </body> </html>