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