From 5516488d4ee3d277632ebbab6c93d45c3802c62e Mon Sep 17 00:00:00 2001 From: Vivien Maisonneuve Date: Wed, 28 May 2014 18:30:20 +0200 Subject: [PATCH 1/1] Better implementation of _polymorphic_operator --- pypol/linear.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pypol/linear.py b/pypol/linear.py index fabf2a2..a5f55fa 100644 --- a/pypol/linear.py +++ b/pypol/linear.py @@ -26,13 +26,14 @@ def _polymorphic_method(func): return wrapper def _polymorphic_operator(func): + # A polymorphic operator should call a polymorphic method, hence we just + # have to test the left operand. @functools.wraps(func) def wrapper(a, b): if isinstance(a, numbers.Rational): a = constant(a) - if isinstance(b, numbers.Rational): - b = constant(b) - if isinstance(a, Expression) and isinstance(b, Expression): + return func(a, b) + elif isinstance(a, Expression): return func(a, b) raise TypeError('arguments must be linear expressions') return wrapper -- 2.20.1