def __getattr__(cls, name):
if _is_dunder(name):<EOL><INDENT>raise AttributeError(name)<EOL><DEDENT>try:<EOL><INDENT>return cls._member_map_[name]<EOL><DEDENT>except KeyError:<EOL><INDENT>raise AttributeError(name)<EOL><DEDENT>
Return the enum member matching `name`

        We use __getattr__ instead of descriptors or inserting into the enum
        class' __dict__ in order to support `name` and `value` being both
        properties for enum members (which live in the class' __dict__) and
        enum members themselves.