From 2b3b9d25ab1e2f7c99a0057b918b98ce44c65f94 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Thu, 27 Nov 2014 19:04:41 -0600 Subject: [PATCH] Fix Py3 __bool__ vs __nonzero__ rename --- pymbolic/primitives.py | 20 +++++++++++++++----- pymbolic/rational.py | 8 +++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py index f86eaf2..24be3ec 100644 --- a/pymbolic/primitives.py +++ b/pymbolic/primitives.py @@ -778,7 +778,7 @@ class Sum(_MultiChildExpression): return self return Sum(self.children + (-other,)) - def __nonzero__(self): + def __bool__(self): if len(self.children) == 0: return True elif len(self.children) == 1: @@ -787,6 +787,8 @@ class Sum(_MultiChildExpression): # FIXME: Right semantics? return True + __nonzero__ = __bool__ + mapper_method = intern("map_sum") @@ -819,12 +821,14 @@ class Product(_MultiChildExpression): return self return Product((other,) + self.children) - def __nonzero__(self): + def __bool__(self): for i in self.children: if is_zero(i): return False return True + __nonzero__ = __bool__ + mapper_method = intern("map_product") @@ -846,9 +850,11 @@ class QuotientBase(Expression): def den(self): return self.denominator - def __nonzero__(self): + def __bool__(self): return bool(self.numerator) + __nonzero__ = __bool__ + class Quotient(QuotientBase): """ @@ -1131,12 +1137,14 @@ class Vector(Expression): "(depending on the required semantics)", DeprecationWarning) - def __nonzero__(self): + def __bool__(self): for i in self.children: if is_nonzero(i): return False return True + __nonzero__ = __bool__ + def __len__(self): return len(self.children) @@ -1305,9 +1313,11 @@ class Slice(Expression): def __getinitargs__(self): return (self.children,) - def __nonzero__(self): + def __bool__(self): return True + __nonzero__ = __bool__ + @property def start(self): if len(self.children) > 1: diff --git a/pymbolic/rational.py b/pymbolic/rational.py index 7296881..7ab677f 100644 --- a/pymbolic/rational.py +++ b/pymbolic/rational.py @@ -27,8 +27,6 @@ import pymbolic.primitives as primitives import pymbolic.traits as traits - - class Rational(primitives.Expression): def __init__(self, numerator, denominator=1): d_unit = traits.traits(denominator).get_unit(denominator) @@ -45,9 +43,11 @@ class Rational(primitives.Expression): return self.Denominator denominator = property(_den) - def __nonzero__(self): + def __bool__(self): return bool(self.Numerator) + __nonzero__ = __bool__ + def __neg__(self): return Rational(-self.Numerator, self.Denominator) @@ -132,8 +132,6 @@ class Rational(primitives.Expression): mapper_method = intern("map_rational") - - if __name__ == "__main__": one = Rational(1) print(3 + 1/(1 - 3/(one + 17))) -- GitLab