MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / pep435_enum

Function pep435_enum

lib/sqlalchemy/testing/schema.py:163–198  ·  view source on GitHub ↗
(name)

Source from the content-addressed store, hash-verified

161
162
163def pep435_enum(name):
164 # Implements PEP 435 in the minimal fashion needed by SQLAlchemy
165 __members__ = OrderedDict()
166
167 def __init__(self, name, value, alias=None):
168 self.name = name
169 self.value = value
170 self.__members__[name] = self
171 value_to_member[value] = self
172 setattr(self.__class__, name, self)
173 if alias:
174 self.__members__[alias] = self
175 setattr(self.__class__, alias, self)
176
177 value_to_member = {}
178
179 @classmethod
180 def get(cls, value):
181 return value_to_member[value]
182
183 someenum = type(
184 name,
185 (object,),
186 {"__members__": __members__, "__init__": __init__, "get": get},
187 )
188
189 # getframe() trick for pickling I don't understand courtesy
190 # Python namedtuple()
191 try:
192 module = sys._getframe(1).f_globals.get("__name__", "__main__")
193 except (AttributeError, ValueError):
194 pass
195 if module is not None:
196 someenum.__module__ = module
197
198 return someenum

Callers 5

EnumTestClass · 0.90
test_types.pyFile · 0.90

Calls 1

getMethod · 0.45

Tested by 3