diff --git a/conftest.py b/conftest.py index 5a1bc481b9..03193c4212 100644 --- a/conftest.py +++ b/conftest.py @@ -287,6 +287,21 @@ def pytest_runtest_makereport(item, call): result.outcome = 'passed' +def pytest_make_parametrize_id(config, val, argname): + """ + Prevents pytest to make obsucre parameter names (param0, param1, ...) + and default to str(val) instead for better log readability. + """ + # First see if it has a name + if hasattr(val, '__name__'): + return val.__name__ + # Then try str(val) + try: + return str(val) + except Exception: + return None # Fall back to default behavior + + # A list of optimization options/pipelines to be used in testing # regarding spatial and/or temporal blocking. opts_tiling = ['advanced', diff --git a/devito/finite_differences/derivative.py b/devito/finite_differences/derivative.py index 782132c4d8..e2ad8229c7 100644 --- a/devito/finite_differences/derivative.py +++ b/devito/finite_differences/derivative.py @@ -162,7 +162,8 @@ def _validate_expr(expr): try: expr = diffify(expr) except Exception as e: - raise ValueError("`expr` must be a `Differentiable` type object") from e + d = type(expr) + raise ValueError(f"`expr` must be a `Differentiable` not {d}") from e return expr @staticmethod diff --git a/devito/passes/iet/engine.py b/devito/passes/iet/engine.py index e68a2101cf..519d9e4c25 100644 --- a/devito/passes/iet/engine.py +++ b/devito/passes/iet/engine.py @@ -223,6 +223,7 @@ def create_call_graph(root, efuncs): """ dag = DAG(nodes=[root]) queue = [root] + defuncs = {root} while queue: caller = queue.pop(0) @@ -230,6 +231,7 @@ def create_call_graph(root, efuncs): for callee in filter_ordered([i.name for i in callees]): if callee in efuncs: # Exclude foreign Calls, e.g., MPI calls + defuncs.add(callee) try: dag.add_node(callee) queue.append(callee) @@ -239,7 +241,7 @@ def create_call_graph(root, efuncs): dag.add_edge(callee, caller) # Sanity check - assert dag.size == len(efuncs) + assert dag.size == len(defuncs) return dag