diff --git a/hugr-py/src/hugr/passes/_composable_pass.py b/hugr-py/src/hugr/passes/_composable_pass.py index 8da6323463..e452ae5ad8 100644 --- a/hugr-py/src/hugr/passes/_composable_pass.py +++ b/hugr-py/src/hugr/passes/_composable_pass.py @@ -52,3 +52,7 @@ def __call__(self, hugr: Hugr): """Call all of the passes in sequence.""" for comp_pass in self.passes: comp_pass(hugr) + + @property + def name(self) -> str: + return f"Composed({ ', '.join(pass_.name for pass_ in self.passes) })" diff --git a/hugr-py/tests/test_passes.py b/hugr-py/tests/test_passes.py index 45f117350c..26c83c1cc8 100644 --- a/hugr-py/tests/test_passes.py +++ b/hugr-py/tests/test_passes.py @@ -7,20 +7,20 @@ class MyDummyPass(ComposablePass): def __call__(self, hugr: Hugr) -> None: return self(hugr) - def then(self, other: ComposablePass) -> ComposablePass: - return ComposedPass([self, other]) - - @property - def name(self) -> str: - return "Dummy" - dummy = MyDummyPass() - composed = dummy.then(dummy) + composed_dummies = dummy.then(dummy) my_composed_pass = ComposedPass([dummy, dummy]) - assert my_composed_pass.passes == [dummy, dummy] - assert isinstance(my_composed_pass, ComposablePass) - assert isinstance(composed, ComposablePass) - assert dummy.name == "Dummy" + + assert isinstance(composed_dummies, ComposablePass) + assert composed_dummies == my_composed_pass + + assert dummy.name == "MyDummyPass" + assert composed_dummies.name == "Composed(MyDummyPass, MyDummyPass)" + + assert ( + composed_dummies.then(my_composed_pass).name + == "Composed(MyDummyPass, MyDummyPass, MyDummyPass, MyDummyPass)" + )