Team Ai
Apppublic

parthtamu/rag-code-assistant

sourceHugging Faceupdated 7mo agoView on Hugging Face
0likes
pickletools.html488 linesDownload Raw Back to docs
1<!DOCTYPE html>2 3<html lang="en" data-content_root="../">4  <head>5    <meta charset="utf-8" />6    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />7<meta property="og:title" content="pickletools — Tools for pickle developers" />8<meta property="og:type" content="website" />9<meta property="og:url" content="https://docs.python.org/3/library/pickletools.html" />10<meta property="og:site_name" content="Python documentation" />11<meta property="og:description" content="Source code: Lib/pickletools.py This module contains various constants relating to the intimate details of the pickle module, some lengthy comments about the implementation, and a few useful functi..." />12<meta property="og:image:width" content="1146" />13<meta property="og:image:height" content="600" />14<meta property="og:image" content="https://docs.python.org/3.15/_images/social_previews/summary_library_pickletools_7c42ad79.png" />15<meta property="og:image:alt" content="Source code: Lib/pickletools.py This module contains various constants relating to the intimate details of the pickle module, some lengthy comments about the implementation, and a few useful functi..." />16<meta name="description" content="Source code: Lib/pickletools.py This module contains various constants relating to the intimate details of the pickle module, some lengthy comments about the implementation, and a few useful functi..." />17<meta name="twitter:card" content="summary_large_image" />18<meta name="theme-color" content="#3776ab">19 20    <title>pickletools — Tools for pickle developers &#8212; Python 3.15.0a6 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">21    22    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />23    <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />24    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=89a2f22a" />25    <link rel="stylesheet" type="text/css" href="../_static/profiling-sampling-visualization.css?v=0c2600ae" />26    <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=5349f25f" />27    28    <script src="../_static/documentation_options.js?v=6b7c9ff5"></script>29    <script src="../_static/doctools.js?v=9bcbadda"></script>30    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>31    <script src="../_static/profiling-sampling-visualization.js?v=9811ed04"></script>32    33    <script src="../_static/sidebar.js"></script>34    35    <link rel="search" type="application/opensearchdescription+xml"36          title="Search within Python 3.15.0a6 documentation"37          href="../_static/opensearch.xml"/>38    <link rel="author" title="About these documents" href="../about.html" />39    <link rel="index" title="Index" href="../genindex.html" />40    <link rel="search" title="Search" href="../search.html" />41    <link rel="copyright" title="Copyright" href="../copyright.html" />42    <link rel="next" title="MS Windows Specific Services" href="windows.html" />43    <link rel="prev" title="dis — Disassembler for Python bytecode" href="dis.html" />44    45      46      <script defer file-types="bz2,epub,zip" data-domain="docs.python.org" src="https://analytics.python.org/js/script.file-downloads.outbound-links.js"></script>47      48      <link rel="canonical" href="https://docs.python.org/3/library/pickletools.html">49      50    51 52    53    <style>54      @media only screen {55        table.full-width-table {56            width: 100%;57        }58      }59    </style>60<link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">61    <link rel="shortcut icon" type="image/png" href="../_static/py.svg">62            <script type="text/javascript" src="../_static/copybutton.js"></script>63            <script type="text/javascript" src="../_static/menu.js"></script>64            <script type="text/javascript" src="../_static/search-focus.js"></script>65            <script type="text/javascript" src="../_static/themetoggle.js"></script> 66            <script type="text/javascript" src="../_static/rtd_switcher.js"></script>67            <meta name="readthedocs-addons-api-version" content="1">68 69  </head>70<body>71<div class="mobile-nav">72    <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"73           aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">74    <nav class="nav-content" role="navigation">75        <label for="menuToggler" class="toggler__label">76            <span></span>77        </label>78        <span class="nav-items-wrapper">79            <a href="https://www.python.org/" class="nav-logo">80                <img src="../_static/py.svg" alt="Python logo">81            </a>82            <span class="version_switcher_placeholder"></span>83            <form role="search" class="search" action="../search.html" method="get">84                <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">85                    <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>86                </svg>87                <input placeholder="Quick search" aria-label="Quick search" type="search" name="q">88                <input type="submit" value="Go">89            </form>90        </span>91    </nav>92    <div class="menu-wrapper">93        <nav class="menu" role="navigation" aria-label="main navigation">94            <div class="language_switcher_placeholder"></div>95            96<label class="theme-selector-label">97    Theme98    <select class="theme-selector" oninput="activateTheme(this.value)">99        <option value="auto" selected>Auto</option>100        <option value="light">Light</option>101        <option value="dark">Dark</option>102    </select>103</label>104  <div>105    <h3><a href="../contents.html">Table of Contents</a></h3>106    <ul>107<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> — Tools for pickle developers</a><ul>108<li><a class="reference internal" href="#command-line-usage">Command-line usage</a><ul>109<li><a class="reference internal" href="#command-line-options">Command-line options</a></li>110</ul>111</li>112<li><a class="reference internal" href="#programmatic-interface">Programmatic interface</a></li>113</ul>114</li>115</ul>116 117  </div>118  <div>119    <h4>Previous topic</h4>120    <p class="topless"><a href="dis.html"121                          title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dis</span></code> — Disassembler for Python bytecode</a></p>122  </div>123  <div>124    <h4>Next topic</h4>125    <p class="topless"><a href="windows.html"126                          title="next chapter">MS Windows Specific Services</a></p>127  </div>128  <script>129    document.addEventListener('DOMContentLoaded', () => {130        const title = document.querySelector('meta[property="og:title"]').content;131        const elements = document.querySelectorAll('.improvepage');132        const pageurl = window.location.href.split('?')[0];133        elements.forEach(element => {134            const url = new URL(element.href.split('?')[0].replace("-nojs", ""));135            url.searchParams.set('pagetitle', title);136            url.searchParams.set('pageurl', pageurl);137            url.searchParams.set('pagesource', "library/pickletools.rst");138            element.href = url.toString();139        });140    });141  </script>142  <div role="note" aria-label="source link">143    <h3>This page</h3>144    <ul class="this-page-menu">145      <li><a href="../bugs.html">Report a bug</a></li>146      <li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>147      <li>148        <a href="https://github.com/python/cpython/blob/main/Doc/library/pickletools.rst?plain=1"149            rel="nofollow">Show source150        </a>151      </li>152      153    </ul>154  </div>155        </nav>156    </div>157</div>158 159  160    <div class="related" role="navigation" aria-label="Related">161      <h3>Navigation</h3>162      <ul>163        <li class="right" style="margin-right: 10px">164          <a href="../genindex.html" title="General Index"165             accesskey="I">index</a></li>166        <li class="right" >167          <a href="../py-modindex.html" title="Python Module Index"168             >modules</a> |</li>169        <li class="right" >170          <a href="windows.html" title="MS Windows Specific Services"171             accesskey="N">next</a> |</li>172        <li class="right" >173          <a href="dis.html" title="dis — Disassembler for Python bytecode"174             accesskey="P">previous</a> |</li>175 176          <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>177          <li><a href="https://www.python.org/">Python</a> &#187;</li>178          <li class="switchers">179            <div class="language_switcher_placeholder"></div>180            <div class="version_switcher_placeholder"></div>181          </li>182          <li>183              184          </li>185    <li id="cpython-language-and-version">186      <a href="../index.html">3.15.0a6 Documentation</a> &#187;187    </li>188 189          <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>190          <li class="nav-item nav-item-2"><a href="language.html" accesskey="U">Python Language Services</a> &#187;</li>191        <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> — Tools for pickle developers</a></li>192                <li class="right">193                    194 195    <div class="inline-search" role="search">196        <form class="inline-search" action="../search.html" method="get">197          <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">198          <input type="submit" value="Go">199        </form>200    </div>201                     |202                </li>203            <li class="right">204<label class="theme-selector-label">205    Theme206    <select class="theme-selector" oninput="activateTheme(this.value)">207        <option value="auto" selected>Auto</option>208        <option value="light">Light</option>209        <option value="dark">Dark</option>210    </select>211</label> |</li>212            213      </ul>214    </div>    215 216    <div class="document">217      <div class="documentwrapper">218        <div class="bodywrapper">219          <div class="body" role="main">220            221  <section id="module-pickletools">222<span id="pickletools-tools-for-pickle-developers"></span><h1><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> — Tools for pickle developers<a class="headerlink" href="#module-pickletools" title="Link to this heading">¶</a></h1>223<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/main/Lib/pickletools.py">Lib/pickletools.py</a></p>224<hr class="docutils" />225<p>This module contains various constants relating to the intimate details of the226<a class="reference internal" href="pickle.html#module-pickle" title="pickle: Convert Python objects to streams of bytes and back."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickle</span></code></a> module, some lengthy comments about the implementation, and a227few useful functions for analyzing pickled data.  The contents of this module228are useful for Python core developers who are working on the <code class="xref py py-mod docutils literal notranslate"><span class="pre">pickle</span></code>;229ordinary users of the <code class="xref py py-mod docutils literal notranslate"><span class="pre">pickle</span></code> module probably won’t find the230<code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> module relevant.</p>231<section id="command-line-usage">232<span id="pickletools-cli"></span><h2>Command-line usage<a class="headerlink" href="#command-line-usage" title="Link to this heading">¶</a></h2>233<div class="versionadded">234<p><span class="versionmodified added">Added in version 3.2.</span></p>235</div>236<p>When invoked from the command line, <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">-m</span> <span class="pre">pickletools</span></code> will237disassemble the contents of one or more pickle files.  Note that if238you want to see the Python object stored in the pickle rather than the239details of pickle format, you may want to use <code class="docutils literal notranslate"><span class="pre">-m</span> <span class="pre">pickle</span></code> instead.240However, when the pickle file that you want to examine comes from an241untrusted source, <code class="docutils literal notranslate"><span class="pre">-m</span> <span class="pre">pickletools</span></code> is a safer option because it does242not execute pickle bytecode.</p>243<p>For example, with a tuple <code class="docutils literal notranslate"><span class="pre">(1,</span> <span class="pre">2)</span></code> pickled in file <code class="docutils literal notranslate"><span class="pre">x.pickle</span></code>:</p>244<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>python<span class="w"> </span>-m<span class="w"> </span>pickle<span class="w"> </span>x.pickle245<span class="gp gp-VirtualEnv">(1, 2)</span>246 247<span class="gp">$ </span>python<span class="w"> </span>-m<span class="w"> </span>pickletools<span class="w"> </span>x.pickle248<span class="go">    0: \x80 PROTO      3</span>249<span class="go">    2: K    BININT1    1</span>250<span class="go">    4: K    BININT1    2</span>251<span class="go">    6: \x86 TUPLE2</span>252<span class="go">    7: q    BINPUT     0</span>253<span class="go">    9: .    STOP</span>254<span class="go">highest protocol among opcodes = 2</span>255</pre></div>256</div>257<section id="command-line-options">258<h3>Command-line options<a class="headerlink" href="#command-line-options" title="Link to this heading">¶</a></h3>259<dl class="std option">260<dt class="sig sig-object std" id="cmdoption-pickletools-a">261<span id="cmdoption-pickletools-annotate"></span><span class="sig-name descname"><span class="pre">-a</span></span><span class="sig-prename descclassname"></span><span class="sig-prename descclassname"><span class="pre">,</span> </span><span class="sig-name descname"><span class="pre">--annotate</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-pickletools-a" title="Link to this definition">¶</a></dt>262<dd><p>Annotate each line with a short opcode description.</p>263</dd></dl>264 265<dl class="std option">266<dt class="sig sig-object std" id="cmdoption-pickletools-o">267<span id="cmdoption-pickletools-output"></span><span class="sig-name descname"><span class="pre">-o</span></span><span class="sig-prename descclassname"></span><span class="sig-prename descclassname"><span class="pre">,</span> </span><span class="sig-name descname"><span class="pre">--output</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;file&gt;</span></span><a class="headerlink" href="#cmdoption-pickletools-o" title="Link to this definition">¶</a></dt>268<dd><p>Name of a file where the output should be written.</p>269</dd></dl>270 271<dl class="std option">272<dt class="sig sig-object std" id="cmdoption-pickletools-l">273<span id="cmdoption-pickletools-indentlevel"></span><span class="sig-name descname"><span class="pre">-l</span></span><span class="sig-prename descclassname"></span><span class="sig-prename descclassname"><span class="pre">,</span> </span><span class="sig-name descname"><span class="pre">--indentlevel</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;num&gt;</span></span><a class="headerlink" href="#cmdoption-pickletools-l" title="Link to this definition">¶</a></dt>274<dd><p>The number of blanks by which to indent a new MARK level.</p>275</dd></dl>276 277<dl class="std option">278<dt class="sig sig-object std" id="cmdoption-pickletools-m">279<span id="cmdoption-pickletools-memo"></span><span class="sig-name descname"><span class="pre">-m</span></span><span class="sig-prename descclassname"></span><span class="sig-prename descclassname"><span class="pre">,</span> </span><span class="sig-name descname"><span class="pre">--memo</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-pickletools-m" title="Link to this definition">¶</a></dt>280<dd><p>When multiple objects are disassembled, preserve memo between281disassemblies.</p>282</dd></dl>283 284<dl class="std option">285<dt class="sig sig-object std" id="cmdoption-pickletools-p">286<span id="cmdoption-pickletools-preamble"></span><span class="sig-name descname"><span class="pre">-p</span></span><span class="sig-prename descclassname"></span><span class="sig-prename descclassname"><span class="pre">,</span> </span><span class="sig-name descname"><span class="pre">--preamble</span></span><span class="sig-prename descclassname"><span class="pre">=&lt;preamble&gt;</span></span><a class="headerlink" href="#cmdoption-pickletools-p" title="Link to this definition">¶</a></dt>287<dd><p>When more than one pickle file is specified, print given preamble288before each disassembly.</p>289</dd></dl>290 291<dl class="std option">292<dt class="sig sig-object std" id="cmdoption-pickletools-arg-pickle_file">293<span class="sig-name descname"><span class="pre">pickle_file</span></span><span class="sig-prename descclassname"></span><a class="headerlink" href="#cmdoption-pickletools-arg-pickle_file" title="Link to this definition">¶</a></dt>294<dd><p>A pickle file to read, or <code class="docutils literal notranslate"><span class="pre">-</span></code> to indicate reading from standard input.</p>295</dd></dl>296 297</section>298</section>299<section id="programmatic-interface">300<h2>Programmatic interface<a class="headerlink" href="#programmatic-interface" title="Link to this heading">¶</a></h2>301<dl class="py function">302<dt class="sig sig-object py" id="pickletools.dis">303<span class="sig-prename descclassname"><span class="pre">pickletools.</span></span><span class="sig-name descname"><span class="pre">dis</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pickle</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">out</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">memo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indentlevel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">annotate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#pickletools.dis" title="Link to this definition">¶</a></dt>304<dd><p>Outputs a symbolic disassembly of the pickle to the file-like305object <em>out</em>, defaulting to <code class="docutils literal notranslate"><span class="pre">sys.stdout</span></code>.  <em>pickle</em> can be a306string or a file-like object.  <em>memo</em> can be a Python dictionary307that will be used as the pickle’s memo; it can be used to perform308disassemblies across multiple pickles created by the same309pickler. Successive levels, indicated by <code class="docutils literal notranslate"><span class="pre">MARK</span></code> opcodes in the310stream, are indented by <em>indentlevel</em> spaces.  If a nonzero value311is given to <em>annotate</em>, each opcode in the output is annotated with312a short description.  The value of <em>annotate</em> is used as a hint for313the column where annotation should start.</p>314<div class="versionchanged">315<p><span class="versionmodified changed">Changed in version 3.2: </span>Added the <em>annotate</em> parameter.</p>316</div>317</dd></dl>318 319<dl class="py function">320<dt class="sig sig-object py" id="pickletools.genops">321<span class="sig-prename descclassname"><span class="pre">pickletools.</span></span><span class="sig-name descname"><span class="pre">genops</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pickle</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#pickletools.genops" title="Link to this definition">¶</a></dt>322<dd><p>Provides an <a class="reference internal" href="../glossary.html#term-iterator"><span class="xref std std-term">iterator</span></a> over all of the opcodes in a pickle, returning a323sequence of <code class="docutils literal notranslate"><span class="pre">(opcode,</span> <span class="pre">arg,</span> <span class="pre">pos)</span></code> triples.  <em>opcode</em> is an instance of an324<code class="xref py py-class docutils literal notranslate"><span class="pre">OpcodeInfo</span></code> class; <em>arg</em> is the decoded value, as a Python object, of325the opcode’s argument; <em>pos</em> is the position at which this opcode is located.326<em>pickle</em> can be a string or a file-like object.</p>327</dd></dl>328 329<dl class="py function">330<dt class="sig sig-object py" id="pickletools.optimize">331<span class="sig-prename descclassname"><span class="pre">pickletools.</span></span><span class="sig-name descname"><span class="pre">optimize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">picklestring</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#pickletools.optimize" title="Link to this definition">¶</a></dt>332<dd><p>Returns a new equivalent pickle string after eliminating unused <code class="docutils literal notranslate"><span class="pre">PUT</span></code>333opcodes. The optimized pickle is shorter, takes less transmission time,334requires less storage space, and unpickles more efficiently.</p>335</dd></dl>336 337</section>338</section>339 340 341            <div class="clearer"></div>342          </div>343        </div>344      </div>345      <div class="sphinxsidebar" role="navigation" aria-label="Main">346        <div class="sphinxsidebarwrapper">347  <div>348    <h3><a href="../contents.html">Table of Contents</a></h3>349    <ul>350<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> — Tools for pickle developers</a><ul>351<li><a class="reference internal" href="#command-line-usage">Command-line usage</a><ul>352<li><a class="reference internal" href="#command-line-options">Command-line options</a></li>353</ul>354</li>355<li><a class="reference internal" href="#programmatic-interface">Programmatic interface</a></li>356</ul>357</li>358</ul>359 360  </div>361  <div>362    <h4>Previous topic</h4>363    <p class="topless"><a href="dis.html"364                          title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dis</span></code> — Disassembler for Python bytecode</a></p>365  </div>366  <div>367    <h4>Next topic</h4>368    <p class="topless"><a href="windows.html"369                          title="next chapter">MS Windows Specific Services</a></p>370  </div>371  <script>372    document.addEventListener('DOMContentLoaded', () => {373        const title = document.querySelector('meta[property="og:title"]').content;374        const elements = document.querySelectorAll('.improvepage');375        const pageurl = window.location.href.split('?')[0];376        elements.forEach(element => {377            const url = new URL(element.href.split('?')[0].replace("-nojs", ""));378            url.searchParams.set('pagetitle', title);379            url.searchParams.set('pageurl', pageurl);380            url.searchParams.set('pagesource', "library/pickletools.rst");381            element.href = url.toString();382        });383    });384  </script>385  <div role="note" aria-label="source link">386    <h3>This page</h3>387    <ul class="this-page-menu">388      <li><a href="../bugs.html">Report a bug</a></li>389      <li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>390      <li>391        <a href="https://github.com/python/cpython/blob/main/Doc/library/pickletools.rst?plain=1"392            rel="nofollow">Show source393        </a>394      </li>395      396    </ul>397  </div>398        </div>399<div id="sidebarbutton" title="Collapse sidebar">400<span>«</span>401</div>402 403      </div>404      <div class="clearer"></div>405    </div>  406    <div class="related" role="navigation" aria-label="Related">407      <h3>Navigation</h3>408      <ul>409        <li class="right" style="margin-right: 10px">410          <a href="../genindex.html" title="General Index"411             >index</a></li>412        <li class="right" >413          <a href="../py-modindex.html" title="Python Module Index"414             >modules</a> |</li>415        <li class="right" >416          <a href="windows.html" title="MS Windows Specific Services"417             >next</a> |</li>418        <li class="right" >419          <a href="dis.html" title="dis — Disassembler for Python bytecode"420             >previous</a> |</li>421 422          <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>423          <li><a href="https://www.python.org/">Python</a> &#187;</li>424          <li class="switchers">425            <div class="language_switcher_placeholder"></div>426            <div class="version_switcher_placeholder"></div>427          </li>428          <li>429              430          </li>431    <li id="cpython-language-and-version">432      <a href="../index.html">3.15.0a6 Documentation</a> &#187;433    </li>434 435          <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>436          <li class="nav-item nav-item-2"><a href="language.html" >Python Language Services</a> &#187;</li>437        <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickletools</span></code> — Tools for pickle developers</a></li>438                <li class="right">439                    440 441    <div class="inline-search" role="search">442        <form class="inline-search" action="../search.html" method="get">443          <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">444          <input type="submit" value="Go">445        </form>446    </div>447                     |448                </li>449            <li class="right">450<label class="theme-selector-label">451    Theme452    <select class="theme-selector" oninput="activateTheme(this.value)">453        <option value="auto" selected>Auto</option>454        <option value="light">Light</option>455        <option value="dark">Dark</option>456    </select>457</label> |</li>458            459      </ul>460    </div>  461    <div class="footer">462    &copy; <a href="../copyright.html">Copyright</a> 2001 Python Software Foundation.463    <br>464    This page is licensed under the Python Software Foundation License Version 2.465    <br>466    Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.467    <br>468    469      See <a href="/license.html">History and License</a> for more information.<br>470    471    472    <br>473 474    The Python Software Foundation is a non-profit corporation.475<a href="https://www.python.org/psf/donations/">Please donate.</a>476<br>477    <br>478      Last updated on Mar 10, 2026 (08:58 UTC).479    480      <a href="/bugs.html">Found a bug</a>?481    482    <br>483 484    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.485    </div>486 487  </body>488</html>