From 31d7e16784d18556ecd34b6ebfc1b003cd573f0d Mon Sep 17 00:00:00 2001 From: Matt Lawler Date: Thu, 24 Sep 2026 14:46:56 +0200 Subject: [PATCH] chore: require Python 3.11+ Python 3.8 and 3.9 are end-of-life and 3.10 reaches end-of-life in October 2026. Raise python_requires to >=3.11 and list only 3.11-3.14 in the classifiers. CI now tests 3.11-3.14 (3.13 and 3.14 were declared but never tested), and the mypy job and the PyPI build move off 3.9 and 3.8. Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/lint.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 4 ++-- CLAUDE.md | 2 +- assemblyai/__version__.py | 2 +- setup.py | 5 +---- tox.ini | 2 +- 7 files changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3b7a910d..0331e93a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -85,7 +85,7 @@ jobs: - uses: actions/setup-python@v4 if: ${{ steps.counter.outputs.count > 0 }} with: - python-version: '3.9' + python-version: '3.11' - run: pip install mypy==1.5.1 if: ${{ steps.counter.outputs.count > 0 }} - run: mypy ${{ steps.filter.outputs.python_files }} --follow-imports=silent --ignore-missing-imports diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 93077b6a..35b65bc8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.11" - name: Install pypa/build run: >- python -m diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1c7273fe..53057044 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,10 +21,10 @@ jobs: fail-fast: false matrix: py: + - "3.14" + - "3.13" - "3.12" - "3.11" - - "3.10" - - "3.9" os: - ubuntu-22.04 steps: diff --git a/CLAUDE.md b/CLAUDE.md index 51592ca2..942f0a05 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -597,7 +597,7 @@ client for it. Given alongside `client`, the key wins and the passed client is l - **`transcribe_async()` returns a `concurrent.futures.Future`**, not an asyncio coroutine. In asyncio code use `aai.AsyncTranscriber` (see "Asyncio transcription" above) — or `aai.AsyncSyncTranscriber` for the sync API - **LLM Gateway request params are `**kwargs`**: everything past `model`/`messages`/`stream` is forwarded verbatim, so there is no client-side check on the name — spell params carefully - **Timestamps are in milliseconds** throughout the SDK -- **Minimum Python**: 3.8+ +- **Minimum Python**: 3.11+ ## Dependencies diff --git a/assemblyai/__version__.py b/assemblyai/__version__.py index e4adfb83..14d9d2f5 100644 --- a/assemblyai/__version__.py +++ b/assemblyai/__version__.py @@ -1 +1 @@ -__version__ = "1.6.0" +__version__ = "1.7.0" diff --git a/setup.py b/setup.py index bbde86d6..5a278edf 100644 --- a/setup.py +++ b/setup.py @@ -39,9 +39,6 @@ def get_version() -> str: "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", @@ -52,7 +49,7 @@ def get_version() -> str: url="https://github.com/AssemblyAI/assemblyai-python-sdk", license="MIT License", license_files=["LICENSE"], - python_requires=">=3.8", + python_requires=">=3.11", project_urls={ "Code": "https://github.com/AssemblyAI/assemblyai-python-sdk", "Issues": "https://github.com/AssemblyAI/assemblyai-python-sdk/issues", diff --git a/tox.ini b/tox.ini index 7a7ab9bb..3f025e50 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # blow-up. Floors track setup.py (pydantic>=1.10.17, websockets>=11, httpx>=0.19). [tox] envlist = - py{39,310,311,312}-latest + py{311,312,313,314}-latest py311-httpx{0.22,0.24} py311-pydantic1.10 py311-websockets11.0