CINXE.COM

PEP 3100 – Miscellaneous Python 3.0 Plans | peps.python.org

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="color-scheme" content="light dark"> <title>PEP 3100 – Miscellaneous Python 3.0 Plans | peps.python.org</title> <link rel="shortcut icon" href="../_static/py.png"> <link rel="canonical" href="https://peps.python.org/pep-3100/"> <link rel="stylesheet" href="../_static/style.css" type="text/css"> <link rel="stylesheet" href="../_static/mq.css" type="text/css"> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" media="(prefers-color-scheme: light)" id="pyg-light"> <link rel="stylesheet" href="../_static/pygments_dark.css" type="text/css" media="(prefers-color-scheme: dark)" id="pyg-dark"> <link rel="alternate" type="application/rss+xml" title="Latest PEPs" href="https://peps.python.org/peps.rss"> <meta property="og:title" content='PEP 3100 – Miscellaneous Python 3.0 Plans | peps.python.org'> <meta property="og:description" content="This PEP, previously known as PEP 3000, describes smaller scale changes and new features for which no separate PEP is written yet, all targeted for Python 3000."> <meta property="og:type" content="website"> <meta property="og:url" content="https://peps.python.org/pep-3100/"> <meta property="og:site_name" content="Python Enhancement Proposals (PEPs)"> <meta property="og:image" content="https://peps.python.org/_static/og-image.png"> <meta property="og:image:alt" content="Python PEPs"> <meta property="og:image:width" content="200"> <meta property="og:image:height" content="200"> <meta name="description" content="This PEP, previously known as PEP 3000, describes smaller scale changes and new features for which no separate PEP is written yet, all targeted for Python 3000."> <meta name="theme-color" content="#3776ab"> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-sun-half" viewBox="0 0 24 24" pointer-events="all"> <title>Following system colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="9"></circle> <path d="M12 3v18m0-12l4.65-4.65M12 14.3l7.37-7.37M12 19.6l8.85-8.85"></path> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24" pointer-events="all"> <title>Selected dark colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"></path> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24" pointer-events="all"> <title>Selected light colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> </svg> <script> document.documentElement.dataset.colour_scheme = localStorage.getItem("colour_scheme") || "auto" </script> <section id="pep-page-section"> <header> <h1>Python Enhancement Proposals</h1> <ul class="breadcrumbs"> <li><a href="https://www.python.org/" title="The Python Programming Language">Python</a> &raquo; </li> <li><a href="../pep-0000/">PEP Index</a> &raquo; </li> <li>PEP 3100</li> </ul> <button id="colour-scheme-cycler" onClick="setColourScheme(nextColourScheme())"> <svg aria-hidden="true" class="colour-scheme-icon-when-auto"><use href="#svg-sun-half"></use></svg> <svg aria-hidden="true" class="colour-scheme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg aria-hidden="true" class="colour-scheme-icon-when-light"><use href="#svg-sun"></use></svg> <span class="visually-hidden">Toggle light / dark / auto colour theme</span> </button> </header> <article> <section id="pep-content"> <h1 class="page-title">PEP 3100 – Miscellaneous Python 3.0 Plans</h1> <dl class="rfc2822 field-list simple"> <dt class="field-odd">Author<span class="colon">:</span></dt> <dd class="field-odd">Brett Cannon &lt;brett&#32;&#97;t&#32;python.org&gt;</dd> <dt class="field-even">Status<span class="colon">:</span></dt> <dd class="field-even"><abbr title="Accepted and implementation complete, or no longer active">Final</abbr></dd> <dt class="field-odd">Type<span class="colon">:</span></dt> <dd class="field-odd"><abbr title="Normative PEP describing or proposing a change to a Python community process, workflow or governance">Process</abbr></dd> <dt class="field-even">Created<span class="colon">:</span></dt> <dd class="field-even">20-Aug-2004</dd> <dt class="field-odd">Post-History<span class="colon">:</span></dt> <dd class="field-odd"><p></p></dd> </dl> <hr class="docutils" /> <section id="contents"> <details><summary>Table of Contents</summary><ul class="simple"> <li><a class="reference internal" href="#abstract">Abstract</a></li> <li><a class="reference internal" href="#general-goals">General goals</a></li> <li><a class="reference internal" href="#influencing-peps">Influencing PEPs</a></li> <li><a class="reference internal" href="#style-changes">Style changes</a></li> <li><a class="reference internal" href="#core-language">Core language</a></li> <li><a class="reference internal" href="#atomic-types">Atomic Types</a></li> <li><a class="reference internal" href="#built-in-namespace">Built-in Namespace</a></li> <li><a class="reference internal" href="#standard-library">Standard library</a></li> <li><a class="reference internal" href="#outstanding-issues">Outstanding Issues</a></li> <li><a class="reference internal" href="#references">References</a></li> <li><a class="reference internal" href="#copyright">Copyright</a></li> </ul> </details></section> <section id="abstract"> <h2><a class="toc-backref" href="#abstract" role="doc-backlink">Abstract</a></h2> <p>This PEP, previously known as <a class="pep reference internal" href="../pep-3000/" title="PEP 3000 – Python 3000">PEP 3000</a>, describes smaller scale changes and new features for which no separate PEP is written yet, all targeted for Python 3000.</p> <p>The list of features included in this document is subject to change and isn’t binding on the Python development community; features may be added, removed, and modified at any time. The purpose of this list is to focus our language development effort on changes that are steps to 3.0, and to encourage people to invent ways to smooth the transition.</p> <p>This document is not a wish-list that anyone can extend. While there are two authors of this PEP, we’re just supplying the text; the decisions for which changes are listed in this document are made by Guido van Rossum, who has chosen them as goals for Python 3.0.</p> <p>Guido’s pronouncements on things that will not change in Python 3.0 are recorded in <a class="pep reference internal" href="../pep-3099/" title="PEP 3099 – Things that will Not Change in Python 3000">PEP 3099</a>.</p> </section> <section id="general-goals"> <h2><a class="toc-backref" href="#general-goals" role="doc-backlink">General goals</a></h2> <p>A general goal is to reduce feature duplication by removing old ways of doing things. A general principle of the design will be that one obvious way of doing something is enough. <a class="footnote-reference brackets" href="#id60" id="id1">[1]</a></p> </section> <section id="influencing-peps"> <h2><a class="toc-backref" href="#influencing-peps" role="doc-backlink">Influencing PEPs</a></h2> <ul class="simple"> <li><a class="pep reference internal" href="../pep-0238/" title="PEP 238 – Changing the Division Operator">PEP 238</a> (Changing the Division Operator)</li> <li><a class="pep reference internal" href="../pep-0328/" title="PEP 328 – Imports: Multi-Line and Absolute/Relative">PEP 328</a> (Imports: Multi-Line and Absolute/Relative)</li> <li><a class="pep reference internal" href="../pep-0343/" title="PEP 343 – The “with” Statement">PEP 343</a> (The “with” Statement)</li> <li><a class="pep reference internal" href="../pep-0352/" title="PEP 352 – Required Superclass for Exceptions">PEP 352</a> (Required Superclass for Exceptions)</li> </ul> </section> <section id="style-changes"> <h2><a class="toc-backref" href="#style-changes" role="doc-backlink">Style changes</a></h2> <ul class="simple"> <li>The C style guide will be updated to use 4-space indents, never tabs. This style should be used for all new files; existing files can be updated only if there is no hope to ever merge a particular file from the Python 2 HEAD. Within a file, the indentation style should be consistent. No other style guide changes are planned ATM.</li> </ul> </section> <section id="core-language"> <h2><a class="toc-backref" href="#core-language" role="doc-backlink">Core language</a></h2> <ul class="simple"> <li>True division becomes default behavior <a class="pep reference internal" href="../pep-0238/" title="PEP 238 – Changing the Division Operator">PEP 238</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">exec</span></code> as a statement is not worth it – make it a function [done]</li> <li>Add optional declarations for static typing <a class="pep reference internal" href="../pep-3107/" title="PEP 3107 – Function Annotations">PEP 3107</a> <a class="footnote-reference brackets" href="#id69" id="id2">[10]</a> [done]</li> <li>Support only new-style classes; classic classes will be gone <a class="footnote-reference brackets" href="#id60" id="id3">[1]</a> [done]</li> <li>Replace <code class="docutils literal notranslate"><span class="pre">print</span></code> by a function <a class="footnote-reference brackets" href="#id73" id="id4">[14]</a> <a class="pep reference internal" href="../pep-3105/" title="PEP 3105 – Make print a function">PEP 3105</a> [done]</li> <li>The <code class="docutils literal notranslate"><span class="pre">softspace</span></code> attribute of files goes away. [done]</li> <li>Use <code class="docutils literal notranslate"><span class="pre">except</span> <span class="pre">E1,</span> <span class="pre">E2,</span> <span class="pre">E3</span> <span class="pre">as</span> <span class="pre">err:</span></code> if you want the error variable. <a class="footnote-reference brackets" href="#id62" id="id5">[3]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">None</span></code> becomes a keyword <a class="footnote-reference brackets" href="#id63" id="id6">[4]</a>; also <code class="docutils literal notranslate"><span class="pre">True</span></code> and <code class="docutils literal notranslate"><span class="pre">False</span></code> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">...</span></code> to become a general expression element <a class="footnote-reference brackets" href="#id75" id="id7">[16]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">as</span></code> becomes a keyword <a class="footnote-reference brackets" href="#id64" id="id8">[5]</a> (starting in 2.6 already) [done]</li> <li>Have list comprehensions be syntactic sugar for passing an equivalent generator expression to <code class="docutils literal notranslate"><span class="pre">list()</span></code>; as a consequence the loop variable will no longer be exposed <a class="pep reference internal" href="../pep-0289/" title="PEP 289 – Generator Expressions">PEP 289</a> [done]</li> <li>Comparisons other than <code class="docutils literal notranslate"><span class="pre">==</span></code> and <code class="docutils literal notranslate"><span class="pre">!=</span></code> between disparate types will raise an exception unless explicitly supported by the type <a class="footnote-reference brackets" href="#id65" id="id9">[6]</a> [done]</li> <li>floats will not be acceptable as arguments in place of ints for operations where floats are inadvertently accepted (PyArg_ParseTuple() i &amp; l formats)</li> <li>Remove from … import * at function scope. [done] This means that functions can always be optimized and support for unoptimized functions can go away.</li> <li><dl class="simple"> <dt>Imports <a class="pep reference internal" href="../pep-0328/" title="PEP 328 – Imports: Multi-Line and Absolute/Relative">PEP 328</a></dt><dd><ul> <li>Imports will be absolute by default. [done]</li> <li>Relative imports must be explicitly specified. [done]</li> <li>Indirection entries in <code class="docutils literal notranslate"><span class="pre">sys.modules</span></code> (i.e., a value of <code class="docutils literal notranslate"><span class="pre">None</span></code> for <code class="docutils literal notranslate"><span class="pre">A.string</span></code> means to use the top-level <code class="docutils literal notranslate"><span class="pre">string</span></code> module) will not be supported.</li> </ul> </dd> </dl> </li> <li>__init__.py might become optional in sub-packages? __init__.py will still be required for top-level packages.</li> <li>Cleanup the Py_InitModule() variants {,3,4} (also import and parser APIs)</li> <li>Cleanup the APIs exported in pythonrun, etc.</li> <li>Some expressions will require parentheses that didn’t in 2.x:<ul> <li>List comprehensions will require parentheses around the iterables. This will make list comprehensions more similar to generator comprehensions. [x for x in 1, 2] will need to be: [x for x in (1, 2)] [done]</li> <li>Lambdas may have to be parenthesized <a class="pep reference internal" href="../pep-0308/" title="PEP 308 – Conditional Expressions">PEP 308</a> [NO]</li> </ul> </li> <li>In order to get rid of the confusion between __builtin__ and __builtins__, it was decided to rename __builtin__ (the module) to builtins, and to leave __builtins__ (the sandbox hook) alone. <a class="footnote-reference brackets" href="#builtin" id="id10">[33]</a> <a class="footnote-reference brackets" href="#builtins" id="id11">[34]</a> [done]</li> <li>Attributes on functions of the form <code class="docutils literal notranslate"><span class="pre">func_whatever</span></code> will be renamed <code class="docutils literal notranslate"><span class="pre">__whatever__</span></code> <a class="footnote-reference brackets" href="#id76" id="id12">[17]</a> [done]</li> <li>Set literals and comprehensions <a class="footnote-reference brackets" href="#id78" id="id13">[19]</a> <a class="footnote-reference brackets" href="#id79" id="id14">[20]</a> [done] {x} means set([x]); {x, y} means set([x, y]). {F(x) for x in S if P(x)} means set(F(x) for x in S if P(x)). NB. {range(x)} means set([range(x)]), NOT set(range(x)). There’s no literal for an empty set; use set() (or {1}&amp;{2} :-). There’s no frozenset literal; they are too rarely needed.</li> <li>The <code class="docutils literal notranslate"><span class="pre">__nonzero__</span></code> special method will be renamed to <code class="docutils literal notranslate"><span class="pre">__bool__</span></code> and have to return a bool. The typeobject slot will be called <code class="docutils literal notranslate"><span class="pre">tp_bool</span></code> <a class="footnote-reference brackets" href="#id82" id="id15">[23]</a> [done]</li> <li>Dict comprehensions, as first proposed in <a class="pep reference internal" href="../pep-0274/" title="PEP 274 – Dict Comprehensions">PEP 274</a> [done] {K(x): V(x) for x in S if P(x)} means dict((K(x), V(x)) for x in S if P(x)).</li> </ul> <p>To be removed:</p> <ul> <li>String exceptions: use instances of an Exception class <a class="footnote-reference brackets" href="#id61" id="id16">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">Exception,</span> <span class="pre">&quot;message&quot;</span></code>: use <code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">Exception(&quot;message&quot;)</span></code> <a class="footnote-reference brackets" href="#id71" id="id17">[12]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">x</span></code>: use <code class="docutils literal notranslate"><span class="pre">repr(x)</span></code> <a class="footnote-reference brackets" href="#id61" id="id18">[2]</a> [done]</li> <li>The <code class="docutils literal notranslate"><span class="pre">&lt;&gt;</span></code> operator: use <code class="docutils literal notranslate"><span class="pre">!=</span></code> instead <a class="footnote-reference brackets" href="#id62" id="id19">[3]</a> [done]</li> <li>The __mod__ and __divmod__ special methods on float. [they should stay] <a class="footnote-reference brackets" href="#id80" id="id20">[21]</a></li> <li>Drop unbound methods <a class="footnote-reference brackets" href="#id66" id="id21">[7]</a> <a class="footnote-reference brackets" href="#id85" id="id22">[26]</a> [done]</li> <li>METH_OLDARGS [done]</li> <li>WITH_CYCLE_GC [done]</li> <li>__getslice__, __setslice__, __delslice__ <a class="footnote-reference brackets" href="#sequence-types" id="id23">[32]</a>; remove slice opcodes and use slice objects. [done]</li> <li><code class="docutils literal notranslate"><span class="pre">__oct__</span></code>, <code class="docutils literal notranslate"><span class="pre">__hex__</span></code>: use <code class="docutils literal notranslate"><span class="pre">__index__</span></code> in <code class="docutils literal notranslate"><span class="pre">oct()</span></code> and <code class="docutils literal notranslate"><span class="pre">hex()</span></code> instead. [done]</li> <li><code class="docutils literal notranslate"><span class="pre">__methods__</span></code> and <code class="docutils literal notranslate"><span class="pre">__members__</span></code> [done]</li> <li>C APIs (see code): PyFloat_AsString, PyFloat_AsReprString, PyFloat_AsStringEx, PySequence_In, PyEval_EvalFrame, PyEval_CallObject, _PyObject_Del, _PyObject_GC_Del, _PyObject_GC_Track, _PyObject_GC_UnTrack PyString_AsEncodedString, PyString_AsDecodedString PyArg_NoArgs, PyArg_GetInt, intargfunc, intintargfunc<p>PyImport_ReloadModule ?</p> </li> </ul> </section> <section id="atomic-types"> <h2><a class="toc-backref" href="#atomic-types" role="doc-backlink">Atomic Types</a></h2> <ul class="simple"> <li>Remove distinction between int and long types; ‘long’ built-in type and literals with ‘L’ or ‘l’ suffix disappear <a class="footnote-reference brackets" href="#id60" id="id24">[1]</a> [done]</li> <li>Make all strings be Unicode, and have a separate bytes() type <a class="footnote-reference brackets" href="#id60" id="id25">[1]</a> The new string type will be called ‘str’. See <a class="pep reference internal" href="../pep-3137/" title="PEP 3137 – Immutable Bytes and Mutable Buffer">PEP 3137</a>. [done]</li> <li>Return iterable views instead of lists where appropriate for atomic type methods (e.g. <code class="docutils literal notranslate"><span class="pre">dict.keys()</span></code>, <code class="docutils literal notranslate"><span class="pre">dict.values()</span></code>, <code class="docutils literal notranslate"><span class="pre">dict.items()</span></code>, etc.); iter* methods will be removed. [done]</li> <li>Make <code class="docutils literal notranslate"><span class="pre">string.join()</span></code> stringify its arguments? <a class="footnote-reference brackets" href="#id77" id="id26">[18]</a> [NO]</li> <li>Fix open() so it returns a ValueError if the mode is bad rather than IOError. [done]</li> </ul> <p>To be removed:</p> <ul class="simple"> <li><code class="docutils literal notranslate"><span class="pre">basestring.find()</span></code> and <code class="docutils literal notranslate"><span class="pre">basestring.rfind()</span></code>; use <code class="docutils literal notranslate"><span class="pre">basestring.index()</span></code> or <code class="docutils literal notranslate"><span class="pre">basestring.[r]partition()</span></code> or <code class="docutils literal notranslate"><span class="pre">basestring.rindex()</span></code> in a try/except block??? <a class="footnote-reference brackets" href="#id72" id="id27">[13]</a> [UNLIKELY]</li> <li><code class="docutils literal notranslate"><span class="pre">file.xreadlines()</span></code> method <a class="footnote-reference brackets" href="#file-object" id="id28">[31]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">dict.setdefault()</span></code>? <a class="footnote-reference brackets" href="#id74" id="id29">[15]</a> [UNLIKELY]</li> <li><code class="docutils literal notranslate"><span class="pre">dict.has_key()</span></code> method; use <code class="docutils literal notranslate"><span class="pre">in</span></code> operator [done]</li> <li><code class="docutils literal notranslate"><span class="pre">list.sort()</span></code> and <code class="docutils literal notranslate"><span class="pre">builtin.sorted()</span></code> methods: eliminate <code class="docutils literal notranslate"><span class="pre">cmp</span></code> parameter <a class="footnote-reference brackets" href="#id86" id="id30">[27]</a> [done]</li> </ul> </section> <section id="built-in-namespace"> <h2><a class="toc-backref" href="#built-in-namespace" role="doc-backlink">Built-in Namespace</a></h2> <ul class="simple"> <li>Make built-ins return an iterator where appropriate (e.g. <code class="docutils literal notranslate"><span class="pre">range()</span></code>, <code class="docutils literal notranslate"><span class="pre">zip()</span></code>, <code class="docutils literal notranslate"><span class="pre">map()</span></code>, <code class="docutils literal notranslate"><span class="pre">filter()</span></code>, etc.) [done]</li> <li>Remove <code class="docutils literal notranslate"><span class="pre">input()</span></code> and rename <code class="docutils literal notranslate"><span class="pre">raw_input()</span></code> to <code class="docutils literal notranslate"><span class="pre">input()</span></code>. If you need the old input(), use eval(input()). [done]</li> <li>Introduce <code class="docutils literal notranslate"><span class="pre">trunc()</span></code>, which would call the <code class="docutils literal notranslate"><span class="pre">__trunc__()</span></code> method on its argument; suggested use is for objects like float where calling <code class="docutils literal notranslate"><span class="pre">__int__()</span></code> has data loss, but an integral representation is still desired? <a class="footnote-reference brackets" href="#id67" id="id31">[8]</a> [done]</li> <li>Exception hierarchy changes <a class="pep reference internal" href="../pep-0352/" title="PEP 352 – Required Superclass for Exceptions">PEP 352</a> [done]</li> <li>Add a <code class="docutils literal notranslate"><span class="pre">bin()</span></code> function for a binary representation of integers [done]</li> </ul> <p>To be removed:</p> <ul class="simple"> <li><code class="docutils literal notranslate"><span class="pre">apply()</span></code>: use <code class="docutils literal notranslate"><span class="pre">f(*args,</span> <span class="pre">**kw)</span></code> instead <a class="footnote-reference brackets" href="#id61" id="id32">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">buffer()</span></code>: must die (use a bytes() type instead) (?) <a class="footnote-reference brackets" href="#id61" id="id33">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">callable()</span></code>: just use isinstance(x, collections.Callable) (?) <a class="footnote-reference brackets" href="#id61" id="id34">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">compile()</span></code>: put in <code class="docutils literal notranslate"><span class="pre">sys</span></code> (or perhaps in a module of its own) <a class="footnote-reference brackets" href="#id61" id="id35">[2]</a></li> <li><code class="docutils literal notranslate"><span class="pre">coerce()</span></code>: no longer needed <a class="footnote-reference brackets" href="#id61" id="id36">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">execfile()</span></code>, <code class="docutils literal notranslate"><span class="pre">reload()</span></code>: use <code class="docutils literal notranslate"><span class="pre">exec()</span></code> <a class="footnote-reference brackets" href="#id61" id="id37">[2]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">intern()</span></code>: put in <code class="docutils literal notranslate"><span class="pre">sys</span></code> <a class="footnote-reference brackets" href="#id61" id="id38">[2]</a>, <a class="footnote-reference brackets" href="#id81" id="id39">[22]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">reduce()</span></code>: put in <code class="docutils literal notranslate"><span class="pre">functools</span></code>, a loop is more readable most of the times <a class="footnote-reference brackets" href="#id61" id="id40">[2]</a>, <a class="footnote-reference brackets" href="#id68" id="id41">[9]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">xrange()</span></code>: use <code class="docutils literal notranslate"><span class="pre">range()</span></code> instead <a class="footnote-reference brackets" href="#id60" id="id42">[1]</a> [See range() above] [done]</li> <li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">StandardError</span></code>: this is a relic from the original exception hierarchy;</dt><dd>subclass <code class="docutils literal notranslate"><span class="pre">Exception</span></code> instead. [done]</dd> </dl> </li> </ul> </section> <section id="standard-library"> <h2><a class="toc-backref" href="#standard-library" role="doc-backlink">Standard library</a></h2> <ul class="simple"> <li>Reorganize the standard library to not be as shallow?</li> <li>Move test code to where it belongs, there will be no more test() functions in the standard library</li> <li>Convert all tests to use either doctest or unittest.</li> <li>For the procedures of standard library improvement, see <a class="pep reference internal" href="../pep-3001/" title="PEP 3001 – Procedure for reviewing and improving standard library modules">PEP 3001</a></li> </ul> <p>To be removed:</p> <ul class="simple"> <li>The sets module. [done]</li> <li><dl class="simple"> <dt>stdlib modules to be removed</dt><dd><ul> <li><dl class="simple"> <dt>see docstrings and comments in the source</dt><dd><ul> <li><code class="docutils literal notranslate"><span class="pre">macfs</span></code> [to do]</li> <li><code class="docutils literal notranslate"><span class="pre">new</span></code>, <code class="docutils literal notranslate"><span class="pre">reconvert</span></code>, <code class="docutils literal notranslate"><span class="pre">stringold</span></code>, <code class="docutils literal notranslate"><span class="pre">xmllib</span></code>, <code class="docutils literal notranslate"><span class="pre">pcre</span></code>, <code class="docutils literal notranslate"><span class="pre">pypcre</span></code>, <code class="docutils literal notranslate"><span class="pre">strop</span></code> [all done]</li> </ul> </dd> </dl> </li> <li><dl class="simple"> <dt>see <a class="pep reference internal" href="../pep-0004/" title="PEP 4 – Deprecation of Standard Modules">PEP 4</a></dt><dd><ul> <li><code class="docutils literal notranslate"><span class="pre">buildtools</span></code>, <code class="docutils literal notranslate"><span class="pre">mimetools</span></code>, <code class="docutils literal notranslate"><span class="pre">multifile</span></code>, <code class="docutils literal notranslate"><span class="pre">rfc822</span></code>, [to do]</li> <li><code class="docutils literal notranslate"><span class="pre">mpz</span></code>, <code class="docutils literal notranslate"><span class="pre">posixfile</span></code>, <code class="docutils literal notranslate"><span class="pre">regsub</span></code>, <code class="docutils literal notranslate"><span class="pre">rgbimage</span></code>, <code class="docutils literal notranslate"><span class="pre">sha</span></code>, <code class="docutils literal notranslate"><span class="pre">statcache</span></code>, <code class="docutils literal notranslate"><span class="pre">sv</span></code>, <code class="docutils literal notranslate"><span class="pre">TERMIOS</span></code>, <code class="docutils literal notranslate"><span class="pre">timing</span></code> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">cfmfile</span></code>, <code class="docutils literal notranslate"><span class="pre">gopherlib</span></code>, <code class="docutils literal notranslate"><span class="pre">md5</span></code>, <code class="docutils literal notranslate"><span class="pre">MimeWriter</span></code>, <code class="docutils literal notranslate"><span class="pre">mimify</span></code> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">cl</span></code>, <code class="docutils literal notranslate"><span class="pre">sets</span></code>, <code class="docutils literal notranslate"><span class="pre">xreadlines</span></code>, <code class="docutils literal notranslate"><span class="pre">rotor</span></code>, <code class="docutils literal notranslate"><span class="pre">whrandom</span></code> [done]</li> </ul> </dd> </dl> </li> <li><dl class="simple"> <dt>Everything in lib-old <a class="pep reference internal" href="../pep-0004/" title="PEP 4 – Deprecation of Standard Modules">PEP 4</a> [done]</dt><dd><ul> <li><code class="docutils literal notranslate"><span class="pre">Para</span></code>, <code class="docutils literal notranslate"><span class="pre">addpack</span></code>, <code class="docutils literal notranslate"><span class="pre">cmp</span></code>, <code class="docutils literal notranslate"><span class="pre">cmpcache</span></code>, <code class="docutils literal notranslate"><span class="pre">codehack</span></code>, <code class="docutils literal notranslate"><span class="pre">dircmp</span></code>, <code class="docutils literal notranslate"><span class="pre">dump</span></code>, <code class="docutils literal notranslate"><span class="pre">find</span></code>, <code class="docutils literal notranslate"><span class="pre">fmt</span></code>, <code class="docutils literal notranslate"><span class="pre">grep</span></code>, <code class="docutils literal notranslate"><span class="pre">lockfile</span></code>, <code class="docutils literal notranslate"><span class="pre">newdir</span></code>, <code class="docutils literal notranslate"><span class="pre">ni</span></code>, <code class="docutils literal notranslate"><span class="pre">packmail</span></code>, <code class="docutils literal notranslate"><span class="pre">poly</span></code>, <code class="docutils literal notranslate"><span class="pre">rand</span></code>, <code class="docutils literal notranslate"><span class="pre">statcache</span></code>, <code class="docutils literal notranslate"><span class="pre">tb</span></code>, <code class="docutils literal notranslate"><span class="pre">tzparse</span></code>, <code class="docutils literal notranslate"><span class="pre">util</span></code>, <code class="docutils literal notranslate"><span class="pre">whatsound</span></code>, <code class="docutils literal notranslate"><span class="pre">whrandom</span></code>, <code class="docutils literal notranslate"><span class="pre">zmod</span></code></li> </ul> </dd> </dl> </li> </ul> </dd> </dl> </li> <li><code class="docutils literal notranslate"><span class="pre">sys.exitfunc</span></code>: use atexit module instead <a class="footnote-reference brackets" href="#sys-module" id="id43">[28]</a>, <a class="footnote-reference brackets" href="#exitfunc-patch" id="id44">[35]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">sys.exc_type</span></code>, <code class="docutils literal notranslate"><span class="pre">sys.exc_values</span></code>, <code class="docutils literal notranslate"><span class="pre">sys.exc_traceback</span></code>: not thread-safe; use <code class="docutils literal notranslate"><span class="pre">sys.exc_info()</span></code> or an attribute of the exception <a class="footnote-reference brackets" href="#id61" id="id45">[2]</a> <a class="footnote-reference brackets" href="#id70" id="id46">[11]</a> <a class="footnote-reference brackets" href="#sys-module" id="id47">[28]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">sys.exc_clear</span></code>: Python 3’s except statements provide the same functionality <a class="footnote-reference brackets" href="#id83" id="id48">[24]</a> <a class="pep reference internal" href="../pep-3110/" title="PEP 3110 – Catching Exceptions in Python 3000">PEP 3110</a> <a class="footnote-reference brackets" href="#sys-module" id="id49">[28]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">array.read</span></code>, <code class="docutils literal notranslate"><span class="pre">array.write</span></code> <a class="footnote-reference brackets" href="#array-module" id="id50">[30]</a></li> <li><code class="docutils literal notranslate"><span class="pre">operator.isCallable</span></code> : <code class="docutils literal notranslate"><span class="pre">callable()</span></code> built-in is being removed <a class="footnote-reference brackets" href="#operator-module" id="id51">[29]</a> <a class="footnote-reference brackets" href="#remove-operator-funcs" id="id52">[36]</a> [done]</li> <li><code class="docutils literal notranslate"><span class="pre">operator.sequenceIncludes</span></code> : redundant thanks to <code class="docutils literal notranslate"><span class="pre">operator.contains</span></code> <a class="footnote-reference brackets" href="#operator-module" id="id53">[29]</a> <a class="footnote-reference brackets" href="#remove-operator-funcs" id="id54">[36]</a> [done]</li> <li>In the thread module, the acquire_lock() and release_lock() aliases for the acquire() and release() methods on lock objects. (Probably also just remove the thread module as a public API, in favor of always using threading.py.)</li> <li>UserXyz classes, in favour of XyzMixins.</li> <li>Remove the unreliable empty() and full() methods from Queue.py? <a class="footnote-reference brackets" href="#id84" id="id55">[25]</a></li> <li>Remove jumpahead() from the random API? <a class="footnote-reference brackets" href="#id84" id="id56">[25]</a></li> <li>Make the primitive for random be something generating random bytes rather than random floats? <a class="footnote-reference brackets" href="#id84" id="id57">[25]</a></li> <li>Get rid of Cookie.SerialCookie and Cookie.SmartCookie? <a class="footnote-reference brackets" href="#id84" id="id58">[25]</a></li> <li>Modify the heapq.heapreplace() API to compare the new value to the top of the heap? <a class="footnote-reference brackets" href="#id84" id="id59">[25]</a></li> </ul> </section> <section id="outstanding-issues"> <h2><a class="toc-backref" href="#outstanding-issues" role="doc-backlink">Outstanding Issues</a></h2> <ul class="simple"> <li>Require C99, so we can use // comments, named initializers, declare variables without introducing a new scope, among other benefits. (Also better support for IEEE floating point issues like NaN and infinities?)</li> <li>Remove support for old systems, including: BeOS, RISCOS, (SGI) Irix, Tru64</li> </ul> </section> <section id="references"> <h2><a class="toc-backref" href="#references" role="doc-backlink">References</a></h2> <aside class="footnote-list brackets"> <aside class="footnote brackets" id="id60" role="doc-footnote"> <dt class="label" id="id60">[1]<em> (<a href='#id1'>1</a>, <a href='#id3'>2</a>, <a href='#id24'>3</a>, <a href='#id25'>4</a>, <a href='#id42'>5</a>) </em></dt> <dd>PyCon 2003 State of the Union: <a class="reference external" href="https://legacy.python.org/doc/essays/ppt/pycon2003/pycon2003.ppt">https://legacy.python.org/doc/essays/ppt/pycon2003/pycon2003.ppt</a></aside> <aside class="footnote brackets" id="id61" role="doc-footnote"> <dt class="label" id="id61">[2]<em> (<a href='#id16'>1</a>, <a href='#id18'>2</a>, <a href='#id32'>3</a>, <a href='#id33'>4</a>, <a href='#id34'>5</a>, <a href='#id35'>6</a>, <a href='#id36'>7</a>, <a href='#id37'>8</a>, <a href='#id38'>9</a>, <a href='#id40'>10</a>, <a href='#id45'>11</a>) </em></dt> <dd>Python Regrets: <a class="reference external" href="https://legacy.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf">https://legacy.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf</a></aside> <aside class="footnote brackets" id="id62" role="doc-footnote"> <dt class="label" id="id62">[3]<em> (<a href='#id5'>1</a>, <a href='#id19'>2</a>) </em></dt> <dd>Python Wiki: <a class="reference external" href="https://wiki.python.org/moin/Python3.0">https://wiki.python.org/moin/Python3.0</a></aside> <aside class="footnote brackets" id="id63" role="doc-footnote"> <dt class="label" id="id63">[<a href="#id6">4</a>]</dt> <dd>python-dev email (“Constancy of None”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2004-July/046294.html">https://mail.python.org/pipermail/python-dev/2004-July/046294.html</a></aside> <aside class="footnote brackets" id="id64" role="doc-footnote"> <dt class="label" id="id64">[<a href="#id8">5</a>]</dt> <dd>python-dev email (’ “as” to be a keyword?’) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2004-July/046316.html">https://mail.python.org/pipermail/python-dev/2004-July/046316.html</a></aside> <aside class="footnote brackets" id="id65" role="doc-footnote"> <dt class="label" id="id65">[<a href="#id9">6</a>]</dt> <dd>python-dev email (“Comparing heterogeneous types”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2004-June/045111.html">https://mail.python.org/pipermail/python-dev/2004-June/045111.html</a></aside> <aside class="footnote brackets" id="id66" role="doc-footnote"> <dt class="label" id="id66">[<a href="#id21">7</a>]</dt> <dd>python-dev email (“Let’s get rid of unbound methods”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-January/050625.html">https://mail.python.org/pipermail/python-dev/2005-January/050625.html</a></aside> <aside class="footnote brackets" id="id67" role="doc-footnote"> <dt class="label" id="id67">[<a href="#id31">8</a>]</dt> <dd>python-dev email (“Fixing _PyEval_SliceIndex so that integer-like objects can be used”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-February/051674.html">https://mail.python.org/pipermail/python-dev/2005-February/051674.html</a></aside> <aside class="footnote brackets" id="id68" role="doc-footnote"> <dt class="label" id="id68">[<a href="#id41">9</a>]</dt> <dd>Guido’s blog (“The fate of reduce() in Python 3000”) <a class="reference external" href="https://www.artima.com/weblogs/viewpost.jsp?thread=98196">https://www.artima.com/weblogs/viewpost.jsp?thread=98196</a></aside> <aside class="footnote brackets" id="id69" role="doc-footnote"> <dt class="label" id="id69">[<a href="#id2">10</a>]</dt> <dd>Guido’s blog (“Python Optional Typechecking Redux”) <a class="reference external" href="https://www.artima.com/weblogs/viewpost.jsp?thread=89161">https://www.artima.com/weblogs/viewpost.jsp?thread=89161</a></aside> <aside class="footnote brackets" id="id70" role="doc-footnote"> <dt class="label" id="id70">[<a href="#id46">11</a>]</dt> <dd>python-dev email (“anonymous blocks”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-April/053060.html">https://mail.python.org/pipermail/python-dev/2005-April/053060.html</a></aside> <aside class="footnote brackets" id="id71" role="doc-footnote"> <dt class="label" id="id71">[<a href="#id17">12</a>]</dt> <dd>python-dev email (“PEP 8: exception style”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-August/055190.html">https://mail.python.org/pipermail/python-dev/2005-August/055190.html</a></aside> <aside class="footnote brackets" id="id72" role="doc-footnote"> <dt class="label" id="id72">[<a href="#id27">13</a>]</dt> <dd>python-dev email (Remove str.find in 3.0?) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-August/055705.html">https://mail.python.org/pipermail/python-dev/2005-August/055705.html</a></aside> <aside class="footnote brackets" id="id73" role="doc-footnote"> <dt class="label" id="id73">[<a href="#id4">14</a>]</dt> <dd>python-dev email (Replacement for print in Python 3.0) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2005-September/056154.html">https://mail.python.org/pipermail/python-dev/2005-September/056154.html</a></aside> <aside class="footnote brackets" id="id74" role="doc-footnote"> <dt class="label" id="id74">[<a href="#id29">15</a>]</dt> <dd>python-dev email (“defaultdict”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2006-February/061261.html">https://mail.python.org/pipermail/python-dev/2006-February/061261.html</a></aside> <aside class="footnote brackets" id="id75" role="doc-footnote"> <dt class="label" id="id75">[<a href="#id7">16</a>]</dt> <dd>python-3000 email <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-April/000996.html">https://mail.python.org/pipermail/python-3000/2006-April/000996.html</a></aside> <aside class="footnote brackets" id="id76" role="doc-footnote"> <dt class="label" id="id76">[<a href="#id12">17</a>]</dt> <dd>python-3000 email (“Pronouncement on parameter lists”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-April/001175.html">https://mail.python.org/pipermail/python-3000/2006-April/001175.html</a></aside> <aside class="footnote brackets" id="id77" role="doc-footnote"> <dt class="label" id="id77">[<a href="#id26">18</a>]</dt> <dd>python-3000 email (“More wishful thinking”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-April/000810.html">https://mail.python.org/pipermail/python-3000/2006-April/000810.html</a></aside> <aside class="footnote brackets" id="id78" role="doc-footnote"> <dt class="label" id="id78">[<a href="#id13">19</a>]</dt> <dd>python-3000 email (“sets in P3K?”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-April/001286.html">https://mail.python.org/pipermail/python-3000/2006-April/001286.html</a></aside> <aside class="footnote brackets" id="id79" role="doc-footnote"> <dt class="label" id="id79">[<a href="#id14">20</a>]</dt> <dd>python-3000 email (“sets in P3K?”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-May/001666.html">https://mail.python.org/pipermail/python-3000/2006-May/001666.html</a></aside> <aside class="footnote brackets" id="id80" role="doc-footnote"> <dt class="label" id="id80">[<a href="#id20">21</a>]</dt> <dd>python-3000 email (“bug in modulus?”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-May/001735.html">https://mail.python.org/pipermail/python-3000/2006-May/001735.html</a></aside> <aside class="footnote brackets" id="id81" role="doc-footnote"> <dt class="label" id="id81">[<a href="#id39">22</a>]</dt> <dd>SF patch “sys.id() and sys.intern()” <a class="reference external" href="https://bugs.python.org/issue1601678">https://bugs.python.org/issue1601678</a></aside> <aside class="footnote brackets" id="id82" role="doc-footnote"> <dt class="label" id="id82">[<a href="#id15">23</a>]</dt> <dd>python-3000 email (“__nonzero__ vs. __bool__”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2006-November/004524.html">https://mail.python.org/pipermail/python-3000/2006-November/004524.html</a></aside> <aside class="footnote brackets" id="id83" role="doc-footnote"> <dt class="label" id="id83">[<a href="#id48">24</a>]</dt> <dd>python-3000 email (“Pre-peps on raise and except changes”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2007-February/005672.html">https://mail.python.org/pipermail/python-3000/2007-February/005672.html</a></aside> <aside class="footnote brackets" id="id84" role="doc-footnote"> <dt class="label" id="id84">[25]<em> (<a href='#id55'>1</a>, <a href='#id56'>2</a>, <a href='#id57'>3</a>, <a href='#id58'>4</a>, <a href='#id59'>5</a>) </em></dt> <dd>python-3000 email (“Py3.0 Library Ideas”) <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2007-February/005726.html">https://mail.python.org/pipermail/python-3000/2007-February/005726.html</a></aside> <aside class="footnote brackets" id="id85" role="doc-footnote"> <dt class="label" id="id85">[<a href="#id22">26</a>]</dt> <dd>python-dev email (“Should we do away with unbound methods in Py3k?”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2007-November/075279.html">https://mail.python.org/pipermail/python-dev/2007-November/075279.html</a></aside> <aside class="footnote brackets" id="id86" role="doc-footnote"> <dt class="label" id="id86">[<a href="#id30">27</a>]</dt> <dd>python-dev email (“Mutable sequence .sort() signature”) <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2008-February/076818.html">https://mail.python.org/pipermail/python-dev/2008-February/076818.html</a></aside> <aside class="footnote brackets" id="sys-module" role="doc-footnote"> <dt class="label" id="sys-module">[28]<em> (<a href='#id43'>1</a>, <a href='#id47'>2</a>, <a href='#id49'>3</a>) </em></dt> <dd>Python docs (sys – System-specific parameters and functions) <a class="reference external" href="https://docs.python.org/release/2.6/library/sys.html">https://docs.python.org/release/2.6/library/sys.html</a></aside> <aside class="footnote brackets" id="operator-module" role="doc-footnote"> <dt class="label" id="operator-module">[29]<em> (<a href='#id51'>1</a>, <a href='#id53'>2</a>) </em></dt> <dd>Python docs (operator – Standard operators as functions) <a class="reference external" href="https://docs.python.org/release/2.6/library/operator.html">https://docs.python.org/release/2.6/library/operator.html</a></aside> <aside class="footnote brackets" id="array-module" role="doc-footnote"> <dt class="label" id="array-module">[<a href="#id50">30</a>]</dt> <dd>Python docs (array – Efficient arrays of numeric values) <a class="reference external" href="https://docs.python.org/release/2.6/library/array.html">https://docs.python.org/release/2.6/library/array.html</a></aside> <aside class="footnote brackets" id="file-object" role="doc-footnote"> <dt class="label" id="file-object">[<a href="#id28">31</a>]</dt> <dd>Python docs (File objects) <a class="reference external" href="https://docs.python.org/release/2.6/library/stdtypes.html">https://docs.python.org/release/2.6/library/stdtypes.html</a></aside> <aside class="footnote brackets" id="sequence-types" role="doc-footnote"> <dt class="label" id="sequence-types">[<a href="#id23">32</a>]</dt> <dd>Python docs (Additional methods for emulation of sequence types) <a class="reference external" href="https://docs.python.org/release/2.6/reference/datamodel.html#additional-methods-for-emulation-of-sequence-types">https://docs.python.org/release/2.6/reference/datamodel.html#additional-methods-for-emulation-of-sequence-types</a></aside> <aside class="footnote brackets" id="builtin" role="doc-footnote"> <dt class="label" id="builtin">[<a href="#id10">33</a>]</dt> <dd>Approach to resolving __builtin__ vs __builtins__ <a class="reference external" href="https://mail.python.org/pipermail/python-3000/2007-March/006161.html">https://mail.python.org/pipermail/python-3000/2007-March/006161.html</a></aside> <aside class="footnote brackets" id="builtins" role="doc-footnote"> <dt class="label" id="builtins">[<a href="#id11">34</a>]</dt> <dd>New name for __builtins__ <a class="reference external" href="https://mail.python.org/pipermail/python-dev/2007-November/075388.html">https://mail.python.org/pipermail/python-dev/2007-November/075388.html</a></aside> <aside class="footnote brackets" id="exitfunc-patch" role="doc-footnote"> <dt class="label" id="exitfunc-patch">[<a href="#id44">35</a>]</dt> <dd>Patch to remove sys.exitfunc <a class="reference external" href="https://github.com/python/cpython/issues/44715">https://github.com/python/cpython/issues/44715</a></aside> <aside class="footnote brackets" id="remove-operator-funcs" role="doc-footnote"> <dt class="label" id="remove-operator-funcs">[36]<em> (<a href='#id52'>1</a>, <a href='#id54'>2</a>) </em></dt> <dd>Remove deprecated functions from operator <a class="reference external" href="https://github.com/python/cpython/issues/43602">https://github.com/python/cpython/issues/43602</a></aside> </aside> </section> <section id="copyright"> <h2><a class="toc-backref" href="#copyright" role="doc-backlink">Copyright</a></h2> <p>This document has been placed in the public domain.</p> </section> </section> <hr class="docutils" /> <p>Source: <a class="reference external" href="https://github.com/python/peps/blob/main/peps/pep-3100.rst">https://github.com/python/peps/blob/main/peps/pep-3100.rst</a></p> <p>Last modified: <a class="reference external" href="https://github.com/python/peps/commits/main/peps/pep-3100.rst">2025-02-01 08:55:40 GMT</a></p> </article> <nav id="pep-sidebar"> <h2>Contents</h2> <ul> <li><a class="reference internal" href="#abstract">Abstract</a></li> <li><a class="reference internal" href="#general-goals">General goals</a></li> <li><a class="reference internal" href="#influencing-peps">Influencing PEPs</a></li> <li><a class="reference internal" href="#style-changes">Style changes</a></li> <li><a class="reference internal" href="#core-language">Core language</a></li> <li><a class="reference internal" href="#atomic-types">Atomic Types</a></li> <li><a class="reference internal" href="#built-in-namespace">Built-in Namespace</a></li> <li><a class="reference internal" href="#standard-library">Standard library</a></li> <li><a class="reference internal" href="#outstanding-issues">Outstanding Issues</a></li> <li><a class="reference internal" href="#references">References</a></li> <li><a class="reference internal" href="#copyright">Copyright</a></li> </ul> <br> <a id="source" href="https://github.com/python/peps/blob/main/peps/pep-3100.rst">Page Source (GitHub)</a> </nav> </section> <script src="../_static/colour_scheme.js"></script> <script src="../_static/wrap_tables.js"></script> <script src="../_static/sticky_banner.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10