<!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>django.utils.six — Django 1.6.8 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.6.8', 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="Django 1.6.8 documentation" href="../../../index.html" /> <link rel="up" title="Module code" href="../../index.html" /> <script type="text/javascript" src="../../../templatebuiltins.js"></script> <script type="text/javascript"> (function($) { if (!django_template_builtins) { // templatebuiltins.js missing, do nothing. return; } $(document).ready(function() { // Hyperlink Django template tags and filters var base = "../../../ref/templates/builtins.html"; if (base == "#") { // Special case for builtins.html itself base = ""; } // Tags are keywords, class '.k' $("div.highlight\\-html\\+django span.k").each(function(i, elem) { var tagname = $(elem).text(); if ($.inArray(tagname, django_template_builtins.ttags) != -1) { var fragment = tagname.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>"); } }); // Filters are functions, class '.nf' $("div.highlight\\-html\\+django span.nf").each(function(i, elem) { var filtername = $(elem).text(); if ($.inArray(filtername, django_template_builtins.tfilters) != -1) { var fragment = filtername.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>"); } }); }); })(jQuery); </script> </head> <body> <div class="document"> <div id="custom-doc" class="yui-t6"> <div id="hd"> <h1><a href="../../../index.html">Django 1.6.8 documentation</a></h1> <div id="global-nav"> <a title="Home page" href="../../../index.html">Home</a> | <a title="Table of contents" href="../../../contents.html">Table of contents</a> | <a title="Global index" href="../../../genindex.html">Index</a> | <a title="Module index" href="../../../py-modindex.html">Modules</a> </div> <div class="nav"> <a href="../../index.html" title="Module code" accesskey="U">up</a></div> </div> <div id="bd"> <div id="yui-main"> <div class="yui-b"> <div class="yui-g" id="_modules-django-utils-six"> <h1>Source code for django.utils.six</h1><div class="highlight"><pre> <span class="sd">"""Utilities for writing code that runs on Python 2 and 3"""</span> <span class="c"># Copyright (c) 2010-2014 Benjamin Peterson</span> <span class="c">#</span> <span class="c"># Permission is hereby granted, free of charge, to any person obtaining a copy</span> <span class="c"># of this software and associated documentation files (the "Software"), to deal</span> <span class="c"># in the Software without restriction, including without limitation the rights</span> <span class="c"># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span> <span class="c"># copies of the Software, and to permit persons to whom the Software is</span> <span class="c"># furnished to do so, subject to the following conditions:</span> <span class="c">#</span> <span class="c"># The above copyright notice and this permission notice shall be included in all</span> <span class="c"># copies or substantial portions of the Software.</span> <span class="c">#</span> <span class="c"># THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span> <span class="c"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span> <span class="c"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span> <span class="c"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span> <span class="c"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span> <span class="c"># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span> <span class="c"># SOFTWARE.</span> <span class="kn">import</span> <span class="nn">operator</span> <span class="kn">import</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="nn">types</span> <span class="n">__author__</span> <span class="o">=</span> <span class="s">"Benjamin Peterson <benjamin@python.org>"</span> <span class="n">__version__</span> <span class="o">=</span> <span class="s">"1.6.1"</span> <span class="c"># Useful for very coarse version differentiation.</span> <span class="n">PY2</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span> <span class="n">PY3</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">3</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="n">string_types</span> <span class="o">=</span> <span class="nb">str</span><span class="p">,</span> <span class="n">integer_types</span> <span class="o">=</span> <span class="nb">int</span><span class="p">,</span> <span class="n">class_types</span> <span class="o">=</span> <span class="nb">type</span><span class="p">,</span> <span class="n">text_type</span> <span class="o">=</span> <span class="nb">str</span> <span class="n">binary_type</span> <span class="o">=</span> <span class="nb">bytes</span> <span class="n">MAXSIZE</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxsize</span> <span class="k">else</span><span class="p">:</span> <span class="n">string_types</span> <span class="o">=</span> <span class="nb">basestring</span><span class="p">,</span> <span class="n">integer_types</span> <span class="o">=</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">long</span><span class="p">)</span> <span class="n">class_types</span> <span class="o">=</span> <span class="p">(</span><span class="nb">type</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">ClassType</span><span class="p">)</span> <span class="n">text_type</span> <span class="o">=</span> <span class="nb">unicode</span> <span class="n">binary_type</span> <span class="o">=</span> <span class="nb">str</span> <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">"java"</span><span class="p">):</span> <span class="c"># Jython always uses 32 bits.</span> <span class="n">MAXSIZE</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="mi">1</span> <span class="o"><<</span> <span class="mi">31</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c"># It's possible to have sizeof(long) != sizeof(Py_ssize_t).</span> <span class="k">class</span> <span class="nc">X</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="mi">1</span> <span class="o"><<</span> <span class="mi">31</span> <span class="k">try</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">X</span><span class="p">())</span> <span class="k">except</span> <span class="ne">OverflowError</span><span class="p">:</span> <span class="c"># 32-bit</span> <span class="n">MAXSIZE</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="mi">1</span> <span class="o"><<</span> <span class="mi">31</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c"># 64-bit</span> <span class="n">MAXSIZE</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="mi">1</span> <span class="o"><<</span> <span class="mi">63</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="k">del</span> <span class="n">X</span> <span class="k">def</span> <span class="nf">_add_doc</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">doc</span><span class="p">):</span> <span class="sd">"""Add documentation to a function."""</span> <span class="n">func</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">doc</span> <span class="k">def</span> <span class="nf">_import_module</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> <span class="sd">"""Import module, returning the module after the last dot."""</span> <span class="nb">__import__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">return</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">class</span> <span class="nc">_LazyDescr</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> <span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">tp</span><span class="p">):</span> <span class="k">try</span><span class="p">:</span> <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve</span><span class="p">()</span> <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> <span class="c"># See the nice big comment in MovedModule.__getattr__.</span> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">"</span><span class="si">%s</span><span class="s"> could not be imported "</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span> <span class="c"># Invokes __set__.</span> <span class="c"># This is a bit ugly, but it avoids running this again.</span> <span class="nb">delattr</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="k">return</span> <span class="n">result</span> <span class="k">class</span> <span class="nc">MovedModule</span><span class="p">(</span><span class="n">_LazyDescr</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="nb">super</span><span class="p">(</span><span class="n">MovedModule</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="k">if</span> <span class="n">new</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">new</span> <span class="o">=</span> <span class="n">name</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">new</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">old</span> <span class="k">def</span> <span class="nf">_resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="n">_import_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">):</span> <span class="c"># It turns out many Python frameworks like to traverse sys.modules and</span> <span class="c"># try to load various attributes. This causes problems if this is a</span> <span class="c"># platform-specific module on the wrong platform, like _winreg on</span> <span class="c"># Unixes. Therefore, we silently pretend unimportable modules do not</span> <span class="c"># have any attributes. See issues #51, #53, #56, and #63 for the full</span> <span class="c"># tales of woe.</span> <span class="c">#</span> <span class="c"># First, if possible, avoid loading the module just to look at __file__,</span> <span class="c"># __name__, or __path__.</span> <span class="k">if</span> <span class="p">(</span><span class="n">attr</span> <span class="ow">in</span> <span class="p">(</span><span class="s">"__file__"</span><span class="p">,</span> <span class="s">"__name__"</span><span class="p">,</span> <span class="s">"__path__"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="k">try</span><span class="p">:</span> <span class="n">_module</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve</span><span class="p">()</span> <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="n">value</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">_module</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> <span class="k">return</span> <span class="n">value</span> <span class="k">class</span> <span class="nc">_LazyModule</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ModuleType</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> <span class="nb">super</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__doc__</span> <span class="k">def</span> <span class="nf">__dir__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">attrs</span> <span class="o">=</span> <span class="p">[</span><span class="s">"__doc__"</span><span class="p">,</span> <span class="s">"__name__"</span><span class="p">]</span> <span class="n">attrs</span> <span class="o">+=</span> <span class="p">[</span><span class="n">attr</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_moved_attributes</span><span class="p">]</span> <span class="k">return</span> <span class="n">attrs</span> <span class="c"># Subclasses should override this</span> <span class="n">_moved_attributes</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">class</span> <span class="nc">MovedAttribute</span><span class="p">(</span><span class="n">_LazyDescr</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">old_mod</span><span class="p">,</span> <span class="n">new_mod</span><span class="p">,</span> <span class="n">old_attr</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">new_attr</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="nb">super</span><span class="p">(</span><span class="n">MovedAttribute</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="k">if</span> <span class="n">new_mod</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">new_mod</span> <span class="o">=</span> <span class="n">name</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">new_mod</span> <span class="k">if</span> <span class="n">new_attr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="n">old_attr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">new_attr</span> <span class="o">=</span> <span class="n">name</span> <span class="k">else</span><span class="p">:</span> <span class="n">new_attr</span> <span class="o">=</span> <span class="n">old_attr</span> <span class="bp">self</span><span class="o">.</span><span class="n">attr</span> <span class="o">=</span> <span class="n">new_attr</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">old_mod</span> <span class="k">if</span> <span class="n">old_attr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">old_attr</span> <span class="o">=</span> <span class="n">name</span> <span class="bp">self</span><span class="o">.</span><span class="n">attr</span> <span class="o">=</span> <span class="n">old_attr</span> <span class="k">def</span> <span class="nf">_resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">module</span> <span class="o">=</span> <span class="n">_import_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="p">)</span> <span class="k">class</span> <span class="nc">_MovedItems</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects"""</span> <span class="n">_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"cStringIO"</span><span class="p">,</span> <span class="s">"cStringIO"</span><span class="p">,</span> <span class="s">"io"</span><span class="p">,</span> <span class="s">"StringIO"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"filter"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"ifilter"</span><span class="p">,</span> <span class="s">"filter"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"filterfalse"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"ifilterfalse"</span><span class="p">,</span> <span class="s">"filterfalse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"input"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"raw_input"</span><span class="p">,</span> <span class="s">"input"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"map"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"imap"</span><span class="p">,</span> <span class="s">"map"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"range"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"xrange"</span><span class="p">,</span> <span class="s">"range"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"reload_module"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">,</span> <span class="s">"imp"</span><span class="p">,</span> <span class="s">"reload"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"reduce"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">,</span> <span class="s">"functools"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"StringIO"</span><span class="p">,</span> <span class="s">"StringIO"</span><span class="p">,</span> <span class="s">"io"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"UserString"</span><span class="p">,</span> <span class="s">"UserString"</span><span class="p">,</span> <span class="s">"collections"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"xrange"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"xrange"</span><span class="p">,</span> <span class="s">"range"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"zip"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"builtins"</span><span class="p">,</span> <span class="s">"izip"</span><span class="p">,</span> <span class="s">"zip"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"zip_longest"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"itertools"</span><span class="p">,</span> <span class="s">"izip_longest"</span><span class="p">,</span> <span class="s">"zip_longest"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"builtins"</span><span class="p">,</span> <span class="s">"__builtin__"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"configparser"</span><span class="p">,</span> <span class="s">"ConfigParser"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"copyreg"</span><span class="p">,</span> <span class="s">"copy_reg"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"dbm_gnu"</span><span class="p">,</span> <span class="s">"gdbm"</span><span class="p">,</span> <span class="s">"dbm.gnu"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"http_cookiejar"</span><span class="p">,</span> <span class="s">"cookielib"</span><span class="p">,</span> <span class="s">"http.cookiejar"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"http_cookies"</span><span class="p">,</span> <span class="s">"Cookie"</span><span class="p">,</span> <span class="s">"http.cookies"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"html_entities"</span><span class="p">,</span> <span class="s">"htmlentitydefs"</span><span class="p">,</span> <span class="s">"html.entities"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"html_parser"</span><span class="p">,</span> <span class="s">"HTMLParser"</span><span class="p">,</span> <span class="s">"html.parser"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"http_client"</span><span class="p">,</span> <span class="s">"httplib"</span><span class="p">,</span> <span class="s">"http.client"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"email_mime_multipart"</span><span class="p">,</span> <span class="s">"email.MIMEMultipart"</span><span class="p">,</span> <span class="s">"email.mime.multipart"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"email_mime_text"</span><span class="p">,</span> <span class="s">"email.MIMEText"</span><span class="p">,</span> <span class="s">"email.mime.text"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"email_mime_base"</span><span class="p">,</span> <span class="s">"email.MIMEBase"</span><span class="p">,</span> <span class="s">"email.mime.base"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"BaseHTTPServer"</span><span class="p">,</span> <span class="s">"BaseHTTPServer"</span><span class="p">,</span> <span class="s">"http.server"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"CGIHTTPServer"</span><span class="p">,</span> <span class="s">"CGIHTTPServer"</span><span class="p">,</span> <span class="s">"http.server"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"SimpleHTTPServer"</span><span class="p">,</span> <span class="s">"SimpleHTTPServer"</span><span class="p">,</span> <span class="s">"http.server"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"cPickle"</span><span class="p">,</span> <span class="s">"cPickle"</span><span class="p">,</span> <span class="s">"pickle"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"queue"</span><span class="p">,</span> <span class="s">"Queue"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"reprlib"</span><span class="p">,</span> <span class="s">"repr"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"socketserver"</span><span class="p">,</span> <span class="s">"SocketServer"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"_thread"</span><span class="p">,</span> <span class="s">"thread"</span><span class="p">,</span> <span class="s">"_thread"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter"</span><span class="p">,</span> <span class="s">"Tkinter"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_dialog"</span><span class="p">,</span> <span class="s">"Dialog"</span><span class="p">,</span> <span class="s">"tkinter.dialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_filedialog"</span><span class="p">,</span> <span class="s">"FileDialog"</span><span class="p">,</span> <span class="s">"tkinter.filedialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_scrolledtext"</span><span class="p">,</span> <span class="s">"ScrolledText"</span><span class="p">,</span> <span class="s">"tkinter.scrolledtext"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_simpledialog"</span><span class="p">,</span> <span class="s">"SimpleDialog"</span><span class="p">,</span> <span class="s">"tkinter.simpledialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_tix"</span><span class="p">,</span> <span class="s">"Tix"</span><span class="p">,</span> <span class="s">"tkinter.tix"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_ttk"</span><span class="p">,</span> <span class="s">"ttk"</span><span class="p">,</span> <span class="s">"tkinter.ttk"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_constants"</span><span class="p">,</span> <span class="s">"Tkconstants"</span><span class="p">,</span> <span class="s">"tkinter.constants"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_dnd"</span><span class="p">,</span> <span class="s">"Tkdnd"</span><span class="p">,</span> <span class="s">"tkinter.dnd"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_colorchooser"</span><span class="p">,</span> <span class="s">"tkColorChooser"</span><span class="p">,</span> <span class="s">"tkinter.colorchooser"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_commondialog"</span><span class="p">,</span> <span class="s">"tkCommonDialog"</span><span class="p">,</span> <span class="s">"tkinter.commondialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_tkfiledialog"</span><span class="p">,</span> <span class="s">"tkFileDialog"</span><span class="p">,</span> <span class="s">"tkinter.filedialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_font"</span><span class="p">,</span> <span class="s">"tkFont"</span><span class="p">,</span> <span class="s">"tkinter.font"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_messagebox"</span><span class="p">,</span> <span class="s">"tkMessageBox"</span><span class="p">,</span> <span class="s">"tkinter.messagebox"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"tkinter_tksimpledialog"</span><span class="p">,</span> <span class="s">"tkSimpleDialog"</span><span class="p">,</span> <span class="s">"tkinter.simpledialog"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"urllib_parse"</span><span class="p">,</span> <span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_parse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"urllib_error"</span><span class="p">,</span> <span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_error"</span><span class="p">,</span> <span class="s">"urllib.error"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"urllib"</span><span class="p">,</span> <span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib"</span><span class="p">,</span> <span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"urllib_robotparser"</span><span class="p">,</span> <span class="s">"robotparser"</span><span class="p">,</span> <span class="s">"urllib.robotparser"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"xmlrpc_client"</span><span class="p">,</span> <span class="s">"xmlrpclib"</span><span class="p">,</span> <span class="s">"xmlrpc.client"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"xmlrpc_server"</span><span class="p">,</span> <span class="s">"xmlrpclib"</span><span class="p">,</span> <span class="s">"xmlrpc.server"</span><span class="p">),</span> <span class="n">MovedModule</span><span class="p">(</span><span class="s">"winreg"</span><span class="p">,</span> <span class="s">"_winreg"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">_MovedItems</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">MovedModule</span><span class="p">):</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves."</span> <span class="o">+</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">attr</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">_MovedItems</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_moved_attributes</span> <span class="n">moves</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves"</span><span class="p">]</span> <span class="o">=</span> <span class="n">_MovedItems</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib_parse</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects in six.moves.urllib_parse"""</span> <span class="n">_urllib_parse_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"ParseResult"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"SplitResult"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"parse_qs"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"parse_qsl"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urldefrag"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urljoin"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlsplit"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlunparse"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlunsplit"</span><span class="p">,</span> <span class="s">"urlparse"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"quote"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"quote_plus"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"unquote"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"unquote_plus"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlencode"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"splitquery"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.parse"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_urllib_parse_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">Module_six_moves_urllib_parse</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">Module_six_moves_urllib_parse</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_urllib_parse_moved_attributes</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_parse"</span><span class="p">]</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.parse"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib_parse</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_parse"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib_error</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects in six.moves.urllib_error"""</span> <span class="n">_urllib_error_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"URLError"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.error"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPError"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.error"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"ContentTooShortError"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.error"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_urllib_error_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">Module_six_moves_urllib_error</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">Module_six_moves_urllib_error</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_urllib_error_moved_attributes</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_error"</span><span class="p">]</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.error"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib_error</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.error"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib_request</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects in six.moves.urllib_request"""</span> <span class="n">_urllib_request_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlopen"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"install_opener"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"build_opener"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"pathname2url"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"url2pathname"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"getproxies"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"Request"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"OpenerDirector"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPDefaultErrorHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPRedirectHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPCookieProcessor"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"ProxyHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"BaseHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPPasswordMgr"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPPasswordMgrWithDefaultRealm"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"AbstractBasicAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPBasicAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"ProxyBasicAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"AbstractDigestAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPDigestAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"ProxyDigestAuthHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPSHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"FileHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"FTPHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"CacheFTPHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"UnknownHandler"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"HTTPErrorProcessor"</span><span class="p">,</span> <span class="s">"urllib2"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlretrieve"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"urlcleanup"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"URLopener"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"FancyURLopener"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"proxy_bypass"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.request"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_urllib_request_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">Module_six_moves_urllib_request</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">Module_six_moves_urllib_request</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_urllib_request_moved_attributes</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_request"</span><span class="p">]</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.request"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib_request</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.request"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib_response</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects in six.moves.urllib_response"""</span> <span class="n">_urllib_response_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"addbase"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.response"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"addclosehook"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.response"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"addinfo"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.response"</span><span class="p">),</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"addinfourl"</span><span class="p">,</span> <span class="s">"urllib"</span><span class="p">,</span> <span class="s">"urllib.response"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_urllib_response_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">Module_six_moves_urllib_response</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">Module_six_moves_urllib_response</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_urllib_response_moved_attributes</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_response"</span><span class="p">]</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.response"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib_response</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.response"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib_robotparser</span><span class="p">(</span><span class="n">_LazyModule</span><span class="p">):</span> <span class="sd">"""Lazy loading of moved objects in six.moves.urllib_robotparser"""</span> <span class="n">_urllib_robotparser_moved_attributes</span> <span class="o">=</span> <span class="p">[</span> <span class="n">MovedAttribute</span><span class="p">(</span><span class="s">"RobotFileParser"</span><span class="p">,</span> <span class="s">"robotparser"</span><span class="p">,</span> <span class="s">"urllib.robotparser"</span><span class="p">),</span> <span class="p">]</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_urllib_robotparser_moved_attributes</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">Module_six_moves_urllib_robotparser</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span> <span class="k">del</span> <span class="n">attr</span> <span class="n">Module_six_moves_urllib_robotparser</span><span class="o">.</span><span class="n">_moved_attributes</span> <span class="o">=</span> <span class="n">_urllib_robotparser_moved_attributes</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_robotparser"</span><span class="p">]</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.robotparser"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib_robotparser</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib.robotparser"</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Module_six_moves_urllib</span><span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ModuleType</span><span class="p">):</span> <span class="sd">"""Create a six.moves.urllib namespace that resembles the Python 3 namespace"""</span> <span class="n">parse</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_parse"</span><span class="p">]</span> <span class="n">error</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_error"</span><span class="p">]</span> <span class="n">request</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_request"</span><span class="p">]</span> <span class="n">response</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_response"</span><span class="p">]</span> <span class="n">robotparser</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib_robotparser"</span><span class="p">]</span> <span class="k">def</span> <span class="nf">__dir__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="p">[</span><span class="s">'parse'</span><span class="p">,</span> <span class="s">'error'</span><span class="p">,</span> <span class="s">'request'</span><span class="p">,</span> <span class="s">'response'</span><span class="p">,</span> <span class="s">'robotparser'</span><span class="p">]</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Module_six_moves_urllib</span><span class="p">(</span><span class="n">__name__</span> <span class="o">+</span> <span class="s">".moves.urllib"</span><span class="p">)</span> <span class="k">def</span> <span class="nf">add_move</span><span class="p">(</span><span class="n">move</span><span class="p">):</span> <span class="sd">"""Add an item to six.moves."""</span> <span class="nb">setattr</span><span class="p">(</span><span class="n">_MovedItems</span><span class="p">,</span> <span class="n">move</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">move</span><span class="p">)</span> <span class="k">def</span> <span class="nf">remove_move</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> <span class="sd">"""Remove item from six.moves."""</span> <span class="k">try</span><span class="p">:</span> <span class="nb">delattr</span><span class="p">(</span><span class="n">_MovedItems</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span> <span class="k">del</span> <span class="n">moves</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">"no such move, </span><span class="si">%r</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,))</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="n">_meth_func</span> <span class="o">=</span> <span class="s">"__func__"</span> <span class="n">_meth_self</span> <span class="o">=</span> <span class="s">"__self__"</span> <span class="n">_func_closure</span> <span class="o">=</span> <span class="s">"__closure__"</span> <span class="n">_func_code</span> <span class="o">=</span> <span class="s">"__code__"</span> <span class="n">_func_defaults</span> <span class="o">=</span> <span class="s">"__defaults__"</span> <span class="n">_func_globals</span> <span class="o">=</span> <span class="s">"__globals__"</span> <span class="n">_iterkeys</span> <span class="o">=</span> <span class="s">"keys"</span> <span class="n">_itervalues</span> <span class="o">=</span> <span class="s">"values"</span> <span class="n">_iteritems</span> <span class="o">=</span> <span class="s">"items"</span> <span class="n">_iterlists</span> <span class="o">=</span> <span class="s">"lists"</span> <span class="k">else</span><span class="p">:</span> <span class="n">_meth_func</span> <span class="o">=</span> <span class="s">"im_func"</span> <span class="n">_meth_self</span> <span class="o">=</span> <span class="s">"im_self"</span> <span class="n">_func_closure</span> <span class="o">=</span> <span class="s">"func_closure"</span> <span class="n">_func_code</span> <span class="o">=</span> <span class="s">"func_code"</span> <span class="n">_func_defaults</span> <span class="o">=</span> <span class="s">"func_defaults"</span> <span class="n">_func_globals</span> <span class="o">=</span> <span class="s">"func_globals"</span> <span class="n">_iterkeys</span> <span class="o">=</span> <span class="s">"iterkeys"</span> <span class="n">_itervalues</span> <span class="o">=</span> <span class="s">"itervalues"</span> <span class="n">_iteritems</span> <span class="o">=</span> <span class="s">"iteritems"</span> <span class="n">_iterlists</span> <span class="o">=</span> <span class="s">"iterlists"</span> <span class="k">try</span><span class="p">:</span> <span class="n">advance_iterator</span> <span class="o">=</span> <span class="nb">next</span> <span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span> <span class="k">def</span> <span class="nf">advance_iterator</span><span class="p">(</span><span class="n">it</span><span class="p">):</span> <span class="k">return</span> <span class="n">it</span><span class="o">.</span><span class="n">next</span><span class="p">()</span> <span class="nb">next</span> <span class="o">=</span> <span class="n">advance_iterator</span> <span class="k">try</span><span class="p">:</span> <span class="nb">callable</span> <span class="o">=</span> <span class="nb">callable</span> <span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span> <span class="k">def</span> <span class="nf">callable</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="s">"__call__"</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">__dict__</span> <span class="k">for</span> <span class="n">klass</span> <span class="ow">in</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span><span class="o">.</span><span class="n">__mro__</span><span class="p">)</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="k">def</span> <span class="nf">get_unbound_function</span><span class="p">(</span><span class="n">unbound</span><span class="p">):</span> <span class="k">return</span> <span class="n">unbound</span> <span class="n">create_bound_method</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">MethodType</span> <span class="n">Iterator</span> <span class="o">=</span> <span class="nb">object</span> <span class="k">else</span><span class="p">:</span> <span class="k">def</span> <span class="nf">get_unbound_function</span><span class="p">(</span><span class="n">unbound</span><span class="p">):</span> <span class="k">return</span> <span class="n">unbound</span><span class="o">.</span><span class="n">im_func</span> <span class="k">def</span> <span class="nf">create_bound_method</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> <span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">MethodType</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">__class__</span><span class="p">)</span> <span class="k">class</span> <span class="nc">Iterator</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="k">def</span> <span class="nf">next</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__next__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="nb">callable</span> <span class="o">=</span> <span class="nb">callable</span> <span class="n">_add_doc</span><span class="p">(</span><span class="n">get_unbound_function</span><span class="p">,</span> <span class="sd">"""Get the function out of a possibly unbound function"""</span><span class="p">)</span> <span class="n">get_method_function</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_meth_func</span><span class="p">)</span> <span class="n">get_method_self</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_meth_self</span><span class="p">)</span> <span class="n">get_function_closure</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_func_closure</span><span class="p">)</span> <span class="n">get_function_code</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_func_code</span><span class="p">)</span> <span class="n">get_function_defaults</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_func_defaults</span><span class="p">)</span> <span class="n">get_function_globals</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">attrgetter</span><span class="p">(</span><span class="n">_func_globals</span><span class="p">)</span> <span class="k">def</span> <span class="nf">iterkeys</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> <span class="sd">"""Return an iterator over the keys of a dictionary."""</span> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">_iterkeys</span><span class="p">)(</span><span class="o">**</span><span class="n">kw</span><span class="p">))</span> <span class="k">def</span> <span class="nf">itervalues</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> <span class="sd">"""Return an iterator over the values of a dictionary."""</span> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">_itervalues</span><span class="p">)(</span><span class="o">**</span><span class="n">kw</span><span class="p">))</span> <span class="k">def</span> <span class="nf">iteritems</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> <span class="sd">"""Return an iterator over the (key, value) pairs of a dictionary."""</span> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">_iteritems</span><span class="p">)(</span><span class="o">**</span><span class="n">kw</span><span class="p">))</span> <span class="k">def</span> <span class="nf">iterlists</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span> <span class="sd">"""Return an iterator over the (key, [values]) pairs of a dictionary."""</span> <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">_iterlists</span><span class="p">)(</span><span class="o">**</span><span class="n">kw</span><span class="p">))</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="k">def</span> <span class="nf">b</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">"latin-1"</span><span class="p">)</span> <span class="k">def</span> <span class="nf">u</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="k">return</span> <span class="n">s</span> <span class="nb">unichr</span> <span class="o">=</span> <span class="nb">chr</span> <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> <span class="k">def</span> <span class="nf">int2byte</span><span class="p">(</span><span class="n">i</span><span class="p">):</span> <span class="k">return</span> <span class="nb">bytes</span><span class="p">((</span><span class="n">i</span><span class="p">,))</span> <span class="k">else</span><span class="p">:</span> <span class="c"># This is about 2x faster than the implementation above on 3.2+</span> <span class="n">int2byte</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">methodcaller</span><span class="p">(</span><span class="s">"to_bytes"</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="s">"big"</span><span class="p">)</span> <span class="n">byte2int</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">itemgetter</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="n">indexbytes</span> <span class="o">=</span> <span class="n">operator</span><span class="o">.</span><span class="n">getitem</span> <span class="n">iterbytes</span> <span class="o">=</span> <span class="nb">iter</span> <span class="kn">import</span> <span class="nn">io</span> <span class="n">StringIO</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">StringIO</span> <span class="n">BytesIO</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">BytesIO</span> <span class="k">else</span><span class="p">:</span> <span class="k">def</span> <span class="nf">b</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="k">return</span> <span class="n">s</span> <span class="c"># Workaround for standalone backslash</span> <span class="k">def</span> <span class="nf">u</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="k">return</span> <span class="nb">unicode</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">r'</span><span class="se">\\</span><span class="s">'</span><span class="p">,</span> <span class="s">r'</span><span class="se">\\\\</span><span class="s">'</span><span class="p">),</span> <span class="s">"unicode_escape"</span><span class="p">)</span> <span class="nb">unichr</span> <span class="o">=</span> <span class="nb">unichr</span> <span class="n">int2byte</span> <span class="o">=</span> <span class="nb">chr</span> <span class="k">def</span> <span class="nf">byte2int</span><span class="p">(</span><span class="n">bs</span><span class="p">):</span> <span class="k">return</span> <span class="nb">ord</span><span class="p">(</span><span class="n">bs</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">def</span> <span class="nf">indexbytes</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span> <span class="k">return</span> <span class="nb">ord</span><span class="p">(</span><span class="n">buf</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">def</span> <span class="nf">iterbytes</span><span class="p">(</span><span class="n">buf</span><span class="p">):</span> <span class="k">return</span> <span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="n">byte</span><span class="p">)</span> <span class="k">for</span> <span class="n">byte</span> <span class="ow">in</span> <span class="n">buf</span><span class="p">)</span> <span class="kn">import</span> <span class="nn">StringIO</span> <span class="n">StringIO</span> <span class="o">=</span> <span class="n">BytesIO</span> <span class="o">=</span> <span class="n">StringIO</span><span class="o">.</span><span class="n">StringIO</span> <span class="n">_add_doc</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="s">"""Byte literal"""</span><span class="p">)</span> <span class="n">_add_doc</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="s">"""Text literal"""</span><span class="p">)</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="n">exec_</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">moves</span><span class="o">.</span><span class="n">builtins</span><span class="p">,</span> <span class="s">"exec"</span><span class="p">)</span> <span class="k">def</span> <span class="nf">reraise</span><span class="p">(</span><span class="n">tp</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">tb</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">__traceback__</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">tb</span><span class="p">:</span> <span class="k">raise</span> <span class="n">value</span><span class="o">.</span><span class="n">with_traceback</span><span class="p">(</span><span class="n">tb</span><span class="p">)</span> <span class="k">raise</span> <span class="n">value</span> <span class="k">else</span><span class="p">:</span> <span class="k">def</span> <span class="nf">exec_</span><span class="p">(</span><span class="n">_code_</span><span class="p">,</span> <span class="n">_globs_</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_locs_</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> <span class="sd">"""Execute code in a namespace."""</span> <span class="k">if</span> <span class="n">_globs_</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">frame</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">_getframe</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">_globs_</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_globals</span> <span class="k">if</span> <span class="n">_locs_</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">_locs_</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">f_locals</span> <span class="k">del</span> <span class="n">frame</span> <span class="k">elif</span> <span class="n">_locs_</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">_locs_</span> <span class="o">=</span> <span class="n">_globs_</span> <span class="k">exec</span><span class="p">(</span><span class="s">"""exec _code_ in _globs_, _locs_"""</span><span class="p">)</span> <span class="n">exec_</span><span class="p">(</span><span class="s">"""def reraise(tp, value, tb=None):</span> <span class="s"> raise tp, value, tb</span> <span class="s">"""</span><span class="p">)</span> <span class="n">print_</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">moves</span><span class="o">.</span><span class="n">builtins</span><span class="p">,</span> <span class="s">"print"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="k">if</span> <span class="n">print_</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">def</span> <span class="nf">print_</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> <span class="sd">"""The new-style print function for Python 2.4 and 2.5."""</span> <span class="n">fp</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">"file"</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span> <span class="k">if</span> <span class="n">fp</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="n">data</span><span class="p">):</span> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c"># If the file has an encoding, encode unicode with it.</span> <span class="k">if</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">)</span> <span class="ow">and</span> <span class="n">fp</span><span class="o">.</span><span class="n">encoding</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">):</span> <span class="n">errors</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="s">"errors"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="k">if</span> <span class="n">errors</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">errors</span> <span class="o">=</span> <span class="s">"strict"</span> <span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">fp</span><span class="o">.</span><span class="n">encoding</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span> <span class="n">fp</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="n">want_unicode</span> <span class="o">=</span> <span class="bp">False</span> <span class="n">sep</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">"sep"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="k">if</span> <span class="n">sep</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sep</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span> <span class="n">want_unicode</span> <span class="o">=</span> <span class="bp">True</span> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sep</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"sep must be None or a string"</span><span class="p">)</span> <span class="n">end</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">"end"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span> <span class="n">want_unicode</span> <span class="o">=</span> <span class="bp">True</span> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"end must be None or a string"</span><span class="p">)</span> <span class="k">if</span> <span class="n">kwargs</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s">"invalid keyword arguments to print()"</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">want_unicode</span><span class="p">:</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span> <span class="n">want_unicode</span> <span class="o">=</span> <span class="bp">True</span> <span class="k">break</span> <span class="k">if</span> <span class="n">want_unicode</span><span class="p">:</span> <span class="n">newline</span> <span class="o">=</span> <span class="nb">unicode</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span> <span class="n">space</span> <span class="o">=</span> <span class="nb">unicode</span><span class="p">(</span><span class="s">" "</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">newline</span> <span class="o">=</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span> <span class="n">space</span> <span class="o">=</span> <span class="s">" "</span> <span class="k">if</span> <span class="n">sep</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">sep</span> <span class="o">=</span> <span class="n">space</span> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="n">end</span> <span class="o">=</span> <span class="n">newline</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">arg</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> <span class="k">if</span> <span class="n">i</span><span class="p">:</span> <span class="n">write</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span> <span class="n">write</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="n">write</span><span class="p">(</span><span class="n">end</span><span class="p">)</span> <span class="n">_add_doc</span><span class="p">(</span><span class="n">reraise</span><span class="p">,</span> <span class="s">"""Reraise an exception."""</span><span class="p">)</span> <span class="k">def</span> <span class="nf">with_metaclass</span><span class="p">(</span><span class="n">meta</span><span class="p">,</span> <span class="o">*</span><span class="n">bases</span><span class="p">):</span> <span class="sd">"""Create a base class with a metaclass."""</span> <span class="k">return</span> <span class="n">meta</span><span class="p">(</span><span class="s">"NewBase"</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="p">{})</span> <span class="k">def</span> <span class="nf">add_metaclass</span><span class="p">(</span><span class="n">metaclass</span><span class="p">):</span> <span class="sd">"""Class decorator for creating a class with a metaclass."""</span> <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span> <span class="n">orig_vars</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">__dict__</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="n">orig_vars</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'__dict__'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="n">orig_vars</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'__weakref__'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="n">slots</span> <span class="o">=</span> <span class="n">orig_vars</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'__slots__'</span><span class="p">)</span> <span class="k">if</span> <span class="n">slots</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">slots</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> <span class="n">slots</span> <span class="o">=</span> <span class="p">[</span><span class="n">slots</span><span class="p">]</span> <span class="k">for</span> <span class="n">slots_var</span> <span class="ow">in</span> <span class="n">slots</span><span class="p">:</span> <span class="n">orig_vars</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">slots_var</span><span class="p">)</span> <span class="k">return</span> <span class="n">metaclass</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">__bases__</span><span class="p">,</span> <span class="n">orig_vars</span><span class="p">)</span> <span class="k">return</span> <span class="n">wrapper</span> <span class="c">### Additional customizations for Django ###</span> <span class="k">if</span> <span class="n">PY3</span><span class="p">:</span> <span class="n">_assertRaisesRegex</span> <span class="o">=</span> <span class="s">"assertRaisesRegex"</span> <span class="n">_assertRegex</span> <span class="o">=</span> <span class="s">"assertRegex"</span> <span class="n">memoryview</span> <span class="o">=</span> <span class="n">memoryview</span> <span class="k">else</span><span class="p">:</span> <span class="n">_assertRaisesRegex</span> <span class="o">=</span> <span class="s">"assertRaisesRegexp"</span> <span class="n">_assertRegex</span> <span class="o">=</span> <span class="s">"assertRegexpMatches"</span> <span class="c"># memoryview and buffer are not stricly equivalent, but should be fine for</span> <span class="c"># django core usage (mainly BinaryField). However, Jython doesn't support</span> <span class="c"># buffer (see http://bugs.jython.org/issue1521), so we have to be careful.</span> <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'java'</span><span class="p">):</span> <span class="n">memoryview</span> <span class="o">=</span> <span class="n">memoryview</span> <span class="k">else</span><span class="p">:</span> <span class="n">memoryview</span> <span class="o">=</span> <span class="nb">buffer</span> <div class="viewcode-block" id="assertRaisesRegex"><a class="viewcode-back" href="../../../topics/python3.html#django.utils.six.assertRaisesRegex">[docs]</a><span class="k">def</span> <span class="nf">assertRaisesRegex</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_assertRaisesRegex</span><span class="p">)(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </div> <div class="viewcode-block" id="assertRegex"><a class="viewcode-back" href="../../../topics/python3.html#django.utils.six.assertRegex">[docs]</a><span class="k">def</span> <span class="nf">assertRegex</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_assertRegex</span><span class="p">)(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </div> <span class="n">add_move</span><span class="p">(</span><span class="n">MovedModule</span><span class="p">(</span><span class="s">"_dummy_thread"</span><span class="p">,</span> <span class="s">"dummy_thread"</span><span class="p">))</span> <span class="n">add_move</span><span class="p">(</span><span class="n">MovedModule</span><span class="p">(</span><span class="s">"_thread"</span><span class="p">,</span> <span class="s">"thread"</span><span class="p">))</span> </pre></div> </div> </div> </div> <div class="yui-b" id="sidebar"> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3>Browse</h3> <ul> </ul> <h3>You are here:</h3> <ul> <li> <a href="../../../index.html">Django 1.6.8 documentation</a> <ul><li><a href="../../index.html">Module code</a> <ul><li>django.utils.six</li></ul> </li></ul> </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" /> <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> <h3>Last update:</h3> <p class="topless">Nov 11, 2014</p> </div> </div> <div id="ft"> <div class="nav"> <a href="../../index.html" title="Module code" accesskey="U">up</a></div> </div> </div> <div class="clearer"></div> </div> </body> </html>