diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 07b201d..5dc19d9 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -9,6 +9,12 @@ on: - dev workflow_dispatch: +# A new push to a PR supersedes the run already in flight for that ref, so a +# wedged job cannot sit on a runner while its replacement queues behind it. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build: strategy: @@ -17,6 +23,7 @@ jobs: os: - "ubuntu-latest" runs-on: ${{matrix.os}} + timeout-minutes: 30 steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 489ec2a..c468dd6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,13 +8,13 @@ readme = "README.md" requires-python = ">=3.10" dynamic = ["version"] dependencies = [ - # 3.10.0b2 for CoordinateAxis.fingerprint and AxisArray.chunk_dim, which + # 3.10.0b3 for CoordinateAxis.fingerprint and AxisArray.stream_dim, which # ezmsg-baseproc's default state hash reads. Pinned directly rather than # left to the transitive requirement: uv only enables pre-releases for a # package named with a pre-release marker in *this* file. - "ezmsg>=3.10.0b2", + "ezmsg>=3.10.0b3", "ezmsg-baseproc>=1.13.0", - "ezmsg-sigproc>=3.8.1", # BinnedAggregate must resolve chunk_dim from axis=None + "ezmsg-sigproc>=3.8.1", # BinnedAggregate must resolve stream_dim from axis=None "sparse>=0.17.0", "numpy>=2.2.6", "numba>=0.65.1", diff --git a/src/ezmsg/event/binned.py b/src/ezmsg/event/binned.py index 451fc2c..30c0717 100644 --- a/src/ezmsg/event/binned.py +++ b/src/ezmsg/event/binned.py @@ -46,7 +46,7 @@ class BinnedEventAggregatorSettings(ez.Settings): Scheduled for removal in 2.0. Binning carries an open partial bin across message boundaries, which is only meaningful along the dimension messages accumulate along; that dimension now comes from - :attr:`~ezmsg.util.messages.axisarray.AxisArray.chunk_dim`.""" + :attr:`~ezmsg.util.messages.axisarray.AxisArray.stream_dim`.""" def __post_init__(self) -> None: warn_axis_deprecated(self, package="ezmsg-event", removal="2.0") diff --git a/src/ezmsg/event/peak.py b/src/ezmsg/event/peak.py index 941aaf8..38cd85b 100644 --- a/src/ezmsg/event/peak.py +++ b/src/ezmsg/event/peak.py @@ -130,7 +130,7 @@ def _reset_state(self, message: AxisArray) -> None: # This module works on "time" throughout (see get_axis_idx calls # below), so the scaler has to as well -- they share the state that # normalises the samples being thresholded. Suppressed rather than - # dropped for that reason: letting the scaler follow chunk_dim while + # dropped for that reason: letting the scaler follow stream_dim while # everything around it used "time" would be worse than either. with suppress_axis_deprecation(): self._state.scaler = AdaptiveStandardScalerTransformer( diff --git a/tests/test_binned.py b/tests/test_binned.py index 4f7ced7..f4599f5 100644 --- a/tests/test_binned.py +++ b/tests/test_binned.py @@ -226,7 +226,7 @@ def test_fractional_false_sample_locked(fs: float): class TestTheAxisSettingIsDeprecated: """``axis`` is going away in 2.0: binning carries an open partial bin across message boundaries, which is only meaningful along the dimension messages - accumulate along. That dimension comes from ``AxisArray.chunk_dim``.""" + accumulate along. That dimension comes from ``AxisArray.stream_dim``.""" @staticmethod def _msg(n=64, fs=200.0): @@ -237,7 +237,7 @@ def _msg(n=64, fs=200.0): dims=["time", "ch"], axes={"time": AxisArray.TimeAxis(fs=fs)}, key="dev", - chunk_dim="time", + stream_dim="time", ) @staticmethod diff --git a/tests/test_state_reset_semantics.py b/tests/test_state_reset_semantics.py index a6ce106..78b6a9b 100644 --- a/tests/test_state_reset_semantics.py +++ b/tests/test_state_reset_semantics.py @@ -50,7 +50,7 @@ def dense_msg(labels, n_time=600, fs=FS, key="dev", seed=0): "ch": CoordinateAxis(data=np.array(labels), dims=["ch"]), }, key=key, - chunk_dim="time", + stream_dim="time", ) @@ -67,7 +67,7 @@ def sparse_msg(labels, n_time=600, fs=FS, key="dev", dtype=bool): "ch": CoordinateAxis(data=np.array(labels), dims=["ch"]), }, key=key, - chunk_dim="time", + stream_dim="time", ) @@ -83,7 +83,7 @@ def at_sample(labels, sample_ix, n_time=600, fs=FS, key="dev"): "ch": CoordinateAxis(data=np.array(labels), dims=["ch"]), }, key=key, - chunk_dim="time", + stream_dim="time", ) @@ -150,7 +150,7 @@ def test_refractory_elapsed_counters_do_not_carry_over(self): class TestWhatMustNotResetStillDoesNot: def test_chunk_size_jitter_is_ignored(self): - """The chunk dimension's length is whatever arrived; rebuilding on it + """The stream dimension's length is whatever arrived; rebuilding on it would throw away the trailing buffer on every irregular chunk.""" proc = ThresholdCrossingTransformer(ThresholdSettings(threshold=-1.0)) proc(dense_msg(ARM_A, n_time=600))