From 63a5780f29580ca98bdb26dbb44ef596a04e43e0 Mon Sep 17 00:00:00 2001 From: stanbot8 Date: Thu, 23 Jul 2026 13:59:53 -0700 Subject: [PATCH] fix: point table validation to public sanitizer --- src/spatialdata/_core/validation.py | 2 +- tests/models/test_models.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/spatialdata/_core/validation.py b/src/spatialdata/_core/validation.py index ad1e7a91e..b6c2eebfe 100644 --- a/src/spatialdata/_core/validation.py +++ b/src/spatialdata/_core/validation.py @@ -388,7 +388,7 @@ def __exit__( # Exceptions were collected that we want to raise as a combined validation error. if self._collector.errors: raise ValidationError( - title=self._message + "\nTo fix, run `spatialdata.utils.sanitize_table(adata)`.", + title=self._message + "\nTo fix, run `spatialdata.sanitize_table(adata)`.", errors=self._collector.errors, ) return True diff --git a/tests/models/test_models.py b/tests/models/test_models.py index 3b173a15b..33a98a434 100644 --- a/tests/models/test_models.py +++ b/tests/models/test_models.py @@ -26,6 +26,7 @@ from spatial_image import to_spatial_image from xarray import DataArray, DataTree +import spatialdata from spatialdata._core.spatialdata import SpatialData from spatialdata._core.validation import ValidationError from spatialdata._types import ArrayLike @@ -624,6 +625,18 @@ def test_table_model_invalid_names(self, key: str, attr: str, parse: bool): else: TableModel.validate(adata) + def test_table_model_invalid_name_suggests_public_sanitizer(self): + adata = AnnData(np.array([[0]]), uns={"invalid name": {}}) + + with pytest.raises( + ValidationError, + match=r"`spatialdata\.sanitize_table\(adata\)`", + ): + TableModel.validate(adata) + + spatialdata.sanitize_table(adata) + TableModel.validate(adata) + @pytest.mark.parametrize( "keys", [