From 75ed93a1c4cece49fb3ae3889e9919545e24c348 Mon Sep 17 00:00:00 2001 From: dylan Date: Sun, 20 Sep 2026 22:25:46 -0500 Subject: [PATCH 1/2] Use current dataset labels when reading cached samples --- src/gasbench/dataset/download/cache_io.py | 2 ++ src/gasbench/dataset/iterator.py | 2 ++ tests/unit/test_cached_sample_labels.py | 40 +++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 tests/unit/test_cached_sample_labels.py diff --git a/src/gasbench/dataset/download/cache_io.py b/src/gasbench/dataset/download/cache_io.py index 148d215..81cb3dc 100644 --- a/src/gasbench/dataset/download/cache_io.py +++ b/src/gasbench/dataset/download/cache_io.py @@ -61,6 +61,8 @@ def _load_dataset_from_cache(dataset, cache_dir: str = "/.cache/gasbench"): for filename in sample_files: try: metadata = sample_metadata.get(filename, {}) + # The current registry owns labels; caches may predate a taxonomy change. + metadata = {**metadata, "media_type": dataset.media_type} filepath = os.path.join(samples_dir, filename) if dataset.modality == "image": diff --git a/src/gasbench/dataset/iterator.py b/src/gasbench/dataset/iterator.py index 3f7b12f..3cd9658 100644 --- a/src/gasbench/dataset/iterator.py +++ b/src/gasbench/dataset/iterator.py @@ -618,6 +618,8 @@ def extract_index(filename): for filename in sample_items: file_path = os.path.join(samples_dir, filename) metadata = metadata_map.get(filename, {}) + # The current registry owns labels; caches may predate a taxonomy change. + metadata = {**metadata, "media_type": self.config.media_type} if self.config.modality == "image": try: diff --git a/tests/unit/test_cached_sample_labels.py b/tests/unit/test_cached_sample_labels.py new file mode 100644 index 0000000..5182019 --- /dev/null +++ b/tests/unit/test_cached_sample_labels.py @@ -0,0 +1,40 @@ +import json + +import pytest + +from gasbench.constants import media_type_to_label +from gasbench.dataset.config import BenchmarkDatasetConfig +from gasbench.dataset.download.cache_io import _load_dataset_from_cache +from gasbench.dataset.iterator import DatasetIterator + + +@pytest.mark.parametrize("loader", ["iterator", "download"]) +@pytest.mark.parametrize("payload", ["bytes", "frames", "lazy"]) +def test_current_video_label_overrides_stale_cache(tmp_path, loader, payload): + config = BenchmarkDatasetConfig( + name="example", path="owner/repo", modality="video", media_type="real", + source_format="mp4", media_per_archive=-1, archives_per_dataset=-1, + ) + directory = tmp_path / "datasets" / config.name + samples = directory / "samples" + samples.mkdir(parents=True) + filename = "clip" if payload == "frames" else "clip.mp4" + if payload == "frames": + (samples / filename).mkdir() + (samples / filename / "frame.jpg").write_bytes(b"frame") + else: + (samples / filename).write_bytes(b"video") + (directory / "sample_metadata.json").write_text(json.dumps({filename: { + "media_type": "rendered", "source_file": "original.mp4", + }})) + (directory / "dataset_info.json").write_text("{}") + if loader == "iterator": + iterator = DatasetIterator(config, cache_dir=str(tmp_path), download=False, + lazy_read=payload == "lazy") + result = list(iterator) + else: + result = list(_load_dataset_from_cache(config, str(tmp_path))) + assert len(result) == 1 + assert media_type_to_label(result[0]["media_type"], "video") == 0 + assert result[0]["source_file"] == "original.mp4" + assert json.loads((directory / "sample_metadata.json").read_text())[filename]["media_type"] == "rendered" From 431ab596e45c5c3bb3601be993d48cf3cfa292f7 Mon Sep 17 00:00:00 2001 From: dylan Date: Mon, 21 Sep 2026 10:58:18 -0500 Subject: [PATCH 2/2] Bump patch version to 0.9.10 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e64b5d6..7ba02d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "gasbench" -version = "0.9.9" +version = "0.9.10" description = "GASBench - ML model benchmark evaluation package" readme = "README.md" requires-python = ">=3.10"