From c0481e63b365c81434d582a388b7cb5b4897cda6 Mon Sep 17 00:00:00 2001 From: Patrick Wells Date: Wed, 1 Oct 2025 13:50:14 -0500 Subject: [PATCH] Fail when sort on unknown column --- changes/+5b09cb2b.bugfix.rst | 1 + src/opencosmo/dataset/dataset.py | 2 +- src/opencosmo/dataset/state.py | 2 ++ test/test_dataset.py | 6 ++++++ 4 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 changes/+5b09cb2b.bugfix.rst diff --git a/changes/+5b09cb2b.bugfix.rst b/changes/+5b09cb2b.bugfix.rst new file mode 100644 index 00000000..086fe2c4 --- /dev/null +++ b/changes/+5b09cb2b.bugfix.rst @@ -0,0 +1 @@ +Attempting to sort by a column that is not in the dataset now errors correctly. diff --git a/src/opencosmo/dataset/dataset.py b/src/opencosmo/dataset/dataset.py index e4e7b337..0d5b58c4 100644 --- a/src/opencosmo/dataset/dataset.py +++ b/src/opencosmo/dataset/dataset.py @@ -601,7 +601,7 @@ def sort_by(self, column: str, invert: bool = False) -> Dataset: dataset = oc.open("haloproperties.hdf5") dataset = dataset - .sort_by("fof_halo_mass") + .sort_by("fof_halo_mass", invert=True) .take(100, at="start") Parameters diff --git a/src/opencosmo/dataset/state.py b/src/opencosmo/dataset/state.py index f8bdb67e..4c7745e0 100644 --- a/src/opencosmo/dataset/state.py +++ b/src/opencosmo/dataset/state.py @@ -352,6 +352,8 @@ def select(self, columns: str | Iterable[str]): ) def sort_by(self, column_name: str, handler: "DatasetHandler", invert: bool): + if column_name not in self.columns: + raise ValueError(f"This dataset has no column {column_name}") return DatasetState( self.__unit_handler, self.__index, diff --git a/test/test_dataset.py b/test/test_dataset.py index 4ca09b0b..0110b8b3 100644 --- a/test/test_dataset.py +++ b/test/test_dataset.py @@ -186,6 +186,12 @@ def test_sort_by_derived(input_path): assert np.all(xoff["fof_halo_tag"][idxs][:n] == toolkit_sorted_xoff["fof_halo_tag"]) +def test_sort_by_unknown(input_path): + dataset = oc.open(input_path) + with pytest.raises(ValueError): + dataset.sort_by("random_column") + + def test_drop(input_path): with oc.open(input_path) as ds: data = ds.data