Spaces:
Build error
Build error
#################### EnumBase #################### | |
cimport cython | |
cdef extern from *: | |
int PY_VERSION_HEX | |
cdef object __Pyx_OrderedDict | |
if PY_VERSION_HEX >= 0x02070000: | |
from collections import OrderedDict as __Pyx_OrderedDict | |
else: | |
__Pyx_OrderedDict = dict | |
@cython.internal | |
cdef class __Pyx_EnumMeta(type): | |
def __init__(cls, name, parents, dct): | |
type.__init__(cls, name, parents, dct) | |
cls.__members__ = __Pyx_OrderedDict() | |
def __iter__(cls): | |
return iter(cls.__members__.values()) | |
def __getitem__(cls, name): | |
return cls.__members__[name] | |
# @cython.internal | |
cdef object __Pyx_EnumBase | |
class __Pyx_EnumBase(int): | |
__metaclass__ = __Pyx_EnumMeta | |
def __new__(cls, value, name=None): | |
for v in cls: | |
if v == value: | |
return v | |
if name is None: | |
raise ValueError("Unknown enum value: '%s'" % value) | |
res = int.__new__(cls, value) | |
res.name = name | |
setattr(cls, name, res) | |
cls.__members__[name] = res | |
return res | |
def __repr__(self): | |
return "<%s.%s: %d>" % (self.__class__.__name__, self.name, self) | |
def __str__(self): | |
return "%s.%s" % (self.__class__.__name__, self.name) | |
if PY_VERSION_HEX >= 0x03040000: | |
from enum import IntEnum as __Pyx_EnumBase | |
#################### EnumType #################### | |
#@requires: EnumBase | |
cdef dict __Pyx_globals = globals() | |
if PY_VERSION_HEX >= 0x03040000: | |
# create new IntEnum() | |
{{name}} = __Pyx_EnumBase('{{name}}', __Pyx_OrderedDict([ | |
{{for item in items}} | |
('{{item}}', {{item}}), | |
{{endfor}} | |
])) | |
{{for item in items}} | |
__Pyx_globals['{{item}}'] = {{name}}.{{item}} | |
{{endfor}} | |
else: | |
class {{name}}(__Pyx_EnumBase): | |
pass | |
{{for item in items}} | |
__Pyx_globals['{{item}}'] = {{name}}({{item}}, '{{item}}') | |
{{endfor}} | |