diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 4aa6fa0b08..c0e6669d0a 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -70,7 +70,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.12"] + python-version: ["3.9", "3.12"] steps: - name: Checkout repository @@ -123,7 +123,7 @@ jobs: - name: Run lint env: - PYLINT_EXTRA_ARGS: ${{ matrix.python-version == '3.8' && '--ignored-modules=mcp' || '' }} + PYLINT_EXTRA_ARGS: ${{ matrix.python-version == '3.9' && '--ignored-modules=mcp' || '' }} run: npm run lint - name: Run unit tests @@ -615,7 +615,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.12"] + python-version: ["3.9", "3.12"] test-group: ["1", "2", "3"] env: @@ -719,7 +719,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.12"] + python-version: ["3.9", "3.12"] env: PERCY_TOKEN: ${{ matrix.python-version == '3.12' && secrets.PERCY_TOKEN || '' }} @@ -866,7 +866,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.12"] + python-version: ["3.9", "3.12"] steps: - name: Checkout repository @@ -914,7 +914,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.12"] + python-version: ["3.9", "3.12"] test-group: ["1", "2", "3"] env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 09f5a944b7..7f0d7c9abc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ This project adheres to [Semantic Versioning](https://semver.org/). - [#3819](https://github.com/plotly/dash/pull/3819) Fix `RuntimeError: No active request in context` when a non-Dash path falls through to the FastAPI catch-all route. Fixes [#3812](https://github.com/plotly/dash/issues/3812). - [#3838](https://github.com/plotly/dash/pull/3838) Replace `mcp` dependency with inline types +## Changed +- Drop support for Python 3.8 (end-of-life since October 2024). The minimum supported version is now Python 3.9. + ## [4.3.0] - 2026-06-18 ## Added diff --git a/setup.py b/setup.py index e2ecb16055..3b5f7eeb20 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ def read_req_file(req_type): long_description=io.open("README.md", encoding="utf-8").read(), # pylint: disable=consider-using-with long_description_content_type="text/markdown", install_requires=read_req_file("install"), - python_requires=">=3.8", + python_requires=">=3.9", extras_require={ "async": read_req_file("async"), "ci": read_req_file("ci"), @@ -71,7 +71,6 @@ def read_req_file(req_type): "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11",