4 def __new__(cls, enum, name, value, *args, **kwargs):
5 test = super(cls, cls).__new__(cls,value)
6 test.__doc__ = name+
' : int'
11 return f
'<{self.__enum}.{self.__name}: {int(self)}>'
13 def managed_attribute(name):
16 return self._data[name]
20 def __init__(self,name,values):
21 self.__doc__ = name+
' : Enum'+name
23 self._data = {k:EnumItem(name,k,v)
for v,k
in values.items()}
24 self._cast = {int(v):v
for v
in self._data.
values()}
25 self._dict = {k:v
for v,k
in values.items()}
26 self._invert_dict = {v:k
for v,k
in values.items()}
27 for v,k
in values.items():
28 setattr(self.__class__, k, managed_attribute(k))
30 return f
"<enum {self.__name__} : [{', '.join([f'{k}={int(v)}' for k,v in sorted(self._data.items(),key=lambda i:i[1])])}]>"
32 r"""to_dict(Enum self) -> dict"""
34 def to_invert_dict(self):
35 r"""to_invert_dict(Enum self) -> dict"""
36 return self._invert_dict
37 def __call__(self, key):
38 r"""__call__(Enum self, key) -> EnumItem"""
39 if isinstance(key, int):
40 return self._cast[key]
41 elif isinstance(key, str):
42 return self._data[key]
44 raise KeyError(f
"Key must be an int or str, got {type(key)}")
46 return Enum(name,values)
48/*isigen:insert
@SWIGenumDeclarations'''
49 tmpAllEnum = {'State':dict(enumerate(sorted([s[
"name"]
for s
in builderData[
"cell"][
"States"]])))}
50 tmpAllEnum.update({
'Type':dict(enumerate((sorted(builderData[
"cellTypes"])
if len(builderData[
"cellTypes"])>0
else [
'Common'])))})
51 if "enums" in builderData:
52 tmpAllEnum.update({upperFirst(name): dict(enumerate(sorted(listV)))
for name, listV
in builderData[
"enums"].items()})
53 print(f
'enumList = {tmpAllEnum}')
55for enumName,enumValues in enumList.items():
56 globals()[enumName] = IsicellEnum(enumName,enumValues)
57del enumName,IsicellEnum,enumValues,enumList
CompositeGenerator< T > values(T val1, T val2)
def IsicellEnum(name, values)