def __setitem__(self, key, value):
if pyver >= <NUM_LIT> and key == '<STR_LIT>':<EOL><INDENT>return<EOL><DEDENT>if _is_sunder(key):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>elif _is_dunder(key):<EOL><INDENT>pass<EOL><DEDENT>elif key in self._member_names:<EOL><INDENT>raise TypeError('<STR_LIT>' % key)<EOL><DEDENT>elif not _is_descriptor(value):<EOL><INDENT>if key in self:<EOL><INDENT>raise TypeError('<STR_LIT>' % self[key])<EOL><DEDENT>self._member_names.append(key)<EOL><DEDENT>super(_EnumDict, self).__setitem__(key, value)<EOL>
Changes anything not dundered or not a descriptor.

        If a descriptor is added with the same name as an enum member, the name
        is removed from _member_names (this may leave a hole in the numerical
        sequence of values).

        If an enum member name is used twice, an error is raised; duplicate
        values are not checked for.

        Single underscore (sunder) names are reserved.

        Note:   in 3.x __order__ is simply discarded as a not necessary piece
                leftover from 2.x