From e85b4dbd266e9c920a87caa3ecf7077600334994 Mon Sep 17 00:00:00 2001 From: Chaoming Wang Date: Sat, 24 Oct 2026 23:07:13 +0800 Subject: [PATCH] fix(nn): drop the LeakySpikeReadout redirect; dev-require brainpy>=2.9.0 brainpy.state has no LeakySpikeReadout, so brainstate.nn.LeakySpikeReadout raised AttributeError after its deprecation warning. Add a test that every deprecated name resolves in brainpy.state. --- brainstate/nn/__init__.py | 1 - brainstate/nn/_utils_test.py | 9 +++++++++ requirements-dev.txt | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/brainstate/nn/__init__.py b/brainstate/nn/__init__.py index af2fa800..a933ecb1 100644 --- a/brainstate/nn/__init__.py +++ b/brainstate/nn/__init__.py @@ -358,7 +358,6 @@ 'LIFRef': 'brainpy.state.LIFRef', 'ALIF': 'brainpy.state.ALIF', 'LeakyRateReadout': 'brainpy.state.LeakyRateReadout', - 'LeakySpikeReadout': 'brainpy.state.LeakySpikeReadout', 'STP': 'brainpy.state.STP', 'STD': 'brainpy.state.STD', 'Synapse': 'brainpy.state.Synapse', diff --git a/brainstate/nn/_utils_test.py b/brainstate/nn/_utils_test.py index e48d6a3b..cc3dc672 100644 --- a/brainstate/nn/_utils_test.py +++ b/brainstate/nn/_utils_test.py @@ -555,6 +555,15 @@ def test_deprecated_name_forwards_to_brainpy(self): self.assertIs(obj, brainpy.state.IF) self.assertTrue(any(issubclass(w.category, DeprecationWarning) for w in caught)) + def test_every_deprecated_name_resolves_in_brainpy(self): + """Every ``_DEPRECATED_NAMES`` target exists in ``brainpy.state``.""" + brainpy = pytest.importorskip("brainpy", exc_type=ImportError) + from brainstate.nn import _DEPRECATED_NAMES + for name, target in _DEPRECATED_NAMES.items(): + with self.subTest(name=name): + self.assertEqual(target, f'brainpy.state.{name}') + self.assertTrue(hasattr(brainpy.state, name)) + def test_unknown_attribute_raises(self): """An unrecognized attribute raises ``AttributeError``.""" with self.assertRaises(AttributeError): diff --git a/requirements-dev.txt b/requirements-dev.txt index ba0697f9..84bc20ab 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,7 +5,7 @@ numba braintools>=0.3.0 braincell matplotlib -brainpy-state +brainpy>=2.9.0 # test requirements pytest