an enum with value 0 should be interpreted as False
for example: bool(Enum(off=0, on=1)('off')) is False Change-Id: Ieb200b4ecf0eed50b657ecc00f73a69810ad828f Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28586 Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de> Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
@ -106,6 +106,9 @@ class EnumMember:
|
||||
def __repr__(self):
|
||||
return '<%s%s (%d)>' % (self.enum.name + '.' if self.enum.name else '', self.name, self.value)
|
||||
|
||||
def __bool__(self):
|
||||
return bool(self.value)
|
||||
|
||||
# numeric operations: delegate to int. Do we really need any of those?
|
||||
def __add__(self, other):
|
||||
return self.value.__add__(other.value if isinstance(other, EnumMember) else other)
|
||||
@ -242,7 +245,7 @@ class Enum(dict):
|
||||
name = ''
|
||||
|
||||
def __init__(self, name='', parent=None, **kwds):
|
||||
super(Enum, self).__init__()
|
||||
super().__init__()
|
||||
if isinstance(name, (dict, Enum)) and parent is None:
|
||||
# swap if only parent is given as positional argument
|
||||
name, parent = '', name
|
||||
@ -309,17 +312,17 @@ class Enum(dict):
|
||||
try:
|
||||
return self[key]
|
||||
except KeyError as e:
|
||||
raise AttributeError(str(e))
|
||||
raise AttributeError(str(e)) from None
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
if self.name and key != 'name':
|
||||
raise TypeError('Enum %r can not be changed!' % self.name)
|
||||
super(Enum, self).__setattr__(key, value)
|
||||
super().__setattr__(key, value)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
if self.name:
|
||||
raise TypeError('Enum %r can not be changed!' % self.name)
|
||||
super(Enum, self).__setitem__(key, value)
|
||||
super().__setitem__(key, value)
|
||||
|
||||
def __delitem__(self, key):
|
||||
raise TypeError('Enum %r can not be changed!' % self.name)
|
||||
|
Reference in New Issue
Block a user