2013/5/2 Eli Bendersky <eli...@gmail.com>: > > > > On Thu, May 2, 2013 at 1:10 PM, Antoine Pitrou <solip...@pitrou.net> wrote: >> >> On Thu, 2 May 2013 15:48:14 -0400 >> Benjamin Peterson <benja...@python.org> wrote: >> > 2013/5/2 Ethan Furman <et...@stoneleaf.us>: >> > > In order for the Enum convenience function to be pickleable, we have >> > > this >> > > line of code in the metaclass: >> > > >> > > enum_class.__module__ = sys._getframe(1).f_globals['__name__'] >> > > >> > > This works fine for Cpython, but what about the others? >> > >> > Regardless of that, perhaps we should come up with better ways to do >> > this. >> >> Two things that were suggested in private: >> >> 1) ask users to pass the module name to the convenience function >> explicitly (i.e. pass "seasonmodule.Season" instead of "Season" as the >> class "name"). Guido doesn't like it :-) >> >> 2) dicth the "convenience function" and replace it with a regular >> class-based syntax. Ethan doesn't like it :-) > > > Re (2), we already have the hack in stdlib in namedtuple, so not allowing it > for an enum is a step backwards. If sys._getframe(1).f_globals['__name__'] > feels hackish, maybe it can be shortened to a convenience function the > stdlib provides? Are there conditions where it doesn't produce what we > expect from it? The point at which the enumeration is defined resides in > *some* module, no?
I disagree that not allowing code smell to spread is a step backwards. Rather we should realize that this is a common problem and find a proper solution rather than further propogating this hack. -- Regards, Benjamin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com