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

eschutho pushed a change to branch fix-tiled-fallback-unguarded-screenshot
in repository https://gitbox.apache.org/repos/asf/superset.git


    from a7946db2e77 fix(reports): fail loudly instead of falling back to 
unguarded screenshot when tiled capture fails
     add 48e9ec88e64 style: reformat with ruff 0.9.7 to match CI (fixes 
ruff-format check)
     add 00cb3037e76 feat(dashboard): export dashboard chart data to Excel 
(async, S3 + email) (#41133)
     add 5efbd5b157a chore(deps-dev): bump brace-expansion from 5.0.6 to 5.0.7 
in /superset-websocket (#42267)
     add 7f4d151a37d chore(deps): bump body-parser from 2.2.1 to 2.3.0 in 
/superset-websocket/utils/client-ws-app (#42264)
     add 3fa7cc59862 chore(deps): bump react-diff-viewer-continued from 4.3.0 
to 4.4.0 in /superset-frontend (#42263)
     add 666b6805c40 test(sql): prove Oracle GROUP BY stays explicit for 
virtual-dataset charts (#42255)
     add b362d360193 chore: remove deck.gl JavaScript tooltip controls and 
ENABLE_JAVASCRIPT_CONTROLS (#42126)
     add df34b5d2775 fix(drill-detail): paginate Elasticsearch samples via 
engine cursor (#39509)
     add 1a862476e1e fix(dashboard): add cacheKey, dashboardId, and format 
context to screenshot download error logs (#42121)
     add f999afaac01 fix(mcp): coerce float rowcount to int in ChartData to 
prevent PydanticSerializationError (#42140)
     add e1a265447f6 fix(charts): use chart name in CSV/XLSX/zip export 
filenames (#42193)
     add f9378baba8d test(sqla): add the jinja orderby calculated column to the 
session (#42274)
     add 706a65cb028 fix(docs): allow *.run.app in CSP for the Kapa widget 
backend (#42276)
     add f2967264d28 fix(ci): diff pre-commit changed files against the live 
base branch tip (#42152)
     add 40a13883ea6 refactor: do not cascade to SqlMetric (#42221)
     add 0dd06f3b7b3 fix: dashboard filter regress (#35218)
     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 67924ad35e1 fix(dashboard): offer Exit edit mode when there is nothing 
to discard (#42208)
     add 2926d6f6a9b chore(deps): bump actions/labeler from 6.2.0 to 7.0.0 
(#42332)
     add 1dd3103c246 chore(deps): bump github/codeql-action/analyze from 4.37.0 
to 4.37.1 (#42331)
     add 873da606ddf chore(deps): bump github/codeql-action/init from 4.37.0 to 
4.37.1 (#42334)
     add ab553c37ab9 chore(deps-dev): bump @formatjs/intl-durationformat from 
0.10.17 to 0.10.18 in /superset-frontend (#42337)
     add 66543184913 chore(deps): bump caniuse-lite from 1.0.30001805 to 
1.0.30001806 in /docs (#42333)
     add 2e72080a163 chore(deps): bump echarts to 6.1.0 with locale and 
containLabel guards (#42315) (#42321)
     add c5f6d33d211 docs: add pattern to the list of organisations using 
superset (#42341)
     add cc8edd22318 chore(deps): bump ag-grid from 36.0.0 to 36.0.1 in 
/superset-frontend (#42338)
     add cb319c9b817 fix(mcp): trust dataset is_dttm flag when applying 
time_grain to VARCHAR temporal columns (#42288)
     add f2848d951c4 chore(deps-dev): update taos-ws-py requirement from 
>=0.6.9 to >=0.7.0 (#42344)
     add 6b02a423ef8 chore(deps-dev): bump the storybook group in 
/superset-frontend with 5 updates (#42355)
     add df8bbb548a3 fix(native-filters): keep filter value input caret at 
inline start (#42323)
     add 2317d9cf918 fix(mcp): truncate query-tool responses instead of 
hard-failing (#42244)
     add fdb9c152f06 chore(deps): bump nh3 from 0.3.5 to 0.3.6 (#42349)
     add 6317113ee85 chore(deps): bump pydantic from 2.11.7 to 2.13.4 (#42350)
     add 1049826bc15 chore(deps): bump sqlalchemy-continuum from 1.6.0 to 1.7.0 
(#42351)
     add 206fe7ab120 fix(embedded): stop rejecting guest chart data built from 
control-specific params keys (#42295)
     add 08573c70d0b Merge remote-tracking branch 'origin/master' into 
fix-tiled-fallback-unguarded-screenshot

No new revisions were added by this update.

Summary of changes:
 .github/dependabot.yml                             |    4 +
 .github/workflows/codeql-analysis.yml              |    4 +-
 .github/workflows/github-action-validator.yml      |    2 +-
 .github/workflows/labeler.yml                      |    2 +-
 .github/workflows/pre-commit.yml                   |   22 +-
 RESOURCES/INTHEWILD.yaml                           |    5 +
 UPDATING.md                                        |   93 ++
 docker/pythonpath_dev/superset_config.py           |    1 +
 .../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 +++++++
 .../using-superset/exporting-dashboard-data.mdx    |   99 ++
 docs/docs/using-superset/sql-templating.mdx        |   18 +-
 docs/package.json                                  |    2 +-
 docs/sidebarTutorials.js                           |    2 +
 docs/static/.htaccess                              |    3 +-
 docs/static/feature-flags.json                     |    6 -
 docs/static/img/logos/pattern_logo.png             |  Bin 0 -> 7067 bytes
 docs/yarn.lock                                     |   26 +-
 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 +-
 pyproject.toml                                     |    6 +-
 pytest.ini                                         |    2 +-
 requirements/base.txt                              |   10 +-
 requirements/development.txt                       |   10 +-
 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/.storybook/main.mjs              |    2 +-
 superset-frontend/cypress-base/package-lock.json   |   34 +-
 superset-frontend/cypress-base/package.json        |    2 +-
 superset-frontend/jest.config.js                   |    6 +-
 superset-frontend/package-lock.json                | 1291 +++++++++++++-------
 superset-frontend/package.json                     |   32 +-
 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         |    6 +-
 .../src/components/RlsBadge/RlsBadge.test.tsx      |  121 ++
 .../src/components/RlsBadge/index.tsx              |  108 ++
 .../src/components/Select/AsyncSelect.test.tsx     |   22 +
 .../src/components/Select/AsyncSelect.tsx          |  111 +-
 .../src/components/Select/Select.test.tsx          |   20 +
 .../src/components/Select/Select.tsx               |  136 ++-
 .../superset-ui-core/src/components/index.ts       |    5 +
 .../superset-ui-core/src/utils/featureFlags.ts     |    2 -
 .../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 +-
 .../scripts/Country Map GeoJSON Generator.ipynb    |  Bin 11681332 -> 11683742 
bytes
 .../src/countries/kenya.geojson                    |  Bin 190196 -> 160739 
bytes
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |   68 +-
 .../test/buildQuery.test.ts                        |  250 +++-
 .../src/Heatmap/transformProps.ts                  |   11 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |   64 +-
 .../src/components/echartsLocale.ts                |  108 ++
 .../test/Heatmap/transformProps.test.ts            |  165 +++
 .../test/components/Echart.test.tsx                |   17 +
 .../test/components/echartsLocale.test.ts          |   82 ++
 .../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 +
 .../plugins/preset-chart-deckgl/package.json       |    2 -
 .../src/CategoricalDeckGLContainer.tsx             |    7 -
 .../src/layers/Arc/buildQuery.ts                   |   16 +-
 .../src/layers/Arc/controlPanel.ts                 |   13 -
 .../src/layers/Arc/stories/Arc.stories.tsx         |    4 -
 .../src/layers/Arc/transformProps.ts               |   17 +-
 .../src/layers/Contour/Contour.tsx                 |   16 +-
 .../src/layers/Contour/controlPanel.ts             |   13 -
 .../src/layers/Geojson/Geojson.test.tsx            |   44 -
 .../src/layers/Geojson/Geojson.tsx                 |  114 +-
 .../src/layers/Geojson/buildQuery.ts               |   14 +-
 .../src/layers/Geojson/controlPanel.ts             |  145 +--
 .../preset-chart-deckgl/src/layers/Grid/Grid.tsx   |   16 +-
 .../src/layers/Grid/controlPanel.ts                |   13 -
 .../src/layers/Grid/stories/Grid.stories.tsx       |    4 -
 .../src/layers/Heatmap/Heatmap.tsx                 |   18 +-
 .../src/layers/Heatmap/controlPanel.ts             |   13 -
 .../preset-chart-deckgl/src/layers/Hex/Hex.tsx     |   17 +-
 .../src/layers/Hex/controlPanel.ts                 |   13 -
 .../src/layers/Hex/stories/Hex.stories.tsx         |    4 -
 .../preset-chart-deckgl/src/layers/Path/Path.tsx   |   13 +-
 .../src/layers/Path/buildQuery.test.ts             |    2 -
 .../src/layers/Path/buildQuery.ts                  |    9 -
 .../src/layers/Path/controlPanel.ts                |   13 -
 .../src/layers/Path/stories/Path.stories.tsx       |    4 -
 .../src/layers/Path/transformProps.ts              |   15 +-
 .../src/layers/Polygon/Polygon.tsx                 |    9 +-
 .../src/layers/Polygon/buildQuery.test.ts          |   29 +-
 .../src/layers/Polygon/buildQuery.ts               |    9 -
 .../src/layers/Polygon/controlPanel.ts             |   12 +-
 .../src/layers/Polygon/stories/Polygon.stories.tsx |    4 -
 .../src/layers/Polygon/transformProps.ts           |    6 +-
 .../src/layers/Scatter/buildQuery.test.ts          |   17 -
 .../src/layers/Scatter/buildQuery.ts               |   20 +-
 .../src/layers/Scatter/controlPanel.ts             |   13 -
 .../src/layers/Scatter/stories/Scatter.stories.tsx |    4 -
 .../src/layers/Scatter/transformProps.ts           |    5 +-
 .../src/layers/Screengrid/Screengrid.tsx           |   16 +-
 .../src/layers/Screengrid/controlPanel.ts          |   13 -
 .../Screengrid/stories/Screengrid.stories.tsx      |    4 -
 .../src/layers/buildQueryUtils.ts                  |   20 -
 .../preset-chart-deckgl/src/layers/common.test.ts  |    9 +-
 .../preset-chart-deckgl/src/layers/common.tsx      |   17 +-
 .../src/layers/spatialUtils.test.ts                |   19 +-
 .../preset-chart-deckgl/src/layers/spatialUtils.ts |   48 +-
 .../src/utilities/Shared_DeckGL.tsx                |   87 --
 .../src/utils/crossFiltersDataMask.test.ts         |   46 -
 .../src/utils/crossFiltersDataMask.ts              |    8 +-
 .../preset-chart-deckgl/src/utils/sandbox.ts       |   65 -
 .../src/SqlLab/actions/sqlLab.test.ts              |   60 +-
 .../components/PopEditorTab/PopEditorTab.test.tsx  |   23 +-
 .../src/SqlLab/components/PopEditorTab/index.tsx   |   46 +-
 .../src/chartCustomizations/components/common.ts   |    7 +
 .../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 +++
 .../dashboard/components/Header/Header.test.tsx    |   12 +-
 .../src/dashboard/components/Header/index.tsx      |    7 +-
 .../DownloadMenuItems/DownloadMenuItems.test.tsx   |  148 ++-
 .../components/menu/DownloadMenuItems/index.tsx    |   71 +-
 .../dashboard/hooks/useDownloadScreenshot.test.ts  |   50 +
 .../src/dashboard/hooks/useDownloadScreenshot.ts   |   12 +-
 .../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/features/home/SavedQueries.test.tsx        |   13 +-
 .../components/common.test.tsx}                    |   20 +-
 superset-frontend/src/filters/components/common.ts |    7 +
 .../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                |    6 +-
 superset-websocket/package-lock.json               |   14 +-
 superset-websocket/package.json                    |    2 +-
 .../utils/client-ws-app/package-lock.json          |  108 +-
 superset/app.py                                    |    8 +
 superset/charts/data/api.py                        |   50 +-
 superset/charts/data/dashboard_filter_context.py   |   39 +-
 superset/charts/schemas.py                         |   11 +
 superset/cli/test_db.py                            |    3 +
 superset/commands/dataset/duplicate.py             |    5 +-
 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                                 |   61 +-
 superset/connectors/sqla/models.py                 |    3 +
 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/dashboards/api.py                         |  146 +++
 .../dashboards/excel_export}/__init__.py           |    0
 superset/dashboards/excel_export/email.py          |  180 +++
 superset/dashboards/excel_export/layout.py         |   97 ++
 superset/dashboards/excel_export/screenshot.py     |  103 ++
 superset/dashboards/schemas.py                     |   29 +-
 superset/databases/schemas.py                      |    8 +
 superset/datasets/api.py                           |   60 +
 superset/db_engine_specs/base.py                   |   63 +
 superset/db_engine_specs/bigquery.py               |    1 +
 superset/db_engine_specs/clickhouse.py             |   12 +
 superset/db_engine_specs/elasticsearch.py          |  146 ++-
 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/examples/birth_names.py                   |    4 +-
 .../examples/deckgl_demo/charts/Deck.gl_Path.yaml  |    6 -
 .../deckgl_demo/charts/Deck.gl_Polygons.yaml       |    4 -
 superset/examples/world_bank.py                    |    6 +-
 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/chart_helpers.py        |    4 -
 superset/mcp_service/chart/chart_utils.py          |   87 +-
 superset/mcp_service/chart/schemas.py              |  144 +--
 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                 |  676 +++-------
 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 +----
 superset/mcp_service/utils/token_utils.py          |  244 ++++
 ...13_10-20_4451805bbaa1_remove_double_percents.py |   58 +-
 ...-00_e5f6a7b8c9d0_add_extension_storage_table.py |  109 ++
 superset/models/core.py                            |    2 +
 superset/models/helpers.py                         |  122 +-
 superset/security/manager.py                       |   74 +-
 superset/sql/parse.py                              |   25 +
 superset/superset_typing.py                        |    2 +
 superset/tasks/decorators.py                       |    4 +-
 superset/tasks/export_dashboard_excel.py           |  361 ++++++
 superset/utils/cache_manager.py                    |   28 +-
 superset/utils/encrypt.py                          |   87 ++
 superset/utils/excel.py                            |    9 +-
 superset/utils/excel_streaming.py                  |  250 ++++
 superset/utils/pandas_postprocessing/boxplot.py    |   10 +-
 superset/utils/pandas_postprocessing/prophet.py    |    2 +-
 superset/utils/s3.py                               |   83 ++
 superset/views/base.py                             |    5 +-
 superset/views/datasource/utils.py                 |   85 +-
 superset/views/utils.py                            |   21 +-
 tests/integration_tests/charts/commands_tests.py   |    4 -
 tests/integration_tests/conftest.py                |   12 +-
 tests/integration_tests/dao/conftest.py            |    1 +
 tests/integration_tests/dashboards/api_tests.py    |  169 +++
 tests/integration_tests/databases/api_tests.py     |    8 +
 tests/integration_tests/datasets/api_tests.py      |    3 +
 .../db_engine_specs/base_engine_spec_tests.py      |    3 +-
 tests/integration_tests/fixtures/datasource.py     |    4 +-
 .../fixtures/deck_geojson_form_data.json           |    6 -
 .../fixtures/deck_path_form_data.json              |    6 -
 .../integration_tests/fixtures/energy_dashboard.py |    6 +-
 tests/integration_tests/fixtures/importexport.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/integration_tests/sqla_models_tests.py       |   24 +-
 tests/integration_tests/viz_tests.py               |    5 +-
 tests/unit_tests/charts/test_chart_data_api.py     |  129 +-
 .../charts/test_dashboard_filter_context.py        |  172 +++
 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 ++++++++
 .../dashboards/test_excel_export_email.py          |  157 +++
 .../dashboards/test_excel_export_layout.py         |  105 ++
 .../dashboards/test_excel_export_screenshot.py     |  164 +++
 tests/unit_tests/databases/api_test.py             |    2 +
 tests/unit_tests/databases/filters_test.py         |    4 +-
 .../test_tdengine.py => databases/test_schemas.py} |   27 +-
 tests/unit_tests/db_engine_specs/test_base.py      |   23 +
 .../unit_tests/db_engine_specs/test_clickhouse.py  |   50 +
 .../db_engine_specs/test_elasticsearch.py          |  376 ++++++
 .../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/chart/test_chart_helpers.py        |   12 +-
 .../mcp_service/chart/test_chart_utils.py          |   83 ++
 .../mcp_service/chart/tool/test_get_chart_data.py  |   58 +
 .../mcp_service/dataset/test_dataset_schemas.py    |   15 +
 .../mcp_service/dataset/tool/test_query_dataset.py |  321 +++++
 tests/unit_tests/mcp_service/test_middleware.py    |  295 +++++
 .../mcp_service/utils/test_permissions_utils.py    |  107 --
 .../mcp_service/utils/test_token_utils.py          |  103 ++
 .../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 +-
 tests/unit_tests/models/test_helpers_offset.py     |  125 ++
 .../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 +-
 tests/unit_tests/security/manager_test.py          |   93 ++
 .../unit_tests/semantic_layers/decorators_test.py  |    4 +-
 tests/unit_tests/sql/parse_tests.py                |   56 +
 .../tasks/test_export_dashboard_excel.py           |  401 ++++++
 tests/unit_tests/utils/excel_streaming_tests.py    |  267 ++++
 tests/unit_tests/utils/filters_test.py             |    9 +-
 .../utils/pandas_sqlalchemy_compat_test.py         |    2 +-
 tests/unit_tests/utils/s3_tests.py                 |   95 ++
 tests/unit_tests/utils/webdriver_test.py           |   18 +-
 tests/unit_tests/versioning/test_listener.py       |    2 +-
 {scripts => tests/unit_tests/views}/__init__.py    |    0
 tests/unit_tests/views/datasource/test_utils.py    |  396 ++++++
 tests/unit_tests/views/test_bootstrap_auth.py      |   49 +-
 tests/unit_tests/views/test_utils.py               |   48 -
 384 files changed, 24510 insertions(+), 5386 deletions(-)
 create mode 100644 docs/developer_docs/extensions/storage.md
 create mode 100644 docs/docs/using-superset/exporting-dashboard-data.mdx
 create mode 100644 docs/static/img/logos/pattern_logo.png
 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-echarts/src/components/echartsLocale.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/test/components/echartsLocale.test.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
 delete mode 100644 
superset-frontend/plugins/preset-chart-deckgl/src/utils/sandbox.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
 copy 
superset-frontend/src/{explore/components/controls/DateFilterControl/tests/CurrentCalendarFrame.test.tsx
 => filters/components/common.test.tsx} (50%)
 create mode 100644 superset/common/grouping_sets.py
 copy {scripts => superset/dashboards/excel_export}/__init__.py (100%)
 create mode 100644 superset/dashboards/excel_export/email.py
 create mode 100644 superset/dashboards/excel_export/layout.py
 create mode 100644 superset/dashboards/excel_export/screenshot.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
 create mode 100644 
superset/migrations/versions/2026-07-07_12-00_e5f6a7b8c9d0_add_extension_storage_table.py
 create mode 100644 superset/tasks/export_dashboard_excel.py
 create mode 100644 superset/utils/excel_streaming.py
 create mode 100644 superset/utils/s3.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/dashboards/test_excel_export_email.py
 create mode 100644 tests/unit_tests/dashboards/test_excel_export_layout.py
 create mode 100644 tests/unit_tests/dashboards/test_excel_export_screenshot.py
 copy tests/unit_tests/{db_engine_specs/test_tdengine.py => 
databases/test_schemas.py} (56%)
 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
 create mode 100644 tests/unit_tests/models/test_helpers_offset.py
 create mode 100644 tests/unit_tests/tasks/test_export_dashboard_excel.py
 create mode 100644 tests/unit_tests/utils/excel_streaming_tests.py
 create mode 100644 tests/unit_tests/utils/s3_tests.py
 copy {scripts => tests/unit_tests/views}/__init__.py (100%)
 create mode 100644 tests/unit_tests/views/datasource/test_utils.py
 delete mode 100644 tests/unit_tests/views/test_utils.py


Reply via email to