diff --git a/monai/transforms/compose.py b/monai/transforms/compose.py index 0e0093e1bc..33182ab8cf 100644 --- a/monai/transforms/compose.py +++ b/monai/transforms/compose.py @@ -235,6 +235,13 @@ def __init__( ) -> None: if transforms is None: transforms = [] + + if not isinstance(map_items, bool): + raise ValueError( + f"Argument 'map_items' should be boolean. Got {type(map_items)}." + "Check brackets when passing a sequence of callables." + ) + self.transforms = ensure_tuple(transforms) self.map_items = map_items self.unpack_items = unpack_items diff --git a/tests/test_compose.py b/tests/test_compose.py index 66a994cbfd..af7202c737 100644 --- a/tests/test_compose.py +++ b/tests/test_compose.py @@ -641,5 +641,17 @@ def test_compose_execute_equivalence_with_flags(self, flags, data, pipeline): self.assertTrue(expected, actual) +class TestComposeCallableInput(unittest.TestCase): + def test_value_error_when_not_sequence(self): + data = torch.tensor(np.random.randn(1, 5, 5)) + + xform = mt.Compose([mt.Flip(0), mt.Flip(0)]) + res = xform(data) + np.testing.assert_allclose(data, res, atol=1e-3) + + with self.assertRaises(ValueError): + mt.Compose(mt.Flip(0), mt.Flip(0))(data) + + if __name__ == "__main__": unittest.main()