CellModules
Enums.py
Go to the documentation of this file.
2def IsicellEnum(name,values):
3 class EnumItem(int):
4 def __new__(cls, enum, name, value, *args, **kwargs):
5 test = super(cls, cls).__new__(cls,value)
6 test.__doc__ = name+' : int'
7 test.__enum = enum
8 test.__name = name
9 return test
10 def __repr__(self):
11 return f'<{self.__enum}.{self.__name}: {int(self)}>'
12
13 def managed_attribute(name):
14 @property
15 def prop(self):
16 return self._data[name]
17 return prop
18
19 class Enum():
20 def __init__(self,name,values):
21 self.__doc__ = name+' : Enum'+name
22 self.__name__ = name
23 self._data = {k:EnumItem(name,k,v) for v,k in values.items()}
24 for v,k in values.items():
25 setattr(self.__class__, k, managed_attribute(k))
26 def __repr__(self):
27 return f"<enum {self.__name__} : [{', '.join([f'{k}={int(v)}' for k,v in sorted(self._data.items(),key=lambda i:i[1])])}]>"
28 def to_dict(self):
29 r"""to_dict(Enum self) -> dict"""
30 return {k: int(v) for k, v in self._data.items()}
31 def to_invert_dict(self):
32 r"""to_invert_dict(Enum self) -> dict"""
33 return {int(v): k for k, v in self._data.items()}
34
35 return Enum(name,values)
36
37/*isigen:insert@SWIGenumDeclarations'''
38 tmpAllEnum = {'State':dict(enumerate(sorted([s["name"] for s in builderData["cell"]["States"]])))}
39 tmpAllEnum.update({'Type':dict(enumerate(sorted(builderData["cellTypes"])))})
40 if "enums" in builderData:
41 tmpAllEnum.update({upperFirst(name): dict(enumerate(sorted(listV))) for name, listV in builderData["enums"].items()})
42 print(f'enumList = {tmpAllEnum}')
43 '''*/
44for enumName,enumValues in enumList.items():
45 globals()[enumName] = IsicellEnum(enumName,enumValues)
46del enumName,IsicellEnum,enumValues,enumList
def IsicellEnum(name, values)
Definition: Enums.py:2