title: When should I subclass EnumMeta instead of Enum?
body: <p>In <a href="http://python-notes.curiousefficiency.org/en/latest/python3/enum_creation.html" rel="noreferrer">this article</a> Nick Coghlan talks about some of the design decisions that went in to the <a href="https://www.python.org/dev/peps/pep-0435/" rel="noreferrer">PEP 435 <code>Enum</code> type</a>, and how <code>EnumMeta</code> can be subclassed to provide a different <code>Enum</code> experience.</p>
  
  <p>However, the advice I give (and I am the primary stdlib <code>Enum</code> author) about using a metaclass is it should not be done without a really good reason -- such as not being able to accomplish what you need with a class decorator, or a dedicated function to hide any ugliness; and in my own work I've been able to do whatever I needed simply by using <code>__new__</code>, <code>__init__</code>, and/or normal class/instance methods when creating the <code>Enum</code> class:</p>
  
  <ul>
  <li><p><a href="https://stackoverflow.com/questions/12680080/python-enums-with-attributes"><code>Enum</code> with attributes</a></p></li>
  <li><p><a href="https://stackoverflow.com/questions/37444002/overriding-enum-call-method">Handling missing members</a></p></li>
  <li><p><a href="https://stackoverflow.com/questions/17911188/is-it-possible-to-define-a-class-constant-inside-an-enum">class constants that are not <code>Enum</code> members</a></p></li>
  </ul>
  
  <p>And then there is this cautionary tale of being careful when delving into <code>Enum</code>, with and without metaclass subclassing:</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/a/24107853/208880">Is it possible to override <code>__new__</code> in an enum to parse strings to an instance?</a></li>
  </ul>
  
  <p>Given all that, when would I need to fiddle with <code>EnumMeta</code> itself?</p>