This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a change to branch remove-legacy-viz-pipeline
in repository https://gitbox.apache.org/repos/asf/superset.git


 discard 50b1caeefa5 chore: drop unused feature_flag_manager import after rebase
 discard ad7d88d5e2d docs(embedded): document the iframe session cookie race in 
the pivot spec
 discard 10327ff3b43 test(embedded): store a query_context on the pivot 
collapse fixture chart
 discard 5ade216a2a0 test(charts): update warm-up cache assertions for the 
actionable message
 discard e189de7c240 style: prettier formatting for UPDATING.md and 
SavedQueries test
 discard d70eb0aac90 fix(time-table): escape backslashes in flattened labels; 
actionable null-query-context errors
 discard 1fc9366a15b feat(bullet): rebuild the Bullet Chart on ECharts (#42225)
 discard 4224c6a7e1f feat(time-pivot): rebuild Time-series Period Pivot on 
ECharts (#42245)
 discard fd6b9e6a365 feat(timeseries): percent-change rebasing with a draggable 
baseline (#42247)
 discard 76e270ae119 fix: cast Arc test color accessors through unknown for tsc
 discard e4390456a7f fix: repair type errors from removed useLegacyApi metadata 
field
 discard 9580a5bf78d fix(deck-arc): default missing layer colors instead of 
crashing
 discard 2161e67aeb9 feat(deck-multi): surface layer load failures in the chart
 discard f1180dcda30 test(plugins): cover the migrated 
calendar/chord/country-map registration
 discard bfb19fce449 fix(deck-multi): query layers against their real 
datasource, not stale params
 discard 6bb18cc5c31 fix(deck-multi): correct the points-collection typing to 
unblock tsc
 discard 9cedbfe08d3 fix(deck-multi): autozoom to layer data in the v1 fetch 
path
 discard 137eca1c7a6 chore(paired-t-test): drop the unused prop-types dependency
 discard 83fb70c8361 fix(paired-t-test): bound the scroll container to the 
chart height
 discard 13538da7349 refactor(paired-t-test): use the antd Table and drop the 
reactable dependency
 discard 6e72487d882 fix(paired-t-test): scroll the chart when tables overflow 
its height
 discard f903ea40395 fix(paired-t-test): render the table without the reactable 
dependency
 discard d968b63b8f4 fix(tests): drop removed useLegacyApi prop from 
ChartRenderer test metadata
 discard 65627b361cb test(paired-t-test): prove the v1 pipeline renders table 
rows end-to-end
 discard 0484e5123f5 fix(explore): honor chart enableNoResults metadata in 
ChartRenderer
 discard 8b504405e50 test(plugins): regression guards from the migration bug 
sweep
 discard dd47295dcfd test(paired-t-test): mock the statistics module instead of 
removed distributions
 discard 6a145deef0e fix(nvd3,controls): time-pivot x-axis number format + 
single-line async multiselect
 discard 9d43992be29 fix(paired-t-test): compute p-values without the Node-only 
distributions dep
 discard edeb937b885 fix(deck-multi): render the map instead of the no-results 
empty state
 discard 16b991fe3d8 fix(paired-t-test): restore the datetime column control
 discard 67ae57b11b1 fix: rebase bubble-chart migration onto master's current 
alembic head
 discard 1866cd72a92 fix: resolve oxlint unused-var/param errors and remove 
orphaned legacy test
 discard c8a1ee93922 fix: point bubble-chart migration at master's actual 
alembic head
 discard a93096a2569 fix: resolve alembic multiple-heads conflict in migration 
chain
 discard a29ba53ddc6 fix: format Multi.tsx and update Multi.color.test.tsx for 
registry-based layer loading
 discard de440e6425c fix: repair stale package-lock.json and alembic migration 
branch
 discard 904d4db12e1 fix: restore OAuth2RedirectError import after rebase
 discard 4c0e6242921 docs: add UPDATING.md entries for the legacy viz pipeline 
removal and drop the working trackers
 discard da7b1cea23c chore(viz)!: remove explore_json endpoints, viz.py and the 
legacy chart data pipeline (#41750)
 discard 4b4da9eb285 chore(viz): drop the legacy- prefix from migrated chart 
plugin packages (#41751)
 discard 5a0c7c7f74e chore(viz): update SCOPE tracker — all charts migrated, 
phases 2-3 in review
 discard 6de0070dfe7 feat(compare): migrate compare charts to 
echarts_timeseries_line and drop the legacy plugin (#41738)
 discard fdb08023975 feat(deck-multi): migrate deck_multi chart to the v1 chart 
data API (#41730)
 discard 3a22a04623b feat(bubble): migrate saved bubble charts to bubble_v2 and 
drop the legacy plugin (#41728)
 discard 8feed985937 fix(legacy-viz): restore line-engine default ordering for 
horizon and rose (#41732)
 discard 755b229fdfa feat(partition): migrate partition chart to v1 chart data 
API (#41729)
 discard d3055ef0859 chore(viz): update SCOPE tracker after tier 2 completion
 discard 53b1262e300 feat(time-pivot): migrate time_pivot chart to v1 chart 
data API (#41727)
 discard 0137d510a45 feat(rose): migrate rose chart to v1 chart data API 
(#41726)
 discard d6f28c2c215 feat(horizon): migrate horizon chart to v1 chart data API 
(#41725)
 discard 2aeeb5f65bb chore(viz): update SCOPE tracker after tier 1-2 merges
 discard 7492ee282e2 feat(time-table): migrate time_table chart to v1 chart 
data API (#41723)
 discard 36007f2add5 feat(world-map): migrate world_map chart to v1 chart data 
API (#41720)
 discard a18ac1eb37b feat(calendar): migrate cal_heatmap chart to v1 chart data 
API (#41724)
 discard 1ea5f7b42be feat(paired-t-test): migrate paired_ttest chart to v1 
chart data API (#41721)
 discard caf1280bf5f feat(chord): migrate chord chart to v1 chart data API 
(#41719)
 discard 6d8e18a12e1 chore(viz): update SCOPE tracker after phase 0 + tier 1 
merges
 discard 9d806fca937 feat(bullet): migrate bullet chart to v1 chart data API 
(#41718)
 discard 43743a7ab15 feat(parallel-coordinates): migrate para chart to v1 chart 
data API (#41716)
 discard 6df3202a751 feat(country-map): migrate country_map chart to v1 chart 
data API (#41717)
 discard dffc3a1c1a4 chore(viz): phase 0 — remove orphaned viz.py classes and 
nvd3 BoxPlot leftovers (#41715)
 discard cff4c989948 chore(viz): add SCOPE/UPDATES trackers for legacy viz 
pipeline removal
     add 34ebe3d22ad feat(extensions): add a Storage API for extensions (#39171)
     add e5c418a1878 fix(mcp): normalize bracket-shorthand time ranges in 
query_dataset (#42144)
     add b97a7f5f945 chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in 
/superset-embedded-sdk (#42282)
     add cfac7855416 chore(deps): bump fuse.js from 7.4.2 to 7.5.0 in 
/superset-frontend (#42262)
     add c95c8086f5b chore(deps-dev): bump webpack-bundle-analyzer from 5.3.0 
to 5.3.1 in /superset-frontend (#42261)
     add 8329481c2e9 chore(deps-dev): bump the typescript-eslint group across 1 
directory with 2 updates (#42258)
     add 1b882c1f47d test(explore): cover annotation layer link app-root prefix 
in subdire… (#41997)
     add ab8e23d8749 chore(deps-dev): bump svgo from 3.3.3 to 3.3.4 in 
/superset-frontend (#42285)
     add 15d7d365804 chore: remove deprecated from_dttm and to_dttm jinja vars 
(#42279)
     add 2ddea33bb68 fix(models): inline calculated column expression in 
raw-records queries (#34784) (#42040)
     add d62dbdb6940 fix(chat): prevent main content reload when toggling chat 
panel (#42143)
     add 8b1ef3a4cba feat(helm): Add annotations to secrets manifests (#40803)
     add 072ff014062 fix: disable recaptcha for LDAP authentication (#36857)
     add 9c08240fdc8 chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /docs 
(#42287)
     add cae61b51e12 fix(cache): QueryCacheManager.get() should fail open on 
cache backend errors (#42252)
     add 37ef2f381ec chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in /docs 
(#42294)
     add 936b8a84ae7 chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in 
/superset-frontend (#42293)
     add db1959b9b61 chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in 
/superset-frontend/cypress-base (#42292)
     add 60a7c18204b chore(deps): bump svgo from 3.3.3 to 3.3.4 in /docs 
(#42286)
     add 788165b5bbb fix(frontend): jest testRegex matches Windows path 
separators (#41863)
     add a086b2eae9b fix(clickhouse): retry adhoc column type probe with 
comment-safe SQL (#42298)
     add 1392fbc9b24 fix(sql): validate Custom SQL metric has an aggregate 
under GROUP BY (#42199)
     add b71b58e8214 fix(explore): render stopped state when a chart query is 
cancelled (#42270)
     add 46c5e30533d chore(deps-dev): bump oxlint from 1.73.0 to 1.74.0 in 
/superset-frontend (#42304)
     add 248f6e10640 chore(deps): bump zizmorcore/zizmor-action from 0.5.7 to 
0.6.0 (#42302)
     add 6e1954fd51c chore(deps): bump ws from 8.21.0 to 8.21.1 in 
/superset-websocket (#42301)
     add b8f3b768d4f fix(sqllab): Fall back to empty editor tab when linked 
query no longer exists (#42241)
     add 1c0f259e380 refactor(mcp): dedupe list-tool schemas and delete dead 
middleware (#41923)
     add 10ff4707021 fix(ag-grid-table): respect row limit with server 
pagination (#41346)
     add c5935b6904d feat(table/pivot-table): correct non-additive 
totals/subtotals via DB rollup [SIP-216] (#41184)
     add 8c5d465a658 feat(datasets): add RLS filter indicator badge to dataset 
list and explore view (#38807)
     add be5744c4317 fix(chart): updates counties of kenya map (#38019)
     add f50b7b71542 chore(deps): bump actions/setup-go from 6.5.0 to 7.0.0 
(#42303)
     add ac41f61d4ab chore(deps): bump nanoid from 5.0.9 to 6.0.0 in 
/superset-frontend (#42230)
     add 49b42431292 test(dashboard): migrate dashboard load smoke test to 
Playwright (#41432)
     add 894c0191d64 fix(superset_app_root): when used with oauth (#38033)
     add 19159d58c80 refactor: engine enforce SQLAlchemy 2.0 (#42277)
     add 40d9e7d0485 fix(ag-grid-table): avoid ambiguous build query import 
(#42313)
     add 641713f6237 fix: Revert "chore(deps): bump echarts from 5.6.0 to 6.1.0 
in /superset-frontend" (#42314)
     add 8d034ef65ca fix(plugin-chart-echarts): import the -obj locale build so 
time axes render (#42317)
     add e075133a833 fix(pandas_postprocessing): avoid FutureWarning for 
max/min in boxplot MINMAX (#42272)
     add 32937f24d25 fix(heatmap): correct tooltip axis value lookup and 
percentage calculations and add tests (#41864)
     add 17bd286ae9b fix(forecast): resolve time grain robustly for Prophet 
forecasting (#42145)
     add 3ed8889a010 fix: Added PostgreSQL 17.X to the supported database 
versions table in (#42280)
     add ef459c21e82 fix(helm): add MCP HTTPRoute configuration (#42219)
     add b5df673d211 chore(viz): add SCOPE/UPDATES trackers for legacy viz 
pipeline removal
     add bcc58d27f84 chore(viz): phase 0 — remove orphaned viz.py classes and 
nvd3 BoxPlot leftovers (#41715)
     add 45b232cba0d feat(country-map): migrate country_map chart to v1 chart 
data API (#41717)
     add 4e93b58a610 feat(parallel-coordinates): migrate para chart to v1 chart 
data API (#41716)
     add 7e0de356d42 feat(bullet): migrate bullet chart to v1 chart data API 
(#41718)
     add 0f8e2a274d8 chore(viz): update SCOPE tracker after phase 0 + tier 1 
merges
     add deb6cacea72 feat(chord): migrate chord chart to v1 chart data API 
(#41719)
     add 5722b962808 feat(paired-t-test): migrate paired_ttest chart to v1 
chart data API (#41721)
     add 759457264dd feat(calendar): migrate cal_heatmap chart to v1 chart data 
API (#41724)
     add 66e911eeeab feat(world-map): migrate world_map chart to v1 chart data 
API (#41720)
     add df176cfa572 feat(time-table): migrate time_table chart to v1 chart 
data API (#41723)
     add ba2b0d6ea3e chore(viz): update SCOPE tracker after tier 1-2 merges
     add 4f47eda5de1 feat(horizon): migrate horizon chart to v1 chart data API 
(#41725)
     add 32cbc4a7a60 feat(rose): migrate rose chart to v1 chart data API 
(#41726)
     add a9045296d9a feat(time-pivot): migrate time_pivot chart to v1 chart 
data API (#41727)
     add 8b2c07f5f32 chore(viz): update SCOPE tracker after tier 2 completion
     add cd535f89e2b feat(partition): migrate partition chart to v1 chart data 
API (#41729)
     add 2a55ad77f40 fix(legacy-viz): restore line-engine default ordering for 
horizon and rose (#41732)
     add 68324050cdc feat(bubble): migrate saved bubble charts to bubble_v2 and 
drop the legacy plugin (#41728)
     add e17d49bec04 feat(deck-multi): migrate deck_multi chart to the v1 chart 
data API (#41730)
     add 2afa775db5a feat(compare): migrate compare charts to 
echarts_timeseries_line and drop the legacy plugin (#41738)
     add ae15dd883db chore(viz): update SCOPE tracker — all charts migrated, 
phases 2-3 in review
     add c8d6faf7e8b chore(viz): drop the legacy- prefix from migrated chart 
plugin packages (#41751)
     add 105f6d0bc76 chore(viz)!: remove explore_json endpoints, viz.py and the 
legacy chart data pipeline (#41750)
     add 3a03f0a820b docs: add UPDATING.md entries for the legacy viz pipeline 
removal and drop the working trackers
     add 45adb8429d7 fix: restore OAuth2RedirectError import after rebase
     add 5942d570c3b fix: repair stale package-lock.json and alembic migration 
branch
     add 7d45b8ae7e4 fix: format Multi.tsx and update Multi.color.test.tsx for 
registry-based layer loading
     add bba2d5f8126 fix: resolve alembic multiple-heads conflict in migration 
chain
     add 935b4acdbdf fix: point bubble-chart migration at master's actual 
alembic head
     add a42c7e3be04 fix: resolve oxlint unused-var/param errors and remove 
orphaned legacy test
     add 573054346f6 fix: rebase bubble-chart migration onto master's current 
alembic head
     add 239e3a43236 fix(paired-t-test): restore the datetime column control
     add 28eae5956ef fix(deck-multi): render the map instead of the no-results 
empty state
     add 4b3bbe19f62 fix(paired-t-test): compute p-values without the Node-only 
distributions dep
     add 2cd369d02a9 fix(nvd3,controls): time-pivot x-axis number format + 
single-line async multiselect
     add b887c305731 test(paired-t-test): mock the statistics module instead of 
removed distributions
     add 533f90e4c67 test(plugins): regression guards from the migration bug 
sweep
     add 387b742303f fix(explore): honor chart enableNoResults metadata in 
ChartRenderer
     add 3e9fdc4cdf0 test(paired-t-test): prove the v1 pipeline renders table 
rows end-to-end
     add b248c4d7c08 fix(tests): drop removed useLegacyApi prop from 
ChartRenderer test metadata
     add 28d977bc0cb fix(paired-t-test): render the table without the reactable 
dependency
     add 4483cb09f08 fix(paired-t-test): scroll the chart when tables overflow 
its height
     add dbac2448573 refactor(paired-t-test): use the antd Table and drop the 
reactable dependency
     add c9960002f18 fix(paired-t-test): bound the scroll container to the 
chart height
     add 00e95dcb874 chore(paired-t-test): drop the unused prop-types dependency
     add a31210df087 fix(deck-multi): autozoom to layer data in the v1 fetch 
path
     add 4ce589dcda0 fix(deck-multi): correct the points-collection typing to 
unblock tsc
     add 89d64b89b86 fix(deck-multi): query layers against their real 
datasource, not stale params
     add 8f07ab48409 test(plugins): cover the migrated 
calendar/chord/country-map registration
     add 8dcb83fd3c1 feat(deck-multi): surface layer load failures in the chart
     add 792d0fd2b68 fix(deck-arc): default missing layer colors instead of 
crashing
     add ae93dc2041b fix: repair type errors from removed useLegacyApi metadata 
field
     add e5b3ba9efc3 fix: cast Arc test color accessors through unknown for tsc
     add 3256ee4fbb9 feat(timeseries): percent-change rebasing with a draggable 
baseline (#42247)
     add b4f8d87a490 feat(time-pivot): rebuild Time-series Period Pivot on 
ECharts (#42245)
     add fff5351a334 feat(bullet): rebuild the Bullet Chart on ECharts (#42225)
     add a585a0901ee fix(time-table): escape backslashes in flattened labels; 
actionable null-query-context errors
     add 07a6406d975 style: prettier formatting for UPDATING.md and 
SavedQueries test
     add c6f8706aa11 test(charts): update warm-up cache assertions for the 
actionable message
     add 9f39fe3e10b test(embedded): store a query_context on the pivot 
collapse fixture chart
     add a4f74b09bb6 docs(embedded): document the iframe session cookie race in 
the pivot spec
     add 6dfae09cc5f chore: drop unused feature_flag_manager import after rebase
     add 4e715f66dc8 chore(migrations): re-id compare-chart migration and 
re-point bubble migration after rebase

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (50b1caeefa5)
            \
             N -- N -- N   refs/heads/remove-legacy-viz-pipeline (4e715f66dc8)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .github/workflows/github-action-validator.yml      |    2 +-
 .github/workflows/pre-commit.yml                   |    2 +-
 UPDATING.md                                        |   42 +
 .../configuration/configuring-superset.mdx         |    8 +-
 docs/admin_docs/configuration/sql-templating.mdx   |   80 +-
 docs/developer_docs/extensions/architecture.md     |   36 +-
 docs/developer_docs/extensions/overview.md         |   21 +-
 docs/developer_docs/extensions/quick-start.md      |   13 +-
 docs/developer_docs/extensions/storage.md          |  465 ++++++++
 docs/docs/using-superset/sql-templating.mdx        |   18 +-
 docs/sidebarTutorials.js                           |    2 +
 docs/yarn.lock                                     |   18 +-
 helm/superset/Chart.yaml                           |    2 +-
 helm/superset/README.md                            |   12 +-
 helm/superset/templates/httproute.yaml             |   12 +
 helm/superset/templates/secret-env.yaml            |    3 +
 .../superset/templates/secret-superset-config.yaml |    3 +
 helm/superset/templates/secret-ws.yaml             |    3 +
 helm/superset/tests/httproute_test.yaml            |   92 ++
 helm/superset/values.yaml                          |   18 +-
 scripts/benchmark_migration.py                     |    2 +-
 .../src/superset_core/extensions/context.py        |  119 ++
 .../superset_core/extensions/storage/__init__.py   |   79 ++
 .../src/superset_core/extensions/storage/dao.py    |   70 ++
 .../superset_core/extensions/storage/ephemeral.py  |  162 +++
 .../src/superset_core/extensions/storage/models.py |   74 ++
 .../superset_core/extensions/storage/persistent.py |  243 +++++
 .../src/superset_core/extensions/types.py          |   12 +-
 superset-embedded-sdk/package-lock.json            |    6 +-
 .../src/superset_extensions_cli/cli.py             |    4 -
 .../templates/frontend/webpack.config.js.j2        |    8 +-
 superset-frontend/cypress-base/package-lock.json   |   34 +-
 superset-frontend/cypress-base/package.json        |    2 +-
 superset-frontend/jest.config.js                   |    4 +-
 superset-frontend/package-lock.json                |  708 ++++++++----
 superset-frontend/package.json                     |   14 +-
 superset-frontend/packages/superset-core/README.md |    1 +
 .../packages/superset-core/package.json            |    6 +-
 .../packages/superset-core/src/common/index.ts     |    2 -
 .../packages/superset-core/src/extensions/index.ts |   71 ++
 .../packages/superset-core/src/index.ts            |    1 +
 .../packages/superset-core/src/storage/index.ts    |  218 ++++
 .../src/operators/prophetOperator.ts               |   31 +-
 .../test/operators/prophetOperator.test.ts         |  105 ++
 .../packages/superset-ui-core/package.json         |    2 +-
 .../src/components/RlsBadge/RlsBadge.test.tsx      |  121 +++
 .../src/components/RlsBadge/index.tsx              |  108 ++
 .../superset-ui-core/src/components/index.ts       |    5 +
 .../playwright/helpers/api/dashboard.ts            |   85 ++
 .../playwright/pages/DashboardPage.ts              |    9 +
 .../tests/dashboard/clear-all-filters.spec.ts      |   41 +-
 .../tests/dashboard/dashboard-load.spec.ts         |  257 +++++
 .../tests/dashboard/delete-display-control.spec.ts |   41 +-
 .../tests/dashboard/gauge-interval-colors.spec.ts  |   38 +-
 .../mixed-chart-dashboard-filters.spec.ts          |   41 +-
 .../tests/embedded/pivot-collapse-state.spec.ts    |   37 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |   68 +-
 .../test/buildQuery.test.ts                        |  250 ++++-
 .../scripts/Country Map GeoJSON Generator.ipynb    |  Bin 11681332 -> 11683742 
bytes
 .../src/countries/kenya.geojson                    |  Bin 190196 -> 160739 
bytes
 .../src/Heatmap/transformProps.ts                  |   11 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |   73 +-
 .../test/Heatmap/transformProps.test.ts            |  165 +++
 .../test/components/Echart.test.tsx                |   17 +
 .../src/PivotTableChart.tsx                        |  109 +-
 .../src/plugin/buildQuery.ts                       |   68 +-
 .../src/plugin/controlPanel.tsx                    |   45 +-
 .../src/plugin/transformProps.ts                   |   74 +-
 .../src/plugin/utilities.ts                        |  242 +++++
 .../src/react-pivottable/TableRenderers.tsx        |   20 +-
 .../src/react-pivottable/utilities.ts              |  194 ++--
 .../plugins/plugin-chart-pivot-table/src/types.ts  |   22 +-
 .../test/PivotTableChart.test.tsx                  |   50 +-
 .../test/plugin/buildQuery.test.ts                 |   60 +-
 .../test/plugin/transformProps.test.ts             |  153 ++-
 .../test/plugin/utilities.test.ts                  |  466 ++++++++
 .../react-pivottable/nonAdditiveTotals.test.ts     |   69 ++
 .../test/react-pivottable/tableRenders.test.tsx    |  138 ++-
 .../plugin-chart-table/test/buildQuery.test.ts     |   17 +
 .../src/SqlLab/actions/sqlLab.test.ts              |   60 +-
 .../components/PopEditorTab/PopEditorTab.test.tsx  |   23 +-
 .../src/SqlLab/components/PopEditorTab/index.tsx   |   46 +-
 .../src/components/Chart/Chart.test.tsx            |   21 +-
 superset-frontend/src/components/Chart/Chart.tsx   |   24 +
 .../src/components/PanelToolbar/index.tsx          |    2 +-
 .../core/extensions/index.test.ts}                 |   12 +-
 superset-frontend/src/core/extensions/index.ts     |   12 +-
 superset-frontend/src/core/index.ts                |    1 +
 .../src/core/storage/binaryCodec.test.ts           |  109 ++
 superset-frontend/src/core/storage/binaryCodec.ts  |   65 ++
 .../src/core/storage/ephemeralState.test.ts        |  170 +++
 .../src/core/storage/ephemeralState.ts             |  100 ++
 .../types.ts => src/core/storage/index.ts}         |   17 +-
 .../src/core/storage/localState.test.ts            |   96 ++
 superset-frontend/src/core/storage/localState.ts   |   67 ++
 .../src/core/storage/persistentState.test.ts       |  261 +++++
 .../src/core/storage/persistentState.ts            |  143 +++
 .../AnnotationLayer.subdirectory.test.tsx          |   87 ++
 .../controls/DatasourceControl/index.tsx           |    6 +
 .../src/extensions/ExtensionContext.test.ts        |   60 +
 .../src/extensions/ExtensionContext.ts             |   78 ++
 .../src/extensions/ExtensionsLoader.test.ts        |  267 ++++-
 .../src/extensions/ExtensionsLoader.ts             |  123 ++-
 .../src/extensions/webpackFederation.d.ts          |   63 ++
 superset-frontend/src/features/home/RightMenu.tsx  |    4 +-
 .../src/pages/DatasetList/DatasetList.test.tsx     |   34 +
 .../pages/DatasetList/DatasetList.testHelpers.tsx  |   31 +
 superset-frontend/src/pages/DatasetList/index.tsx  |    7 +
 superset-frontend/src/pages/Login/Login.test.tsx   |  281 ++++-
 superset-frontend/src/pages/Login/index.tsx        |    5 +-
 .../src/pages/Register/Register.test.tsx           |  105 +-
 superset-frontend/src/utils/pathUtils.test.ts      |   18 +
 superset-frontend/src/views/App.tsx                |   57 +-
 superset-frontend/webpack.config.js                |    4 +
 superset-websocket/package-lock.json               |    8 +-
 superset-websocket/package.json                    |    2 +-
 superset/app.py                                    |    8 +
 superset/charts/schemas.py                         |   11 +
 superset/cli/test_db.py                            |    3 +
 superset/commands/datasource/list.py               |   23 +
 superset/commands/explore/get.py                   |   21 +
 superset/common/grouping_sets.py                   |  117 ++
 superset/common/query_context_processor.py         |   81 +-
 superset/common/query_object.py                    |    4 +
 superset/common/utils/query_cache_manager.py       |   11 +-
 superset/config.py                                 |   36 +
 superset/connectors/sqla/utils.py                  |   15 +
 superset/core/api/core_api_injection.py            |   56 +-
 superset/core/mcp/core_mcp_injection.py            |    6 +-
 superset/daos/dataset.py                           |  358 +++++-
 superset/datasets/api.py                           |   60 +
 superset/db_engine_specs/base.py                   |   36 +
 superset/db_engine_specs/bigquery.py               |    1 +
 superset/db_engine_specs/clickhouse.py             |   12 +
 superset/db_engine_specs/gsheets.py                |    1 +
 superset/db_engine_specs/hive.py                   |    5 +
 superset/db_engine_specs/postgres.py               |    1 +
 superset/db_engine_specs/presto.py                 |    6 +
 superset/db_engine_specs/snowflake.py              |    1 +
 superset/db_engine_specs/trino.py                  |    1 +
 superset/explore/schemas.py                        |   35 +
 superset/extensions/context.py                     |  136 ++-
 .../common => extensions/storage}/__init__.py      |   14 +-
 superset/extensions/storage/api.py                 |  744 +++++++++++++
 superset/extensions/storage/codecs.py              |   68 ++
 superset/extensions/storage/ephemeral.py           |  141 +++
 superset/extensions/storage/ephemeral_dao.py       |  161 +++
 superset/extensions/storage/filters.py             |   45 +
 superset/extensions/storage/persistent.py          |  244 +++++
 superset/extensions/storage/persistent_dao.py      |  655 +++++++++++
 superset/extensions/storage/persistent_model.py    |  139 +++
 superset/extensions/storage/utils.py               |  112 ++
 superset/initialization/__init__.py                |    2 +
 superset/jinja_context.py                          |   43 +-
 superset/key_value/types.py                        |   17 +
 superset/mcp_service/annotation_layer/schemas.py   |  167 +--
 superset/mcp_service/chart/schemas.py              |  133 +--
 superset/mcp_service/chart/tool/generate_chart.py  |   11 +-
 superset/mcp_service/chart/tool/list_charts.py     |    9 -
 superset/mcp_service/common/pagination_schemas.py  |  182 ++++
 superset/mcp_service/dashboard/schemas.py          |  133 +--
 superset/mcp_service/database/schemas.py           |  126 +--
 superset/mcp_service/dataset/schemas.py            |  163 ++-
 superset/mcp_service/middleware.py                 |  495 +--------
 superset/mcp_service/query/schemas.py              |  109 +-
 superset/mcp_service/report/schemas.py             |  122 +--
 superset/mcp_service/rls/schemas.py                |   89 +-
 superset/mcp_service/role/schemas.py               |  109 +-
 superset/mcp_service/saved_query/schemas.py        |  131 +--
 superset/mcp_service/tag/schemas.py                |  103 +-
 superset/mcp_service/task/schemas.py               |  103 +-
 superset/mcp_service/theme/schemas.py              |  100 +-
 superset/mcp_service/user/schemas.py               |  109 +-
 superset/mcp_service/utils/permissions_utils.py    |  289 +----
 ...13_10-20_4451805bbaa1_remove_double_percents.py |   58 +-
 ...d4e5f6a7b8c9_migrate_bubble_chart_to_echarts.py |    4 +-
 ...360afb61ed_migrate_compare_chart_to_echarts.py} |    4 +-
 ...-00_e5f6a7b8c9d0_add_extension_storage_table.py |  109 ++
 superset/models/core.py                            |    2 +
 superset/models/helpers.py                         |  120 +-
 superset/sql/parse.py                              |   25 +
 superset/superset_typing.py                        |    2 +
 superset/tasks/decorators.py                       |    4 +-
 superset/utils/cache_manager.py                    |   28 +-
 superset/utils/encrypt.py                          |   87 ++
 superset/utils/pandas_postprocessing/boxplot.py    |   10 +-
 superset/utils/pandas_postprocessing/prophet.py    |    2 +-
 superset/views/base.py                             |    4 +-
 tests/integration_tests/dao/conftest.py            |    1 +
 tests/integration_tests/datasets/api_tests.py      |    2 +
 tests/integration_tests/fixtures/datasource.py     |    4 +-
 .../composite_pk_association_tables__tests.py      |    4 +-
 .../migrations/composite_pk_round_trip__tests.py   |    6 +-
 .../integration_tests/non_additive_totals_tests.py |  315 ++++++
 tests/unit_tests/charts/test_filters.py            |    3 +-
 .../unit_tests/charts/test_non_additive_totals.py  |  136 +++
 tests/unit_tests/commands/datasource/list_test.py  |   60 +-
 .../commands/explore/test_get_explore_rls.py       |  123 +++
 tests/unit_tests/common/test_grouping_sets.py      |  112 ++
 .../unit_tests/common/test_query_cache_manager.py  |   57 +
 .../common/test_query_context_processor.py         |  105 ++
 tests/unit_tests/conftest.py                       |    2 +-
 tests/unit_tests/connectors/sqla/models_test.py    |   10 +-
 tests/unit_tests/connectors/sqla/utils_test.py     |  103 +-
 tests/unit_tests/dao/dataset_rls_test.py           |  496 +++++++++
 tests/unit_tests/databases/filters_test.py         |    4 +-
 .../unit_tests/db_engine_specs/test_clickhouse.py  |   50 +
 .../test_grouping_sets_capability.py               |   59 +
 tests/unit_tests/db_engine_specs/test_gsheets.py   |    2 +
 tests/unit_tests/db_engine_specs/test_sqlite.py    |    2 +-
 .../unit_tests/extensions/storage}/__init__.py     |    0
 tests/unit_tests/extensions/storage/conftest.py    |   64 ++
 tests/unit_tests/extensions/storage/test_api.py    | 1146 ++++++++++++++++++++
 tests/unit_tests/extensions/storage/test_codecs.py |   94 ++
 .../unit_tests/extensions/storage/test_context.py  |  124 +++
 .../extensions/storage/test_ephemeral.py           |  276 +++++
 .../extensions/storage/test_ephemeral_dao.py       |  323 ++++++
 .../unit_tests/extensions/storage/test_filters.py  |   78 ++
 .../extensions/storage/test_persistent.py          |  318 ++++++
 .../extensions/storage/test_persistent_dao.py      |  957 ++++++++++++++++
 tests/unit_tests/extensions/storage/test_utils.py  |  219 ++++
 tests/unit_tests/extensions/test_sqlalchemy.py     |   12 +-
 tests/unit_tests/key_value/codec_test.py           |   14 +
 .../mcp_service/dataset/test_dataset_schemas.py    |   15 +
 .../mcp_service/dataset/tool/test_query_dataset.py |  321 ++++++
 .../mcp_service/utils/test_permissions_utils.py    |  107 --
 .../composite_pk_association_tables_test.py        |    2 +-
 .../test_add_deleted_at_to_dashboards.py           |    2 +-
 .../migrations/test_add_deleted_at_to_slices.py    |    2 +-
 .../migrations/test_add_deleted_at_to_tables.py    |    2 +-
 ...rip_metricsqlexpressions_from_ag_grid_params.py |    2 +-
 tests/unit_tests/models/core_test.py               |    6 +-
 tests/unit_tests/models/helpers_test.py            |  512 +++++++++
 .../models/owner_association_tables_test.py        |    2 +-
 .../pandas_postprocessing/test_boxplot.py          |   22 +
 .../pandas_postprocessing/test_prophet.py          |   34 +
 tests/unit_tests/queries/query_object_test.py      |    1 +
 .../security/exclude_users_filter_test.py          |    2 +-
 .../unit_tests/semantic_layers/decorators_test.py  |    4 +-
 tests/unit_tests/sql/parse_tests.py                |   27 +
 tests/unit_tests/utils/filters_test.py             |    9 +-
 .../utils/pandas_sqlalchemy_compat_test.py         |    2 +-
 tests/unit_tests/versioning/test_listener.py       |    2 +-
 tests/unit_tests/views/test_bootstrap_auth.py      |   49 +-
 244 files changed, 17707 insertions(+), 3664 deletions(-)
 create mode 100644 docs/developer_docs/extensions/storage.md
 create mode 100644 helm/superset/tests/httproute_test.yaml
 create mode 100644 superset-core/src/superset_core/extensions/context.py
 create mode 100644 
superset-core/src/superset_core/extensions/storage/__init__.py
 create mode 100644 superset-core/src/superset_core/extensions/storage/dao.py
 create mode 100644 
superset-core/src/superset_core/extensions/storage/ephemeral.py
 create mode 100644 superset-core/src/superset_core/extensions/storage/models.py
 create mode 100644 
superset-core/src/superset_core/extensions/storage/persistent.py
 create mode 100644 
superset-frontend/packages/superset-core/src/storage/index.ts
 create mode 100644 
superset-frontend/packages/superset-ui-core/src/components/RlsBadge/RlsBadge.test.tsx
 create mode 100644 
superset-frontend/packages/superset-ui-core/src/components/RlsBadge/index.tsx
 create mode 100644 
superset-frontend/playwright/tests/dashboard/dashboard-load.spec.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/utilities.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/utilities.test.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/nonAdditiveTotals.test.ts
 copy 
superset-frontend/{packages/superset-ui-core/src/components/Flex/Flex.test.tsx 
=> src/core/extensions/index.test.ts} (76%)
 create mode 100644 superset-frontend/src/core/storage/binaryCodec.test.ts
 create mode 100644 superset-frontend/src/core/storage/binaryCodec.ts
 create mode 100644 superset-frontend/src/core/storage/ephemeralState.test.ts
 create mode 100644 superset-frontend/src/core/storage/ephemeralState.ts
 copy 
superset-frontend/{packages/superset-ui-core/src/components/AsyncEsmComponent/types.ts
 => src/core/storage/index.ts} (75%)
 create mode 100644 superset-frontend/src/core/storage/localState.test.ts
 create mode 100644 superset-frontend/src/core/storage/localState.ts
 create mode 100644 superset-frontend/src/core/storage/persistentState.test.ts
 create mode 100644 superset-frontend/src/core/storage/persistentState.ts
 create mode 100644 
superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.subdirectory.test.tsx
 create mode 100644 superset-frontend/src/extensions/ExtensionContext.test.ts
 create mode 100644 superset-frontend/src/extensions/ExtensionContext.ts
 create mode 100644 superset-frontend/src/extensions/webpackFederation.d.ts
 create mode 100644 superset/common/grouping_sets.py
 copy superset/{mcp_service/common => extensions/storage}/__init__.py (73%)
 create mode 100644 superset/extensions/storage/api.py
 create mode 100644 superset/extensions/storage/codecs.py
 create mode 100644 superset/extensions/storage/ephemeral.py
 create mode 100644 superset/extensions/storage/ephemeral_dao.py
 create mode 100644 superset/extensions/storage/filters.py
 create mode 100644 superset/extensions/storage/persistent.py
 create mode 100644 superset/extensions/storage/persistent_dao.py
 create mode 100644 superset/extensions/storage/persistent_model.py
 create mode 100644 superset/extensions/storage/utils.py
 create mode 100644 superset/mcp_service/common/pagination_schemas.py
 rename 
superset/migrations/versions/{2026-07-02_21-30_e5f6a7b8c9d0_migrate_compare_chart_to_echarts.py
 => 2026-07-02_21-30_88360afb61ed_migrate_compare_chart_to_echarts.py} (97%)
 create mode 100644 
superset/migrations/versions/2026-07-07_12-00_e5f6a7b8c9d0_add_extension_storage_table.py
 create mode 100644 tests/integration_tests/non_additive_totals_tests.py
 create mode 100644 tests/unit_tests/charts/test_non_additive_totals.py
 create mode 100644 tests/unit_tests/commands/explore/test_get_explore_rls.py
 create mode 100644 tests/unit_tests/common/test_grouping_sets.py
 create mode 100644 tests/unit_tests/common/test_query_cache_manager.py
 create mode 100644 tests/unit_tests/dao/dataset_rls_test.py
 create mode 100644 
tests/unit_tests/db_engine_specs/test_grouping_sets_capability.py
 copy {scripts => tests/unit_tests/extensions/storage}/__init__.py (100%)
 create mode 100644 tests/unit_tests/extensions/storage/conftest.py
 create mode 100644 tests/unit_tests/extensions/storage/test_api.py
 create mode 100644 tests/unit_tests/extensions/storage/test_codecs.py
 create mode 100644 tests/unit_tests/extensions/storage/test_context.py
 create mode 100644 tests/unit_tests/extensions/storage/test_ephemeral.py
 create mode 100644 tests/unit_tests/extensions/storage/test_ephemeral_dao.py
 create mode 100644 tests/unit_tests/extensions/storage/test_filters.py
 create mode 100644 tests/unit_tests/extensions/storage/test_persistent.py
 create mode 100644 tests/unit_tests/extensions/storage/test_persistent_dao.py
 create mode 100644 tests/unit_tests/extensions/storage/test_utils.py
 delete mode 100644 tests/unit_tests/mcp_service/utils/test_permissions_utils.py


Reply via email to