rusackas opened a new pull request, #42045: URL: https://github.com/apache/superset/pull/42045
### SUMMARY Removes Python 3.10 from the supported version matrix. Python 3.11 is now the minimum supported version (3.12 remains the "next" tier). - **CI**: dropped the `previous` (3.10) tier from `.github/actions/setup-backend/action.yml` and the four workflow matrices that consumed it (`pre-commit.yml`, `superset-extensions-cli.yml`, `superset-python-integrationtest.yml`, `superset-python-unittest.yml`); bumped the hardcoded 3.10 pin in `bump-python-package.yml`; dropped the `py310` Docker build preset from `docker.yml`, `tag-release.yml`, and `scheduled-docker-image-refresh.yml`; bumped the stale `apache/superset-cache:3.10-slim-trixie` registry-cache references (already inconsistent with the main `Dockerfile`'s `3.11.14-slim-trixie` base) to `3.11-slim-trixie` across `superset-frontend.yml` and the three `docker-compose*.yml` files. - **Packaging**: `requires-python = ">=3.11"` and dropped the 3.10 classifier in `pyproject.toml`, `superset-core/pyproject.toml`, and `superset-extensions-cli/pyproject.toml` (plus their README badges); ruff `target-version` bumped to `py311`; dropped the now-dead `pyhive[hive]>=0.6.5;python_version<'3.11'` marker from the `hive`/`spark` extras (always-false once the floor is 3.11). - **Docs**: `docs/developer_docs/index.md`, `docs/developer_docs/contributing/development-setup.md`, `docs/admin_docs/configuration/mcp-server.mdx`, `superset/mcp_service/README.md`, the bug-report issue template's Python-version dropdown, and the example versions in `issue-reporting.md` all now say 3.11/3.12. Historical/versioned doc snapshots and CHANGELOG entries were left untouched. - **`scripts/check-env.py`**: the local environment-check script's ideal/supported Python ranges moved from 3.10-ideal/3.9–3.11-supported to 3.11-ideal/3.11–3.12-supported. - **`RELEASING/Dockerfile.*`**: bumped `python:3.10-slim-trixie` → `python:3.11-slim-trixie` in the four release-tooling Dockerfiles. - **`UPDATING.md`**: added an entry under `## Next`. - **Code shims removed**: `superset/app.py`, `superset/middleware/legacy_prefix_redirect.py`, and `superset/utils/backports.py` each had a `sys.version_info >= (3, 11)` branch to backport `wsgiref.types` / `enum.StrEnum` on 3.10. Since 3.11 is now the floor, these collapse to unconditional imports (and a stale `# type: ignore[arg-type]` in `app.py`, which mypy now flags as unused, was removed along with the comment explaining it). - Closing #42007: that PR proposed reverting `syntaqlite` below `0.5.0` because `0.5.0+` unconditionally imports `enum.StrEnum`, which doesn't exist on Python 3.10. With 3.10 dropped, `syntaqlite>=0.6.0,<0.7.0` (already the pin on master) works fine as-is — no further pin changes needed here. ### FOLLOW-UPS (3.11-enabled cleanup, not done in this PR to keep the diff scoped) - `Optional[X]` / `Union[X, Y]` → `X | None` / `X | Y` is available since 3.10 but not required until now; ~217 files under `superset/` still use the old-style typing imports. A dedicated `ruff --fix --select UP` pass (pyupgrade rules) could modernize these mechanically in a follow-up PR. - `typing.Self` (3.11) could replace some `-> "ClassName"` return annotations in builder-style methods. - Exception groups (`except*`, 3.11) could simplify a few command layers that currently aggregate multiple errors manually — worth a targeted look, not a blanket change. - CPython 3.11's performance improvements are a free win from this change alone; no code changes needed. ### TESTING INSTRUCTIONS - `pre-commit run --all-files` (ruff, ruff-format, pylint, zizmor, etc. all pass; mypy independently verified clean on the three touched Python files via a standalone mypy 2.3.0 run, since this sandbox's cached pre-commit mypy environment has a pre-existing x86_64/arm64 mismatch unrelated to this change). - Confirmed `superset/middleware/legacy_prefix_redirect.py` and `superset/utils/backports.py` still import and behave correctly with the unconditional 3.11+ imports. - Confirmed `from wsgiref.types import ...` fails on Python 3.10 (`ModuleNotFoundError`) and succeeds on 3.11+/3.12, verifying the new floor is actually enforced by the code, not just documentation. ### ADDITIONAL INFORMATION - [x] Has associated issue: Closes #42007 - [ ] Required feature flags: - [ ] Changes UI - [ ] Includes DB Migration - [ ] Introduces new feature or API - [x] Removes existing feature or API -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
