<div dir="ltr">On Tue, May 7, 2013 at 8:34 AM, Eli Bendersky <span dir="ltr"><<a href="mailto:eliben@gmail.com" target="_blank">eliben@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div>According to an earlier discussion, this is works on CPython, PyPy and Jython, but not on IronPython. The alternative that works everywhere is to define the Enum like this:<br>

</div></div></div></div></div>

<br></div>¬† Color = Enum('the_module.Color', 'red blue green')<br><br></div>The reference implementation supports this as well.<br></div></div></blockquote><div><br></div><div>As an alternate bikeshed color, why not pass the receiving module to the class factory when pickle support is desirable? That should be less brittle than its name. The class based syntax can still be recommended to libraries that won't know ahead of time if their values need to be pickled.</div>

<div><br></div><div>>>> Color = Enum('Color', 'red blue green', module=__main__)</div><div><br></div><div>Functions that wrap class factories could similarly accept and pass a module along.</div>
<div>
<br></div><div>The fundamental problem is that the class factory cannot know what the intended destination module is without either syntax that provides this ('class' today, proposed 'def' or 'class from' in the thread, or the caller passing additional information around (module name, or module instance). Syntax changes are clearly beyond the scope of PEP 435, otherwise a true enum syntax might have been born. So that leaves us with requiring the caller to provide it.</div>

<div><br></div><div>Michael </div></div></div></div>