diff --git a/CHANGELOG.md b/CHANGELOG.md index 90f1179..937e205 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,17 @@ together from PyDevices/audiocomponents, and the history from v0.4.2rc1 back covers both packages. Releases up to and including audiodsp's v0.1.1 shipped both packages from audiodsp, and are recorded in its changelog. +## Unreleased + +### Removed + +- `audioeffects.rebuilt`. The delay, reverb, pitch and rack classes moved to + their own modules directly under `audioeffects` in 0.5.0, and the old + `audioeffects.rebuilt.` import paths were kept working until now. + Import the class from `audioeffects` (`from audioeffects import Reverb`) or + from its module (`audioeffects.reverb`). The classes and their output are + unchanged. + ## v0.5.1.dev0 (2026-11-02) - panel_view: drop unused imports diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5cb513e..f3d29b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ refer to that archived repository, and they still resolve at | Path | What's there | |---|---| -| [`lib/audioeffects/`](lib/audioeffects/) | One module per effect, plus `_component.py` (the base every effect is built on) and `rebuilt/`, which only keeps the old `audioeffects.rebuilt.` import paths working. | +| [`lib/audioeffects/`](lib/audioeffects/) | One module per effect, plus `_component.py` (the base every effect is built on). | | [`tools/validate_api.py`](tools/validate_api.py), [`tools/validate_metadata.py`](tools/validate_metadata.py) | The validators that enforce the runtime API and the metadata manifest. | | [`tools/effect_probes/`](tools/effect_probes/) | The measurement kit's test signals and their manifest. The audio files are generated, never committed. | | `tools/` | Rendering and measurement tools besides. | diff --git a/docs/conf.py b/docs/conf.py index 23875cf..d049743 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,8 +19,6 @@ "audioroute", "audiosampler", "audioshaper", "audioverb", "synthio", ], - # `rebuilt` only keeps old import paths alive. - api_skip=["rebuilt"], version_file="../VERSION", ) diff --git a/lib/audioeffects/pyproject.toml b/lib/audioeffects/pyproject.toml index c271783..3bcd35f 100644 --- a/lib/audioeffects/pyproject.toml +++ b/lib/audioeffects/pyproject.toml @@ -33,10 +33,10 @@ Issues = "https://github.com/PyDevices/audioeffects/issues" [tool.setuptools] # Every package directory under lib/audioeffects, listed by hand: the # package-dir mapping below ("." is the package) rules out packages.find, -# which would discover rebuilt/ as a top-level "rebuilt". v0.3.0 shipped -# without audioeffects.rebuilt and failed on import; tools/wheel_gate.py -# (the "Wheel" job in tests.yml) fails if a directory is left off again. -packages = ["audioeffects", "audioeffects.rebuilt"] +# which would discover any subpackage as a top-level package. v0.3.0 shipped +# without a subpackage and failed on import; tools/wheel_gate.py (the "Wheel" +# job in tests.yml) fails if a directory is left off again. +packages = ["audioeffects"] [tool.setuptools.package-dir] audioeffects = "." diff --git a/lib/audioeffects/rebuilt/__init__.py b/lib/audioeffects/rebuilt/__init__.py deleted file mode 100644 index d50026c..0000000 --- a/lib/audioeffects/rebuilt/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -"""Old import paths, kept working. - -The delay, reverb, pitch and rack classes used to live here. Each now has -its own module directly under `audioeffects` (`audioeffects.reverb`, -`audioeffects.digitaldelay`, ...), and `from audioeffects import Reverb` -is the way to reach one. `audioeffects.rebuilt.` still imports the -same class from its new home, so code written against the old path keeps -running. Nothing in the package imports this one. -""" diff --git a/lib/audioeffects/rebuilt/airspace.py b/lib/audioeffects/rebuilt/airspace.py deleted file mode 100644 index d5a353e..0000000 --- a/lib/audioeffects/rebuilt/airspace.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.airspace`; this path keeps old imports working.""" - -from ..airspace import * # noqa: F401,F403 -from ..airspace import AirSpace # noqa: F401 diff --git a/lib/audioeffects/rebuilt/analogdelay.py b/lib/audioeffects/rebuilt/analogdelay.py deleted file mode 100644 index 915fa45..0000000 --- a/lib/audioeffects/rebuilt/analogdelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.analogdelay`; this path keeps old imports working.""" - -from ..analogdelay import * # noqa: F401,F403 -from ..analogdelay import AnalogDelay # noqa: F401 diff --git a/lib/audioeffects/rebuilt/convolutionreverb.py b/lib/audioeffects/rebuilt/convolutionreverb.py deleted file mode 100644 index 35677cf..0000000 --- a/lib/audioeffects/rebuilt/convolutionreverb.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.convolutionreverb`; this path keeps old imports working.""" - -from ..convolutionreverb import * # noqa: F401,F403 -from ..convolutionreverb import ConvolutionReverb # noqa: F401 diff --git a/lib/audioeffects/rebuilt/digitaldelay.py b/lib/audioeffects/rebuilt/digitaldelay.py deleted file mode 100644 index 3de8415..0000000 --- a/lib/audioeffects/rebuilt/digitaldelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.digitaldelay`; this path keeps old imports working.""" - -from ..digitaldelay import * # noqa: F401,F403 -from ..digitaldelay import DigitalDelay # noqa: F401 diff --git a/lib/audioeffects/rebuilt/harmonizer.py b/lib/audioeffects/rebuilt/harmonizer.py deleted file mode 100644 index 4c8a6d4..0000000 --- a/lib/audioeffects/rebuilt/harmonizer.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.harmonizer`; this path keeps old imports working.""" - -from ..harmonizer import * # noqa: F401,F403 -from ..harmonizer import Harmonizer # noqa: F401 diff --git a/lib/audioeffects/rebuilt/multitapdelay.py b/lib/audioeffects/rebuilt/multitapdelay.py deleted file mode 100644 index 86130e2..0000000 --- a/lib/audioeffects/rebuilt/multitapdelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.multitapdelay`; this path keeps old imports working.""" - -from ..multitapdelay import * # noqa: F401,F403 -from ..multitapdelay import MultiTapDelay # noqa: F401 diff --git a/lib/audioeffects/rebuilt/octaver.py b/lib/audioeffects/rebuilt/octaver.py deleted file mode 100644 index 5037e69..0000000 --- a/lib/audioeffects/rebuilt/octaver.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.octaver`; this path keeps old imports working.""" - -from ..octaver import * # noqa: F401,F403 -from ..octaver import Octaver # noqa: F401 diff --git a/lib/audioeffects/rebuilt/pingpongdelay.py b/lib/audioeffects/rebuilt/pingpongdelay.py deleted file mode 100644 index af18e2c..0000000 --- a/lib/audioeffects/rebuilt/pingpongdelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.pingpongdelay`; this path keeps old imports working.""" - -from ..pingpongdelay import * # noqa: F401,F403 -from ..pingpongdelay import PingPongDelay # noqa: F401 diff --git a/lib/audioeffects/rebuilt/pitchshifter.py b/lib/audioeffects/rebuilt/pitchshifter.py deleted file mode 100644 index 83fd901..0000000 --- a/lib/audioeffects/rebuilt/pitchshifter.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.pitchshifter`; this path keeps old imports working.""" - -from ..pitchshifter import * # noqa: F401,F403 -from ..pitchshifter import PitchShifter # noqa: F401 diff --git a/lib/audioeffects/rebuilt/rack.py b/lib/audioeffects/rebuilt/rack.py deleted file mode 100644 index a758b97..0000000 --- a/lib/audioeffects/rebuilt/rack.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.rack`; this path keeps old imports working.""" - -from ..rack import * # noqa: F401,F403 -from ..rack import Rack # noqa: F401 diff --git a/lib/audioeffects/rebuilt/reverb.py b/lib/audioeffects/rebuilt/reverb.py deleted file mode 100644 index 9d957cd..0000000 --- a/lib/audioeffects/rebuilt/reverb.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.reverb`; this path keeps old imports working.""" - -from ..reverb import * # noqa: F401,F403 -from ..reverb import Reverb # noqa: F401 diff --git a/lib/audioeffects/rebuilt/shimmerhall.py b/lib/audioeffects/rebuilt/shimmerhall.py deleted file mode 100644 index aa467bd..0000000 --- a/lib/audioeffects/rebuilt/shimmerhall.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.shimmerhall`; this path keeps old imports working.""" - -from ..shimmerhall import * # noqa: F401,F403 -from ..shimmerhall import ShimmerHall # noqa: F401 diff --git a/lib/audioeffects/rebuilt/slapbackdelay.py b/lib/audioeffects/rebuilt/slapbackdelay.py deleted file mode 100644 index 5297225..0000000 --- a/lib/audioeffects/rebuilt/slapbackdelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.slapbackdelay`; this path keeps old imports working.""" - -from ..slapbackdelay import * # noqa: F401,F403 -from ..slapbackdelay import SlapbackDelay # noqa: F401 diff --git a/lib/audioeffects/rebuilt/stereowidener.py b/lib/audioeffects/rebuilt/stereowidener.py deleted file mode 100644 index b337f6a..0000000 --- a/lib/audioeffects/rebuilt/stereowidener.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.stereowidener`; this path keeps old imports working.""" - -from ..stereowidener import * # noqa: F401,F403 -from ..stereowidener import StereoWidener # noqa: F401 diff --git a/lib/audioeffects/rebuilt/tapedelay.py b/lib/audioeffects/rebuilt/tapedelay.py deleted file mode 100644 index 9f1f613..0000000 --- a/lib/audioeffects/rebuilt/tapedelay.py +++ /dev/null @@ -1,4 +0,0 @@ -"""Moved to `audioeffects.tapedelay`; this path keeps old imports working.""" - -from ..tapedelay import * # noqa: F401,F403 -from ..tapedelay import TapeDelay # noqa: F401 diff --git a/tools/wheel_gate.py b/tools/wheel_gate.py index 6d1ca9c..8581298 100644 --- a/tools/wheel_gate.py +++ b/tools/wheel_gate.py @@ -20,7 +20,7 @@ commit from git, as tests.yml does) and the wheel with --no-deps, and -- from outside the repo, with `python -I` so lib/ cannot leak in -- imports the package, renders one effect by catalogue name, and loads every effect -class and the old `audioeffects.rebuilt` import path. +class, and checks the removed `audioeffects.rebuilt` path stays gone. Needs `build` in the interpreter that runs it. Exit status is non-zero on any failure, and every failure is printed. @@ -78,11 +78,13 @@ def loudest(sample, blocks=8): sys.exit("effect classes did not load: %r" % (missing or names,)) print("effect classes load:", len(names)) -# The old import path still reaches the same class. -from audioeffects.rebuilt.reverb import Reverb -if Reverb is not audioeffects.Reverb: - sys.exit("audioeffects.rebuilt.reverb does not re-export Reverb") -print("audioeffects.rebuilt still imports") +# The old `audioeffects.rebuilt` import path is gone. +try: + __import__("audioeffects.rebuilt.reverb") +except ImportError: + print("audioeffects.rebuilt is gone") +else: + sys.exit("audioeffects.rebuilt still imports") print("wheel smoke: ok") '''