diff --git a/conftest.py b/conftest.py index edf83799ef..b2d49697fb 100644 --- a/conftest.py +++ b/conftest.py @@ -467,11 +467,11 @@ def check_array(array, exp_halo, exp_shape, rotate=False): shape = [] for i in array.symbolic_shape: - if i.is_Number or i.is_Symbol: - shape.append(i) - else: - assert i.is_Add + if i.is_Add: + # Ensure it's a plain sympy.Add and not a subclass shape.append(Add(*i.args)) + else: + shape.append(i) if rotate: exp_shape = (sum(exp_halo[0]) + 1,) + tuple(exp_shape[1:]) diff --git a/devito/symbolics/extended_sympy.py b/devito/symbolics/extended_sympy.py index be79fba3a4..46d2c5a43a 100644 --- a/devito/symbolics/extended_sympy.py +++ b/devito/symbolics/extended_sympy.py @@ -634,10 +634,10 @@ def __new__(cls, value, step, **kwargs): value = sympify(value) step = sympify(step) - if step < 1: - raise ValueError("Cannot round up with negative `step`") if not is_integer(step): raise ValueError("`step` must be an integer") + if step < 1: + raise ValueError("Cannot round up with negative `step`") if value.is_number and step.is_number: remainder = value % step diff --git a/devito/types/basic.py b/devito/types/basic.py index babd3eaf76..e2af17bd97 100644 --- a/devito/types/basic.py +++ b/devito/types/basic.py @@ -930,6 +930,8 @@ def __padding_setup_smart__(self, **kwargs): else: from devito.symbolics import RoundUp # noqa v = RoundUp(snp, mmts) - snp + if v.is_Integer: + v = int(v) dpadding = (0, v) padding = [(0, 0)]*self.ndim