Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-release > by-pkgid > 6b146ae60d64f7773c8cb4a1f7ef976a > files > 499

python3-paste-2.0.2-1.mga6.noarch.rpm

<!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>News &mdash; Paste 1.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_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="top" title="Paste 1.7.5.1 documentation" href="index.html" />
    <link rel="next" title="The Future Of Paste" href="future.html" />
    <link rel="prev" title="Python Paste" href="index.html" />

   
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">

<link rel="stylesheet" type="text/css"
 href="_static/paste.css.html">

  </head>
  <body role="document">  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="news">
<h1><a class="toc-backref" href="#id40">News</a><a class="headerlink" href="#news" title="Permalink to this headline">¶</a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#news" id="id40">News</a><ul>
<li><a class="reference internal" href="#id1" id="id41">2.0.2</a></li>
<li><a class="reference internal" href="#id2" id="id42">2.0.1</a></li>
<li><a class="reference internal" href="#id3" id="id43">2.0</a></li>
<li><a class="reference internal" href="#id4" id="id44">1.7.5.1</a></li>
<li><a class="reference internal" href="#id5" id="id45">1.7.5</a></li>
<li><a class="reference internal" href="#id6" id="id46">1.7.4</a></li>
<li><a class="reference internal" href="#id7" id="id47">1.7.3.1</a></li>
<li><a class="reference internal" href="#id8" id="id48">1.7.3</a></li>
<li><a class="reference internal" href="#id9" id="id49">1.7.2</a></li>
<li><a class="reference internal" href="#id10" id="id50">1.7.1</a></li>
<li><a class="reference internal" href="#id11" id="id51">1.7</a></li>
<li><a class="reference internal" href="#id12" id="id52">1.6.1</a></li>
<li><a class="reference internal" href="#id13" id="id53">1.6</a></li>
<li><a class="reference internal" href="#id14" id="id54">1.5.1</a></li>
<li><a class="reference internal" href="#id15" id="id55">1.5</a></li>
<li><a class="reference internal" href="#id16" id="id56">1.4.2</a></li>
<li><a class="reference internal" href="#id17" id="id57">1.4.1</a></li>
<li><a class="reference internal" href="#id18" id="id58">1.4</a></li>
<li><a class="reference internal" href="#id19" id="id59">1.3</a></li>
<li><a class="reference internal" href="#id20" id="id60">1.2.1</a></li>
<li><a class="reference internal" href="#id21" id="id61">1.2</a><ul>
<li><a class="reference internal" href="#in-paste-wsgiwrappers" id="id62">In paste.wsgiwrappers</a></li>
<li><a class="reference internal" href="#in-paste-httpserver" id="id63">In paste.httpserver</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id22" id="id64">1.1.1</a></li>
<li><a class="reference internal" href="#id23" id="id65">1.1</a></li>
<li><a class="reference internal" href="#id24" id="id66">1.0</a></li>
<li><a class="reference internal" href="#id25" id="id67">0.9.9</a></li>
<li><a class="reference internal" href="#id26" id="id68">0.9.8</a></li>
<li><a class="reference internal" href="#id27" id="id69">0.9.7</a></li>
<li><a class="reference internal" href="#id28" id="id70">0.9.6</a></li>
<li><a class="reference internal" href="#id29" id="id71">0.9.5</a></li>
<li><a class="reference internal" href="#id30" id="id72">0.9.4</a></li>
<li><a class="reference internal" href="#id31" id="id73">0.9.3</a></li>
<li><a class="reference internal" href="#id32" id="id74">0.9.2</a></li>
<li><a class="reference internal" href="#id33" id="id75">0.9.1</a></li>
<li><a class="reference internal" href="#id34" id="id76">0.9</a></li>
<li><a class="reference internal" href="#id35" id="id77">0.5</a></li>
<li><a class="reference internal" href="#id36" id="id78">0.4.1</a></li>
<li><a class="reference internal" href="#id37" id="id79">0.4</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id1">
<h2><a class="toc-backref" href="#id41">2.0.2</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>#22: Fix improper commas in request headers in wsgi_environ (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/22/fix-improper-commas-in-request-headers-in">https://bitbucket.org/ianb/paste/pull-request/22/fix-improper-commas-in-request-headers-in</a>)
Fixes issue #4 (&#8220;WSGI environ totally borked&#8221;) (<a class="reference external" href="https://bitbucket.org/ianb/paste/issue/4/wsgi-environ-totally-borked">https://bitbucket.org/ianb/paste/issue/4/wsgi-environ-totally-borked</a>)</li>
<li>#24: test_wsgirequest_charset: Use UTF-8 instead of iso-8859-1 (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/24/test_wsgirequest_charset-use-utf-8-instead">https://bitbucket.org/ianb/paste/pull-request/24/test_wsgirequest_charset-use-utf-8-instead</a>)
Fixes issue #7 (&#8220;Python 3 test failure&#8221;) (<a class="reference external" href="https://bitbucket.org/ianb/paste/issue/7/python-3-test-failure">https://bitbucket.org/ianb/paste/issue/7/python-3-test-failure</a>)</li>
<li>#23: Replace cgi.parse_qsl w/ six.moves.urllib.parse.parse_qsl (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/23/replace-cgiparse_qsl-w">https://bitbucket.org/ianb/paste/pull-request/23/replace-cgiparse_qsl-w</a>)
Fixes issue #8 (&#8220;cgi.parse_qsl is pending deprecation&#8221;) (<a class="reference external" href="https://bitbucket.org/ianb/paste/issue/8/cgiparse_qsl-is-pending-deprecation">https://bitbucket.org/ianb/paste/issue/8/cgiparse_qsl-is-pending-deprecation</a>)</li>
<li>#20: Escape CGI environment variables in HTTP 404 responses (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/20/escape-cgi-environment-variables-in-http">https://bitbucket.org/ianb/paste/pull-request/20/escape-cgi-environment-variables-in-http</a>)</li>
<li>#6: Add HTTP exception for new code 429 &#8220;Too Many Requests&#8221; (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/6/add-http-exception-for-new-code-429-too">https://bitbucket.org/ianb/paste/pull-request/6/add-http-exception-for-new-code-429-too</a>)</li>
<li>#25: replace <code class="docutils literal"><span class="pre">has_key</span></code> method to <code class="docutils literal"><span class="pre">in</span></code> operator #9 (<a class="reference external" href="https://bitbucket.org/ianb/paste/pull-request/25/replace-has_key-method-to-in-operator-9">https://bitbucket.org/ianb/paste/pull-request/25/replace-has_key-method-to-in-operator-9</a>)
Fixes #9 (&#8220;used methods removed from py3&#8221;) (<a class="reference external" href="https://bitbucket.org/ianb/paste/issue/9/used-methods-removed-from-py3">https://bitbucket.org/ianb/paste/issue/9/used-methods-removed-from-py3</a>)</li>
<li>#5: Invalid error message when the socket is already in use (<a class="reference external" href="https://bitbucket.org/ianb/paste/issue/5/invalid-error-message-when-the-socket-is">https://bitbucket.org/ianb/paste/issue/5/invalid-error-message-when-the-socket-is</a>)</li>
</ul>
</div>
<div class="section" id="id2">
<h2><a class="toc-backref" href="#id42">2.0.1</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fix setup.py for six dependency: move the six dependency from extras_require
to install_requires.</li>
<li>Port paste.proxy to Python 3.</li>
<li>Fix paste.exceptions.serial_number_generator.hash_identifier() on Python 3.</li>
<li>Fix paste.util.threadedprint.uninstall(). Rename duplicated uninstall()
function to uninstall_stdin() and fix typo in variable name (_oldstin =&gt;
_oldstdin).</li>
<li>Add README.rst file.</li>
</ul>
</div>
<div class="section" id="id3">
<h2><a class="toc-backref" href="#id43">2.0</a><a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Experimental Python 3 support.</li>
<li>paste now requires the six module.</li>
<li>Drop support of Python 2.5 and older.</li>
<li>Fixed <code class="docutils literal"><span class="pre">egg:Paste#cgi</span></code></li>
<li>In <code class="docutils literal"><span class="pre">paste.httpserver</span></code>: give a 100 Continue response even when the
server has been configured as an HTTP/1.0 server (clients may send
<code class="docutils literal"><span class="pre">Expect:</span> <span class="pre">100-Continue</span></code> before they know the version), and wrap
100 Continue <code class="docutils literal"><span class="pre">environ['wsgi.input']</span></code> files with LimitedLengthFile
just like normal request bodies are wrapped, keeping WSGI
applications from over-reading from the socket.</li>
<li>Fixed parsing of paths beginning with multiple forward slashes.</li>
<li>Add tox.ini to run tests with tox on Python 2.6, 2.7 and 3.4.</li>
</ul>
</div>
<div class="section" id="id4">
<h2><a class="toc-backref" href="#id44">1.7.5.1</a><a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fix bug introduced in <code class="xref py py-mod docutils literal"><span class="pre">paste.auth.auth_tkt</span></code> (with <code class="docutils literal"><span class="pre">url_unquote</span></code>)</li>
</ul>
</div>
<div class="section" id="id5">
<h2><a class="toc-backref" href="#id45">1.7.5</a><a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Won&#8217;t install <code class="docutils literal"><span class="pre">tests/</span></code> directory (also caused installation
problems on some Mac systems).</li>
<li>Fixed problem with gzip middleware and zero-length responses.</li>
<li>Use <code class="docutils literal"><span class="pre">X-Forwarded-For</span></code> header in <code class="xref py py-mod docutils literal"><span class="pre">paste.translogger</span></code></li>
<li>Fixed problems with mimeparse code</li>
<li>Fixed some corner cases with CGI scripts</li>
<li><code class="xref py py-mod docutils literal"><span class="pre">paste.auth.auth_tkt</span></code> will URL-quote usernames, avoiding some
errors with usernames with <code class="docutils literal"><span class="pre">!</span></code> in them.</li>
<li>Improve handling of errors in fetching error pages in
<code class="xref py py-mod docutils literal"><span class="pre">paste.errordocument</span></code>.</li>
</ul>
</div>
<div class="section" id="id6">
<h2><a class="toc-backref" href="#id46">1.7.4</a><a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fix XSS bug (security issue) with not found handlers for
<code class="xref py py-class docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code> and
<code class="xref py py-class docutils literal"><span class="pre">paste.urlmap.URLMap</span></code>.  If you ask for a path with
<code class="docutils literal"><span class="pre">/--&gt;&lt;script&gt;...</span></code> that will be inserted in the error page and can
execute Javascript.  Reported by Tim Wintle with further details
from Georg-Christian Pranschke.</li>
<li>Replaced <code class="xref py py-func docutils literal"><span class="pre">paste.util.mimeparse.desired_match()</span></code></li>
</ul>
</div>
<div class="section" id="id7">
<h2><a class="toc-backref" href="#id47">1.7.3.1</a><a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Removed directory name from 404 errors in
<code class="xref py py-class docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code>.</li>
<li>Fixed packaging to include Javascript and images for
<code class="xref py py-mod docutils literal"><span class="pre">paste.evalexception</span></code></li>
</ul>
</div>
<div class="section" id="id8">
<h2><a class="toc-backref" href="#id48">1.7.3</a><a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>I got a fever and the only prescription is more <code class="xref py py-mod docutils literal"><span class="pre">paste.cowbell</span></code>!</li>
<li>Fix <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> on Python 2.6.</li>
<li>Fix <code class="xref py py-mod docutils literal"><span class="pre">paste.auth.cookie</span></code>, which would insert newlines for long
cookies.</li>
<li><code class="xref py py-mod docutils literal"><span class="pre">paste.util.mimeparse</span></code> parses a single <code class="docutils literal"><span class="pre">*</span></code> in Accept headers
(sent by IE 6).</li>
<li>Fix some problems with the <code class="docutils literal"><span class="pre">wdg_validate</span></code> middleware.</li>
<li>Improvements to <code class="xref py py-mod docutils literal"><span class="pre">paste.auth.auth_tkt</span></code>: add httponly support,
don&#8217;t always aggressively set cookies without the
<code class="docutils literal"><span class="pre">wildcard_cookie</span></code> option.  Also on logout, make cookies expire.</li>
<li>In <code class="xref py py-class docutils literal"><span class="pre">paste.proxy.Proxy</span></code> handle Content-Length of -1.</li>
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.httpexceptions</span></code> avoid some unicode errors.</li>
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> handle <code class="docutils literal"><span class="pre">.read()</span></code> from 100 Continue
properly (because of a typo it was doing a readline).</li>
<li>Update <code class="docutils literal"><span class="pre">paste.util.mimeparse</span></code> from <a class="reference external" href="http://code.google.com/p/mimeparse/">upstream</a>.</li>
</ul>
</div>
<div class="section" id="id9">
<h2><a class="toc-backref" href="#id49">1.7.2</a><a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.proxy</span></code>, added some more headers that are disallowed
in WSGI (e.g., Keep-Alive).  Send Content-Length.  Also fix the
missing query string when using <code class="xref py py-class docutils literal"><span class="pre">paste.proxy.Proxy</span></code>
(<code class="xref py py-class docutils literal"><span class="pre">paste.proxy.TransparentProxy</span></code> already worked).</li>
<li>Make <code class="xref py py-mod docutils literal"><span class="pre">paste.debug.prints</span></code> work with Google App Engine.</li>
<li>Make <code class="docutils literal"><span class="pre">environ['wsgi.input']</span></code> with <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> only
have a <code class="docutils literal"><span class="pre">seek</span></code> method if it is wrapping something with a seek
method (which usually it is not).</li>
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> re-raise KeyboardInterrupt in worker
threads.</li>
<li>Added support for the <code class="docutils literal"><span class="pre">HttpOnly</span></code> Cookie property to
<code class="xref py py-mod docutils literal"><span class="pre">paste.wsgiwrappers</span></code></li>
<li>Added <code class="xref py py-func docutils literal"><span class="pre">paste.reloader.add_file_callback()</span></code>, which lets you watch
files based on a callback.</li>
<li>Quiet Python 2.6 deprecation warnings.</li>
<li>Fix <code class="xref py py-mod docutils literal"><span class="pre">paste.auth.cookie</span></code> generating bad headers.</li>
<li>Added <code class="xref py py-class docutils literal"><span class="pre">paste.reloader.JythonMonitor</span></code> for an experimental,
optimized reloader on Jython.</li>
</ul>
</div>
<div class="section" id="id10">
<h2><a class="toc-backref" href="#id50">1.7.1</a><a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Normalize and make absolute the paths passed to
<code class="xref py py-class docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code> (before passing a
relative-to-cwd path to that class would cause Forbidden errors).</li>
<li>Deprecate <code class="xref py py-func docutils literal"><span class="pre">paste.fixture.setup_module()</span></code></li>
</ul>
</div>
<div class="section" id="id11">
<h2><a class="toc-backref" href="#id51">1.7</a><a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed bug in <code class="xref py py-class docutils literal"><span class="pre">paste.fixture.TestApp</span></code> that would submit forms
with unnamed fields (like an unnamed submit button).  Also made
checkboxes with no explicit <code class="docutils literal"><span class="pre">value</span></code> send <code class="docutils literal"><span class="pre">on</span></code> instead of
<code class="docutils literal"><span class="pre">checked</span></code> (which is what browsers do).</li>
<li>Fixed bug in <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> where
<code class="docutils literal"><span class="pre">environ['wsgi.input'].readline(max_size)</span></code> ignored the max_size
argument, which can lead to large memory usage (from Jakub Stolarski)</li>
<li>Make <code class="xref py py-mod docutils literal"><span class="pre">paste.cascade</span></code> notice sockets that have stopped producing
data.  From Casey Zednick.</li>
<li>In <code class="xref py py-class docutils literal"><span class="pre">paste.fixture.TestApp</span></code> Accept MultiDict values for the
<code class="docutils literal"><span class="pre">params</span></code> argument in requests.  (Anything with a <code class="docutils literal"><span class="pre">.items()</span></code>
method will have its items encoded as the request parameters.)</li>
<li>Fix <code class="xref py py-mod docutils literal"><span class="pre">paste.httpserver</span></code> to allow binding to port 0.</li>
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.auth.auth_tkt</span></code>, set the same cookies (with the same
domains) in <code class="docutils literal"><span class="pre">set_cookie</span></code> as get unset in <code class="docutils literal"><span class="pre">logout_user_cookie</span></code>.</li>
<li>In <code class="xref py py-mod docutils literal"><span class="pre">paste.translogger</span></code> save REQUEST_METHOD in case it gets
overridden somewhere (e.g., when using errordocuments POST would
show up as GET).</li>
<li>Exceptions with unicode messages don&#8217;t cause the collector to fail.</li>
<li>Sometimes <code class="xref py py-class docutils literal"><span class="pre">paste.exceptions.errormiddleware.ErrorMiddleware</span></code>
would not call start_response properly; this is fixed (from Andreas
Kloecker).</li>
<li><code class="xref py py-mod docutils literal"><span class="pre">paste.fixture.TestApp</span></code> can store multiple cookie values
(previously only one cookie was stored; from Andrey Lebedev)</li>
<li><code class="docutils literal"><span class="pre">u''</span> <span class="pre">in</span> <span class="pre">TestApp(app).get('/')</span></code> will work when the body isn&#8217;t ASCII
(before it would give a unicode error).  This problem wasn&#8217;t present
in the recommended <a class="reference external" href="http://pythonpaste.org/webtest/">WebTest</a>.</li>
<li><code class="xref py py-mod docutils literal"><span class="pre">paste.debug.profile</span></code> won&#8217;t break when content is served with no
Content-Type.</li>
<li>Accept relative paths and paths with <code class="docutils literal"><span class="pre">/../</span></code> in them for
<code class="xref py py-class docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code> (from Eric Larson).  Also fix
problem with case normalization on Windows (from Ionel Maries
Cristian).</li>
<li><code class="xref py py-class docutils literal"><span class="pre">paste.registry.StackedObjectProxy</span></code>&#8216;s now include the proxied object&#8217;s names via
<code class="docutils literal"><span class="pre">__dir__</span></code> (for Python 2.6).</li>
<li>Use <code class="docutils literal"><span class="pre">environ['wsgi.file_wrapper']</span></code> when available (in
<code class="docutils literal"><span class="pre">paste.fileapp</span></code>).</li>
<li>Make <code class="xref py py-mod docutils literal"><span class="pre">paste.debug.prints</span></code> compatible with App Engine.</li>
<li>Fix the <code class="docutils literal"><span class="pre">domain</span></code> keyword in
<code class="xref py py-meth docutils literal"><span class="pre">paste.wsgiwrappers.WSGIResponse.delete_cookie()</span></code>.</li>
</ul>
</div>
<div class="section" id="id12">
<h2><a class="toc-backref" href="#id52">1.6.1</a><a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed bug in paste lint where PATH_INFO would become unicode.</li>
</ul>
</div>
<div class="section" id="id13">
<h2><a class="toc-backref" href="#id53">1.6</a><a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Make the import of <code class="docutils literal"><span class="pre">socket.sslerror</span></code> conditional in
<code class="docutils literal"><span class="pre">paste.exceptions.reporter</span></code> (needed for Python interpreters
compiled without SSL support).</li>
<li>In <code class="docutils literal"><span class="pre">paste.proxy.TransparentProxy</span></code>, don&#8217;t overwrite
<code class="docutils literal"><span class="pre">X-Forwarded-For</span></code> header if it is already in the environment.</li>
<li>Added <code class="docutils literal"><span class="pre">226</span> <span class="pre">IM</span> <span class="pre">Used</span></code> status code to <code class="docutils literal"><span class="pre">paste.wsgiwrappers</span></code></li>
<li>In <code class="docutils literal"><span class="pre">paste.fixture.TestApp</span></code> treat <code class="docutils literal"><span class="pre">&lt;image</span> <span class="pre">type=&quot;image&quot;&gt;</span></code> the same
as a submit button.</li>
<li>Use <code class="docutils literal"><span class="pre">OpenSSL.tsafe.Connection</span></code> for https with
<code class="docutils literal"><span class="pre">paste.httpserver</span></code>, avoiding some possible errors (<code class="docutils literal"><span class="pre">sslv3</span> <span class="pre">alert</span>
<span class="pre">bad</span> <span class="pre">record</span> <span class="pre">mac</span></code>).</li>
<li>Fix small issue with <code class="docutils literal"><span class="pre">paste.cgiapp</span></code> and mod_wsgi.</li>
<li>Use <code class="docutils literal"><span class="pre">BaseCookie</span></code> instead of <code class="docutils literal"><span class="pre">SimpleCookie</span></code> for storing cookies
(avoids quoting cookie values).</li>
</ul>
</div>
<div class="section" id="id14">
<h2><a class="toc-backref" href="#id54">1.5.1</a><a class="headerlink" href="#id14" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Make <code class="docutils literal"><span class="pre">paste.cascade</span></code> more tolerant of a missing or invalid
Content-Length.</li>
</ul>
</div>
<div class="section" id="id15">
<h2><a class="toc-backref" href="#id55">1.5</a><a class="headerlink" href="#id15" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed memory leak with <code class="docutils literal"><span class="pre">paste.registry</span></code> not properly removing
all references to registered objects should register be called
multiple times during a single context for a StackedObjectProxy.</li>
<li><code class="docutils literal"><span class="pre">paste.httpheaders.CONTENT_RANGE</span></code> returns <code class="docutils literal"><span class="pre">bytes</span>
<span class="pre">START-END/LENGTH</span></code> instead of just <code class="docutils literal"><span class="pre">START-END/LENGTH</span></code></li>
<li>In <code class="docutils literal"><span class="pre">paste.fixture.TestApp</span></code> set <code class="docutils literal"><span class="pre">CONTENT_TYPE</span></code> to
<code class="docutils literal"><span class="pre">'application/x-www-form-urlencoded'</span></code> whenever there are
parameters (and no other content type was provided).</li>
<li>In <code class="docutils literal"><span class="pre">paste.session</span></code>, when cleaning files ignore files that aren&#8217;t
session files.</li>
<li><code class="docutils literal"><span class="pre">paste.httpexceptions.HTTPExceptionHandler</span></code> will no longer catch
exceptions raised during the app_iter iteration.</li>
<li><code class="docutils literal"><span class="pre">paste.cascade.Cascade</span></code> copies <code class="docutils literal"><span class="pre">wsgi.input</span></code> when cascading, so
that one of the applications cannot read the input and leave a later
application blocked when it tries to read the input.</li>
<li>Fix assigning to <code class="docutils literal"><span class="pre">WSGIResponse.charset</span></code> breaking the content-type.</li>
<li>SMTP authentication is supported for the exception handler.  You may
now set <code class="docutils literal"><span class="pre">smtp_username</span></code>, <code class="docutils literal"><span class="pre">smtp_password</span></code> and <code class="docutils literal"><span class="pre">smtp_use_tls</span></code> to
control this behavior.  From pthy.</li>
</ul>
</div>
<div class="section" id="id16">
<h2><a class="toc-backref" href="#id56">1.4.2</a><a class="headerlink" href="#id16" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Remove FreeBSD threadpool condition in paste.httpserver (which was
also breaking code for Windows users).</li>
<li>Fix problem with <code class="docutils literal"><span class="pre">paste.wsgilib.intercept_output</span></code> and passing up
exceptions.</li>
</ul>
</div>
<div class="section" id="id17">
<h2><a class="toc-backref" href="#id57">1.4.1</a><a class="headerlink" href="#id17" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Allow customization of the <code class="docutils literal"><span class="pre">paste.config.ConfigMiddleware</span></code> environ
key.</li>
<li>Added a <code class="docutils literal"><span class="pre">current</span></code> method (an alias of <code class="docutils literal"><span class="pre">current_conf</span></code>) to
<code class="docutils literal"><span class="pre">paste.config.DispatchingConfig</span></code>.</li>
<li>Make test response <code class="docutils literal"><span class="pre">.form</span></code> attribute work when you have a single
named form.</li>
<li>Try to encode any unicode input to <code class="docutils literal"><span class="pre">paste.auth.auth_tkt</span></code></li>
<li><code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIResponse</span></code> now has a <code class="docutils literal"><span class="pre">.content_type</span></code>
attribute (that does not include parameters), and a <code class="docutils literal"><span class="pre">.charset</span></code>
attribute (that gets the charset parameter).</li>
<li>Inherit inherit show_exceptions_in_wsgi_errors from global
configuration.  Inherit <code class="docutils literal"><span class="pre">debug</span></code> more properly.</li>
</ul>
</div>
<div class="section" id="id18">
<h2><a class="toc-backref" href="#id58">1.4</a><a class="headerlink" href="#id18" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>In <code class="docutils literal"><span class="pre">paste.httpserver</span></code> added lots of functionality to the
threadpool.  See <a class="reference external" href="paste-httpserver-threadpool.html">the paste.httpserver threadpool documentation</a> for details.  This catches
worker threads (and WSGI apps) that take too long to complete their
task; killing them eventually, adding more worker threads when the
pool is exhausted and it doesn&#8217;t look good that it&#8217;ll clear soon,
and optionally killing the process when there are too many
lost/zombie threads (you must be using some kind supervisor process
for this last response to make sense).</li>
<li>Save host and scheme information during real HTTP proxy requests to
<code class="docutils literal"><span class="pre">paste.httpserver</span></code>, into the keys
<code class="docutils literal"><span class="pre">paste.httpserver.proxy.scheme</span></code> and
<code class="docutils literal"><span class="pre">paste.httpserver.proxy.host</span></code></li>
<li>In <code class="docutils literal"><span class="pre">paste.exceptions</span></code> always call <code class="docutils literal"><span class="pre">start_response</span></code>; may help
problems when there is an exception in <code class="docutils literal"><span class="pre">start_response</span></code> itself.</li>
<li>Added method to <code class="docutils literal"><span class="pre">paste.registry.StackedObjectProxy</span></code>,
<code class="docutils literal"><span class="pre">_object_stack()</span></code>, which returns a list of all the registered
objects.  Useful if you want to search through the effective history
of a stacked object.</li>
<li>Fixed infinite recursion problem with
<code class="docutils literal"><span class="pre">paste.request.EnvironHeaders.keys()</span></code>.</li>
<li>Fix <code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIRequest.urlvars</span></code> to use
<code class="docutils literal"><span class="pre">wsgiorg.routing_args</span></code></li>
<li>Remove port from <code class="docutils literal"><span class="pre">paste.request.construct_url</span></code> if it&#8217;s the default
port (e.g., port 80 for <code class="docutils literal"><span class="pre">http</span></code>).</li>
<li><code class="docutils literal"><span class="pre">paste.proxy</span></code> works with headers with continuations in the
response (i.e., a header that spans multiple lines).  Also, treat a
missing Content-Length as 0, not unlimited (may have previously
caused freeze ups for some kinds of requests).</li>
<li><code class="docutils literal"><span class="pre">StackedObjectProxy</span></code> supports <code class="docutils literal"><span class="pre">__call__</span></code> (i.e., you can use
<code class="docutils literal"><span class="pre">StackedObjectProxy</span></code> with callable objects).</li>
<li>Fixed <code class="docutils literal"><span class="pre">ProfileMiddleware</span></code> not calling <code class="docutils literal"><span class="pre">close()</span></code> on consumed
app_iters.</li>
<li><code class="docutils literal"><span class="pre">httpheaders.AcceptLanguage</span></code> now won&#8217;t give an exception when
there is a malformed parameter in the header.</li>
<li>Fix <code class="docutils literal"><span class="pre">paste.auth.form.auth_form</span></code> Paste Deploy entry point.</li>
<li>Added REST methods to <code class="docutils literal"><span class="pre">paste.fixture.TestApp</span></code>, so you can more
easily do requests like PUT and DELETE.  From Anders Pearson.</li>
<li>Added <code class="docutils literal"><span class="pre">{{default</span> <span class="pre">var=default_value}}</span></code> command to
<code class="docutils literal"><span class="pre">paste.util.template</span></code>.  Make <code class="docutils literal"><span class="pre">{{#</span> <span class="pre">comment}}</span></code> work.</li>
</ul>
</div>
<div class="section" id="id19">
<h2><a class="toc-backref" href="#id59">1.3</a><a class="headerlink" href="#id19" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>In <code class="docutils literal"><span class="pre">paste.httpserver</span></code> remove the reverse DNS lookup to set
<code class="docutils literal"><span class="pre">REMOTE_HOST</span></code></li>
<li>In <code class="docutils literal"><span class="pre">paste.fileapp</span></code>, if the client sends both If-None-Match and
If-Modified-Since, prefer If-None-Match.  Make ETags include the
size as well as last modified timestamp.  Make it possible to
override how mimetypes are guessed.</li>
<li><code class="docutils literal"><span class="pre">HTTPException</span></code> objects now have a <code class="docutils literal"><span class="pre">exc.response(environ)</span></code>
method that returns a <code class="docutils literal"><span class="pre">WSGIResponse</span></code> object.</li>
<li><code class="docutils literal"><span class="pre">egg:Paste#watch_threads</span></code> will show tracebacks of each thread
under Python 2.5.</li>
<li>Made <code class="docutils literal"><span class="pre">paste.util.template</span></code> trim whitespace around statements that
are on their own line.</li>
<li><code class="docutils literal"><span class="pre">paste.fileapp.DataApp</span></code> now accepts <code class="docutils literal"><span class="pre">allowed_headers=[...]</span></code> to
specify the allowed headers.  By default only <code class="docutils literal"><span class="pre">GET</span></code> and <code class="docutils literal"><span class="pre">HEAD</span></code>
are allowed.</li>
<li>Added <code class="docutils literal"><span class="pre">paste.util.import_string.try_import_module</span></code>, which imports
modules and catches <code class="docutils literal"><span class="pre">ImportError</span></code>, but only if it&#8217;s an error
importing the specific module, not an uncaught <code class="docutils literal"><span class="pre">ImportError</span></code> in
the module being imported.</li>
</ul>
</div>
<div class="section" id="id20">
<h2><a class="toc-backref" href="#id60">1.2.1</a><a class="headerlink" href="#id20" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> didn&#8217;t implement the <code class="docutils literal"><span class="pre">readline</span></code> that the
<code class="docutils literal"><span class="pre">cgi</span></code> module wants (regression in 1.2).</li>
</ul>
</div>
<div class="section" id="id21">
<h2><a class="toc-backref" href="#id61">1.2</a><a class="headerlink" href="#id21" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><strong>Backward incompatible change</strong>: <code class="docutils literal"><span class="pre">paste.fileapp.FileApp</span></code> properly
supports request methods, including HEAD.  If you were subclassing
<code class="docutils literal"><span class="pre">FileApp</span></code> or <code class="docutils literal"><span class="pre">DataApp</span></code> and overriding <code class="docutils literal"><span class="pre">__call__()</span></code> you may have
to subclass <code class="docutils literal"><span class="pre">get()</span></code> instead.</li>
<li>paste.httpheaders now parses the HTTP Accept-Language header and returns
a list of languages the browser supports in the order it prefers them.</li>
<li>paste.mimeparse module added that handles parsing HTTP Accept headers
for quality and mime-types.</li>
<li><code class="docutils literal"><span class="pre">paste.request.construct_url</span></code> was adding <code class="docutils literal"><span class="pre">SERVER_PORT</span></code> to
<code class="docutils literal"><span class="pre">HTTP_HOST</span></code>; but <code class="docutils literal"><span class="pre">HTTP_HOST</span></code> (from the Host header) generally
contains a port when necessary, and <code class="docutils literal"><span class="pre">SERVER_PORT</span></code> should only be
used with <code class="docutils literal"><span class="pre">SERVER_NAME</span></code>.</li>
<li>Added entry point for <code class="docutils literal"><span class="pre">paste.registry.RegistryManager</span></code>
(<code class="docutils literal"><span class="pre">egg:Paste#registry</span></code>).</li>
<li><code class="docutils literal"><span class="pre">paste.request.HeaderDict</span></code> fixed to know that <code class="docutils literal"><span class="pre">Content-Length</span></code>
maps to <code class="docutils literal"><span class="pre">CONTENT_LENGTH</span></code>.</li>
<li>Can use <code class="docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code> with sub-instances other
than <code class="docutils literal"><span class="pre">paste.fileapp.FileApp</span></code> (if you subclass and override
<code class="docutils literal"><span class="pre">make_app</span></code>)</li>
<li><code class="docutils literal"><span class="pre">paste.fixture.TestApp.get(status=X)</span></code> takes a list of allowed
status codes for <code class="docutils literal"><span class="pre">X</span></code>.</li>
<li>Added a small templating system for internal use (<code class="docutils literal"><span class="pre">paste.util.template</span></code>)</li>
<li>Removed a bunch of long-deprecated modules (generally modules that
have been moved to other names).</li>
</ul>
<div class="section" id="in-paste-wsgiwrappers">
<h3><a class="toc-backref" href="#id62">In paste.wsgiwrappers</a><a class="headerlink" href="#in-paste-wsgiwrappers" title="Permalink to this headline">¶</a></h3>
<ul>
<li><p class="first"><code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIRequest</span></code> has match_accept() function to screen
incoming HTPT Accept values against a list of mime-types.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIRequest.defaults</span></code> now accepts a new key:</p>
<dl class="docutils">
<dt><code class="docutils literal"><span class="pre">language</span></code>:</dt>
<dd><p class="first last">The i18n language that should be used as the fallback should
a translation not occur in a language file. See docs for
details.</p>
</dd>
</dl>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIRequest</span></code> can now optionally decode form
parameters to unicode when it has a <code class="docutils literal"><span class="pre">charset</span></code> value set.</p>
</li>
<li><p class="first">Deprecated the <code class="docutils literal"><span class="pre">paste.wsgiwrappers.settings</span></code> StackedObjectProxy
dictionary for <code class="docutils literal"><span class="pre">paste.wsgiwrappers.WSGIResponse.defaults</span></code>.</p>
</li>
</ul>
</div>
<div class="section" id="in-paste-httpserver">
<h3><a class="toc-backref" href="#id63">In paste.httpserver</a><a class="headerlink" href="#in-paste-httpserver" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>Regression in 1.1 fixed, where Paste&#8217;s HTTP server would drop
trailing slashes from paths.</li>
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> now puts a key in the environment when using a
thread pool that allows you to track the thread pool and see any
wedged threads.  <code class="docutils literal"><span class="pre">egg:Paste#watch_threads</span></code> is an application that
can display this information.</li>
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> now accepts all request methods, not just
<code class="docutils literal"><span class="pre">GET</span></code>, <code class="docutils literal"><span class="pre">PUT</span></code>, etc.  (Methods like <code class="docutils literal"><span class="pre">MKCOL</span></code> were previously
rejected.)</li>
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> has a <code class="docutils literal"><span class="pre">wsgi.input</span></code> that now does not block if
you try to read past the end (it is limited to returning the number
of bytes given in <code class="docutils literal"><span class="pre">Content-Length</span></code>).  Double-reading from
<code class="docutils literal"><span class="pre">wsgi.input</span></code> won&#8217;t give you the same data, but it won&#8217;t cause
blocking.</li>
</ul>
</div>
</div>
<div class="section" id="id22">
<h2><a class="toc-backref" href="#id64">1.1.1</a><a class="headerlink" href="#id22" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed major issue with serving static files on Windows (a regression
in Paste 1.1 where most static files would return 404 Not Found).</li>
<li>Fixed <code class="docutils literal"><span class="pre">parse_dict_querystring</span></code> returning empty dicts instead of
<code class="docutils literal"><span class="pre">MultiDict</span></code>s.</li>
<li>Added <code class="docutils literal"><span class="pre">paste.config</span></code>, a rewrite of <code class="docutils literal"><span class="pre">paste.deploy.config</span></code> using
<code class="docutils literal"><span class="pre">paste.registry</span></code>. This version of <code class="docutils literal"><span class="pre">ConfigMiddleware</span></code> will
enable use of <code class="docutils literal"><span class="pre">paste.config.CONFIG</span></code> within the <code class="docutils literal"><span class="pre">EvalException</span></code>
interactive debugger.</li>
<li>Fixed problem where <code class="docutils literal"><span class="pre">paste.recursive</span></code> would leave <code class="docutils literal"><span class="pre">wsgi.input</span></code>
and <code class="docutils literal"><span class="pre">CONTENT_LENGTH</span></code> set for recursive requests.</li>
<li>Changed the static file servers to give 404 Not Found responses when
you have extra parts after a static file, instead of 400 Bad
Request (like when you request <code class="docutils literal"><span class="pre">/file.html/extra/path</span></code>)</li>
</ul>
</div>
<div class="section" id="id23">
<h2><a class="toc-backref" href="#id65">1.1</a><a class="headerlink" href="#id23" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Security fix for <code class="docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code>.  The problem
allowed escaping the root (and reading files) when used with
<code class="docutils literal"><span class="pre">paste.httpserver</span></code> (this does not effect other servers, and does
not apply when proxying requests from Apache to
<code class="docutils literal"><span class="pre">paste.httpserver</span></code>).</li>
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> and <code class="docutils literal"><span class="pre">paste.fixture.TestApp</span></code> url-unquote
<code class="docutils literal"><span class="pre">SCRIPT_NAME</span></code> and <code class="docutils literal"><span class="pre">PATH_INFO</span></code>, as specified in the CGI spec.
Thanks to Jon Nelson for pointing out both these issues.</li>
<li><code class="docutils literal"><span class="pre">paste.registry</span></code> now works within the <code class="docutils literal"><span class="pre">EvalException</span></code>
interactive debugger.</li>
<li>Fixed <code class="docutils literal"><span class="pre">paste.auth.open_id</span></code> failures not returning a correct
response.</li>
<li>Changed <code class="docutils literal"><span class="pre">paste.httpexceptions.HTTPUnauthorized</span></code> so that the
<code class="docutils literal"><span class="pre">WWW-Authenticate</span></code> header is not required.  401 responses don&#8217;t
<em>have</em> to have that header.</li>
<li>In <code class="docutils literal"><span class="pre">paste.fixture.TestApp</span></code>: <code class="docutils literal"><span class="pre">&lt;form&gt;</span></code> tags that have to
<code class="docutils literal"><span class="pre">action</span></code> will preserve the existing query string.  (Generally
relative links that are completely empty should but were not
preserving the query string)</li>
<li>Made <code class="docutils literal"><span class="pre">paste.*</span></code> compatible with <a class="reference external" href="http://www.py2exe.org/">py2exe</a>
by adding a <code class="docutils literal"><span class="pre">modulefinder</span></code> call in <code class="docutils literal"><span class="pre">__init__.py</span></code></li>
<li>The <code class="docutils literal"><span class="pre">paste.gzipper</span></code> gzipping middleware wasn&#8217;t changing the
Content-Length header properly; thanks to Brad Clements for the fix.</li>
<li>Fixed <code class="docutils literal"><span class="pre">paste.proxy</span></code> to not use anything based on the dict form of
<code class="docutils literal"><span class="pre">httplib..HTTPMessage</span></code>.  This form folds headers together in a way
that breaks <code class="docutils literal"><span class="pre">Set-Cookie</span></code> headers (two <code class="docutils literal"><span class="pre">Set-Cookie</span></code> headers would
be merged into one).</li>
<li><code class="docutils literal"><span class="pre">paste.request.parse_formvars</span></code> didn&#8217;t accept parameters in
<code class="docutils literal"><span class="pre">CONTENT_TYPE</span></code>.  <code class="docutils literal"><span class="pre">prototype.js</span></code> sets a <code class="docutils literal"><span class="pre">charset</span></code> parameter,
which caused a problem.</li>
<li>Added a <code class="docutils literal"><span class="pre">__traceback_decorator__</span></code> magic local variable, to allow
arbitrary manipulation of the output of
<code class="docutils literal"><span class="pre">paste.exceptions.collector</span></code> before formatting.</li>
<li>Added unicorn power to <code class="docutils literal"><span class="pre">paste.pony</span></code> (from Chad Whitacre)</li>
<li>For <code class="docutils literal"><span class="pre">paste.httpserver</span></code> SSL support: add support loading an
explicit certificate context, and using <code class="docutils literal"><span class="pre">ssl_pem='*'</span></code> create an
unsigned SSL certificate (from Jason Kirtland).</li>
<li>Fix some cases where <code class="docutils literal"><span class="pre">paste.httpserver</span></code> can have an orphaned
thread pool (causing the process to not shut down properly).  Patch
from jek.</li>
</ul>
</div>
<div class="section" id="id24">
<h2><a class="toc-backref" href="#id66">1.0</a><a class="headerlink" href="#id24" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed <code class="docutils literal"><span class="pre">parsed_formvars</span></code> potentially locking up on wsgi.input
after modification of <code class="docutils literal"><span class="pre">QUERY_STRING</span></code>.</li>
<li>Fixed problem where <code class="docutils literal"><span class="pre">paste.exceptions.errormiddleware</span></code> didn&#8217;t
expose the <code class="docutils literal"><span class="pre">.close()</span></code> method of the app_iter that it wraps (to
catch exceptions).  This is a problem if the server about the
errormiddleware aborts the request; it should then call
<code class="docutils literal"><span class="pre">.close()</span></code>, but won&#8217;t necessarily exhaust the iterator to do so.</li>
<li>Added entry point for <code class="docutils literal"><span class="pre">paste.translogger</span></code>
(<code class="docutils literal"><span class="pre">egg:Paste#translogger</span></code>)</li>
<li>Fixed some cases where long data (e.g., a file upload) would show up
in the error report, creating a very very large report.  Also, put
in a monkeypatch for the <code class="docutils literal"><span class="pre">cgi</span></code> module so that
<code class="docutils literal"><span class="pre">repr(uploaded_field)</span></code> won&#8217;t load the entire field into memory
(from its temporary file location).</li>
<li>Added a <code class="docutils literal"><span class="pre">force_host</span></code> option to <code class="docutils literal"><span class="pre">paste.proxy.TransparentProxy</span></code>,
which will force all incoming requests to the same host, but leave
the <code class="docutils literal"><span class="pre">Host</span></code> header intact.</li>
<li>Added automatic cleanup of old sessions for <code class="docutils literal"><span class="pre">paste.session</span></code>, from
Amir Salihefendic.</li>
<li>Quote the function name in tracebacks in the exception formatter;
Genshi has function names that use <code class="docutils literal"><span class="pre">&lt;&gt;</span></code>.</li>
</ul>
</div>
<div class="section" id="id25">
<h2><a class="toc-backref" href="#id67">0.9.9</a><a class="headerlink" href="#id25" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed <code class="docutils literal"><span class="pre">paste.response.HeaderDict</span></code> <code class="docutils literal"><span class="pre">get</span></code> and <code class="docutils literal"><span class="pre">setdefault</span></code>
methods to be case insensitive</li>
<li>Fix use of <code class="docutils literal"><span class="pre">TestApp().post(params={'key':</span> <span class="pre">['list</span> <span class="pre">of',</span>
<span class="pre">'values']})</span></code> as reported by Syver Enstad.</li>
<li><code class="docutils literal"><span class="pre">paste.fileapp.DataApp</span></code> is now directly usable (was previously
only usable as an abstract base class).</li>
</ul>
</div>
<div class="section" id="id26">
<h2><a class="toc-backref" href="#id68">0.9.8</a><a class="headerlink" href="#id26" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed <code class="docutils literal"><span class="pre">wsgiwrappers.WSGIResponse.delete_cookie</span></code>. It also now takes
optional path and domain arguments</li>
<li><code class="docutils literal"><span class="pre">wsgiwrappers.WSGIResponse</span></code> now handles generator/iterator content
more cleanly, and properly encodes unicode content according to its
specified charset</li>
<li>Fixed <code class="docutils literal"><span class="pre">wsgiwrappers.WSGIResponse</span></code> mishandling multiple headers of
the same name</li>
<li>Added a Paste Deploy entry point for <code class="docutils literal"><span class="pre">paste.auth.cookie</span></code></li>
<li>Moved Paste Deploy dependencies out of top-level modules and into
Paste-Deploy-specific entry point functions.  This should make Paste
more-or-less Paste Deploy independent.  <code class="docutils literal"><span class="pre">paste.urlparser</span></code> and
<code class="docutils literal"><span class="pre">paste.exceptions.errormiddleware</span></code> still have some leftover bits.</li>
<li>Added another redirector type to <code class="docutils literal"><span class="pre">paste.recursive</span></code>,
<code class="docutils literal"><span class="pre">environ['paste.recursive.include_app_iter']</span></code> which gives access
to the original app_iter.</li>
<li>Bug with <code class="docutils literal"><span class="pre">wsgilib.catch_errors</span></code> and app_iters with no <code class="docutils literal"><span class="pre">close()</span></code>
method.</li>
<li>Long words in tracebacks weren&#8217;t being wrapped correctly at all.
Also, large data would cause the wrapping routine to give a
recursion error.  Now large data is truncated (at 1000 characters),
and recursion won&#8217;t be a problem.  Also, wrapping shouldn&#8217;t lose
characters.</li>
<li>Better exception if you try to put a non-str into environ when using
<code class="docutils literal"><span class="pre">paste.auth.cookie</span></code></li>
<li><code class="docutils literal"><span class="pre">paste.exceptions.collector</span></code> produces an
<code class="docutils literal"><span class="pre">exc_data.exception_type</span></code> that is a class, not a string.  This
helps it get formatted better in Python 2.5.</li>
<li>All the tests pass on Python 2.5!</li>
<li>Added <code class="docutils literal"><span class="pre">paste.proxy.TransparentProxy</span></code>, which just sends the request
described in the WSGI environ on without any modification.  More
useful for WSGI clients than servers, it effectively allows any
WSGI-based request mechanism to act like an httplib-based request
mechanism.</li>
<li>Added a <code class="docutils literal"><span class="pre">cache_max_age</span></code> argument to
<code class="docutils literal"><span class="pre">paste.urlparser.StaticURLParser</span></code>, which allows you to encourage
the caching of static files.  Patch from Brad Clements.</li>
<li>Added <code class="docutils literal"><span class="pre">suppress_http_headers</span></code> to <code class="docutils literal"><span class="pre">paste.proxy.Proxy</span></code>, which will
filter out HTTP headers from the request before passing it on.
Patch from Brad Clements.</li>
</ul>
</div>
<div class="section" id="id27">
<h2><a class="toc-backref" href="#id69">0.9.7</a><a class="headerlink" href="#id27" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>The <code class="docutils literal"><span class="pre">EvalException</span></code> &#8216;full traceback&#8217; button is now only displayed
when the full traceback differs from the regular (includes hidden
frames).</li>
<li>Fixed <code class="docutils literal"><span class="pre">EvalException</span></code> returning a Content-type of &#8216;text-html&#8217;
instead of &#8216;text/html&#8217; in some cases.</li>
</ul>
</div>
<div class="section" id="id28">
<h2><a class="toc-backref" href="#id70">0.9.6</a><a class="headerlink" href="#id28" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Renamed the <code class="docutils literal"><span class="pre">paste.util.multidict.multidict</span></code> class to
<code class="docutils literal"><span class="pre">paste.util.multidict.MultiDict</span></code></li>
</ul>
</div>
<div class="section" id="id29">
<h2><a class="toc-backref" href="#id71">0.9.5</a><a class="headerlink" href="#id29" title="Permalink to this headline">¶</a></h2>
<ul>
<li><p class="first">Fixed a security vulnerability in <code class="docutils literal"><span class="pre">paste.urlparser</span></code>&#8216;s StaticURLParser
and PkgResourcesParser where, with some servers, you could escape
the document root.</p>
</li>
<li><p class="first">Significantly improved <code class="docutils literal"><span class="pre">paste.httpserver</span></code>&#8216;s (egg:Paste#http)
performance. It now uses a thread pool: previously it created a new
thread for every request. To revert back to the old, slower behavior,
set:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">use_threadpool</span> <span class="o">=</span> <span class="n">false</span>
</pre></div>
</div>
<p>in the [server:main] section of the config file.</p>
</li>
<li><p class="first">More control of where the output of <code class="docutils literal"><span class="pre">paste.debug.prints</span></code> goes.</p>
</li>
<li><p class="first">Added a warning to <code class="docutils literal"><span class="pre">paste.wsgilib.add_close</span></code> if the upstream
app_iter consumer doesn&#8217;t call the <code class="docutils literal"><span class="pre">app_iter.close()</span></code> method.</p>
</li>
<li><p class="first">Fixed <code class="docutils literal"><span class="pre">testapp.post(params={})</span></code></p>
</li>
<li><p class="first">Fixed <code class="docutils literal"><span class="pre">paste.translogger.TransLogger</span></code> to log to the Apache combined
log format as advertised.</p>
</li>
<li><p class="first">Fixed <code class="docutils literal"><span class="pre">paste.urlparser</span></code> classes to handle quoted characters (e.g.
%20) in URL paths.</p>
</li>
<li><p class="first">Changed <code class="docutils literal"><span class="pre">paste.session</span></code> to allow manipulating a session for the
first time after <code class="docutils literal"><span class="pre">start_response</span></code> is called.</p>
</li>
<li><p class="first">Added <code class="docutils literal"><span class="pre">paste.wsgilib.add_start_close</span></code> which calls a function just
before returning the first chunk of the app_iter.</p>
</li>
<li><p class="first">Changed <code class="docutils literal"><span class="pre">paste.urlmap</span></code> so that it matches domain-specific mappings
before domain-neutral mappings.</p>
</li>
<li><p class="first">Fixed IE 6 potentially receiving the following <code class="docutils literal"><span class="pre">&quot;400</span> <span class="pre">Bad</span> <span class="pre">Request&quot;</span></code>
error on file downloads:</p>
<div class="highlight-python"><div class="highlight"><pre>Please check your system clock.
According to this server, the time provided in the
If-Modified-Since header is in the future.
</pre></div>
</div>
</li>
<li><p class="first">Added a &#8216;no&#8217; keyword argument to <code class="docutils literal"><span class="pre">TestResponse.mustcontain</span></code>, so
you can assert that a response does contain some strings at the same
time that you assert that a response <em>does not</em> contain other
strings, like:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/&#39;</span><span class="p">)</span>
<span class="n">res</span><span class="o">.</span><span class="n">mustcontain</span><span class="p">(</span><span class="s">&#39;this must be there&#39;</span><span class="p">,</span>
                <span class="n">no</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;error&#39;</span><span class="p">,</span> <span class="s">&#39;unexpected&#39;</span><span class="p">])</span>
</pre></div>
</div>
</li>
<li><p class="first">Fixed <code class="docutils literal"><span class="pre">fileapp.FileApp</span></code> to pay attention to the <code class="docutils literal"><span class="pre">If-None-Match</span></code>
header, which does ETag matching; before only <code class="docutils literal"><span class="pre">If-Modified-Since</span></code>
was supported, even though an <code class="docutils literal"><span class="pre">ETag</span></code> header was being sent; in
particular Firefox would then only send <code class="docutils literal"><span class="pre">If-None-Match</span></code> and so
conditional requests never worked.</p>
</li>
<li><p class="first">Changed usage of <code class="docutils literal"><span class="pre">paste.request.MultiDict</span></code> to
<code class="docutils literal"><span class="pre">paste.util.multidict</span></code>, particularly in <code class="docutils literal"><span class="pre">paste.wsgiwrappers</span></code>
where <code class="docutils literal"><span class="pre">request.GET</span></code> returns a new style of dictionary interface.</p>
</li>
<li><p class="first">Be more careful in <code class="docutils literal"><span class="pre">paste.request.parse_formvars</span></code> not to let
the <code class="docutils literal"><span class="pre">cgi</span></code> module read from <code class="docutils literal"><span class="pre">wsgi.input</span></code> when there are no
parsable variables in the input (based on <code class="docutils literal"><span class="pre">CONTENT_TYPE</span></code>).</p>
</li>
</ul>
</div>
<div class="section" id="id30">
<h2><a class="toc-backref" href="#id72">0.9.4</a><a class="headerlink" href="#id30" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>This released was lost in a tragic clerical accident.</li>
</ul>
</div>
<div class="section" id="id31">
<h2><a class="toc-backref" href="#id73">0.9.3</a><a class="headerlink" href="#id31" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>0.9.2 Included a version of MochiKit that was no longer compatible with
evalexception; 0.9.3 reverts to a previous version.</li>
<li>Change wsgi.run_once=False for <code class="docutils literal"><span class="pre">paste.httpserver</span></code></li>
<li>Added entry points for debug apps</li>
</ul>
</div>
<div class="section" id="id32">
<h2><a class="toc-backref" href="#id74">0.9.2</a><a class="headerlink" href="#id32" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fix in paste.urlmap when connecting with host:port.</li>
<li>Added <code class="docutils literal"><span class="pre">/_debug/summary</span></code> to evalexception, which gives a
JSON-formatted list of all the exceptions in memory.</li>
</ul>
</div>
<div class="section" id="id33">
<h2><a class="toc-backref" href="#id75">0.9.1</a><a class="headerlink" href="#id33" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>A fix for paste.errordocument, when doing an internal redirect from
a POST request (the request is rewritten as a GET request)</li>
</ul>
</div>
<div class="section" id="id34">
<h2><a class="toc-backref" href="#id76">0.9</a><a class="headerlink" href="#id34" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Added <a class="reference external" href="class-paste.request.WSGIRequest.html">paste.request.WSGIRequest</a>, a request object that
wraps the WSGI environment.</li>
<li>Added <a class="reference external" href="module-paste.registry.html">paste.registry</a>, which is
middleware for registering threadlocal objects in a request.</li>
<li>Avoid annoying warning from paste.recursive</li>
<li><code class="docutils literal"><span class="pre">paste.httpserver</span></code> now removes HTTPServer&#8217;s transaction logging,
which was doing a reverse DNS lookup.</li>
<li>Added <code class="docutils literal"><span class="pre">has_session</span></code> to <code class="docutils literal"><span class="pre">paste.session</span></code></li>
<li>Allow for conditional <code class="docutils literal"><span class="pre">paste.wsgilib.intercept_output</span></code> which
should be slightly faster (and streamable) compared to doing the
condition manually.</li>
<li>Added entry point for <a class="reference external" href="module-paste.proxy.html">paste.proxy</a>, plus
improvements from Brad Clements (support path in target, filter
request methods)</li>
<li>Added <a class="reference external" href="module-paste.pony.html">paste.pony</a> so pony power can be
added to any WSGI application.</li>
<li>Added port matching to <code class="docutils literal"><span class="pre">paste.urlmap</span></code>.</li>
</ul>
</div>
<div class="section" id="id35">
<h2><a class="toc-backref" href="#id77">0.5</a><a class="headerlink" href="#id35" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Added <a class="reference external" href="module-paste.auth.auth_tkt.html">paste.auth.auth_tkt</a></li>
<li>Added <a class="reference external" href="module-paste.auth.grantip.html">paste.auth.grantip</a></li>
</ul>
</div>
<div class="section" id="id36">
<h2><a class="toc-backref" href="#id78">0.4.1</a><a class="headerlink" href="#id36" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Some bug fixes to the <a class="reference external" href="module-paste.httpserver.html">built-in HTTP server</a>.</li>
<li>Experimental <a class="reference external" href="module-paste.progress.html">paste.progress</a>
middleware for tracking upload progress</li>
<li>Some tweaking of how <a class="reference external" href="module-paste.reload.html">paste.reload</a>
works, especially with respect to shutdown.</li>
</ul>
</div>
<div class="section" id="id37">
<h2><a class="toc-backref" href="#id79">0.4</a><a class="headerlink" href="#id37" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed up paste documentation (especially for new packages/modules)</li>
<li>Added <a class="reference external" href="module-paste.auth.html">paste.auth</a> package for authentication
related WSGI middle-ware components:<ul>
<li><code class="docutils literal"><span class="pre">basic</span></code> and <code class="docutils literal"><span class="pre">digest</span></code> HTTP authentication as described by RFC 2617</li>
<li>support for Yale&#8217;s Central Authentication System (<code class="docutils literal"><span class="pre">cas</span></code>)</li>
<li><code class="docutils literal"><span class="pre">open_id</span></code> supports single sign-on originally developed for
LiveJournal (see <a class="reference external" href="http://openid.net">http://openid.net</a>)</li>
<li><code class="docutils literal"><span class="pre">cookie</span></code> digitally signs cookies to record the current
authenticated user (<code class="docutils literal"><span class="pre">REMOTE_USER</span></code>), session identifier
(<code class="docutils literal"><span class="pre">REMOTE_SESSION</span></code>), and other WSGI entries in the <code class="docutils literal"><span class="pre">environ</span></code>.</li>
<li>a <code class="docutils literal"><span class="pre">form</span></code> module (to be used with <code class="docutils literal"><span class="pre">cookie</span></code> or an equivalent)
provides a simple HTML based form authentication.</li>
<li>the <code class="docutils literal"><span class="pre">multi</span></code> module is an <em>experimental</em> mechanism for choosing
an authentication mechanism based on the WSGI <code class="docutils literal"><span class="pre">environ</span></code></li>
</ul>
</li>
<li>Added <a class="reference external" href="module-paste.httpserver.html">paste.httpserver</a> module which
provides a very simple WSGI server built upon python&#8217;s
<code class="docutils literal"><span class="pre">BaseHTTPServer</span></code>; this server has support for several features:<ul>
<li>support for SSL connections via OpenSSL</li>
<li>support for HTTP/1.1 <code class="docutils literal"><span class="pre">100</span> <span class="pre">Continue</span></code> messages as required by the
WSGI specification (many HTTP server implementations don&#8217;t do this)</li>
<li>implemented as a Mix-In so that it can be used with other
more enchanted versions of <code class="docutils literal"><span class="pre">BaseHTTPServer</span></code></li>
<li>support for &#8216;Keep-Alive&#8217; (standard in HTTP/1.1) by either providing
a content-length or closing a connection if one is not available</li>
</ul>
</li>
<li>Improved the <a class="reference external" href="module-paste.httpexceptions.html">paste.httpexceptions</a>
module:<ul>
<li>added missing exception objects, and better descriptions</li>
<li>fixed several bugs in how exceptions are caught and propagated</li>
<li>usage as a <code class="docutils literal"><span class="pre">wsgi_application()</span></code> enables exceptions to be
returned without throwing or catching the error</li>
<li>support for plain/text messages for text-only clients such as
curl, python&#8217;s urllib, or Microsoft Excel</li>
<li>allows customization of the HTML template for higher-level frameworks</li>
</ul>
</li>
<li>Added <a class="reference external" href="module-paste.httpheaders.html">paste.httpheaders</a> module
to provide a uniform mechanism to access/update standard HTTP headers
in a WSGI <code class="docutils literal"><span class="pre">environ</span></code> and <code class="docutils literal"><span class="pre">response_headers</span></code> collection; it includes
specific support for:<ul>
<li>providing &#8220;common&#8221; header names and sorting them as suggested
by RFC 2616</li>
<li>validated support for <code class="docutils literal"><span class="pre">Cache-Control</span></code> header construction</li>
<li>validated support for <code class="docutils literal"><span class="pre">Content-Disposition</span></code> header construction</li>
<li>parsing of <code class="docutils literal"><span class="pre">If-Modified-Since</span></code> and other date oriented headers</li>
<li>parsing of Range header for partial-content delivery</li>
<li>composition of HTTP/1.1 digest <code class="docutils literal"><span class="pre">Authorization</span></code> responses</li>
</ul>
</li>
<li>Improved <a class="reference external" href="module-paste.fileapp.html">paste.fileapp</a> to support:<ul>
<li>static in-memory resources</li>
<li>incremental downloading of files from disk</li>
<li>responding to &#8216;Range&#8217; requests to handle partial downloads</li>
<li>allowing cache settings to be easily provided; including
support for HTTP/1.0 &#8216;Expires&#8217; and HTTP/1.1 &#8216;Cache-Control&#8217;</li>
</ul>
</li>
<li>Added an <em>experimental</em> <a class="reference external" href="module-paste.transaction.html">paste.transaction</a> module for handling
commit/rollback of standard DBAPI database connections</li>
<li>Added a <a class="reference external" href="module-paste.util.datetimeutil.html">paste.util.datetimeutil</a>
module for parsing standard date/time user-generated text values</li>
<li>Added a <a class="reference external" href="module-paste.debug.html">debug</a> package, which includes:<ul>
<li>previous top-level modules <code class="docutils literal"><span class="pre">prints</span></code>, <code class="docutils literal"><span class="pre">profile</span></code>,
<code class="docutils literal"><span class="pre">wdg_validate</span></code> and <code class="docutils literal"><span class="pre">doctest_webapp</span></code></li>
<li>a <code class="docutils literal"><span class="pre">testserver</span></code> module suitable to test HTTP socket
connections via <code class="docutils literal"><span class="pre">py.test</span></code></li>
</ul>
</li>
<li>Re-factored <a class="reference external" href="module-paste.wsgilib.html">paste.wsgilib</a> into
several other modules:<ul>
<li>functions regarding header manipulation moved to
<a class="reference external" href="module-paste.response.html">paste.response</a></li>
<li>functions regarding cookies and arguments moved to
<a class="reference external" href="module-paste.request.html">paste.request</a></li>
</ul>
</li>
<li>Significant improvements to <code class="docutils literal"><span class="pre">wsgiutils.wsgilib</span></code> module:<ul>
<li>added a <code class="docutils literal"><span class="pre">dump_environ</span></code> application to help debugging</li>
<li>fixes to <code class="docutils literal"><span class="pre">raw_interactive</span></code> to comply with WSGI specifications</li>
<li><code class="docutils literal"><span class="pre">raw_interactive</span></code> now logs all 5xx exceptions and sets HTTP_HOST</li>
</ul>
</li>
<li>Added an argument <code class="docutils literal"><span class="pre">no_profile</span></code> to
<a class="reference external" href="module-paste.debug.profile.html#profile_decorator">paste.debug.profile.profile_decorator</a>; if that
option is false, then don&#8217;t profile the function at all.</li>
<li>Changed <a class="reference external" href="module-paste.lint.html">paste.lint</a> to check that the
status contains a message (e.g., <code class="docutils literal"><span class="pre">&quot;404</span> <span class="pre">Not</span> <span class="pre">Found&quot;</span></code> instead of just
<code class="docutils literal"><span class="pre">&quot;404&quot;</span></code>).  Check that environmental variables
<code class="docutils literal"><span class="pre">HTTP_CONTENT_TYPE</span></code> and <code class="docutils literal"><span class="pre">HTTP_CONTENT_LENGTH</span></code> are no present.
Made unknown <code class="docutils literal"><span class="pre">REQUEST_METHOD</span></code> a warning (not an error).</li>
<li>Added parameter <code class="docutils literal"><span class="pre">cwd</span></code> to <a class="reference external" href="class-paste.fixture.TestFileEnvironment.html#run">TestFileEnvironment.run</a></li>
<li><a class="reference external" href="class-paste.fixture.TestApp.html">paste.fixture.TestApp</a>:<ul>
<li>Form filling code (use <code class="docutils literal"><span class="pre">response.forms[0]</span></code> to get a <a class="reference external" href="class-paste.fixture.Form.html">form object</a>)</li>
<li>Added <a class="reference external" href="class-paste.fixture.TestResponse.html#click">click method</a>.</li>
<li>Better attribute errors.</li>
<li>You can force set hidden fields using
<code class="docutils literal"><span class="pre">form.fields[name].force_value(value)</span></code> (normally setting the
value of a hidden field is an error).</li>
<li>Frameworks can now add custom attributes to the response object.</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">paste.wsgilib.capture_output</span></code> is deprecated in favor of
<a class="reference external" href="module-paste.wsgilib.html#intercept_output">paste.wsgilib.intercept_output</a></li>
<li>Remove use of exceptions in <a class="reference external" href="class-paste.cascade.Cascade.html">paste.cascade.Cascade</a>, which causes weird effects in
some cases.  Generally we aren&#8217;t using exceptions internally now,
only return status codes.  Also in cascade, be careful to keep
cascaded requests from sharing the same environment.</li>
<li><code class="docutils literal"><span class="pre">paste.wsgilib.error_response</span></code> is deprecated
(<a class="reference external" href="module-paste.httpexceptions.html">paste.httpexceptions</a> replaces
this with exception&#8217;s <code class="docutils literal"><span class="pre">.wsgi_application</span></code> method).</li>
<li>Moved <code class="docutils literal"><span class="pre">paste.login</span></code> to the attic, since <a class="reference external" href="module-paste.auth.html">paste.auth</a> pretty much replaces it.</li>
<li><a class="reference external" href="module-paste.urlparser.html">paste.urlparser</a> improvements:<ul>
<li>Added an application <a class="reference external" href="class-paste.urlparser.StaticURLParser.html">urlparser.StaticURLParser</a> for serving static
files.</li>
<li>Added an application <a class="reference external" href="class-paste.urlparser.PkgResourcesParser.html">urlparser.PkgResourcesParser</a> for serving static
files found with <code class="docutils literal"><span class="pre">pkg_resources</span></code> (e.g., out of zipped Eggs).</li>
<li>Be less picky about ambiguous filenames when using <a class="reference external" href="class-paste.urlparser.URLParser.html">URLParser</a>; if an exact file match
exists, use that.  (<code class="docutils literal"><span class="pre">file.gif.bak</span></code> would cause a request for
<code class="docutils literal"><span class="pre">file.gif</span></code> to be ambiguous before)</li>
<li>Now looks for a <code class="docutils literal"><span class="pre">.wsgi_application</span></code> attribute when serving
Python files/modules, as a general hook for returning a WSGI
application version of an object.</li>
</ul>
</li>
<li>The <a class="reference external" href="class-paste.exceptions.errormiddleware.ErrorMiddleware.html">ErrorMiddleware</a>:<ul>
<li>Returns trimmed-down exceptions if there is a <code class="docutils literal"><span class="pre">_</span></code> GET variable
in the request (which is meant to signal an XMLHttpRequest).
Exceptions displayed in this context are best when they are smaller
and easier to display.</li>
<li>Includes a text version of the traceback, for easier
copy-and-paste.</li>
<li>Avoid printing exceptions to <code class="docutils literal"><span class="pre">wsgi.errors</span></code> if they are already
displayed elsewhere (at least by default).</li>
<li>Highlight Python code.</li>
</ul>
</li>
<li>Use <code class="docutils literal"><span class="pre">pkg_resources.declare_namespace</span></code> so that there are less
problems about confusing the <code class="docutils literal"><span class="pre">paste</span></code> package that is provided by
Paste, Paste Script, Paste Deploy, and Paste WebKit.  Before you
could get one of these at random if you didn&#8217;t use
<code class="docutils literal"><span class="pre">pkg_resources.require</span></code> first.</li>
<li>Cleaned up use of <code class="docutils literal"><span class="pre">exc_info</span></code> argument in <code class="docutils literal"><span class="pre">start_response</span></code> calls
(both accepting and producing), in a variety of places.</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
<h3><a href="http://pythonpaste.org/" class="invisible-link">Python Paste</a></h3>

<ul>
<li><a href="https://bitbucket.org/ianb/pastescript/issues/">Issue tracker</a></li>
<li><a href="http://pythonpaste.org/">Paste core</a></li>
<li><a href="http://webob.org/">WebOb</a></li>
<li><a href="http://pythonpaste.org/deploy/">Paste Deploy</a></li>
<li><a href="http://pythonpaste.org/script/">Paste Script</a></li>
<li><a href="http://webtest.pythonpaste.org/">WebTest</a></li>
<li><a href="http://pythonpaste.org/scripttest/">ScriptType</a></li>
<li><a href="http://pythonpaste.org/initools/">INITools</a></li>
<li><a href="http://pythonpaste.org/tempita/">Tempita</a></li>
<li><a href="http://pythonpaste.org/waitforit/">WaitForIt</a></li>
<li><a href="http://pythonpaste.org/wphp/">WPHP</a></li>
<li><a href="http://pythonpaste.org/wsgifilter/">WSGIFilter</a></li>
<li><a href="http://pythonpaste.org/wsgiproxy/">WSGIProxy</a></li>
</ul>


  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">News</a><ul>
<li><a class="reference internal" href="#id1">2.0.2</a></li>
<li><a class="reference internal" href="#id2">2.0.1</a></li>
<li><a class="reference internal" href="#id3">2.0</a></li>
<li><a class="reference internal" href="#id4">1.7.5.1</a></li>
<li><a class="reference internal" href="#id5">1.7.5</a></li>
<li><a class="reference internal" href="#id6">1.7.4</a></li>
<li><a class="reference internal" href="#id7">1.7.3.1</a></li>
<li><a class="reference internal" href="#id8">1.7.3</a></li>
<li><a class="reference internal" href="#id9">1.7.2</a></li>
<li><a class="reference internal" href="#id10">1.7.1</a></li>
<li><a class="reference internal" href="#id11">1.7</a></li>
<li><a class="reference internal" href="#id12">1.6.1</a></li>
<li><a class="reference internal" href="#id13">1.6</a></li>
<li><a class="reference internal" href="#id14">1.5.1</a></li>
<li><a class="reference internal" href="#id15">1.5</a></li>
<li><a class="reference internal" href="#id16">1.4.2</a></li>
<li><a class="reference internal" href="#id17">1.4.1</a></li>
<li><a class="reference internal" href="#id18">1.4</a></li>
<li><a class="reference internal" href="#id19">1.3</a></li>
<li><a class="reference internal" href="#id20">1.2.1</a></li>
<li><a class="reference internal" href="#id21">1.2</a><ul>
<li><a class="reference internal" href="#in-paste-wsgiwrappers">In paste.wsgiwrappers</a></li>
<li><a class="reference internal" href="#in-paste-httpserver">In paste.httpserver</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id22">1.1.1</a></li>
<li><a class="reference internal" href="#id23">1.1</a></li>
<li><a class="reference internal" href="#id24">1.0</a></li>
<li><a class="reference internal" href="#id25">0.9.9</a></li>
<li><a class="reference internal" href="#id26">0.9.8</a></li>
<li><a class="reference internal" href="#id27">0.9.7</a></li>
<li><a class="reference internal" href="#id28">0.9.6</a></li>
<li><a class="reference internal" href="#id29">0.9.5</a></li>
<li><a class="reference internal" href="#id30">0.9.4</a></li>
<li><a class="reference internal" href="#id31">0.9.3</a></li>
<li><a class="reference internal" href="#id32">0.9.2</a></li>
<li><a class="reference internal" href="#id33">0.9.1</a></li>
<li><a class="reference internal" href="#id34">0.9</a></li>
<li><a class="reference internal" href="#id35">0.5</a></li>
<li><a class="reference internal" href="#id36">0.4.1</a></li>
<li><a class="reference internal" href="#id37">0.4</a></li>
</ul>
</li>
</ul>

<div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="index.html">Documentation overview</a><ul>
      <li>Previous: <a href="index.html" title="previous chapter">Python Paste</a></li>
      <li>Next: <a href="future.html" title="next chapter">The Future Of Paste</a></li>
  </ul></li>
</ul>
</div>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/news.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <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="footer">
      &copy;2008, Ian Bicking.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
      
      |
      <a href="_sources/news.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>