From 54f39d43043d141d906f6066cd28eadf720ec97a Mon Sep 17 00:00:00 2001 From: Eric Joanis Date: Tue, 27 Oct 2026 16:57:40 -0400 Subject: [PATCH] build(deps): drop support for Python 3.9 --- .github/workflows/matrix-tests.yml | 2 +- .github/workflows/tests.yml | 4 ++-- README.md | 4 ++-- pyproject.toml | 3 +-- readalongs/__init__.py | 17 ----------------- run_tests.py | 5 +---- 6 files changed, 7 insertions(+), 28 deletions(-) diff --git a/.github/workflows/matrix-tests.yml b/.github/workflows/matrix-tests.yml index c8d7f672..795500ba 100644 --- a/.github/workflows/matrix-tests.yml +++ b/.github/workflows/matrix-tests.yml @@ -21,7 +21,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-24.04, windows-latest, macos-latest] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7ec12f04..12320d5d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.9" + python-version: "3.10" cache: "pip" - name: Install Python dependencies @@ -132,7 +132,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: "3.9" + python-version: "3.10" cache: "pip" - name: Install Python dependencies diff --git a/README.md b/README.md index 9aadd564..658b5f34 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Optionally a book can be generated as a standalone HTML page, XHTML, Praat TextG ### The short version -Install [FFmpeg](https://ffmpeg.org/) and Python 3.9 or higher. +Install [FFmpeg](https://ffmpeg.org/) and Python 3.10 or higher. Run: @@ -72,7 +72,7 @@ Run: Before you can install the ReadAlong Studio, you will need to install these dependencies: - - Python, version 3.9 or higher, + - Python, version 3.10 or higher, - [FFmpeg](https://ffmpeg.org/), - a C compiler (sometimes required for some dependant libraries), - Git (optional, needed to get the current development version). diff --git a/pyproject.toml b/pyproject.toml index 7b5b3dcf..db29f1f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "hatchling.build" [project] name = "readalongs" dynamic = ["version"] -requires-python = ">= 3.9" +requires-python = ">= 3.10" description = "ReadAlong Studio: Audiobook alignment for Indigenous languages" readme = "README.md" authors = [ @@ -26,7 +26,6 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", diff --git a/readalongs/__init__.py b/readalongs/__init__.py index 8ae054c2..e69de29b 100644 --- a/readalongs/__init__.py +++ b/readalongs/__init__.py @@ -1,17 +0,0 @@ -""" -Root module for the readalongs text/audio aligner. - -Version for setuptools is changed here -Minimum Python version requirements is also validated here - -The command line interface is defined in readalongs.cli. -The main alignment module is readalongs.align. -""" - -import sys - -if sys.version_info < (3, 9, 0): # pragma: no cover - sys.exit( - f"Python 3.9 or more recent is required. You are using {sys.version}. " - "Please use a newer version of Python." - ) diff --git a/run_tests.py b/run_tests.py index 717a9bcb..1593193a 100755 --- a/run_tests.py +++ b/run_tests.py @@ -46,10 +46,7 @@ def pytest_collection_modifyitems(self, session, config, items): def list_tests(suite: List[str]): plugin = PytestCollectorPlugin() pytest_args = ["--collect-only", *suite, "-q"] - if sys.version_info >= (3, 10): - with redirect_stdout(io.StringIO()): # broken with py 3.8/3.9... - pytest.main(pytest_args, plugins=[plugin]) - else: + with redirect_stdout(io.StringIO()): pytest.main(pytest_args, plugins=[plugin]) # print("===========\n", o.getvalue(), "\n================") return plugin.collected