From 36bb4236e9c761902edb6ad25235927aeff88737 Mon Sep 17 00:00:00 2001 From: Jackson Ferguson Date: Fri, 30 Jan 2026 20:31:20 -0800 Subject: [PATCH 1/2] feat(sysaudio): add robust signal I/O and metadata handling - Implement `save_signal` with automatic timestamping and compressed .npz storage. - Add `load_signal` with legacy key support (signal vs data) to handle older captures. - Create `scan_metadata` utility to aggregate recording attributes into a Pandas DataFrame. - Add CLI-based file selection (`select_file_cli`) for interactive workflows. --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e116b6..23eda6c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,9 @@ jobs: uv run ruff check . uv run ruff format --check . + - name: Type check with mypy + run: uv run mypy oscilloscope-rp2040 + - name: Run Tests run: uv run pytest From 49a281f9fe22f95e6e7acff3d1d327ded30c9d5b Mon Sep 17 00:00:00 2001 From: Jackson Ferguson Date: Fri, 30 Jan 2026 20:34:37 -0800 Subject: [PATCH 2/2] fix(sysaudio): allow Path objects in load_signal - Update `load_signal` type signature to accept `pathlib.Path` in addition to `str`. - Resolve mypy errors when loading files defined via pathlib in analysis notebooks. --- oscilloscope-rp2040/sysaudio/io.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/oscilloscope-rp2040/sysaudio/io.py b/oscilloscope-rp2040/sysaudio/io.py index 245781a..623b8c2 100644 --- a/oscilloscope-rp2040/sysaudio/io.py +++ b/oscilloscope-rp2040/sysaudio/io.py @@ -2,7 +2,8 @@ import os import sys from datetime import datetime -from typing import Any, Optional, Tuple +from pathlib import Path +from typing import Any, Optional, Tuple, Union import numpy as np import pandas as pd @@ -63,7 +64,7 @@ def save_signal( return path -def load_signal(filepath: str) -> Tuple[np.ndarray, float]: +def load_signal(filepath: Union[str, Path]) -> Tuple[np.ndarray, float]: """ Robust loader for .npz files.