You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ha...@apache.org on 2026/09/05 15:33:12 UTC
(superset) branch remove-deprecated-ascend-db-integration updated (5c04256c052 -> b0f3630d624)
This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch remove-deprecated-ascend-db-integration
in repository https://gitbox.apache.org/repos/asf/superset.git
from 5c04256c052 Merge branch 'master' into remove-deprecated-ascend-db-integration
add a0685173932 chore(deps-dev): bump webpack from 5.109.2 to 5.110.1 in /superset-frontend (#43853)
add c84c7c4bdd2 chore(ci): optimize Dependabot processes (#43681)
add e9412576b20 feat(build/websocket): upgrade to Typescript 7 + migrate ESLint to TS7-compatible `oxlint` and`tsgolint` (#43703)
add 8f6caf4ff94 feat(build): upgrade to Typescript 7, Babel 8, Webpack CLI 7 and JSDOM 30 for `superset-embedded-sdk` (#43702)
add f63a0e9d9c7 feat(conditional-formatting): add manual min/max color-range bounds (#43820)
add 31a3a190373 chore(deps-dev): bump @types/node from 25.9.5 to 26.4.0 in /superset-embedded-sdk (#43881)
add d27124e5f6b chore(deps-dev): bump webpack-cli from 7.2.2 to 7.2.3 in /superset-embedded-sdk (#43882)
add 3b1e43be5c5 chore(deps-dev): bump css-loader from 7.1.4 to 7.1.5 in /superset-frontend (#43880)
add bc6ff77af01 feat(ci): broaden usage of fast-startup `ubuntu-slim` runner (#43477)
add d9b201db74c fix(explore): open version-history forks in a usable tab, not a blank one (#43830)
add 935ee5f1a65 chore(deps): bump simplejson from 4.1.1 to 4.1.2 (#43874)
add 592d378c0d6 chore(deps-dev): bump pandas-gbq from 0.35.1 to 0.35.2 (#43873)
add b925246befb chore(deps): bump click from 8.4.2 to 8.5.0 (#43872)
add b1c33e54353 chore(deps-dev): bump hdbcli from 2.29.25 to 2.29.27 (#43869)
add 297b0455f61 chore(deps): bump nh3 from 0.3.6 to 0.3.7 (#43868)
add db60f25ee9a chore(deps-dev): bump babel-jest from 30.4.1 to 30.5.0 in /superset-frontend (#43879)
add e1ce6b601c0 chore(deps-dev): bump jest-environment-jsdom from 30.4.1 to 30.5.0 in /superset-frontend (#43878)
add 635de27b259 fix(explore): prevent editable title over-truncation (#43811)
add 99a910b81c5 fix(echarts): render Plain Timeseries legends as HTML, not canvas (#43314)
add 0636ac4b114 fix(examples): correct chart metadata (#43810)
add 581ef8b7c18 chore(deps): bump antd from 6.6.1 to 6.6.2 in /docs (#43852)
add c1822666dac ci: fail when the published OpenAPI spec is stale (#43841)
add 6956da1de5d fix(sql): close StarRocks SQL parsing and mutation-detection gaps (#43809)
add c3109899e27 fix(dashboard): is_externally_managed still allows edits (#38584)
add 0d025daaf7e fix(plugin-chart-table): defer search until IME composition ends (#43756)
add ee03ee17199 test(treemap): pin border-free labels so tiles render without seams (#43890)
add 9fb02296d85 test(dashboard): migrate tabs resize E2E to Playwright (#41434)
add 67a417812d3 fix(reports): look up fetched report schedules by the list API id fields (#43365)
add db0af5c610e fix(embedded): guard guest payload check against scalar control values (#43577)
add 67605734320 fix(dashboard): show loading state on + Dashboard during the create navigation (#43683)
add b4325e2ce34 fix(handlebars): separate CSS style block from template with a blank line (#43722)
add ff90a60b09d fix(partition): normalize ancestor-path array names to leaf values (#43731)
add c1ca29fe09d fix(core): render duration values instead of NaN:NaN:NaN (#43839)
add b8cdebcaba2 chore(deps-dev): bump jest from 30.4.2 to 30.5.0 in /superset-frontend (#43877)
add ccfaa2302a5 chore(deps): bump slack-sdk from 3.43.0 to 3.44.1 (#43871)
add a49581dd76f chore(deps): bump msgpack from 1.2.1 to 1.2.2 (#43867)
add fb12d4ae120 fix(importers): catch JSONDecodeError in load_configs masked_encrypted_extra merge (#43261)
add c77efa77edf fix(sqla): normalize PostgreSQL date trunc metric units (#42095)
add 01b8eb50a0d feat(semantic-layers): hide Samples tab and disable drill-to-detail for semantic views (#42534)
add 724d9045c67 chore(api): regenerate the spec for ReportScheduleRestApi.report_format (#43910)
add ed4d413d77d ci: remove unused submoduled GHA workflows (#43865)
add 334700fc331 fix(sqla): parenthesize calculated column expressions in SELECT/GROUP BY/ORDER BY and series-limit queries (#43864)
add 0820a0ac141 fix(sqllab): correct Run dropdown crash and caret color regression (#43849)
add b2fd72559a7 feat(gunicorn): statsd support (#32487)
add a3aba2a16a3 ci: show the spec diff when the staleness check fails (#43912)
add 8fb5b8f2fbc feat: migrate Global Async Queries onto the Global Task Framework (#43407)
add 630982e2695 fix(dashboard): resolve chart datasources across types in access checks (#43781)
add 0ac1a6fade3 fix(versioning): keep the dashboard version-history panel inside the viewport (#43836)
add 8963613e920 fix(versioning): match version-history search on the change author name (#43835)
add 3b492233c71 fix(versioning): bound dashboard related history by the chart attach window (#43837)
add 48500822471 fix(dashboard): don't 500 on inconsistent position_json (#43575)
add 1e76fb60981 chore(deps-dev): update teradatasql requirement from >=20.0.0.66 to >=20.0.0.67 (#43925)
add 5c4c8b831f9 chore(deps): bump cryptography from 50.0.0 to 50.0.1 (#43923)
add 9e9a3d06ad8 chore(deps-dev): bump grpcio from 1.83.0 to 1.83.1 (#43922)
add 974f36f94f7 chore(deps-dev): bump google-cloud-bigquery from 3.43.0 to 3.45.0 (#43926)
add 1315f5ff6bc chore(deps): bump pydantic from 2.13.4 to 2.13.5 (#43924)
add b0f3630d624 Merge branch 'master' into remove-deprecated-ascend-db-integration
No new revisions were added by this update.
Summary of changes:
.github/actions/comment-on-pr | 1 -
.github/actions/latest-tag | 1 -
.github/dependabot.yml | 30 +
.github/workflows/check-openapi-spec-drift.yml | 99 +
.github/workflows/docker.yml | 25 +-
.github/workflows/github-action-validator.yml | 4 +-
.github/workflows/hold-label-ci-gate.yml | 4 +-
.github/workflows/latest-release-tag.yml | 42 -
.github/workflows/pre-commit.yml | 2 +-
.github/workflows/superset-e2e.yml | 2 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 4 +-
.github/workflows/superset-playwright.yml | 2 +-
.../workflows/superset-python-integrationtest.yml | 2 +-
.github/workflows/superset-python-presto-hive.yml | 2 +-
.github/workflows/superset-python-unittest.yml | 2 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 2 +-
.github/workflows/superset-websocket.yml | 6 +-
.gitmodules | 6 -
.pre-commit-config.yaml | 11 +-
Dockerfile | 37 +
SECURITY.md | 10 +
UPDATING.md | 139 +
docker-compose-non-dev.yml | 35 +
docker/entrypoints/run-server.sh | 9 +
docker/entrypoints/run-websocket.sh | 44 +
docker/superset-websocket/config.example.json | 4 +-
docs/admin_docs/configuration/cache.mdx | 55 +-
docs/admin_docs/configuration/event-logging.mdx | 27 +-
docs/admin_docs/security/securing_superset.mdx | 5 +-
docs/developer_docs/api.mdx | 9 -
docs/developer_docs/extensions/tasks.md | 194 +-
.../creating-your-first-dashboard.mdx | 6 +
docs/package.json | 2 +-
docs/scripts/fix-openapi-spec.py | 1 -
docs/scripts/generate-api-index.mjs | 1 -
docs/static/resources/openapi.json | 412 +-
docs/yarn.lock | 88 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 2 +-
helm/superset/values.yaml | 5 +-
pyproject.toml | 27 +-
requirements/base.in | 2 +-
requirements/base.txt | 16 +-
requirements/development.txt | 22 +-
scripts/{check-custom-rules.sh => oxfmt.sh} | 44 +-
.../src/superset_core/tasks/decorators.py | 9 +
superset-core/src/superset_core/tasks/models.py | 71 +-
.../src/superset_core/tasks/subscription.py | 140 +
superset-core/src/superset_core/tasks/types.py | 87 +-
superset-embedded-sdk/package-lock.json | 4349 ++-
superset-embedded-sdk/package.json | 20 +-
superset-embedded-sdk/tsconfig.json | 2 +
superset-frontend/jest.config.js | 6 +-
superset-frontend/package-lock.json | 33874 +++++++++++--------
superset-frontend/package.json | 10 +-
.../packages/generator-superset/package.json | 2 +-
.../superset-ui-chart-controls/src/types.ts | 18 +
.../src/utils/getColorFormatters.ts | 204 +-
.../test/utils/getColorFormatters.test.ts | 456 +-
.../src/chart/components/StatefulChart.test.tsx | 200 +-
.../src/chart/components/StatefulChart.tsx | 78 +-
.../packages/superset-ui-core/src/chart/index.ts | 4 +-
.../src/chart/models/ChartProps.ts | 22 +-
.../src/components/DeleteModal/index.tsx | 3 +
.../DropdownButton/DropdownButton.test.tsx | 14 +
.../DynamicEditableTitle.regression.test.tsx | 115 -
.../DynamicEditableTitle.test.tsx | 184 +-
.../src/components/DynamicEditableTitle/index.tsx | 23 +-
.../TableCollection/TableCollection.test.tsx | 26 +
.../src/components/TableCollection/index.tsx | 68 +-
.../src/query/buildQueryContext.ts | 4 +
.../superset-ui-core/src/query/types/Query.ts | 2 +
.../src/query/types/QueryFormData.ts | 2 +
.../src/time-format/utils/stringifyTimeInput.ts | 15 +-
.../test/query/buildQueryContext.test.ts | 13 +
.../time-format/utils/stringifyTimeInput.test.ts | 58 +
.../playwright/pages/DashboardPage.ts | 19 +
.../tests/dashboard/dashboard-tabs.spec.ts | 222 +
.../tests/dashboard/dashboard-test-helpers.ts | 19 +-
.../src/controlPanel.tsx | 3 +
.../src/transformProps.ts | 2 +
.../src/utils/DateWithFormatter.ts | 7 +
.../test/transformProps.test.ts | 57 +
.../test/utils/DateWithFormatter.test.ts | 60 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 60 +
.../src/Timeseries/EchartsTimeseries.tsx | 125 +-
.../src/Timeseries/TimeseriesLegend.tsx | 196 +
.../src/Timeseries/transformProps.ts | 178 +-
.../src/Timeseries/transformers.ts | 73 +
.../plugin-chart-echarts/src/Timeseries/types.ts | 19 +
.../test/Timeseries/Bar/transformProps.test.ts | 138 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 223 +-
.../test/Timeseries/transformProps.test.ts | 370 +-
.../test/Treemap/transformProps.test.ts | 44 +
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugin-chart-handlebars/src/Handlebars.tsx | 13 +-
.../src/components/Handlebars/HandlebarsViewer.tsx | 51 +-
.../test/Handlebars.test.tsx | 194 +
.../plugin-chart-partition/src/Partition.ts | 29 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/DataTable/components/GlobalFilter.tsx | 33 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 11 +-
.../plugin-chart-table/src/controlPanel.tsx | 3 +
.../plugin-chart-table/src/transformProps.ts | 2 +
.../src/utils/DateWithFormatter.ts | 7 +
.../plugin-chart-table/test/TableChart.test.tsx | 277 +
.../test/utils/DateWithFormatter.test.ts | 60 +
superset-frontend/spec/helpers/shim.tsx | 2 +
.../RunQueryActionButton.test.tsx | 24 +
.../components/RunQueryActionButton/index.tsx | 6 +-
superset-frontend/src/components/Chart/Chart.tsx | 6 +
.../src/components/Chart/ChartContainer.tsx | 13 +-
.../src/components/Chart/ChartRenderer.test.tsx | 34 +
.../src/components/Chart/ChartRenderer.tsx | 33 +-
.../src/components/Chart/DrillBy/DrillByModal.tsx | 17 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 15 +-
.../Chart/DrillDetail/DrillDetailPane.tsx | 7 +-
.../src/components/Chart/chartAction.ts | 188 +-
.../src/components/Chart/chartActions.test.ts | 117 +-
.../ErrorMessage/PreformattedErrorDescription.tsx} | 25 +-
.../src/components/ListView/ListView.tsx | 4 +
.../DashboardBuilder/DashboardBuilder.tsx | 47 +-
.../dashboard/components/PropertiesModal/index.tsx | 40 +
.../sections/AsyncModeSection.test.tsx | 48 +
.../PropertiesModal/sections/AsyncModeSection.tsx | 60 +
.../components/PropertiesModal/sections/index.ts | 1 +
.../FilterBar/FilterControls/FilterValue.test.tsx | 60 +-
.../FilterBar/FilterControls/FilterValue.tsx | 48 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 48 +-
superset-frontend/src/dashboard/types.ts | 2 +
.../src/dashboard/util/permissionUtils.test.ts | 1 +
.../DataTablesPane/components/SamplesPane.tsx | 7 +-
.../DataTablesPane/components/useResultsPane.tsx | 7 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 18 +-
.../DataTablesPane/test/SamplesPane.test.tsx | 3 +-
.../DataTablesPane/test/useResultsPane.test.tsx | 18 +
.../src/explore/components/SaveModal.test.tsx | 122 +-
.../src/explore/components/SaveModal.tsx | 16 +-
.../ConditionalFormattingControl.tsx | 3 +
.../FormattingPopover.tsx | 2 +
.../FormattingPopoverContent.test.tsx | 773 +-
.../FormattingPopoverContent.tsx | 332 +-
.../ConditionalFormattingControl/constants.ts | 17 +-
.../controls/ConditionalFormattingControl/types.ts | 12 +
.../src/explore/exploreUtils/index.ts | 18 +-
.../src/features/home/DashboardTable.test.tsx | 8 +
.../src/features/home/DashboardTable.tsx | 7 +
.../HeaderReportDropdown/index.test.tsx | 31 +
.../reports/ReportModal/ReportModal.test.tsx | 166 +
.../src/features/reports/ReportModal/actions.ts | 2 +
.../src/features/reports/ReportModal/index.tsx | 16 +-
.../features/reports/ReportModal/reducer.test.ts | 82 +-
.../src/features/reports/ReportModal/reducer.ts | 12 +-
superset-frontend/src/features/reports/types.ts | 2 +
.../src/features/tasks/LiveDuration.test.tsx | 100 +
.../src/features/tasks/LiveDuration.tsx | 57 +
.../tasks/TaskDependenciesPopover.test.tsx | 83 +
.../src/features/tasks/TaskDependenciesPopover.tsx | 141 +
.../src/features/tasks/TaskPayloadPopover.test.tsx | 74 +
.../src/features/tasks/TaskPayloadPopover.tsx | 45 +-
.../src/features/tasks/timeUtils.test.ts | 12 +-
superset-frontend/src/features/tasks/timeUtils.ts | 59 +-
superset-frontend/src/features/tasks/types.ts | 104 +-
.../versionHistory/ChartVersionPreview.test.tsx | 21 +-
.../versionHistory/ChartVersionPreview.tsx | 17 +-
.../DashboardVersionHistory.test.tsx | 55 +-
superset-frontend/src/hooks/useTabId.test.ts | 153 +
superset-frontend/src/hooks/useTabId.ts | 166 +-
.../src/middleware/asyncEvent.test.ts | 1316 +-
superset-frontend/src/middleware/asyncEvent.ts | 810 +-
superset-frontend/src/middleware/realtime.test.ts | 390 +
superset-frontend/src/middleware/realtime.ts | 451 +
.../DashboardList/DashboardList.behavior.test.tsx | 30 +
.../src/pages/DashboardList/index.tsx | 8 +
.../src/pages/TaskList/TaskList.test.tsx | 24 +-
superset-frontend/src/pages/TaskList/index.tsx | 217 +-
superset-frontend/src/types/Dashboard.ts | 1 +
superset-frontend/src/utils/asyncMode.test.ts | 91 +
superset-frontend/src/utils/asyncMode.ts | 69 +
.../src/utils/navigationUtils.test.ts | 155 +
superset-frontend/src/utils/navigationUtils.ts | 31 +-
superset-frontend/src/views/CRUD/hooks.test.tsx | 232 +
superset-frontend/src/views/CRUD/hooks.ts | 112 +
superset-websocket/.oxfmtrc.json | 1 -
superset-websocket/Dockerfile | 8 +-
superset-websocket/README.md | 272 +-
superset-websocket/config.example.json | 4 +-
superset-websocket/config.test.json | 4 +-
superset-websocket/eslint.config.mjs | 50 -
{docs => superset-websocket}/oxlint.json | 41 +-
superset-websocket/package-lock.json | 2489 +-
superset-websocket/package.json | 24 +-
superset-websocket/spec/config.test.ts | 30 +
superset-websocket/spec/index.test.ts | 1155 +-
superset-websocket/src/config.ts | 76 +-
superset-websocket/src/index.ts | 778 +-
superset-websocket/utils/README.md | 6 +-
superset-websocket/utils/client-ws-app/app.js | 18 +-
superset-websocket/utils/client-ws-app/bin/www | 20 +-
.../utils/client-ws-app/package.json | 1 +
.../utils/client-ws-app/public/javascripts/app.js | 2 +-
.../utils/client-ws-app/routes/index.js | 26 +-
superset-websocket/utils/loadtest.js | 74 +-
superset/async_events/api.py | 179 -
superset/async_events/async_query_manager.py | 468 -
.../async_events/async_query_manager_factory.py | 35 -
superset/charts/data/api.py | 177 +-
superset/charts/data/query_context_cache_loader.py | 30 -
superset/charts/schemas.py | 91 +-
superset/cli/update.py | 17 +-
superset/commands/chart/create.py | 2 +-
.../chart/data/create_async_job_command.py | 43 -
superset/commands/chart/data/get_data_command.py | 4 +
superset/commands/chart/update.py | 7 +-
superset/commands/dashboard/update.py | 14 +-
superset/commands/distributed_lock/acquire.py | 32 +-
superset/commands/distributed_lock/base.py | 17 +-
superset/commands/distributed_lock/release.py | 76 +-
superset/commands/importers/v1/utils.py | 14 +
superset/commands/tasks/cancel.py | 117 +-
superset/commands/tasks/exceptions.py | 7 +
superset/commands/tasks/internal_update.py | 43 +-
superset/commands/tasks/reap.py | 187 +
superset/commands/tasks/submit.py | 292 +-
superset/common/query_context.py | 35 +-
superset/common/query_context_factory.py | 4 +
superset/common/query_context_processor.py | 199 +-
superset/common/query_object.py | 4 +
superset/common/query_object_factory.py | 13 +-
superset/common/query_serialization.py | 131 +
superset/common/utils/query_cache_manager.py | 16 +-
superset/config.py | 200 +-
superset/connectors/sqla/models.py | 30 +-
superset/constants.py | 2 +-
superset/coordination/__init__.py | 37 +
superset/coordination/base.py | 567 +
.../cache_backend.py | 267 +-
.../rank.py => coordination/exceptions.py} | 28 +-
superset/coordination/types.py | 85 +
superset/daos/base.py | 43 +-
superset/daos/database.py | 3 +-
superset/daos/key_value.py | 9 +-
superset/daos/semantic_layer.py | 6 +-
superset/daos/tasks.py | 521 +-
superset/dashboards/api.py | 1 +
superset/dashboards/filters.py | 50 +-
superset/dashboards/schemas.py | 4 +
superset/db_engine_specs/base.py | 13 +
superset/db_engine_specs/postgres.py | 16 +-
superset/db_engine_specs/snowflake.py | 10 +
superset/distributed_lock/__init__.py | 7 +-
superset/examples/birth_names.py | 55 +-
.../datasets/project_management.yaml | 2 +-
.../charts/Quarterly_Sales_By_Product_Line.yaml | 2 +-
.../charts/Revenue_by_Deal_Size.yaml | 2 +-
.../charts/Messages_per_Channel.yaml | 2 +-
.../usa_births_names/charts/Genders_by_State.yaml | 2 +-
.../charts/Top_10_Boy_Name_Share.yaml | 4 +-
.../charts/Top_10_Girl_Name_Share.yaml | 4 +-
.../examples/usa_births_names/charts/Trends.yaml | 2 +-
...op_10_Games_Proportion_of_Sales_in_Markets.yaml | 2 +-
.../Total_Sales_per_Market_Grouped_by_Genre.yaml | 2 +-
superset/examples/world_bank.py | 25 +-
.../examples/world_health/charts/Growth_Rate.yaml | 2 +-
.../world_health/charts/World_s_Pop_Growth.yaml | 2 +-
superset/extensions/__init__.py | 6 -
superset/initialization/__init__.py | 58 +-
..._7e2c9a4f1b83_create_task_dependencies_table.py | 195 +
superset/models/core.py | 7 +
superset/models/dashboard.py | 128 +-
superset/models/helpers.py | 225 +-
superset/models/slice.py | 54 +
superset/models/sql_lab.py | 25 +-
superset/models/task_dependencies.py | 69 +
superset/models/task_subscribers.py | 38 +-
superset/models/tasks.py | 139 +-
superset/reports/api.py | 1 +
superset/security/manager.py | 110 +-
superset/sql/dialects/__init__.py | 2 +
superset/sql/dialects/postgres.py | 79 +
superset/sql/dialects/starrocks.py | 813 +
superset/sql/metric_normalization.py | 181 +
superset/sql/parse.py | 106 +-
superset/tasks/api.py | 110 +-
superset/tasks/async_queries.py | 499 +-
superset/tasks/context.py | 394 +-
superset/tasks/decorators.py | 326 +-
superset/tasks/dependencies.py | 126 +
superset/tasks/filters.py | 20 +-
superset/tasks/guest.py | 86 +
superset/tasks/heartbeat.py | 167 +
superset/tasks/locks.py | 84 +-
superset/tasks/manager.py | 895 +-
superset/tasks/query_cancel.py | 165 +
superset/tasks/registry.py | 36 +-
superset/tasks/scheduler.py | 297 +-
superset/tasks/schemas.py | 161 +-
superset/tasks/subscription.py | 84 +
superset/tasks/utils.py | 197 +-
superset/utils/cache.py | 30 +-
superset/utils/cache_manager.py | 4 +-
superset/utils/feature_flag_manager.py | 64 +-
superset/versioning/activity/orchestrator.py | 19 +-
superset/versioning/activity/queries.py | 83 +-
superset/views/base.py | 15 +-
superset/views/datasource/views.py | 96 +-
.../{mcp_service/theme => websocket}/__init__.py | 9 +-
superset/websocket/channel.py | 234 +
.../utils/__init__.py => websocket/permissions.py} | 23 +-
tests/integration_tests/async_events/api_tests.py | 210 -
tests/integration_tests/charts/commands_tests.py | 88 +-
tests/integration_tests/charts/data/api_tests.py | 131 +-
tests/integration_tests/dashboards/api_tests.py | 2 +
tests/integration_tests/datasource_tests.py | 10 +-
.../db_engine_specs/base_engine_spec_tests.py | 7 +-
tests/integration_tests/query_context_tests.py | 73 +
tests/integration_tests/reports/api_tests.py | 1 +
tests/integration_tests/sqla_models_tests.py | 59 +-
tests/integration_tests/superset_test_config.py | 1 -
tests/integration_tests/tasks/api_tests.py | 230 +
.../integration_tests/tasks/async_queries_tests.py | 155 -
.../tasks/commands/test_cancel.py | 174 +-
.../integration_tests/tasks/commands/test_reap.py | 170 +
.../tasks/commands/test_submit.py | 54 +
.../integration_tests/tasks/test_sync_join_wait.py | 6 +-
tests/unit_tests/async_events/__init__.py | 16 -
.../async_events/async_query_manager_tests.py | 535 -
.../charts/data/test_empty_query_context.py | 7 +
tests/unit_tests/charts/test_chart_data_api.py | 183 +-
.../test_dynamodb.py => cli/update_test.py} | 38 +-
.../chart/create_async_job_command_test.py | 51 -
tests/unit_tests/commands/dashboard/update_test.py | 82 +
.../unit_tests/commands/importers/v1/utils_test.py | 102 +
.../unit_tests/commands/tasks}/__init__.py | 0
.../commands/tasks/test_internal_update.py | 65 +
.../unit_tests/common/test_async_min_cache_ttl.py | 67 +
.../common/test_query_context_processor.py | 186 +-
.../common/test_query_context_processor_timing.py | 7 +-
.../unit_tests/common/test_query_object_factory.py | 23 +
.../unit_tests/common/test_query_serialization.py | 193 +
tests/unit_tests/connectors/sqla/models_test.py | 41 +
.../unit_tests/coordination}/__init__.py | 0
.../test_cache_backend.py | 89 +-
tests/unit_tests/coordination/test_service.py | 458 +
tests/unit_tests/daos/test_tasks.py | 424 +
tests/unit_tests/dashboards/api_test.py | 79 +
.../dashboards/semantic_view_access_test.py | 645 +
tests/unit_tests/db_engine_specs/test_base.py | 7 +
tests/unit_tests/db_engine_specs/test_postgres.py | 66 +
tests/unit_tests/db_engine_specs/test_redshift.py | 32 +
.../distributed_lock/distributed_lock_tests.py | 243 +-
tests/unit_tests/feature_flag_test.py | 82 +
.../check_async_query_secret_test.py | 140 -
.../initialization/check_encryption_engine_test.py | 2 +-
.../initialization/check_websocket_secret_test.py | 68 +
tests/unit_tests/initialization_test.py | 1 -
tests/unit_tests/jinja_context_test.py | 6 +-
tests/unit_tests/models/dashboard_test.py | 571 +
tests/unit_tests/models/helpers_test.py | 597 +-
tests/unit_tests/security/manager_test.py | 74 +
.../test_realtime_notification_permissions.py | 61 +
tests/unit_tests/sql/metric_normalization_tests.py | 255 +
tests/unit_tests/sql/parse_tests.py | 472 +
tests/unit_tests/subjects/test_raise_for_access.py | 22 +-
tests/unit_tests/tasks/test_async_queries.py | 661 +-
tests/unit_tests/tasks/test_context.py | 92 +
tests/unit_tests/tasks/test_decorators.py | 126 +-
tests/unit_tests/tasks/test_dependencies.py | 499 +
tests/unit_tests/tasks/test_filters.py | 61 +
tests/unit_tests/tasks/test_guest.py | 127 +
tests/unit_tests/tasks/test_handlers.py | 161 +-
tests/unit_tests/tasks/test_heartbeat.py | 157 +
tests/unit_tests/tasks/test_locks.py | 111 +
tests/unit_tests/tasks/test_manager.py | 881 +-
tests/unit_tests/tasks/test_models.py | 73 +
tests/unit_tests/tasks/test_query_cancel.py | 207 +
tests/unit_tests/tasks/test_reap.py | 193 +
tests/unit_tests/tasks/test_scheduler_executor.py | 185 +
tests/unit_tests/tasks/test_schemas.py | 89 +-
tests/unit_tests/tasks/test_submit.py | 126 +
tests/unit_tests/tasks/test_subscription.py | 68 +
tests/unit_tests/tasks/test_timeout.py | 335 +-
tests/unit_tests/tasks/test_utils.py | 19 +-
tests/unit_tests/utils/cache_test.py | 45 +
tests/unit_tests/versioning/test_activity.py | 127 +
tests/unit_tests/views/datasource/views_test.py | 157 +-
tests/unit_tests/views/test_base.py | 51 +
.../unit_tests/websocket}/__init__.py | 0
tests/unit_tests/websocket/test_channel.py | 319 +
391 files changed, 53692 insertions(+), 25910 deletions(-)
delete mode 160000 .github/actions/comment-on-pr
delete mode 160000 .github/actions/latest-tag
create mode 100644 .github/workflows/check-openapi-spec-drift.yml
delete mode 100644 .github/workflows/latest-release-tag.yml
create mode 100755 docker/entrypoints/run-websocket.sh
copy scripts/{check-custom-rules.sh => oxfmt.sh} (55%)
create mode 100644 superset-core/src/superset_core/tasks/subscription.py
delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/DynamicEditableTitle/DynamicEditableTitle.regression.test.tsx
create mode 100644 superset-frontend/packages/superset-ui-core/test/time-format/utils/stringifyTimeInput.test.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/dashboard-tabs.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/DateWithFormatter.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/TimeseriesLegend.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-handlebars/test/Handlebars.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-table/test/utils/DateWithFormatter.test.ts
copy superset-frontend/{packages/superset-ui-core/src/components/Badge/index.tsx => src/components/ErrorMessage/PreformattedErrorDescription.tsx} (65%)
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AsyncModeSection.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AsyncModeSection.tsx
create mode 100644 superset-frontend/src/features/tasks/LiveDuration.test.tsx
create mode 100644 superset-frontend/src/features/tasks/LiveDuration.tsx
create mode 100644 superset-frontend/src/features/tasks/TaskDependenciesPopover.test.tsx
create mode 100644 superset-frontend/src/features/tasks/TaskDependenciesPopover.tsx
create mode 100644 superset-frontend/src/features/tasks/TaskPayloadPopover.test.tsx
create mode 100644 superset-frontend/src/hooks/useTabId.test.ts
create mode 100644 superset-frontend/src/middleware/realtime.test.ts
create mode 100644 superset-frontend/src/middleware/realtime.ts
create mode 100644 superset-frontend/src/utils/asyncMode.test.ts
create mode 100644 superset-frontend/src/utils/asyncMode.ts
delete mode 100644 superset-websocket/eslint.config.mjs
copy {docs => superset-websocket}/oxlint.json (89%)
delete mode 100644 superset/async_events/api.py
delete mode 100644 superset/async_events/async_query_manager.py
delete mode 100644 superset/async_events/async_query_manager_factory.py
delete mode 100644 superset/charts/data/query_context_cache_loader.py
delete mode 100644 superset/commands/chart/data/create_async_job_command.py
create mode 100644 superset/commands/tasks/reap.py
create mode 100644 superset/common/query_serialization.py
create mode 100644 superset/coordination/__init__.py
create mode 100644 superset/coordination/base.py
rename superset/{async_events => coordination}/cache_backend.py (75%)
copy superset/{utils/pandas_postprocessing/rank.py => coordination/exceptions.py} (58%)
create mode 100644 superset/coordination/types.py
create mode 100644 superset/migrations/versions/2026-08-21_12-00_7e2c9a4f1b83_create_task_dependencies_table.py
create mode 100644 superset/models/task_dependencies.py
create mode 100644 superset/sql/dialects/postgres.py
create mode 100644 superset/sql/dialects/starrocks.py
create mode 100644 superset/sql/metric_normalization.py
create mode 100644 superset/tasks/dependencies.py
create mode 100644 superset/tasks/guest.py
create mode 100644 superset/tasks/heartbeat.py
create mode 100644 superset/tasks/query_cancel.py
create mode 100644 superset/tasks/subscription.py
copy superset/{mcp_service/theme => websocket}/__init__.py (74%)
create mode 100644 superset/websocket/channel.py
copy superset/{mcp_service/utils/__init__.py => websocket/permissions.py} (59%)
delete mode 100644 tests/integration_tests/async_events/api_tests.py
delete mode 100644 tests/integration_tests/tasks/async_queries_tests.py
create mode 100644 tests/integration_tests/tasks/commands/test_reap.py
delete mode 100644 tests/unit_tests/async_events/__init__.py
delete mode 100644 tests/unit_tests/async_events/async_query_manager_tests.py
copy tests/unit_tests/{db_engine_specs/test_dynamodb.py => cli/update_test.py} (52%)
delete mode 100644 tests/unit_tests/commands/chart/create_async_job_command_test.py
create mode 100644 tests/unit_tests/commands/dashboard/update_test.py
rename {superset/async_events => tests/unit_tests/commands/tasks}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/tasks/test_internal_update.py
create mode 100644 tests/unit_tests/common/test_async_min_cache_ttl.py
create mode 100644 tests/unit_tests/common/test_query_serialization.py
copy {scripts => tests/unit_tests/coordination}/__init__.py (100%)
rename tests/unit_tests/{async_events => coordination}/test_cache_backend.py (56%)
create mode 100644 tests/unit_tests/coordination/test_service.py
create mode 100644 tests/unit_tests/dashboards/semantic_view_access_test.py
delete mode 100644 tests/unit_tests/initialization/check_async_query_secret_test.py
create mode 100644 tests/unit_tests/initialization/check_websocket_secret_test.py
create mode 100644 tests/unit_tests/security/test_realtime_notification_permissions.py
create mode 100644 tests/unit_tests/sql/metric_normalization_tests.py
create mode 100644 tests/unit_tests/tasks/test_context.py
create mode 100644 tests/unit_tests/tasks/test_dependencies.py
create mode 100644 tests/unit_tests/tasks/test_guest.py
create mode 100644 tests/unit_tests/tasks/test_heartbeat.py
create mode 100644 tests/unit_tests/tasks/test_locks.py
create mode 100644 tests/unit_tests/tasks/test_models.py
create mode 100644 tests/unit_tests/tasks/test_query_cancel.py
create mode 100644 tests/unit_tests/tasks/test_reap.py
create mode 100644 tests/unit_tests/tasks/test_scheduler_executor.py
create mode 100644 tests/unit_tests/tasks/test_submit.py
create mode 100644 tests/unit_tests/tasks/test_subscription.py
copy {scripts => tests/unit_tests/websocket}/__init__.py (100%)
create mode 100644 tests/unit_tests/websocket/test_channel.py