diff --git a/pymbolic/mapper/constant_folder.py b/pymbolic/mapper/constant_folder.py index d682369ded386317b69d24d2566418a110ebcba2..b642fa63d115ff5c6eb097351cca7757231a0789 100644 --- a/pymbolic/mapper/constant_folder.py +++ b/pymbolic/mapper/constant_folder.py @@ -22,13 +22,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +from six.moves import reduce from pymbolic.mapper import \ IdentityMapper, \ CSECachingMapperMixin - - class ConstantFoldingMapperBase(object): def is_constant(self, expr): from pymbolic.mapper.dependency import DependencyMapper @@ -75,7 +74,6 @@ class ConstantFoldingMapperBase(object): return self.fold(expr, Sum, operator.add, flattened_sum) - class CommutativeConstantFoldingMapperBase(ConstantFoldingMapperBase): def map_product(self, expr): from pymbolic.primitives import Product, flattened_product @@ -84,16 +82,15 @@ class CommutativeConstantFoldingMapperBase(ConstantFoldingMapperBase): return self.fold(expr, Product, operator.mul, flattened_product) - - class ConstantFoldingMapper( - CSECachingMapperMixin, - ConstantFoldingMapperBase, + CSECachingMapperMixin, + ConstantFoldingMapperBase, IdentityMapper): map_common_subexpression_uncached = \ IdentityMapper.map_common_subexpression + class CommutativeConstantFoldingMapper( CSECachingMapperMixin, CommutativeConstantFoldingMapperBase,