luth2 opened a new pull request, #45823:
URL: https://github.com/apache/superset/pull/45823
### SUMMARY
Replaces #45821 with a reviewable, line-ending-clean diff. Related to #45019.
The previous PR included repository-wide CRLF/LF churn. This branch is
rebuilt from the same original base and preserves its substantive changes
without that churn: **49 files changed, 680 insertions, 135 deletions**, in one
commit. The original branch has not been rewritten.
- Add experimental Python 3.15 source compatibility while keeping Python
3.11 as the minimum supported version and leaving the default container
interpreter and support classifiers unchanged.
- Select NumPy `>=2.5.4,<2.6` and pandas `>=3.1.0,<3.2` on Python 3.15 using
dependency markers; preserve the existing ranges for Python 3.11-3.14.
- Update pandas post-processing, result-set handling, SQL parsing and
related compatibility paths, with regression coverage.
- Add a Python 3.11-3.15 compatibility workflow covering focused tests,
dependency consistency, a fresh SQLite migration and application health.
- Use package metadata for the lean/superset Docker dependency stage on
Python 3.15, retaining the requirements-based path for older interpreters.
Build read-only mounted sources in a disposable writable copy and test cleanup
on both success and failure.
- Declare `rich` directly for CLI imports and document installation,
validation and known limitations.
The frontend Node pin remains `v24.16.0` with LF line endings, matching the
original base. This avoids carrying the CRLF-corrupted version string that
blocked the previous Netlify docs preview. No Netlify configuration or Node
version change is needed.
Beyond removing line-ending churn, this replacement adds an explicit union
type annotation in the container regression test and the shell script's final
newline, as required by local checks.
### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Not applicable. No intentional UI changes.
### TESTING INSTRUCTIONS
Create an isolated Python 3.15 environment and install from package
metadata, not 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
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 -c 'from superset.app import create_app; assert
create_app().test_client().get("/health").status_code == 200'
```
Run the new compatibility workflow and the container regression tests:
```bash
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest --noconftest -o addopts= \
tests/unit_tests/docker_app_dependencies_test.py \
tests/unit_tests/scripts/docker_release_target_test.py \
tests/unit_tests/docker_compose_image_tag_test.py -q
bash -n docker/install-app-dependencies.sh
```
Validation of this replacement commit:
- All 18 container-related regression tests passed on Python 3.15.2; shell
syntax and whitespace checks passed.
- Pylint passed for the changed backend files, using the repository
configuration and a single worker.
- Pre-commit was run on all staged changes. All applicable hooks passed
except MyPy, which reports an unused `type: ignore` at
`superset/db_engine_specs/mysql.py:680`. The same finding was reproduced on the
unchanged original base with the same selection of modified existing files. The
new test's MyPy error was corrected before this commit.
- The complete published diff was checked against the previous branch:
substantive content is preserved, apart from the two check corrections
described above.
Remaining limits: this is experimental compatibility, not production
certification. The complete official image build remains unverified because the
reference host ran out of memory during frontend minimization, although the
isolated Python 3.15 dependency stage passed. The documented Gunicorn gthread
shutdown limitation remains unresolved. The new Netlify preview and PR CI still
need to run; `/health` is liveness, not dependency readiness.
### ADDITIONAL INFORMATION
- [x] Has associated issue: #45019; replaces #45821.
- [ ] Required feature flags:
- [ ] Changes UI
- [ ] Includes DB Migration
- [ ] Introduces new feature or API
- [ ] 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]