Skip to content

Commit 3fcfb5d

Browse files
authored
1792 quality control validator has a bug at line 307 where it fails to check metrics before doing metrics0 (#1793)
* fix: validator would trigger on empty metrics * fix: do this upfront by bypassing the validator, adds a test
1 parent 1f0a7d9 commit 3fcfb5d

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

src/aind_data_schema/core/quality_control.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ def fix_default_grouping_list(cls, value: dict) -> dict:
301301
This function is for backwards compatibility with v2.2.X where default_grouping was stored as a list of strings.
302302
Remove this function in aind-data-schema v3.X
303303
"""
304-
if "default_grouping" not in value:
304+
if "default_grouping" not in value or "metrics" not in value or len(value["metrics"]) == 0:
305305
return value
306306

307307
if all(isinstance(item, str) for item in value["default_grouping"]):

tests/test_quality_control.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,18 @@ def test_new_format_default_grouping_mixed(self):
869869
# Tags should remain as dict
870870
self.assertEqual(qc_new.metrics[0].tags, {"group": "test_group", "probe": "probeA", "shank": "shank1"})
871871

872+
def test_empty_metrics_does_not_convert_default_grouping(self):
873+
"""Test that fix_default_grouping_list does not alter default_grouping when metrics is empty"""
874+
875+
empty_metrics_dict = {
876+
"metrics": [],
877+
"default_grouping": ["group1", "group2"],
878+
}
879+
880+
qc = QualityControl.model_validate(empty_metrics_dict)
881+
882+
self.assertEqual(qc.default_grouping, ["group1", "group2"])
883+
872884

873885
if __name__ == "__main__":
874886
unittest.main()

0 commit comments

Comments
 (0)