python: Add __bool__ helpers in addition to __nonzero__
authorAndreas Sandberg <andreas.sandberg@arm.com>
Sat, 26 Jan 2019 10:51:29 +0000 (10:51 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Wed, 20 Feb 2019 18:27:10 +0000 (18:27 +0000)
Python 3 uses __bool__ instead of __nonzero__ when performing a
Boolean comparison.

Change-Id: I85185bbe136ecae67346fa23569e24edd7329222
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15996
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
src/python/m5/params.py
src/python/m5/util/smartdict.py

index 09aaa5af7480e864b39db88845314bd6d766d8ba..b5de6ef6d5d2a3ba77763ec4ab518c1046f92167 100644 (file)
@@ -829,9 +829,12 @@ class Bool(ParamValue):
 
     # implement truth value testing for Bool parameters so that these params
     # evaluate correctly during the python configuration phase
-    def __nonzero__(self):
+    def __bool__(self):
         return bool(self.value)
 
+    # Python 2.7 uses __nonzero__ instead of __bool__
+    __nonzero__ = __bool__
+
     def ini_str(self):
         if self.value:
             return 'true'
index 61e48ddba329ebef753bea3d18cdcb9f7470f827..76b7eb4f885489b34c7a95379e287943da304b80 100644 (file)
@@ -55,8 +55,10 @@ class Variable(str):
         return toLong(str(self))
     def __float__(self):
         return toFloat(str(self))
-    def __nonzero__(self):
+    def __bool__(self):
         return toBool(str(self))
+    # Python 2.7 uses __nonzero__ instead of __bool__
+    __nonzero__ = __bool__
     def convert(self, other):
         t = type(other)
         if t == bool:
@@ -107,9 +109,12 @@ class UndefinedVariable(object):
     """Placeholder class to represent undefined variables.  Will
     generally cause an exception whenever it is used, but evaluates to
     zero for boolean truth testing such as in an if statement"""
-    def __nonzero__(self):
+    def __bool__(self):
         return False
 
+    # Python 2.7 uses __nonzero__ instead of __bool__
+    __nonzero__ = __bool__
+
 class SmartDict(attrdict):
     """Dictionary class that holds strings, but intelligently converts
     those strings to other types depending on their usage"""