Fixed a bug in the attr lockfunc to make it properly handle comparison for Nonetypes and bools as well as other values. Also fixed a malformed call for a default value. Resolves #753.
This commit is contained in:
parent
8e134af019
commit
11750be556
1 changed files with 9 additions and 9 deletions
|
|
@ -277,12 +277,12 @@ def pid(accessing_obj, accessed_obj, *args, **kwargs):
|
|||
|
||||
|
||||
# this is more efficient than multiple if ... elif statments
|
||||
CF_MAPPING = {'eq': lambda val1, val2: val1 == val2 or int(val1) == int(val2),
|
||||
'gt': lambda val1, val2: int(val1) > int(val2),
|
||||
'lt': lambda val1, val2: int(val1) < int(val2),
|
||||
'ge': lambda val1, val2: int(val1) >= int(val2),
|
||||
'le': lambda val1, val2: int(val1) <= int(val2),
|
||||
'ne': lambda val1, val2: int(val1) != int(val2),
|
||||
CF_MAPPING = {'eq': lambda val1, val2: val1 == val2 or str(val1) == str(val2) or float(val1) == float(val2),
|
||||
'gt': lambda val1, val2: float(val1) > float(val2),
|
||||
'lt': lambda val1, val2: float(val1) < float(val2),
|
||||
'ge': lambda val1, val2: float(val1) >= float(val2),
|
||||
'le': lambda val1, val2: float(val1) <= float(val2),
|
||||
'ne': lambda val1, val2: float(val1) != float(val2),
|
||||
'default': lambda val1, val2: False}
|
||||
|
||||
|
||||
|
|
@ -322,10 +322,10 @@ def attr(accessing_obj, accessed_obj, *args, **kwargs):
|
|||
def valcompare(val1, val2, typ='eq'):
|
||||
"compare based on type"
|
||||
try:
|
||||
return CF_MAPPING.get(typ, 'default')(val1, val2)
|
||||
return CF_MAPPING.get(typ, CF_MAPPING['default'])(val1, val2)
|
||||
except Exception:
|
||||
# this might happen if we try to compare two things
|
||||
# that cannot be compared
|
||||
# this might happen if we try to compare two things that
|
||||
# cannot be compared
|
||||
return False
|
||||
|
||||
if hasattr(accessing_obj, "obj"):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue