Skip to content

Commit 652564e

Browse files
authored
Add support for Python 3.14 and drop support for Python 3.9. (#439)
* Add support for Python 3.14. * Will this fix the MP3 errors? * Bump to 0.9.19.
1 parent 0f75256 commit 652564e

File tree

7 files changed

+191
-79
lines changed

7 files changed

+191
-79
lines changed

.github/workflows/all.yml

Lines changed: 184 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ jobs:
1818
continue-on-error: true
1919
strategy:
2020
matrix:
21-
python-version: ['3.12']
22-
os: ['ubuntu-24.04']
21+
python-version: ["3.12"]
22+
os: ["ubuntu-24.04"]
2323
name: Lint Python
2424
steps:
2525
- name: Set up Python ${{ matrix.python-version }}
@@ -65,7 +65,7 @@ jobs:
6565
run: uv run pyright ${{ github.workspace }}/pedalboard ${{ github.workspace }}/tests/test_*.py
6666

6767
lint-cpp:
68-
runs-on: 'ubuntu-24.04'
68+
runs-on: "ubuntu-24.04"
6969
continue-on-error: true
7070
name: Lint C++
7171
steps:
@@ -75,7 +75,7 @@ jobs:
7575
uses: jidicula/[email protected]
7676
with:
7777
clang-format-version: 14
78-
exclude-regex: 'vendors/'
78+
exclude-regex: "vendors/"
7979
fallback-style: LLVM
8080

8181
# Build the native module with ccache enabled so we can share object files between builds:
@@ -85,7 +85,13 @@ jobs:
8585
strategy:
8686
matrix:
8787
include:
88-
- { os: ubuntu-24.04, python-version: "3.12", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
88+
- {
89+
os: ubuntu-24.04,
90+
python-version: "3.12",
91+
compiler: "gcc",
92+
cc: "ccache gcc",
93+
cxx: "ccache g++",
94+
}
8995
name: Pre-build on ${{ matrix.os }} with ${{ matrix.compiler }}
9096
steps:
9197
- name: Set up Python ${{ matrix.python-version }}
@@ -183,7 +189,13 @@ jobs:
183189
strategy:
184190
matrix:
185191
include:
186-
- { os: macos-13, python-version: "3.12", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
192+
- {
193+
os: macos-13,
194+
python-version: "3.12",
195+
compiler: "clang",
196+
cc: "ccache clang",
197+
cxx: "ccache clang++",
198+
}
187199
name: Pre-build on ${{ matrix.os }} with ${{ matrix.compiler }}
188200
steps:
189201
- name: Set up Python ${{ matrix.python-version }}
@@ -269,7 +281,13 @@ jobs:
269281
strategy:
270282
matrix:
271283
include:
272-
- { os: ubuntu-24.04, python-version: "3.12", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
284+
- {
285+
os: ubuntu-24.04,
286+
python-version: "3.12",
287+
compiler: "clang",
288+
cc: "ccache clang",
289+
cxx: "ccache clang++",
290+
}
273291
name: Pre-build on ${{ matrix.os }} with ${{ matrix.compiler }}
274292
steps:
275293
- name: Set up Python ${{ matrix.python-version }}
@@ -486,21 +504,111 @@ jobs:
486504
strategy:
487505
matrix:
488506
include:
489-
- { os: macos-13, python-version: "3.9", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
490-
- { os: macos-13, python-version: "3.10", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
491-
- { os: macos-13, python-version: "3.11", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
492-
- { os: macos-13, python-version: "3.12", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
493-
- { os: macos-13, python-version: "3.13", compiler: "clang", cc: "ccache clang", cxx: "ccache clang++" }
494-
- { os: ubuntu-24.04, python-version: "3.9", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
495-
- { os: ubuntu-24.04, python-version: "3.10", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
496-
- { os: ubuntu-24.04, python-version: "3.11", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
497-
- { os: ubuntu-24.04, python-version: "3.12", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
498-
- { os: ubuntu-24.04, python-version: "3.13", compiler: "gcc", cc: "ccache gcc", cxx: "ccache g++" }
499-
- { os: windows-latest, python-version: "3.9", compiler: "msvc", cc: "msvc", cxx: "msvc" }
500-
- { os: windows-latest, python-version: "3.10", compiler: "msvc", cc: "msvc", cxx: "msvc" }
501-
- { os: windows-latest, python-version: "3.11", compiler: "msvc", cc: "msvc", cxx: "msvc" }
502-
- { os: windows-latest, python-version: "3.12", compiler: "msvc", cc: "msvc", cxx: "msvc" }
503-
- { os: windows-latest, python-version: "3.13", compiler: "msvc", cc: "msvc", cxx: "msvc" }
507+
- {
508+
os: macos-13,
509+
python-version: "3.10",
510+
compiler: "clang",
511+
cc: "ccache clang",
512+
cxx: "ccache clang++",
513+
}
514+
- {
515+
os: macos-13,
516+
python-version: "3.11",
517+
compiler: "clang",
518+
cc: "ccache clang",
519+
cxx: "ccache clang++",
520+
}
521+
- {
522+
os: macos-13,
523+
python-version: "3.12",
524+
compiler: "clang",
525+
cc: "ccache clang",
526+
cxx: "ccache clang++",
527+
}
528+
- {
529+
os: macos-13,
530+
python-version: "3.13",
531+
compiler: "clang",
532+
cc: "ccache clang",
533+
cxx: "ccache clang++",
534+
}
535+
- {
536+
os: macos-13,
537+
python-version: "3.14",
538+
compiler: "clang",
539+
cc: "ccache clang",
540+
cxx: "ccache clang++",
541+
}
542+
- {
543+
os: ubuntu-24.04,
544+
python-version: "3.10",
545+
compiler: "gcc",
546+
cc: "ccache gcc",
547+
cxx: "ccache g++",
548+
}
549+
- {
550+
os: ubuntu-24.04,
551+
python-version: "3.11",
552+
compiler: "gcc",
553+
cc: "ccache gcc",
554+
cxx: "ccache g++",
555+
}
556+
- {
557+
os: ubuntu-24.04,
558+
python-version: "3.12",
559+
compiler: "gcc",
560+
cc: "ccache gcc",
561+
cxx: "ccache g++",
562+
}
563+
- {
564+
os: ubuntu-24.04,
565+
python-version: "3.13",
566+
compiler: "gcc",
567+
cc: "ccache gcc",
568+
cxx: "ccache g++",
569+
}
570+
- {
571+
os: ubuntu-24.04,
572+
python-version: "3.14",
573+
compiler: "gcc",
574+
cc: "ccache gcc",
575+
cxx: "ccache g++",
576+
}
577+
- {
578+
os: windows-latest,
579+
python-version: "3.10",
580+
compiler: "msvc",
581+
cc: "msvc",
582+
cxx: "msvc",
583+
}
584+
- {
585+
os: windows-latest,
586+
python-version: "3.11",
587+
compiler: "msvc",
588+
cc: "msvc",
589+
cxx: "msvc",
590+
}
591+
- {
592+
os: windows-latest,
593+
python-version: "3.12",
594+
compiler: "msvc",
595+
cc: "msvc",
596+
cxx: "msvc",
597+
}
598+
- {
599+
os: windows-latest,
600+
python-version: "3.13",
601+
compiler: "msvc",
602+
cc: "msvc",
603+
cxx: "msvc",
604+
}
605+
- {
606+
os: windows-latest,
607+
python-version: "3.14",
608+
compiler: "msvc",
609+
cc: "msvc",
610+
cxx: "msvc",
611+
}
504612
name: Test with Python ${{ matrix.python-version }} on ${{ matrix.os }}
505613
steps:
506614
- name: Set up Python ${{ matrix.python-version }}
@@ -632,8 +740,8 @@ jobs:
632740
needs: [prime-asan-build-caches]
633741
strategy:
634742
matrix:
635-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
636-
os: ['ubuntu-24.04']
743+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
744+
os: ["ubuntu-24.04"]
637745
name: Test with Python ${{ matrix.python-version }} + Address Sanitizer
638746
steps:
639747
- name: Set up Python ${{ matrix.python-version }}
@@ -719,53 +827,56 @@ jobs:
719827
strategy:
720828
matrix:
721829
include:
722-
- { os: macos-13, build: cp39-macosx_x86_64 }
723-
- { os: macos-13, build: cp310-macosx_x86_64 }
724-
- { os: macos-13, build: cp311-macosx_x86_64 }
725-
- { os: macos-13, build: cp312-macosx_x86_64 }
726-
- { os: macos-13, build: cp313-macosx_x86_64 }
727-
- { os: macos-13, build: cp313t-macosx_x86_64 }
728-
# Universal wheels are rarely used; only support them for Python 3.12:
729-
- { os: macos-13, build: cp312-macosx_universal2 }
730-
- { os: macos-13, build: cp39-macosx_arm64 }
731-
- { os: macos-13, build: cp310-macosx_arm64 }
732-
- { os: macos-13, build: cp311-macosx_arm64 }
733-
- { os: macos-13, build: cp312-macosx_arm64 }
734-
- { os: macos-13, build: cp313-macosx_arm64 }
735-
- { os: macos-13, build: cp313t-macosx_arm64 }
736-
# - { os: macos-13, build: pp38-macosx_x86_64 }
737-
# - { os: macos-13, build: pp39-macosx_x86_64 }
738-
- { os: windows-latest, build: cp39-win_amd64 }
739-
- { os: windows-latest, build: cp310-win_amd64 }
740-
- { os: windows-latest, build: cp311-win_amd64 }
741-
- { os: windows-latest, build: cp312-win_amd64 }
742-
- { os: windows-latest, build: cp313-win_amd64 }
743-
# - { os: windows-latest, build: cp313t-win_amd64 }
744-
# - { os: windows-latest, build: cp312-win32 }
745-
- { os: 'ubuntu-24.04', build: cp39-manylinux_x86_64 }
746-
- { os: 'ubuntu-24.04', build: cp39-manylinux_aarch64 }
747-
# - { os: 'ubuntu-24.04', build: cp39-musllinux_x86_64 }
748-
# - { os: 'ubuntu-24.04', build: cp39-musllinux_aarch64 }
749-
- { os: 'ubuntu-24.04', build: cp310-manylinux_x86_64 }
750-
- { os: 'ubuntu-24.04', build: cp310-manylinux_aarch64 }
751-
- { os: 'ubuntu-24.04', build: cp310-musllinux_x86_64 }
752-
- { os: 'ubuntu-24.04', build: cp310-musllinux_aarch64 }
753-
- { os: 'ubuntu-24.04', build: cp311-manylinux_x86_64 }
754-
- { os: 'ubuntu-24.04', build: cp311-manylinux_aarch64 }
755-
# - { os: 'ubuntu-24.04', build: cp311-musllinux_x86_64 }
756-
# - { os: 'ubuntu-24.04', build: cp311-musllinux_aarch64 }
757-
- { os: 'ubuntu-24.04', build: cp312-manylinux_x86_64 }
758-
- { os: 'ubuntu-24.04', build: cp312-manylinux_aarch64 }
759-
- { os: 'ubuntu-24.04', build: cp312-musllinux_x86_64 }
760-
- { os: 'ubuntu-24.04', build: cp312-musllinux_aarch64 }
761-
- { os: 'ubuntu-24.04', build: cp313-manylinux_x86_64 }
762-
- { os: 'ubuntu-24.04', build: cp313-manylinux_aarch64 }
763-
# - { os: 'ubuntu-24.04', build: cp313-musllinux_x86_64 }
764-
# - { os: 'ubuntu-24.04', build: cp313-musllinux_aarch64 }
765-
- { os: 'ubuntu-24.04', build: cp313t-manylinux_x86_64 }
766-
- { os: 'ubuntu-24.04', build: cp313t-manylinux_aarch64 }
767-
# - { os: 'ubuntu-24.04', build: cp313t-musllinux_x86_64 }
768-
# - { os: 'ubuntu-24.04', build: cp313t-musllinux_aarch64 }
830+
- { os: macos-13, build: cp310-macosx_x86_64 }
831+
- { os: macos-13, build: cp311-macosx_x86_64 }
832+
- { os: macos-13, build: cp312-macosx_x86_64 }
833+
- { os: macos-13, build: cp313-macosx_x86_64 }
834+
- { os: macos-13, build: cp313t-macosx_x86_64 }
835+
# Universal wheels are rarely used; only support them for Python 3.12:
836+
- { os: macos-13, build: cp312-macosx_universal2 }
837+
- { os: macos-13, build: cp310-macosx_arm64 }
838+
- { os: macos-13, build: cp311-macosx_arm64 }
839+
- { os: macos-13, build: cp312-macosx_arm64 }
840+
- { os: macos-13, build: cp313-macosx_arm64 }
841+
- { os: macos-13, build: cp313t-macosx_arm64 }
842+
- { os: macos-13, build: cp314-macosx_arm64 }
843+
- { os: macos-13, build: cp314t-macosx_arm64 }
844+
# - { os: macos-13, build: pp38-macosx_x86_64 }
845+
# - { os: macos-13, build: pp39-macosx_x86_64 }
846+
- { os: windows-latest, build: cp39-win_amd64 }
847+
- { os: windows-latest, build: cp310-win_amd64 }
848+
- { os: windows-latest, build: cp311-win_amd64 }
849+
- { os: windows-latest, build: cp312-win_amd64 }
850+
- { os: windows-latest, build: cp313-win_amd64 }
851+
- { os: windows-latest, build: cp314-win_amd64 }
852+
# - { os: windows-latest, build: cp313t-win_amd64 }
853+
# - { os: windows-latest, build: cp312-win32 }
854+
- { os: "ubuntu-24.04", build: cp39-manylinux_x86_64 }
855+
- { os: "ubuntu-24.04", build: cp39-manylinux_aarch64 }
856+
# - { os: 'ubuntu-24.04', build: cp39-musllinux_x86_64 }
857+
# - { os: 'ubuntu-24.04', build: cp39-musllinux_aarch64 }
858+
- { os: "ubuntu-24.04", build: cp310-manylinux_x86_64 }
859+
- { os: "ubuntu-24.04", build: cp310-manylinux_aarch64 }
860+
- { os: "ubuntu-24.04", build: cp310-musllinux_x86_64 }
861+
- { os: "ubuntu-24.04", build: cp310-musllinux_aarch64 }
862+
- { os: "ubuntu-24.04", build: cp311-manylinux_x86_64 }
863+
- { os: "ubuntu-24.04", build: cp311-manylinux_aarch64 }
864+
# - { os: 'ubuntu-24.04', build: cp311-musllinux_x86_64 }
865+
# - { os: 'ubuntu-24.04', build: cp311-musllinux_aarch64 }
866+
- { os: "ubuntu-24.04", build: cp312-manylinux_x86_64 }
867+
- { os: "ubuntu-24.04", build: cp312-manylinux_aarch64 }
868+
- { os: "ubuntu-24.04", build: cp312-musllinux_x86_64 }
869+
- { os: "ubuntu-24.04", build: cp312-musllinux_aarch64 }
870+
- { os: "ubuntu-24.04", build: cp313-manylinux_x86_64 }
871+
- { os: "ubuntu-24.04", build: cp313-manylinux_aarch64 }
872+
# - { os: 'ubuntu-24.04', build: cp313-musllinux_x86_64 }
873+
# - { os: 'ubuntu-24.04', build: cp313-musllinux_aarch64 }
874+
- { os: "ubuntu-24.04", build: cp313t-manylinux_x86_64 }
875+
- { os: "ubuntu-24.04", build: cp313t-manylinux_aarch64 }
876+
# - { os: 'ubuntu-24.04', build: cp313t-musllinux_x86_64 }
877+
# - { os: 'ubuntu-24.04', build: cp313t-musllinux_aarch64 }
878+
- { os: "ubuntu-24.04", build: cp314-manylinux_x86_64 }
879+
- { os: "ubuntu-24.04", build: cp314t-manylinux_aarch64 }
769880
name: Build wheel for ${{ matrix.build }}
770881
steps:
771882
- uses: actions/checkout@v4
@@ -791,7 +902,7 @@ jobs:
791902
# Use the minimum macOS deployment target supported by our version of PyBind:
792903
MACOSX_DEPLOYMENT_TARGET: "10.14"
793904
- name: Ensure wheels have required files
794-
if: runner.os != 'Windows'
905+
if: runner.os != 'Windows'
795906
run: |
796907
for wheel in ./wheelhouse/*.whl; do
797908
# Print the contents of the wheel for debugging:
@@ -817,7 +928,7 @@ jobs:
817928

818929
upload-pypi:
819930
needs: [merge, run-tests-with-address-sanitizer, run-tests]
820-
runs-on: 'ubuntu-24.04'
931+
runs-on: "ubuntu-24.04"
821932
name: "Upload wheels to PyPI"
822933
if: github.event_name == 'release' && github.event.action == 'published'
823934
steps:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ If you are new to Python, follow [INSTALLATION.md](https://github.com/spotify/pe
5656

5757
### Compatibility
5858

59-
`pedalboard` is thoroughly tested with Python 3.8, 3.9, 3.10, 3.11, 3.12, and 3.13.
59+
`pedalboard` is thoroughly tested with Python 3.10, 3.11, 3.12, 3.13, and 3.14.
6060

6161
- Linux
6262
- Tested heavily in production use cases at Spotify

pedalboard/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
__version__ = "0.9.18"
17+
__version__ = "0.9.19"
1818
# Done this way so we can use dynamic-metadata to parse the version above.
1919
MAJOR, MINOR, PATCH = (int(x) for x in __version__.split("."))

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ classifiers = [
5656
"Programming Language :: Python :: 3.13",
5757
]
5858
dependencies = ["numpy"]
59-
version = "0.9.18"
59+
version = "0.9.19"
6060

6161
[project.optional-dependencies]
6262
test = [

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,12 +482,11 @@ def build_extensions(self, *args, **kwargs):
482482
"Programming Language :: C++",
483483
"Programming Language :: Python",
484484
"Topic :: Multimedia :: Sound/Audio",
485-
"Programming Language :: Python :: 3.8",
486-
"Programming Language :: Python :: 3.9",
487485
"Programming Language :: Python :: 3.10",
488486
"Programming Language :: Python :: 3.11",
489487
"Programming Language :: Python :: 3.12",
490488
"Programming Language :: Python :: 3.13",
489+
"Programming Language :: Python :: 3.14",
491490
],
492491
ext_modules=[pedalboard_cpp],
493492
install_requires=["numpy"],

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendors/lame_overrides.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* (i.e.: private) to the C file that contains them.
55
*/
66

7+
#define hip_global_struct mpstr_tag
8+
79
#include "lame/include/lame.h"
810

911
/*

0 commit comments

Comments
 (0)