parthtamu/rag-code-assistant
0
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="enum — Support for enumerations" />8<meta property="og:type" content="website" />9<meta property="og:url" content="https://docs.python.org/3/library/enum.html" />10<meta property="og:site_name" content="Python documentation" />11<meta property="og:description" content="Source code: Lib/enum.py Important: This page contains the API reference information. For tutorial information and discussion of more advanced topics, see Basic Tutorial, Advanced Tutorial, Enum Co..." />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_enum_56743ce6.png" />15<meta property="og:image:alt" content="Source code: Lib/enum.py Important: This page contains the API reference information. For tutorial information and discussion of more advanced topics, see Basic Tutorial, Advanced Tutorial, Enum Co..." />16<meta name="description" content="Source code: Lib/enum.py Important: This page contains the API reference information. For tutorial information and discussion of more advanced topics, see Basic Tutorial, Advanced Tutorial, Enum Co..." />17<meta name="twitter:card" content="summary_large_image" />18<meta name="theme-color" content="#3776ab">19 20 <title>enum — Support for enumerations — 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="graphlib — Functionality to operate with graph-like structures" href="graphlib.html" />43 <link rel="prev" title="reprlib — Alternate repr() implementation" href="reprlib.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/enum.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">enum</span></code> — Support for enumerations</a><ul>108<li><a class="reference internal" href="#module-contents">Module Contents</a></li>109<li><a class="reference internal" href="#data-types">Data Types</a><ul>110<li><a class="reference internal" href="#supported-dunder-names">Supported <code class="docutils literal notranslate"><span class="pre">__dunder__</span></code> names</a></li>111<li><a class="reference internal" href="#supported-sunder-names">Supported <code class="docutils literal notranslate"><span class="pre">_sunder_</span></code> names</a></li>112</ul>113</li>114<li><a class="reference internal" href="#utilities-and-decorators">Utilities and Decorators</a></li>115<li><a class="reference internal" href="#notes">Notes</a></li>116</ul>117</li>118</ul>119 120 </div>121 <div>122 <h4>Previous topic</h4>123 <p class="topless"><a href="reprlib.html"124 title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">reprlib</span></code> — Alternate <code class="xref py py-func docutils literal notranslate"><span class="pre">repr()</span></code> implementation</a></p>125 </div>126 <div>127 <h4>Next topic</h4>128 <p class="topless"><a href="graphlib.html"129 title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">graphlib</span></code> — Functionality to operate with graph-like structures</a></p>130 </div>131 <script>132 document.addEventListener('DOMContentLoaded', () => {133 const title = document.querySelector('meta[property="og:title"]').content;134 const elements = document.querySelectorAll('.improvepage');135 const pageurl = window.location.href.split('?')[0];136 elements.forEach(element => {137 const url = new URL(element.href.split('?')[0].replace("-nojs", ""));138 url.searchParams.set('pagetitle', title);139 url.searchParams.set('pageurl', pageurl);140 url.searchParams.set('pagesource', "library/enum.rst");141 element.href = url.toString();142 });143 });144 </script>145 <div role="note" aria-label="source link">146 <h3>This page</h3>147 <ul class="this-page-menu">148 <li><a href="../bugs.html">Report a bug</a></li>149 <li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>150 <li>151 <a href="https://github.com/python/cpython/blob/main/Doc/library/enum.rst?plain=1"152 rel="nofollow">Show source153 </a>154 </li>155 156 </ul>157 </div>158 </nav>159 </div>160</div>161 162 163 <div class="related" role="navigation" aria-label="Related">164 <h3>Navigation</h3>165 <ul>166 <li class="right" style="margin-right: 10px">167 <a href="../genindex.html" title="General Index"168 accesskey="I">index</a></li>169 <li class="right" >170 <a href="../py-modindex.html" title="Python Module Index"171 >modules</a> |</li>172 <li class="right" >173 <a href="graphlib.html" title="graphlib — Functionality to operate with graph-like structures"174 accesskey="N">next</a> |</li>175 <li class="right" >176 <a href="reprlib.html" title="reprlib — Alternate repr() implementation"177 accesskey="P">previous</a> |</li>178 179 <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>180 <li><a href="https://www.python.org/">Python</a> »</li>181 <li class="switchers">182 <div class="language_switcher_placeholder"></div>183 <div class="version_switcher_placeholder"></div>184 </li>185 <li>186 187 </li>188 <li id="cpython-language-and-version">189 <a href="../index.html">3.15.0a6 Documentation</a> »190 </li>191 192 <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>193 <li class="nav-item nav-item-2"><a href="datatypes.html" accesskey="U">Data Types</a> »</li>194 <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">enum</span></code> — Support for enumerations</a></li>195 <li class="right">196 197 198 <div class="inline-search" role="search">199 <form class="inline-search" action="../search.html" method="get">200 <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">201 <input type="submit" value="Go">202 </form>203 </div>204 |205 </li>206 <li class="right">207<label class="theme-selector-label">208 Theme209 <select class="theme-selector" oninput="activateTheme(this.value)">210 <option value="auto" selected>Auto</option>211 <option value="light">Light</option>212 <option value="dark">Dark</option>213 </select>214</label> |</li>215 216 </ul>217 </div> 218 219 <div class="document">220 <div class="documentwrapper">221 <div class="bodywrapper">222 <div class="body" role="main">223 224 <section id="module-enum">225<span id="enum-support-for-enumerations"></span><h1><code class="xref py py-mod docutils literal notranslate"><span class="pre">enum</span></code> — Support for enumerations<a class="headerlink" href="#module-enum" title="Link to this heading">¶</a></h1>226<div class="versionadded">227<p><span class="versionmodified added">Added in version 3.4.</span></p>228</div>229<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/main/Lib/enum.py">Lib/enum.py</a></p>230<aside class="sidebar">231<p class="sidebar-title">Important</p>232<p>This page contains the API reference information. For tutorial233information and discussion of more advanced topics, see</p>234<ul class="simple">235<li><p><a class="reference internal" href="../howto/enum.html#enum-basic-tutorial"><span class="std std-ref">Basic Tutorial</span></a></p></li>236<li><p><a class="reference internal" href="../howto/enum.html#enum-advanced-tutorial"><span class="std std-ref">Advanced Tutorial</span></a></p></li>237<li><p><a class="reference internal" href="../howto/enum.html#enum-cookbook"><span class="std std-ref">Enum Cookbook</span></a></p></li>238</ul>239</aside>240<hr class="docutils" />241<p>An enumeration:</p>242<ul class="simple">243<li><p>is a set of symbolic names (members) bound to unique values</p></li>244<li><p>can be iterated over to return its canonical (i.e. non-alias) members in245definition order</p></li>246<li><p>uses <em>call</em> syntax to return members by value</p></li>247<li><p>uses <em>index</em> syntax to return members by name</p></li>248</ul>249<p>Enumerations are created either by using <a class="reference internal" href="../reference/compound_stmts.html#class"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">class</span></code></a> syntax, or by250using function-call syntax:</p>251<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span>252 253<span class="gp">>>> </span><span class="c1"># class syntax</span>254<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>255<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="mi">1</span>256<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="mi">2</span>257<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="mi">3</span>258 259<span class="gp">>>> </span><span class="c1"># functional syntax</span>260<span class="gp">>>> </span><span class="n">Color</span> <span class="o">=</span> <span class="n">Enum</span><span class="p">(</span><span class="s1">'Color'</span><span class="p">,</span> <span class="p">[(</span><span class="s1">'RED'</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="s1">'GREEN'</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="s1">'BLUE'</span><span class="p">,</span> <span class="mi">3</span><span class="p">)])</span>261</pre></div>262</div>263<p>Even though we can use <a class="reference internal" href="../reference/compound_stmts.html#class"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">class</span></code></a> syntax to create Enums, Enums264are not normal Python classes. See265<a class="reference internal" href="../howto/enum.html#enum-class-differences"><span class="std std-ref">How are Enums different?</span></a> for more details.</p>266<div class="admonition note">267<p class="admonition-title">Note</p>268<p>Nomenclature</p>269<ul class="simple">270<li><p>The class <code class="xref py py-class docutils literal notranslate"><span class="pre">Color</span></code> is an <em>enumeration</em> (or <em>enum</em>)</p></li>271<li><p>The attributes <code class="xref py py-attr docutils literal notranslate"><span class="pre">Color.RED</span></code>, <code class="xref py py-attr docutils literal notranslate"><span class="pre">Color.GREEN</span></code>, etc., are272<em>enumeration members</em> (or <em>members</em>) and are functionally constants.</p></li>273<li><p>The enum members have <em>names</em> and <em>values</em> (the name of274<code class="xref py py-attr docutils literal notranslate"><span class="pre">Color.RED</span></code> is <code class="docutils literal notranslate"><span class="pre">RED</span></code>, the value of <code class="xref py py-attr docutils literal notranslate"><span class="pre">Color.BLUE</span></code> is275<code class="docutils literal notranslate"><span class="pre">3</span></code>, etc.)</p></li>276</ul>277</div>278<hr class="docutils" />279<section id="module-contents">280<h2>Module Contents<a class="headerlink" href="#module-contents" title="Link to this heading">¶</a></h2>281<blockquote>282<div><p><a class="reference internal" href="#enum.EnumType" title="enum.EnumType"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnumType</span></code></a></p>283<blockquote>284<div><p>The <code class="docutils literal notranslate"><span class="pre">type</span></code> for Enum and its subclasses.</p>285</div></blockquote>286<p><a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a></p>287<blockquote>288<div><p>Base class for creating enumerated constants.</p>289</div></blockquote>290<p><a class="reference internal" href="#enum.IntEnum" title="enum.IntEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntEnum</span></code></a></p>291<blockquote>292<div><p>Base class for creating enumerated constants that are also293subclasses of <a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>. (<a class="reference internal" href="#notes">Notes</a>)</p>294</div></blockquote>295<p><a class="reference internal" href="#enum.StrEnum" title="enum.StrEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">StrEnum</span></code></a></p>296<blockquote>297<div><p>Base class for creating enumerated constants that are also298subclasses of <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>. (<a class="reference internal" href="#notes">Notes</a>)</p>299</div></blockquote>300<p><a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a></p>301<blockquote>302<div><p>Base class for creating enumerated constants that can be combined using303the bitwise operations without losing their <a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a> membership.</p>304</div></blockquote>305<p><a class="reference internal" href="#enum.IntFlag" title="enum.IntFlag"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code></a></p>306<blockquote>307<div><p>Base class for creating enumerated constants that can be combined using308the bitwise operators without losing their <a class="reference internal" href="#enum.IntFlag" title="enum.IntFlag"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code></a> membership.309<code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code> members are also subclasses of <a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>. (<a class="reference internal" href="#notes">Notes</a>)</p>310</div></blockquote>311<p><a class="reference internal" href="#enum.ReprEnum" title="enum.ReprEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">ReprEnum</span></code></a></p>312<blockquote>313<div><p>Used by <a class="reference internal" href="#enum.IntEnum" title="enum.IntEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntEnum</span></code></a>, <a class="reference internal" href="#enum.StrEnum" title="enum.StrEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">StrEnum</span></code></a>, and <a class="reference internal" href="#enum.IntFlag" title="enum.IntFlag"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code></a>314to keep the <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str()</span></code></a> of the mixed-in type.</p>315</div></blockquote>316<p><a class="reference internal" href="#enum.EnumCheck" title="enum.EnumCheck"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnumCheck</span></code></a></p>317<blockquote>318<div><p>An enumeration with the values <code class="docutils literal notranslate"><span class="pre">CONTINUOUS</span></code>, <code class="docutils literal notranslate"><span class="pre">NAMED_FLAGS</span></code>, and319<code class="docutils literal notranslate"><span class="pre">UNIQUE</span></code>, for use with <a class="reference internal" href="#enum.verify" title="enum.verify"><code class="xref py py-func docutils literal notranslate"><span class="pre">verify()</span></code></a> to ensure various constraints320are met by a given enumeration.</p>321</div></blockquote>322<p><a class="reference internal" href="#enum.FlagBoundary" title="enum.FlagBoundary"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlagBoundary</span></code></a></p>323<blockquote>324<div><p>An enumeration with the values <code class="docutils literal notranslate"><span class="pre">STRICT</span></code>, <code class="docutils literal notranslate"><span class="pre">CONFORM</span></code>, <code class="docutils literal notranslate"><span class="pre">EJECT</span></code>, and325<code class="docutils literal notranslate"><span class="pre">KEEP</span></code> which allows for more fine-grained control over how invalid values326are dealt with in an enumeration.</p>327</div></blockquote>328<p><a class="reference internal" href="#enum.EnumDict" title="enum.EnumDict"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnumDict</span></code></a></p>329<blockquote>330<div><p>A subclass of <a class="reference internal" href="stdtypes.html#dict" title="dict"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a> for use when subclassing <a class="reference internal" href="#enum.EnumType" title="enum.EnumType"><code class="xref py py-class docutils literal notranslate"><span class="pre">EnumType</span></code></a>.</p>331</div></blockquote>332<p><a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a></p>333<blockquote>334<div><p>Instances are replaced with an appropriate value for Enum members.335<a class="reference internal" href="#enum.StrEnum" title="enum.StrEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">StrEnum</span></code></a> defaults to the lower-cased version of the member name,336while other Enums default to 1 and increase from there.</p>337</div></blockquote>338<p><a class="reference internal" href="#enum.property" title="enum.property"><code class="xref py py-func docutils literal notranslate"><span class="pre">property()</span></code></a></p>339<blockquote>340<div><p>Allows <a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a> members to have attributes without conflicting with341member names. The <code class="docutils literal notranslate"><span class="pre">value</span></code> and <code class="docutils literal notranslate"><span class="pre">name</span></code> attributes are implemented this342way.</p>343</div></blockquote>344<p><a class="reference internal" href="#enum.unique" title="enum.unique"><code class="xref py py-func docutils literal notranslate"><span class="pre">unique()</span></code></a></p>345<blockquote>346<div><p>Enum class decorator that ensures only one name is bound to any one value.</p>347</div></blockquote>348<p><a class="reference internal" href="#enum.verify" title="enum.verify"><code class="xref py py-func docutils literal notranslate"><span class="pre">verify()</span></code></a></p>349<blockquote>350<div><p>Enum class decorator that checks user-selectable constraints on an351enumeration.</p>352</div></blockquote>353<p><a class="reference internal" href="#enum.member" title="enum.member"><code class="xref py py-func docutils literal notranslate"><span class="pre">member()</span></code></a></p>354<blockquote>355<div><p>Make <code class="docutils literal notranslate"><span class="pre">obj</span></code> a member. Can be used as a decorator.</p>356</div></blockquote>357<p><a class="reference internal" href="#enum.nonmember" title="enum.nonmember"><code class="xref py py-func docutils literal notranslate"><span class="pre">nonmember()</span></code></a></p>358<blockquote>359<div><p>Do not make <code class="docutils literal notranslate"><span class="pre">obj</span></code> a member. Can be used as a decorator.</p>360</div></blockquote>361<p><a class="reference internal" href="#enum.global_enum" title="enum.global_enum"><code class="xref py py-func docutils literal notranslate"><span class="pre">global_enum()</span></code></a></p>362<blockquote>363<div><p>Modify the <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str()</span></code></a> and <a class="reference internal" href="functions.html#repr" title="repr"><code class="xref py py-func docutils literal notranslate"><span class="pre">repr()</span></code></a> of an enum364to show its members as belonging to the module instead of its class,365and export the enum members to the global namespace.</p>366</div></blockquote>367<p><a class="reference internal" href="#enum.show_flag_values" title="enum.show_flag_values"><code class="xref py py-func docutils literal notranslate"><span class="pre">show_flag_values()</span></code></a></p>368<blockquote>369<div><p>Return a list of all power-of-two integers contained in a flag.</p>370</div></blockquote>371<p><a class="reference internal" href="#enum.bin" title="enum.bin"><code class="xref py py-func docutils literal notranslate"><span class="pre">enum.bin()</span></code></a></p>372<blockquote>373<div><p>Like built-in <a class="reference internal" href="functions.html#bin" title="bin"><code class="xref py py-func docutils literal notranslate"><span class="pre">bin()</span></code></a>, except negative values are represented in374two’s complement, and the leading bit always indicates sign375(<code class="docutils literal notranslate"><span class="pre">0</span></code> implies positive, <code class="docutils literal notranslate"><span class="pre">1</span></code> implies negative).</p>376</div></blockquote>377</div></blockquote>378<div class="versionadded">379<p><span class="versionmodified added">Added in version 3.6: </span><code class="docutils literal notranslate"><span class="pre">Flag</span></code>, <code class="docutils literal notranslate"><span class="pre">IntFlag</span></code>, <code class="docutils literal notranslate"><span class="pre">auto</span></code></p>380</div>381<div class="versionadded">382<p><span class="versionmodified added">Added in version 3.11: </span><code class="docutils literal notranslate"><span class="pre">StrEnum</span></code>, <code class="docutils literal notranslate"><span class="pre">EnumCheck</span></code>, <code class="docutils literal notranslate"><span class="pre">ReprEnum</span></code>, <code class="docutils literal notranslate"><span class="pre">FlagBoundary</span></code>, <code class="docutils literal notranslate"><span class="pre">property</span></code>, <code class="docutils literal notranslate"><span class="pre">member</span></code>, <code class="docutils literal notranslate"><span class="pre">nonmember</span></code>, <code class="docutils literal notranslate"><span class="pre">global_enum</span></code>, <code class="docutils literal notranslate"><span class="pre">show_flag_values</span></code></p>383</div>384<div class="versionadded">385<p><span class="versionmodified added">Added in version 3.13: </span><code class="docutils literal notranslate"><span class="pre">EnumDict</span></code></p>386</div>387</section>388<hr class="docutils" />389<section id="data-types">390<h2>Data Types<a class="headerlink" href="#data-types" title="Link to this heading">¶</a></h2>391<dl class="py class">392<dt class="sig sig-object py" id="enum.EnumType">393<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">EnumType</span></span><a class="headerlink" href="#enum.EnumType" title="Link to this definition">¶</a></dt>394<dd><p><em>EnumType</em> is the <a class="reference internal" href="../glossary.html#term-metaclass"><span class="xref std std-term">metaclass</span></a> for <em>enum</em> enumerations. It is possible395to subclass <em>EnumType</em> – see <a class="reference internal" href="../howto/enum.html#enumtype-examples"><span class="std std-ref">Subclassing EnumType</span></a>396for details.</p>397<p><code class="docutils literal notranslate"><span class="pre">EnumType</span></code> is responsible for setting the correct <code class="xref py py-meth docutils literal notranslate"><span class="pre">__repr__()</span></code>,398<code class="xref py py-meth docutils literal notranslate"><span class="pre">__str__()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">__format__()</span></code>, and <code class="xref py py-meth docutils literal notranslate"><span class="pre">__reduce__()</span></code> methods on the399final <em>enum</em>, as well as creating the enum members, properly handling400duplicates, providing iteration over the enum class, etc.</p>401<div class="versionadded">402<p><span class="versionmodified added">Added in version 3.11: </span>Before 3.11 <code class="docutils literal notranslate"><span class="pre">EnumType</span></code> was called <code class="docutils literal notranslate"><span class="pre">EnumMeta</span></code>, which is still available as an alias.</p>403</div>404<dl class="py method">405<dt class="sig sig-object py" id="enum.EnumType.__call__">406<span class="sig-name descname"><span class="pre">__call__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">names</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="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">module</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">qualname</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">type</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">start</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">boundary</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__call__" title="Link to this definition">¶</a></dt>407<dd><p>This method is called in two different ways:</p>408<ul>409<li><p>to look up an existing member:</p>410<blockquote>411<div><dl class="field-list simple">412<dt class="field-odd">cls<span class="colon">:</span></dt>413<dd class="field-odd"><p>The enum class being called.</p>414</dd>415<dt class="field-even">value<span class="colon">:</span></dt>416<dd class="field-even"><p>The value to lookup.</p>417</dd>418</dl>419</div></blockquote>420</li>421<li><p>to use the <code class="docutils literal notranslate"><span class="pre">cls</span></code> enum to create a new enum (only if the existing enum422does not have any members):</p>423<blockquote>424<div><dl class="field-list simple">425<dt class="field-odd">cls<span class="colon">:</span></dt>426<dd class="field-odd"><p>The enum class being called.</p>427</dd>428<dt class="field-even">value<span class="colon">:</span></dt>429<dd class="field-even"><p>The name of the new Enum to create.</p>430</dd>431<dt class="field-odd">names<span class="colon">:</span></dt>432<dd class="field-odd"><p>The names/values of the members for the new Enum.</p>433</dd>434<dt class="field-even">module<span class="colon">:</span></dt>435<dd class="field-even"><p>The name of the module the new Enum is created in.</p>436</dd>437<dt class="field-odd">qualname<span class="colon">:</span></dt>438<dd class="field-odd"><p>The actual location in the module where this Enum can be found.</p>439</dd>440<dt class="field-even">type<span class="colon">:</span></dt>441<dd class="field-even"><p>A mix-in type for the new Enum.</p>442</dd>443<dt class="field-odd">start<span class="colon">:</span></dt>444<dd class="field-odd"><p>The first integer value for the Enum (used by <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a>).</p>445</dd>446<dt class="field-even">boundary<span class="colon">:</span></dt>447<dd class="field-even"><p>How to handle out-of-range values from bit operations (<a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a> only).</p>448</dd>449</dl>450</div></blockquote>451</li>452</ul>453</dd></dl>454 455<dl class="py method">456<dt class="sig sig-object py" id="enum.EnumType.__contains__">457<span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">member</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__contains__" title="Link to this definition">¶</a></dt>458<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if member belongs to the <code class="docutils literal notranslate"><span class="pre">cls</span></code>:</p>459<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">some_var</span> <span class="o">=</span> <span class="n">Color</span><span class="o">.</span><span class="n">RED</span>460<span class="gp">>>> </span><span class="n">some_var</span> <span class="ow">in</span> <span class="n">Color</span>461<span class="go">True</span>462<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span><span class="o">.</span><span class="n">value</span> <span class="ow">in</span> <span class="n">Color</span>463<span class="go">True</span>464</pre></div>465</div>466<div class="versionchanged">467<p><span class="versionmodified changed">Changed in version 3.12: </span>Before Python 3.12, a <code class="docutils literal notranslate"><span class="pre">TypeError</span></code> is raised if a468non-Enum-member is used in a containment check.</p>469</div>470</dd></dl>471 472<dl class="py method">473<dt class="sig sig-object py" id="enum.EnumType.__dir__">474<span class="sig-name descname"><span class="pre">__dir__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__dir__" title="Link to this definition">¶</a></dt>475<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">['__class__',</span> <span class="pre">'__doc__',</span> <span class="pre">'__members__',</span> <span class="pre">'__module__']</span></code> and the476names of the members in <em>cls</em>:</p>477<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">dir</span><span class="p">(</span><span class="n">Color</span><span class="p">)</span>478<span class="go">['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']</span>479</pre></div>480</div>481</dd></dl>482 483<dl class="py method">484<dt class="sig sig-object py" id="enum.EnumType.__getitem__">485<span class="sig-name descname"><span class="pre">__getitem__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__getitem__" title="Link to this definition">¶</a></dt>486<dd><p>Returns the Enum member in <em>cls</em> matching <em>name</em>, or raises a <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a>:</p>487<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="p">[</span><span class="s1">'BLUE'</span><span class="p">]</span>488<span class="go"><Color.BLUE: 3></span>489</pre></div>490</div>491</dd></dl>492 493<dl class="py method">494<dt class="sig sig-object py" id="enum.EnumType.__iter__">495<span class="sig-name descname"><span class="pre">__iter__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__iter__" title="Link to this definition">¶</a></dt>496<dd><p>Returns each member in <em>cls</em> in definition order:</p>497<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="n">Color</span><span class="p">)</span>498<span class="go">[<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]</span>499</pre></div>500</div>501</dd></dl>502 503<dl class="py method">504<dt class="sig sig-object py" id="enum.EnumType.__len__">505<span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__len__" title="Link to this definition">¶</a></dt>506<dd><p>Returns the number of member in <em>cls</em>:</p>507<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">Color</span><span class="p">)</span>508<span class="go">3</span>509</pre></div>510</div>511</dd></dl>512 513<dl class="py attribute">514<dt class="sig sig-object py" id="enum.EnumType.__members__">515<span class="sig-name descname"><span class="pre">__members__</span></span><a class="headerlink" href="#enum.EnumType.__members__" title="Link to this definition">¶</a></dt>516<dd><p>Returns a mapping of every enum name to its member, including aliases</p>517</dd></dl>518 519<dl class="py method">520<dt class="sig sig-object py" id="enum.EnumType.__reversed__">521<span class="sig-name descname"><span class="pre">__reversed__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.EnumType.__reversed__" title="Link to this definition">¶</a></dt>522<dd><p>Returns each member in <em>cls</em> in reverse definition order:</p>523<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">Color</span><span class="p">))</span>524<span class="go">[<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]</span>525</pre></div>526</div>527</dd></dl>528 529</dd></dl>530 531<dl class="py class">532<dt class="sig sig-object py" id="enum.Enum">533<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">Enum</span></span><a class="headerlink" href="#enum.Enum" title="Link to this definition">¶</a></dt>534<dd><p><em>Enum</em> is the base class for all <em>enum</em> enumerations.</p>535<dl class="py attribute">536<dt class="sig sig-object py" id="enum.Enum.name">537<span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#enum.Enum.name" title="Link to this definition">¶</a></dt>538<dd><p>The name used to define the <code class="docutils literal notranslate"><span class="pre">Enum</span></code> member:</p>539<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">BLUE</span><span class="o">.</span><span class="n">name</span>540<span class="go">'BLUE'</span>541</pre></div>542</div>543</dd></dl>544 545<dl class="py attribute">546<dt class="sig sig-object py" id="enum.Enum.value">547<span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#enum.Enum.value" title="Link to this definition">¶</a></dt>548<dd><p>The value given to the <code class="docutils literal notranslate"><span class="pre">Enum</span></code> member:</p>549<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span><span class="o">.</span><span class="n">value</span>550<span class="go">1</span>551</pre></div>552</div>553<p>Value of the member, can be set in <a class="reference internal" href="#enum.Enum.__new__" title="enum.Enum.__new__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__new__()</span></code></a>.</p>554<div class="admonition note">555<p class="admonition-title">Note</p>556<p>Enum member values</p>557<p>Member values can be anything: <a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>, <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>, etc. If558the exact value is unimportant you may use <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> instances and an559appropriate value will be chosen for you. See <code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code> for the560details.</p>561<p>While mutable/unhashable values, such as <a class="reference internal" href="stdtypes.html#dict" title="dict"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a>, <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> or562a mutable <a class="reference internal" href="dataclasses.html#dataclasses.dataclass" title="dataclasses.dataclass"><code class="xref py py-class docutils literal notranslate"><span class="pre">dataclass</span></code></a>, can be used, they will have a563quadratic performance impact during creation relative to the564total number of mutable/unhashable values in the enum.</p>565</div>566</dd></dl>567 568<dl class="py attribute">569<dt class="sig sig-object py" id="enum.Enum._name_">570<span class="sig-name descname"><span class="pre">_name_</span></span><a class="headerlink" href="#enum.Enum._name_" title="Link to this definition">¶</a></dt>571<dd><p>Name of the member.</p>572</dd></dl>573 574<dl class="py attribute">575<dt class="sig sig-object py" id="enum.Enum._value_">576<span class="sig-name descname"><span class="pre">_value_</span></span><a class="headerlink" href="#enum.Enum._value_" title="Link to this definition">¶</a></dt>577<dd><p>Value of the member, can be set in <a class="reference internal" href="#enum.Enum.__new__" title="enum.Enum.__new__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__new__()</span></code></a>.</p>578</dd></dl>579 580<dl class="py attribute">581<dt class="sig sig-object py" id="enum.Enum._order_">582<span class="sig-name descname"><span class="pre">_order_</span></span><a class="headerlink" href="#enum.Enum._order_" title="Link to this definition">¶</a></dt>583<dd><p>No longer used, kept for backward compatibility.584(class attribute, removed during class creation).</p>585<p>The <code class="xref py py-attr docutils literal notranslate"><span class="pre">_order_</span></code> attribute can be provided to help keep Python 2 / Python 3 code in sync.586It will be checked against the actual order of the enumeration and raise an error if the two do not match:</p>587<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>588<span class="gp">... </span> <span class="n">_order_</span> <span class="o">=</span> <span class="s1">'RED GREEN BLUE'</span>589<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="mi">1</span>590<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="mi">3</span>591<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="mi">2</span>592<span class="gp">...</span>593<span class="gt">Traceback (most recent call last):</span>594<span class="c">...</span>595<span class="gr">TypeError</span>: <span class="n">member order does not match _order_:</span>596<span class="x"> ['RED', 'BLUE', 'GREEN']</span>597<span class="x"> ['RED', 'GREEN', 'BLUE']</span>598</pre></div>599</div>600<div class="admonition note">601<p class="admonition-title">Note</p>602<p>In Python 2 code the <code class="xref py py-attr docutils literal notranslate"><span class="pre">_order_</span></code> attribute is necessary as definition603order is lost before it can be recorded.</p>604</div>605<div class="versionadded">606<p><span class="versionmodified added">Added in version 3.6.</span></p>607</div>608</dd></dl>609 610<dl class="py attribute">611<dt class="sig sig-object py" id="enum.Enum._ignore_">612<span class="sig-name descname"><span class="pre">_ignore_</span></span><a class="headerlink" href="#enum.Enum._ignore_" title="Link to this definition">¶</a></dt>613<dd><p><code class="docutils literal notranslate"><span class="pre">_ignore_</span></code> is only used during creation and is removed from the614enumeration once creation is complete.</p>615<p><code class="docutils literal notranslate"><span class="pre">_ignore_</span></code> is a list of names that will not become members, and whose616names will also be removed from the completed enumeration. See617<a class="reference internal" href="../howto/enum.html#enum-time-period"><span class="std std-ref">TimePeriod</span></a> for an example.</p>618<div class="versionadded">619<p><span class="versionmodified added">Added in version 3.7.</span></p>620</div>621</dd></dl>622 623<dl class="py method">624<dt class="sig sig-object py" id="enum.Enum.__dir__">625<span class="sig-name descname"><span class="pre">__dir__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__dir__" title="Link to this definition">¶</a></dt>626<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">['__class__',</span> <span class="pre">'__doc__',</span> <span class="pre">'__module__',</span> <span class="pre">'name',</span> <span class="pre">'value']</span></code> and627any public methods defined on <em>self.__class__</em>:</p>628<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span>629<span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">date</span>630<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Weekday</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>631<span class="gp">... </span> <span class="n">MONDAY</span> <span class="o">=</span> <span class="mi">1</span>632<span class="gp">... </span> <span class="n">TUESDAY</span> <span class="o">=</span> <span class="mi">2</span>633<span class="gp">... </span> <span class="n">WEDNESDAY</span> <span class="o">=</span> <span class="mi">3</span>634<span class="gp">... </span> <span class="n">THURSDAY</span> <span class="o">=</span> <span class="mi">4</span>635<span class="gp">... </span> <span class="n">FRIDAY</span> <span class="o">=</span> <span class="mi">5</span>636<span class="gp">... </span> <span class="n">SATURDAY</span> <span class="o">=</span> <span class="mi">6</span>637<span class="gp">... </span> <span class="n">SUNDAY</span> <span class="o">=</span> <span class="mi">7</span>638<span class="gp">... </span> <span class="nd">@classmethod</span>639<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="nf">today</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>640<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">'today is </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="bp">cls</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span><span class="o">.</span><span class="n">isoweekday</span><span class="p">())</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>641<span class="gp">...</span>642<span class="gp">>>> </span><span class="nb">dir</span><span class="p">(</span><span class="n">Weekday</span><span class="o">.</span><span class="n">SATURDAY</span><span class="p">)</span>643<span class="go">['__class__', '__doc__', '__eq__', '__hash__', '__module__', 'name', 'today', 'value']</span>644</pre></div>645</div>646</dd></dl>647 648<dl class="py method">649<dt class="sig sig-object py" id="enum.Enum._generate_next_value_">650<span class="sig-name descname"><span class="pre">_generate_next_value_</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">last_values</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum._generate_next_value_" title="Link to this definition">¶</a></dt>651<dd><blockquote>652<div><dl class="field-list simple">653<dt class="field-odd">name<span class="colon">:</span></dt>654<dd class="field-odd"><p>The name of the member being defined (e.g. ‘RED’).</p>655</dd>656<dt class="field-even">start<span class="colon">:</span></dt>657<dd class="field-even"><p>The start value for the Enum; the default is 1.</p>658</dd>659<dt class="field-odd">count<span class="colon">:</span></dt>660<dd class="field-odd"><p>The number of members currently defined, not including this one.</p>661</dd>662<dt class="field-even">last_values<span class="colon">:</span></dt>663<dd class="field-even"><p>A list of the previous values.</p>664</dd>665</dl>666</div></blockquote>667<p>A <em>staticmethod</em> that is used to determine the next value returned by668<a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a>.</p>669<div class="admonition note">670<p class="admonition-title">Note</p>671<p>For standard <code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code> classes the next value chosen is the highest672value seen incremented by one.</p>673<p>For <a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a> classes the next value chosen will be the next highest674power-of-two.</p>675</div>676<p>This method may be overridden, e.g.:</p>677<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">Enum</span>678<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">PowersOfThree</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>679<span class="gp">... </span> <span class="nd">@staticmethod</span>680<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="nf">_generate_next_value_</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">last_values</span><span class="p">):</span>681<span class="gp">... </span> <span class="k">return</span> <span class="mi">3</span> <span class="o">**</span> <span class="p">(</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>682<span class="gp">... </span> <span class="n">FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>683<span class="gp">... </span> <span class="n">SECOND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>684<span class="gp">...</span>685<span class="gp">>>> </span><span class="n">PowersOfThree</span><span class="o">.</span><span class="n">SECOND</span><span class="o">.</span><span class="n">value</span>686<span class="go">9</span>687</pre></div>688</div>689<div class="versionadded">690<p><span class="versionmodified added">Added in version 3.6.</span></p>691</div>692<div class="versionchanged">693<p><span class="versionmodified changed">Changed in version 3.13: </span>Prior versions would use the last seen value instead of the highest value.</p>694</div>695</dd></dl>696 697<dl class="py method">698<dt class="sig sig-object py" id="enum.Enum.__init__">699<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwds</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__init__" title="Link to this definition">¶</a></dt>700<dd><p>By default, does nothing. If multiple values are given in the member701assignment, those values become separate arguments to <code class="docutils literal notranslate"><span class="pre">__init__</span></code>; e.g.</p>702<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span>703<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Weekday</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>704<span class="gp">... </span> <span class="n">MONDAY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">'Mon'</span>705</pre></div>706</div>707<p><code class="docutils literal notranslate"><span class="pre">Weekday.__init__()</span></code> would be called as <code class="docutils literal notranslate"><span class="pre">Weekday.__init__(self,</span> <span class="pre">1,</span> <span class="pre">'Mon')</span></code></p>708</dd></dl>709 710<dl class="py method">711<dt class="sig sig-object py" id="enum.Enum.__init_subclass__">712<span class="sig-name descname"><span class="pre">__init_subclass__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwds</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__init_subclass__" title="Link to this definition">¶</a></dt>713<dd><p>A <em>classmethod</em> that is used to further configure subsequent subclasses.714By default, does nothing.</p>715</dd></dl>716 717<dl class="py method">718<dt class="sig sig-object py" id="enum.Enum._missing_">719<span class="sig-name descname"><span class="pre">_missing_</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum._missing_" title="Link to this definition">¶</a></dt>720<dd><p>A <em>classmethod</em> for looking up values not found in <em>cls</em>. By default it721does nothing, but can be overridden to implement custom search behavior:</p>722<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">StrEnum</span>723<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Build</span><span class="p">(</span><span class="n">StrEnum</span><span class="p">):</span>724<span class="gp">... </span> <span class="n">DEBUG</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>725<span class="gp">... </span> <span class="n">OPTIMIZED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>726<span class="gp">... </span> <span class="nd">@classmethod</span>727<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="nf">_missing_</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>728<span class="gp">... </span> <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>729<span class="gp">... </span> <span class="k">for</span> <span class="n">member</span> <span class="ow">in</span> <span class="bp">cls</span><span class="p">:</span>730<span class="gp">... </span> <span class="k">if</span> <span class="n">member</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="n">value</span><span class="p">:</span>731<span class="gp">... </span> <span class="k">return</span> <span class="n">member</span>732<span class="gp">... </span> <span class="k">return</span> <span class="kc">None</span>733<span class="gp">...</span>734<span class="gp">>>> </span><span class="n">Build</span><span class="o">.</span><span class="n">DEBUG</span><span class="o">.</span><span class="n">value</span>735<span class="go">'debug'</span>736<span class="gp">>>> </span><span class="n">Build</span><span class="p">(</span><span class="s1">'deBUG'</span><span class="p">)</span>737<span class="go"><Build.DEBUG: 'debug'></span>738</pre></div>739</div>740<div class="versionadded">741<p><span class="versionmodified added">Added in version 3.6.</span></p>742</div>743</dd></dl>744 745<dl class="py method">746<dt class="sig sig-object py" id="enum.Enum.__new__">747<span class="sig-name descname"><span class="pre">__new__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cls</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwds</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__new__" title="Link to this definition">¶</a></dt>748<dd><p>By default, doesn’t exist. If specified, either in the enum class749definition or in a mixin class (such as <code class="docutils literal notranslate"><span class="pre">int</span></code>), all values given750in the member assignment will be passed; e.g.</p>751<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span>752<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">MyIntEnum</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">Enum</span><span class="p">):</span>753<span class="gp">... </span> <span class="n">TWENTYSIX</span> <span class="o">=</span> <span class="s1">'1a'</span><span class="p">,</span> <span class="mi">16</span>754</pre></div>755</div>756<p>results in the call <code class="docutils literal notranslate"><span class="pre">int('1a',</span> <span class="pre">16)</span></code> and a value of <code class="docutils literal notranslate"><span class="pre">26</span></code> for the member.</p>757<div class="admonition note">758<p class="admonition-title">Note</p>759<p>When writing a custom <code class="docutils literal notranslate"><span class="pre">__new__</span></code>, do not use <code class="docutils literal notranslate"><span class="pre">super().__new__</span></code> –760call the appropriate <code class="docutils literal notranslate"><span class="pre">__new__</span></code> instead.</p>761</div>762</dd></dl>763 764<dl class="py method">765<dt class="sig sig-object py" id="enum.Enum.__repr__">766<span class="sig-name descname"><span class="pre">__repr__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__repr__" title="Link to this definition">¶</a></dt>767<dd><p>Returns the string used for <em>repr()</em> calls. By default, returns the768<em>Enum</em> name, member name, and value, but can be overridden:</p>769<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">Enum</span>770<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">OtherStyle</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>771<span class="gp">... </span> <span class="n">ALTERNATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>772<span class="gp">... </span> <span class="n">OTHER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>773<span class="gp">... </span> <span class="n">SOMETHING_ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>774<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>775<span class="gp">... </span> <span class="n">cls_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span>776<span class="gp">... </span> <span class="k">return</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">cls_name</span><span class="si">}</span><span class="s1">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">'</span>777<span class="gp">...</span>778<span class="gp">>>> </span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="si">}</span><span class="s2">"</span>779<span class="go">(OtherStyle.ALTERNATE, 'OtherStyle.ALTERNATE', 'OtherStyle.ALTERNATE')</span>780</pre></div>781</div>782</dd></dl>783 784<dl class="py method">785<dt class="sig sig-object py" id="enum.Enum.__str__">786<span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__str__" title="Link to this definition">¶</a></dt>787<dd><p>Returns the string used for <em>str()</em> calls. By default, returns the788<em>Enum</em> name and member name, but can be overridden:</p>789<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">Enum</span>790<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">OtherStyle</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>791<span class="gp">... </span> <span class="n">ALTERNATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>792<span class="gp">... </span> <span class="n">OTHER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>793<span class="gp">... </span> <span class="n">SOMETHING_ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>794<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>795<span class="gp">... </span> <span class="k">return</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">'</span>796<span class="gp">...</span>797<span class="gp">>>> </span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="si">}</span><span class="s2">"</span>798<span class="go">(<OtherStyle.ALTERNATE: 1>, 'ALTERNATE', 'ALTERNATE')</span>799</pre></div>800</div>801</dd></dl>802 803<dl class="py method">804<dt class="sig sig-object py" id="enum.Enum.__format__">805<span class="sig-name descname"><span class="pre">__format__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum.__format__" title="Link to this definition">¶</a></dt>806<dd><p>Returns the string used for <em>format()</em> and <em>f-string</em> calls. By default,807returns <a class="reference internal" href="#enum.Enum.__str__" title="enum.Enum.__str__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__str__()</span></code></a> return value, but can be overridden:</p>808<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">auto</span><span class="p">,</span> <span class="n">Enum</span>809<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">OtherStyle</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>810<span class="gp">... </span> <span class="n">ALTERNATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>811<span class="gp">... </span> <span class="n">OTHER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>812<span class="gp">... </span> <span class="n">SOMETHING_ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>813<span class="gp">... </span> <span class="k">def</span><span class="w"> </span><span class="fm">__format__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">spec</span><span class="p">):</span>814<span class="gp">... </span> <span class="k">return</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">'</span>815<span class="gp">...</span>816<span class="gp">>>> </span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="p">),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">OtherStyle</span><span class="o">.</span><span class="n">ALTERNATE</span><span class="si">}</span><span class="s2">"</span>817<span class="go">(<OtherStyle.ALTERNATE: 1>, 'OtherStyle.ALTERNATE', 'ALTERNATE')</span>818</pre></div>819</div>820</dd></dl>821 822<div class="admonition note">823<p class="admonition-title">Note</p>824<p>Using <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> with <code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code> results in integers of increasing value,825starting with <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>826</div>827<div class="versionchanged">828<p><span class="versionmodified changed">Changed in version 3.12: </span>Added <a class="reference internal" href="../howto/enum.html#enum-dataclass-support"><span class="std std-ref">Dataclass support</span></a></p>829</div>830<dl class="py method">831<dt class="sig sig-object py" id="enum.Enum._add_alias_">832<span class="sig-name descname"><span class="pre">_add_alias_</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum._add_alias_" title="Link to this definition">¶</a></dt>833<dd><p>Adds a new name as an alias to an existing member:</p>834<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span><span class="o">.</span><span class="n">_add_alias_</span><span class="p">(</span><span class="s2">"ERROR"</span><span class="p">)</span>835<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">ERROR</span>836<span class="go"><Color.RED: 1></span>837</pre></div>838</div>839<p>Raises a <a class="reference internal" href="exceptions.html#NameError" title="NameError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">NameError</span></code></a> if the name is already assigned to a different member.</p>840<div class="versionadded">841<p><span class="versionmodified added">Added in version 3.13.</span></p>842</div>843</dd></dl>844 845<dl class="py method">846<dt class="sig sig-object py" id="enum.Enum._add_value_alias_">847<span class="sig-name descname"><span class="pre">_add_value_alias_</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#enum.Enum._add_value_alias_" title="Link to this definition">¶</a></dt>848<dd><p>Adds a new value as an alias to an existing member:</p>849<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span><span class="o">.</span><span class="n">_add_value_alias_</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>850<span class="gp">>>> </span><span class="n">Color</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>851<span class="go"><Color.RED: 1></span>852</pre></div>853</div>854<div class="line-block">855<div class="line">Raises a <a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a> if the value is already linked with a different member.</div>856<div class="line">See <a class="reference internal" href="../howto/enum.html#multi-value-enum"><span class="std std-ref">MultiValueEnum</span></a> for an example.</div>857</div>858<div class="versionadded">859<p><span class="versionmodified added">Added in version 3.13.</span></p>860</div>861</dd></dl>862 863</dd></dl>864 865<dl class="py class">866<dt class="sig sig-object py" id="enum.IntEnum">867<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">IntEnum</span></span><a class="headerlink" href="#enum.IntEnum" title="Link to this definition">¶</a></dt>868<dd><p><em>IntEnum</em> is the same as <a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a>, but its members are also integers and can be869used anywhere that an integer can be used. If any integer operation is performed870with an <em>IntEnum</em> member, the resulting value loses its enumeration status.</p>871<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">IntEnum</span>872<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Number</span><span class="p">(</span><span class="n">IntEnum</span><span class="p">):</span>873<span class="gp">... </span> <span class="n">ONE</span> <span class="o">=</span> <span class="mi">1</span>874<span class="gp">... </span> <span class="n">TWO</span> <span class="o">=</span> <span class="mi">2</span>875<span class="gp">... </span> <span class="n">THREE</span> <span class="o">=</span> <span class="mi">3</span>876<span class="gp">...</span>877<span class="gp">>>> </span><span class="n">Number</span><span class="o">.</span><span class="n">THREE</span>878<span class="go"><Number.THREE: 3></span>879<span class="gp">>>> </span><span class="n">Number</span><span class="o">.</span><span class="n">ONE</span> <span class="o">+</span> <span class="n">Number</span><span class="o">.</span><span class="n">TWO</span>880<span class="go">3</span>881<span class="gp">>>> </span><span class="n">Number</span><span class="o">.</span><span class="n">THREE</span> <span class="o">+</span> <span class="mi">5</span>882<span class="go">8</span>883<span class="gp">>>> </span><span class="n">Number</span><span class="o">.</span><span class="n">THREE</span> <span class="o">==</span> <span class="mi">3</span>884<span class="go">True</span>885</pre></div>886</div>887<div class="admonition note">888<p class="admonition-title">Note</p>889<p>Using <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> with <code class="xref py py-class docutils literal notranslate"><span class="pre">IntEnum</span></code> results in integers of increasing890value, starting with <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>891</div>892<div class="versionchanged">893<p><span class="versionmodified changed">Changed in version 3.11: </span><a class="reference internal" href="../reference/datamodel.html#object.__str__" title="object.__str__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__str__()</span></code></a> is now <code class="xref py py-meth docutils literal notranslate"><span class="pre">int.__str__()</span></code> to894better support the <em>replacement of existing constants</em> use-case.895<a class="reference internal" href="../reference/datamodel.html#object.__format__" title="object.__format__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__format__()</span></code></a> was already <code class="xref py py-meth docutils literal notranslate"><span class="pre">int.__format__()</span></code> for that same reason.</p>896</div>897</dd></dl>898 899<dl class="py class">900<dt class="sig sig-object py" id="enum.StrEnum">901<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">StrEnum</span></span><a class="headerlink" href="#enum.StrEnum" title="Link to this definition">¶</a></dt>902<dd><p><em>StrEnum</em> is the same as <a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a>, but its members are also strings and903can be used in most of the same places that a string can be used. The result904of any string operation performed on or with a <em>StrEnum</em> member is not part905of the enumeration.</p>906<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">StrEnum</span><span class="p">,</span> <span class="n">auto</span>907<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">StrEnum</span><span class="p">):</span>908<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="s1">'r'</span>909<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="s1">'g'</span>910<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="s1">'b'</span>911<span class="gp">... </span> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>912<span class="gp">...</span>913<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span>914<span class="go"><Color.RED: 'r'></span>915<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">UNKNOWN</span>916<span class="go"><Color.UNKNOWN: 'unknown'></span>917<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">Color</span><span class="o">.</span><span class="n">UNKNOWN</span><span class="p">)</span>918<span class="go">'unknown'</span>919</pre></div>920</div>921<div class="admonition note">922<p class="admonition-title">Note</p>923<p>There are places in the stdlib that check for an exact <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>924instead of a <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code> subclass (i.e. <code class="docutils literal notranslate"><span class="pre">type(unknown)</span> <span class="pre">==</span> <span class="pre">str</span></code>925instead of <code class="docutils literal notranslate"><span class="pre">isinstance(unknown,</span> <span class="pre">str)</span></code>), and in those locations you926will need to use <code class="docutils literal notranslate"><span class="pre">str(MyStrEnum.MY_MEMBER)</span></code>.</p>927</div>928<div class="admonition note">929<p class="admonition-title">Note</p>930<p>Using <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> with <code class="xref py py-class docutils literal notranslate"><span class="pre">StrEnum</span></code> results in the lower-cased member931name as the value.</p>932</div>933<div class="admonition note">934<p class="admonition-title">Note</p>935<p><a class="reference internal" href="../reference/datamodel.html#object.__str__" title="object.__str__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__str__()</span></code></a> is <code class="xref py py-meth docutils literal notranslate"><span class="pre">str.__str__()</span></code> to better support the936<em>replacement of existing constants</em> use-case. <a class="reference internal" href="../reference/datamodel.html#object.__format__" title="object.__format__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__format__()</span></code></a> is likewise937<code class="xref py py-meth docutils literal notranslate"><span class="pre">str.__format__()</span></code> for that same reason.</p>938</div>939<div class="versionadded">940<p><span class="versionmodified added">Added in version 3.11.</span></p>941</div>942</dd></dl>943 944<dl class="py class">945<dt class="sig sig-object py" id="enum.Flag">946<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">Flag</span></span><a class="headerlink" href="#enum.Flag" title="Link to this definition">¶</a></dt>947<dd><p><code class="docutils literal notranslate"><span class="pre">Flag</span></code> is the same as <a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a>, but its members support the bitwise948operators <code class="docutils literal notranslate"><span class="pre">&</span></code> (<em>AND</em>), <code class="docutils literal notranslate"><span class="pre">|</span></code> (<em>OR</em>), <code class="docutils literal notranslate"><span class="pre">^</span></code> (<em>XOR</em>), and <code class="docutils literal notranslate"><span class="pre">~</span></code> (<em>INVERT</em>);949the results of those operations are (aliases of) members of the enumeration.</p>950<dl class="py method">951<dt class="sig sig-object py" id="enum.Flag.__contains__">952<span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Flag.__contains__" title="Link to this definition">¶</a></dt>953<dd><p>Returns <em>True</em> if value is in self:</p>954<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Flag</span><span class="p">,</span> <span class="n">auto</span>955<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">Flag</span><span class="p">):</span>956<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>957<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>958<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>959<span class="gp">...</span>960<span class="gp">>>> </span><span class="n">purple</span> <span class="o">=</span> <span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">|</span> <span class="n">Color</span><span class="o">.</span><span class="n">BLUE</span>961<span class="gp">>>> </span><span class="n">white</span> <span class="o">=</span> <span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">|</span> <span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span> <span class="o">|</span> <span class="n">Color</span><span class="o">.</span><span class="n">BLUE</span>962<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span> <span class="ow">in</span> <span class="n">purple</span>963<span class="go">False</span>964<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span> <span class="ow">in</span> <span class="n">white</span>965<span class="go">True</span>966<span class="gp">>>> </span><span class="n">purple</span> <span class="ow">in</span> <span class="n">white</span>967<span class="go">True</span>968<span class="gp">>>> </span><span class="n">white</span> <span class="ow">in</span> <span class="n">purple</span>969<span class="go">False</span>970</pre></div>971</div>972</dd></dl>973 974<dl class="py method">975<dt class="sig sig-object py">976<span class="sig-name descname"><span class="pre">__iter__(self):</span></span></dt>977<dd><p>Returns all contained non-alias members:</p>978<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span><span class="p">)</span>979<span class="go">[<Color.RED: 1>]</span>980<span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="n">purple</span><span class="p">)</span>981<span class="go">[<Color.RED: 1>, <Color.BLUE: 4>]</span>982</pre></div>983</div>984<div class="versionadded">985<p><span class="versionmodified added">Added in version 3.11.</span></p>986</div>987</dd></dl>988 989<dl class="py method">990<dt class="sig sig-object py">991<span class="sig-name descname"><span class="pre">__len__(self):</span></span></dt>992<dd><p>Returns number of members in flag:</p>993<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>994<span class="go">1</span>995<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">white</span><span class="p">)</span>996<span class="go">3</span>997</pre></div>998</div>999<div class="versionadded">1000<p><span class="versionmodified added">Added in version 3.11.</span></p>1001</div>1002</dd></dl>1003 1004<dl class="py method">1005<dt class="sig sig-object py">1006<span class="sig-name descname"><span class="pre">__bool__(self):</span></span></dt>1007<dd><p>Returns <em>True</em> if any members in flag, <em>False</em> otherwise:</p>1008<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span><span class="p">)</span>1009<span class="go">True</span>1010<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">white</span><span class="p">)</span>1011<span class="go">True</span>1012<span class="gp">>>> </span><span class="n">black</span> <span class="o">=</span> <span class="n">Color</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>1013<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">black</span><span class="p">)</span>1014<span class="go">False</span>1015</pre></div>1016</div>1017</dd></dl>1018 1019<dl class="py method">1020<dt class="sig sig-object py" id="enum.Flag.__or__">1021<span class="sig-name descname"><span class="pre">__or__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Flag.__or__" title="Link to this definition">¶</a></dt>1022<dd><p>Returns current flag binary or’ed with other:</p>1023<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">|</span> <span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span>1024<span class="go"><Color.RED|GREEN: 3></span>1025</pre></div>1026</div>1027</dd></dl>1028 1029<dl class="py method">1030<dt class="sig sig-object py" id="enum.Flag.__and__">1031<span class="sig-name descname"><span class="pre">__and__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Flag.__and__" title="Link to this definition">¶</a></dt>1032<dd><p>Returns current flag binary and’ed with other:</p>1033<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">purple</span> <span class="o">&</span> <span class="n">white</span>1034<span class="go"><Color.RED|BLUE: 5></span>1035<span class="gp">>>> </span><span class="n">purple</span> <span class="o">&</span> <span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span>1036<span class="go"><Color: 0></span>1037</pre></div>1038</div>1039</dd></dl>1040 1041<dl class="py method">1042<dt class="sig sig-object py" id="enum.Flag.__xor__">1043<span class="sig-name descname"><span class="pre">__xor__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#enum.Flag.__xor__" title="Link to this definition">¶</a></dt>1044<dd><p>Returns current flag binary xor’ed with other:</p>1045<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">purple</span> <span class="o">^</span> <span class="n">white</span>1046<span class="go"><Color.GREEN: 2></span>1047<span class="gp">>>> </span><span class="n">purple</span> <span class="o">^</span> <span class="n">Color</span><span class="o">.</span><span class="n">GREEN</span>1048<span class="go"><Color.RED|GREEN|BLUE: 7></span>1049</pre></div>1050</div>1051</dd></dl>1052 1053<dl class="py method">1054<dt class="sig sig-object py">1055<span class="sig-name descname"><span class="pre">__invert__(self):</span></span></dt>1056<dd><p>Returns all the flags in <em>type(self)</em> that are not in <em>self</em>:</p>1057<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="o">~</span><span class="n">white</span>1058<span class="go"><Color: 0></span>1059<span class="gp">>>> </span><span class="o">~</span><span class="n">purple</span>1060<span class="go"><Color.GREEN: 2></span>1061<span class="gp">>>> </span><span class="o">~</span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span>1062<span class="go"><Color.GREEN|BLUE: 6></span>1063</pre></div>1064</div>1065</dd></dl>1066 1067<dl class="py method">1068<dt class="sig sig-object py" id="enum.Flag._numeric_repr_">1069<span class="sig-name descname"><span class="pre">_numeric_repr_</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#enum.Flag._numeric_repr_" title="Link to this definition">¶</a></dt>1070<dd><p>Function used to format any remaining unnamed numeric values. Default is1071the value’s repr; common choices are <a class="reference internal" href="functions.html#hex" title="hex"><code class="xref py py-func docutils literal notranslate"><span class="pre">hex()</span></code></a> and <a class="reference internal" href="functions.html#oct" title="oct"><code class="xref py py-func docutils literal notranslate"><span class="pre">oct()</span></code></a>.</p>1072</dd></dl>1073 1074<div class="admonition note">1075<p class="admonition-title">Note</p>1076<p>Using <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> with <code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code> results in integers that are powers1077of two, starting with <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>1078</div>1079<div class="versionchanged">1080<p><span class="versionmodified changed">Changed in version 3.11: </span>The <em>repr()</em> of zero-valued flags has changed. It1081is now:</p>1082<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>1083<span class="go"><Color: 0></span>1084</pre></div>1085</div>1086</div>1087</dd></dl>1088 1089<dl class="py class">1090<dt class="sig sig-object py" id="enum.IntFlag">1091<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">IntFlag</span></span><a class="headerlink" href="#enum.IntFlag" title="Link to this definition">¶</a></dt>1092<dd><p><code class="docutils literal notranslate"><span class="pre">IntFlag</span></code> is the same as <a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a>, but its members are also integers and can be1093used anywhere that an integer can be used.</p>1094<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">IntFlag</span><span class="p">,</span> <span class="n">auto</span>1095<span class="gp">>>> </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">IntFlag</span><span class="p">):</span>1096<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>1097<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>1098<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>1099<span class="gp">...</span>1100<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">&</span> <span class="mi">2</span>1101<span class="go"><Color: 0></span>1102<span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">|</span> <span class="mi">2</span>1103<span class="go"><Color.RED|GREEN: 3></span>1104</pre></div>1105</div>1106<p>If any integer operation is performed with an <em>IntFlag</em> member, the result is1107not an <em>IntFlag</em>:</p>1108<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="o">.</span><span class="n">RED</span> <span class="o">+</span> <span class="mi">2</span>1109<span class="go">3</span>1110</pre></div>1111</div>1112<p>If a <a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a> operation is performed with an <em>IntFlag</em> member and:</p>1113<ul class="simple">1114<li><p>the result is a valid <em>IntFlag</em>: an <em>IntFlag</em> is returned</p></li>1115<li><p>the result is not a valid <em>IntFlag</em>: the result depends on the <a class="reference internal" href="#enum.FlagBoundary" title="enum.FlagBoundary"><code class="xref py py-class docutils literal notranslate"><span class="pre">FlagBoundary</span></code></a> setting</p></li>1116</ul>1117<p>The <a class="reference internal" href="functions.html#repr" title="repr"><code class="xref py py-func docutils literal notranslate"><span class="pre">repr()</span></code></a> of unnamed zero-valued flags has changed. It is now:</p>1118<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Color</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>1119<span class="go"><Color: 0></span>1120</pre></div>1121</div>1122<div class="admonition note">1123<p class="admonition-title">Note</p>1124<p>Using <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-class docutils literal notranslate"><span class="pre">auto</span></code></a> with <code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code> results in integers that are powers1125of two, starting with <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>1126</div>1127<div class="versionchanged">1128<p><span class="versionmodified changed">Changed in version 3.11: </span><a class="reference internal" href="../reference/datamodel.html#object.__str__" title="object.__str__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__str__()</span></code></a> is now <code class="xref py py-meth docutils literal notranslate"><span class="pre">int.__str__()</span></code> to better support the1129<em>replacement of existing constants</em> use-case. <a class="reference internal" href="../reference/datamodel.html#object.__format__" title="object.__format__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__format__()</span></code></a> was1130already <code class="xref py py-meth docutils literal notranslate"><span class="pre">int.__format__()</span></code> for that same reason.</p>1131<p>Inversion of an <code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code> now returns a positive value that is the1132union of all flags not in the given flag, rather than a negative value.1133This matches the existing <a class="reference internal" href="#enum.Flag" title="enum.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a> behavior.</p>1134</div>1135</dd></dl>1136 1137<dl class="py class">1138<dt class="sig sig-object py" id="enum.ReprEnum">1139<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">ReprEnum</span></span><a class="headerlink" href="#enum.ReprEnum" title="Link to this definition">¶</a></dt>1140<dd><p><code class="xref py py-class docutils literal notranslate"><span class="pre">ReprEnum</span></code> uses the <a class="reference internal" href="#enum.Enum.__repr__" title="enum.Enum.__repr__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">repr()</span></code></a> of <a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a>,1141but the <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str()</span></code></a> of the mixed-in data type:</p>1142<ul class="simple">1143<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">int.__str__()</span></code> for <a class="reference internal" href="#enum.IntEnum" title="enum.IntEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntEnum</span></code></a> and <a class="reference internal" href="#enum.IntFlag" title="enum.IntFlag"><code class="xref py py-class docutils literal notranslate"><span class="pre">IntFlag</span></code></a></p></li>1144<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">str.__str__()</span></code> for <a class="reference internal" href="#enum.StrEnum" title="enum.StrEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">StrEnum</span></code></a></p></li>1145</ul>1146<p>Inherit from <code class="xref py py-class docutils literal notranslate"><span class="pre">ReprEnum</span></code> to keep the <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str()</span></code></a> / <a class="reference internal" href="functions.html#format" title="format"><code class="xref py py-func docutils literal notranslate"><span class="pre">format()</span></code></a>1147of the mixed-in data type instead of using the1148<a class="reference internal" href="#enum.Enum" title="enum.Enum"><code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></a>-default <a class="reference internal" href="#enum.Enum.__str__" title="enum.Enum.__str__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">str()</span></code></a>.</p>1149<div class="versionadded">1150<p><span class="versionmodified added">Added in version 3.11.</span></p>1151</div>1152</dd></dl>1153 1154<dl class="py class">1155<dt class="sig sig-object py" id="enum.EnumCheck">1156<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">enum.</span></span><span class="sig-name descname"><span class="pre">EnumCheck</span></span><a class="headerlink" href="#enum.EnumCheck" title="Link to this definition">¶</a></dt>1157<dd><p><em>EnumCheck</em> contains the options used by the <a class="reference internal" href="#enum.verify" title="enum.verify"><code class="xref py py-func docutils literal notranslate"><span class="pre">verify()</span></code></a> decorator to ensure1158various constraints; failed constraints result in a <a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a>.</p>1159<dl class="py attribute">1160<dt class="sig sig-object py" id="enum.EnumCheck.UNIQUE">1161<span class="sig-name descname"><span class="pre">UNIQUE</span></span><a class="headerlink" href="#enum.EnumCheck.UNIQUE" title="Link to this definition">¶</a></dt>1162<dd><p>Ensure that each value has only one name:</p>1163<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span><span class="p">,</span> <span class="n">verify</span><span class="p">,</span> <span class="n">UNIQUE</span>1164<span class="gp">>>> </span><span class="nd">@verify</span><span class="p">(</span><span class="n">UNIQUE</span><span class="p">)</span>1165<span class="gp">... </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>1166<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="mi">1</span>1167<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="mi">2</span>1168<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="mi">3</span>1169<span class="gp">... </span> <span class="n">CRIMSON</span> <span class="o">=</span> <span class="mi">1</span>1170<span class="gt">Traceback (most recent call last):</span>1171<span class="c">...</span>1172<span class="gr">ValueError</span>: <span class="n">aliases found in <enum 'Color'>: CRIMSON -> RED</span>1173</pre></div>1174</div>1175</dd></dl>1176 1177<dl class="py attribute">1178<dt class="sig sig-object py" id="enum.EnumCheck.CONTINUOUS">1179<span class="sig-name descname"><span class="pre">CONTINUOUS</span></span><a class="headerlink" href="#enum.EnumCheck.CONTINUOUS" title="Link to this definition">¶</a></dt>1180<dd><p>Ensure that there are no missing values between the lowest-valued member1181and the highest-valued member:</p>1182<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span><span class="p">,</span> <span class="n">verify</span><span class="p">,</span> <span class="n">CONTINUOUS</span>1183<span class="gp">>>> </span><span class="nd">@verify</span><span class="p">(</span><span class="n">CONTINUOUS</span><span class="p">)</span>1184<span class="gp">... </span><span class="k">class</span><span class="w"> </span><span class="nc">Color</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>1185<span class="gp">... </span> <span class="n">RED</span> <span class="o">=</span> <span class="mi">1</span>1186<span class="gp">... </span> <span class="n">GREEN</span> <span class="o">=</span> <span class="mi">2</span>1187<span class="gp">... </span> <span class="n">BLUE</span> <span class="o">=</span> <span class="mi">5</span>1188<span class="gt">Traceback (most recent call last):</span>1189<span class="c">...</span>1190<span class="gr">ValueError</span>: <span class="n">invalid enum 'Color': missing values 3, 4</span>1191</pre></div>1192</div>1193</dd></dl>1194 1195<dl class="py attribute">1196<dt class="sig sig-object py" id="enum.EnumCheck.NAMED_FLAGS">1197<span class="sig-name descname"><span class="pre">NAMED_FLAGS</span></span><a class="headerlink" href="#enum.EnumCheck.NAMED_FLAGS" title="Link to this definition">¶</a></dt>1198<dd><p>Ensure that any flag groups/masks contain only named flags – useful when1199values are specified instead of being generated by <a class="reference internal" href="#enum.auto" title="enum.auto"><code class="xref py py-func docutils literal notranslate"><span class="pre">auto()</span></code></a>:</p>1200<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Flag</span><span class="p">,</span> <span class="n">verify</span><span class="p">,</span> <span class="n">NAMED_FLAGS</span>