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]

Reply via email to