/usr/share/doc/python-werkzeug-doc/html/python3.html is in python-werkzeug-doc 0.10.4+dfsg1-1ubuntu1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | <!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>Python 3 Notes — Werkzeug 0.10.4 documentation</title>
<link rel="stylesheet" href="_static/werkzeug.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.10.4',
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="Werkzeug 0.10.4 documentation" href="index.html" />
<link rel="next" title="Serving WSGI Applications" href="serving.html" />
<link rel="prev" title="Quickstart" href="quickstart.html" />
</head>
<body role="document">
<div class="related" role="navigation" aria-label="related navigation">
<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="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="serving.html" title="Serving WSGI Applications"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="quickstart.html" title="Quickstart"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">Werkzeug 0.10.4 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="python-3-notes">
<span id="python3"></span><h1>Python 3 Notes<a class="headerlink" href="#python-3-notes" title="Permalink to this headline">¶</a></h1>
<p>This part of the documentation outlines special information required to
use Werkzeug and WSGI on Python 3.</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">Python 3 support in Werkzeug is currently highly experimental. Please
give feedback on it and help us improve it.</p>
</div>
<div class="section" id="wsgi-environment">
<h2>WSGI Environment<a class="headerlink" href="#wsgi-environment" title="Permalink to this headline">¶</a></h2>
<p>The WSGI environment on Python 3 works slightly different than it does on
Python 2. For the most part Werkzeug hides the differences from you if
you work on the higher level APIs. The main difference between Python 2
and Python 3 is that on Python 2 the WSGI environment contains bytes
whereas the environment on Python 3 contains a range of differently
encoded strings.</p>
<p>There are two different kinds of strings in the WSGI environ on Python 3:</p>
<ul class="simple">
<li>unicode strings restricted to latin1 values. These are the used for
HTTP headers and a few other things.</li>
<li>unicode strings carrying binary payload, roundtripped through latin1
values. This is usually referred as “WSGI encoding dance” throughout
Werkzeug.</li>
</ul>
<p>Werkzeug provides you with functionality to deal with these automatically
so that you don’t need to be aware of the inner workings. The following
functions and classes should be used to read information out of the
WSGI environment:</p>
<ul class="simple">
<li><a class="reference internal" href="wsgi.html#werkzeug.wsgi.get_current_url" title="werkzeug.wsgi.get_current_url"><code class="xref py py-func docutils literal"><span class="pre">get_current_url()</span></code></a></li>
<li><a class="reference internal" href="wsgi.html#werkzeug.wsgi.get_host" title="werkzeug.wsgi.get_host"><code class="xref py py-func docutils literal"><span class="pre">get_host()</span></code></a></li>
<li><a class="reference internal" href="wsgi.html#werkzeug.wsgi.get_script_name" title="werkzeug.wsgi.get_script_name"><code class="xref py py-func docutils literal"><span class="pre">get_script_name()</span></code></a></li>
<li><a class="reference internal" href="wsgi.html#werkzeug.wsgi.get_path_info" title="werkzeug.wsgi.get_path_info"><code class="xref py py-func docutils literal"><span class="pre">get_path_info()</span></code></a></li>
<li><a class="reference internal" href="wsgi.html#werkzeug.wsgi.get_query_string" title="werkzeug.wsgi.get_query_string"><code class="xref py py-func docutils literal"><span class="pre">get_query_string()</span></code></a></li>
<li><a class="reference internal" href="datastructures.html#werkzeug.datastructures.EnvironHeaders" title="werkzeug.datastructures.EnvironHeaders"><code class="xref py py-func docutils literal"><span class="pre">EnvironHeaders()</span></code></a></li>
</ul>
<p>Applications are strongly discouraged to create and modify a WSGI
environment themselves on Python 3 unless they take care of the proper
decoding step. All high level interfaces in Werkzeug will apply the
correct encoding and decoding steps as necessary.</p>
</div>
<div class="section" id="urls">
<h2>URLs<a class="headerlink" href="#urls" title="Permalink to this headline">¶</a></h2>
<p>URLs in Werkzeug attempt to represent themselves as unicode strings on
Python 3. All the parsing functions generally also provide functionality
that allow operations on bytes. In some cases functions that deal with
URLs allow passing in <cite>None</cite> as charset to change the return value to byte
objects. Internally Werkzeug will now unify URIs and IRIs as much as
possible.</p>
</div>
<div class="section" id="request-cleanup">
<h2>Request Cleanup<a class="headerlink" href="#request-cleanup" title="Permalink to this headline">¶</a></h2>
<p>Request objects on Python 3 and PyPy require explicit closing when file
uploads are involved. This is required to properly close temporary file
objects created by the multipart parser. For that purpose the <code class="docutils literal"><span class="pre">close()</span></code>
method was introduced.</p>
<p>In addition to that request objects now also act as context managers that
automatically close.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"><p class="logo"><a href="index.html">
<img class="logo" src="_static/werkzeug.png" alt="Logo"/>
</a></p>
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Python 3 Notes</a><ul>
<li><a class="reference internal" href="#wsgi-environment">WSGI Environment</a></li>
<li><a class="reference internal" href="#urls">URLs</a></li>
<li><a class="reference internal" href="#request-cleanup">Request Cleanup</a></li>
</ul>
</li>
</ul>
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="quickstart.html" title="previous chapter">Quickstart</a></li>
<li>Next: <a href="serving.html" title="next chapter">Serving WSGI Applications</a></li>
</ul></li>
</ul>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/python3.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">
© Copyright 2011, The Werkzeug Team.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
</div>
</body>
</html>
|