From a4ffe2f2f17185a1f608f3ed5257eaa2c8826ed5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 23:28:28 +0000 Subject: [PATCH] Fix dev-deps CI failures: detect pynwb num_samples support via __docval__ pynwb dev (post-3.1.3) added num_samples as a required parameter for ImageSeries when format='external' and rate-based timing is used. inspect.signature() cannot detect this because hdmf's @docval decorator hides parameters; use __docval__['args'] instead. Co-Authored-By: Claude --- dandi/tests/fixtures.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dandi/tests/fixtures.py b/dandi/tests/fixtures.py index fb3441ad6..4c4bb11a8 100644 --- a/dandi/tests/fixtures.py +++ b/dandi/tests/fixtures.py @@ -42,6 +42,11 @@ lgr = get_logger() +# TODO: simply always inject this when minimal supported pynwb is above 3.1.3 +_imgseries_takes_num_samples = any( + arg["name"] == "num_samples" + for arg in getattr(ImageSeries.__init__, "__docval__", {}).get("args", []) +) BIDS_TESTDATA_SELECTION = [ "asl003", @@ -812,7 +817,7 @@ def _create_nwb_files(video_list: list[tuple[Path, Path]]) -> Path: devices=[device], ) - image_series = ImageSeries( + imgseries_kwargs: dict[str, Any] = dict( name=f"MouseWhiskers{i}", format="external", external_file=[str(vid_1), str(vid_2)], @@ -820,6 +825,9 @@ def _create_nwb_files(video_list: list[tuple[Path, Path]]) -> Path: starting_time=0.0, rate=150.0, ) + if _imgseries_takes_num_samples: + imgseries_kwargs["num_samples"] = 4 + image_series = ImageSeries(**imgseries_kwargs) nwbfile.add_acquisition(image_series) nwbfile_path = base_nwb_path / f"{name}.nwb"