luth2 opened a new pull request, #45821:
URL: https://github.com/apache/superset/pull/45821
### SUMMARY
Adds experimental Python 3.15 compatibility while preserving Python 3.11 as
the minimum supported version.
Uses Python-version-specific dependency markers: Python 3.15 selects NumPy
>=2.5.4,<2.6 and pandas >=3.1.0,<3.2; Python 3.11–3.14 retain their existing
ranges.
Updates pandas post-processing, result-set handling, SQL parsing and related
compatibility paths, with regression coverage.
Adds a Python 3.11–3.15 compatibility workflow covering focused tests,
dependency consistency, fresh SQLite migration and application health.
Updates the lean/superset Docker dependency stage to use package metadata on
Python 3.15 instead of generated Python 3.11 requirement pins. Older
interpreters retain the existing requirements-based installation.
Handles read-only BuildKit sources through a disposable writable build copy,
including cleanup on success and failure.
Declares rich directly for CLI imports and adds container dependency
regression tests.
Documents installation, validation results and remaining compatibility
limitations.
The default container Python version and existing Python support classifiers
are unchanged. This introduces experimental source compatibility, not blanket
production certification for Python 3.15
### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Not applicable. No intentional UI changes.
### TESTING INSTRUCTIONS
Create an isolated Python 3.15 environment and install from the repository
root using package metadata, without applying the generated Python 3.11
requirement files:
```bash
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ./superset-core -e .
python -m pip check
```
Configure a disposable metadata database and a test-only secret key, then
verify migration and application health:
```bash
export FLASK_APP=superset
export SUPERSET_HOME="$(mktemp -d)"
export SUPERSET_SECRET_KEY="$(python -c 'import secrets;
print(secrets.token_hex(32))')"
python -m flask db upgrade
python - <<'PY'
from superset.app import create_app
app = create_app()
assert app.test_client().get("/health").status_code == 200
PY
```
Run the focused compatibility workflow and the container dependency
regression tests. Integration runs require fresh migrated databases; browser
acceptance must use a separate metadata database and Redis namespaces.
--
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]