This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/pivot-grand-total-mixed-metrics
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 73546cba662 fix(pivot-table): blank null totals at the format
boundary; clarify re-save step
omit 208f3bf9ab6 fix(pivot-table): use pd.Series for sample variance/std
aggregations
omit 09b67237e8d chore(i18n): regenerate translation catalogs after rebase
onto master
omit 28d895e39d1 fix(pivot-table): fix showValuesAs percent denominators
going blank
omit 1d88887246a fix(pivot-table): address review feedback on result
aggregation restoration
omit 5ce8735b7ee fix(pivot-table): reduce a full-depth cell shared by
multiple records, not just subtotals
omit df7f036a300 fix(pivot-table): keep leaf cells at their own DB-computed
value under a result aggregation
omit e35f2f0bba5 style: apply oxfmt/ruff-format autofixes
omit 668e50fad41 fix(pivot-table): find row/col-subtotal denominators and
keep custom formats under a result aggregation
omit 7ed03c8e1a2 feat(pivot-table): restore result aggregation as a second
aggregation pass (#44660)
omit 49c3af2f419 fix(pivot-table): blank fractionOf denominator leak, add
row-total mixed-metric coverage
omit 273939cc75c fix(pivot-table): stop the grand-total corner from
silently picking one metric
add 4ae8fe71225 fix: size 'Drill to detail' table header correctly (#44807)
add 2c72d4d4fee fix(mcp): use DEFAULT_PAGE_SIZE constant in list_charts
test (#44786)
add 446853004a4 fix(mcp): keep a bubble chart's colors and row limit
across updates (#44618)
add 217e4c0223f fix(frontend): use html2canvas for chart image export on
Safari (#44529)
add c82f97b69d6 chore(deps): bump deck.gl and luma.gl from 9.2.5 to 9.4.0
in /superset-frontend (#42608)
add abdf2e6c702 fix(home): redirect users without an ID before rendering
(#44456)
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement
from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL
and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through
pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an
explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master
(#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name
(#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before
scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts
by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity
reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from
2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0
in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in
/superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0
to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3
in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to
7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes
for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import
support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential
changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24
to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA
(#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13
pytest-cov crash (#44853)
add 0fdfd6660e0 docs(databases): add ClickHouse Managed Postgres (#44870)
add e0483898728 test(explore): cover time range frames, comparison labels,
and metric popover state (#44847)
add c1bb129c218 fix(change-detector): classify changed files by language,
not directory (#44895)
add e606cadff7c chore(mcp): fix malformed tool and prompt docstrings
(#44572)
add ef64bacbaa0 feat(chart): cross-filter by x-axis label on charts with
dimensions (#44869)
add b0ac9ef61f6 test(explore): cover color scheme selection, BigNumber
subheader/trendline, and WorldMap bubbles (#44846)
add 8d25777b995 test(plugin-chart-table): cover server-side sort, query
mode controls, and sort ordering (#44845)
add 8849542bda1 test(explore): cover viz switch and control dependency
logic (#44842)
add 03b61cc2d89 test(explore): add fetchTopNValues unit tests (#44841)
add e32493c9d93 test(explore): add saveModalReducer unit tests (#44839)
add f6155b9e9ea fix(dashboard): show the configured refresh warning
alongside the limit error (#44836)
add 240a4267f85 test(explore): add datasourcesReducer unit tests (#44840)
add bc3698b5d64 test(explore): port remaining deleted Cypress explore
specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed
restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from
post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string
extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails
during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in
CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against
NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to
info (#43520)
add 396030d87e0 docs: remove stale Selenium references after
Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in
instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal
x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync
with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for
Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are
disabled or realtime access is missing (#44796)
add 7260916b905 test(dashboard): cover "View as table" end-to-end for a
view-as-table-only role (#44881)
add 646de3a46b5 test(clickhouse): cover GROUP BY ALL against a real
instance (#40482) (#44879)
add ba453d3cb43 fix(sec): sanitize HTML text before shown as impact item's
label (#43825)
add 2220f53d9db fix(chart): accept quarter and day in end-of time ranges
(#43204)
add 62ab4cae23d fix(sql-lab): avoid duplicate generated result column
names (#44189)
add 743a27f7ed3 fix(chart): sort Heatmap Y-axis by default when unset
(#44588)
add 87bb752814a fix(select): remove Space wrapper from optionRender to fix
option label truncation (#44357)
add d6689283942 fix(sql-lab): use function valueGetter for GridTable row
numbers (#41574)
add 10356c30edb fix(mcp): stop partial-update tools from advertising null
defaults (#44573)
add 6966c1f6ccb fix(cartodiagram): share Pie colors across locations in
Explore (#44794)
add 81466987cbb fix(mcp): use create_proxy in simple_proxy for fastmcp 4
compatibility (#44787)
add ea79c63e878 fix(post-processing): stop treating gaps as zero for
cumprod, cummin and cummax (#44828)
add f1ae8909d85 fix(import): remove duplicate config redefinition in
load_configs (#44932)
add afa98f3391a perf(deletion-retention): one window pass for repeat
predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement
from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector
requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to
1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool
discovery (#44656)
add 2e97c6c0c05 fix(pivot-table): stop the grand-total corner from
silently picking one metric
add 5c622854082 fix(pivot-table): blank fractionOf denominator leak, add
row-total mixed-metric coverage
add cc98704a253 feat(pivot-table): restore result aggregation as a second
aggregation pass (#44660)
add f31088531e7 fix(pivot-table): find row/col-subtotal denominators and
keep custom formats under a result aggregation
add 4093c555b1f style: apply oxfmt/ruff-format autofixes
add 1e9c862da6b fix(pivot-table): keep leaf cells at their own DB-computed
value under a result aggregation
add 853d0ef4f8a fix(pivot-table): reduce a full-depth cell shared by
multiple records, not just subtotals
add 9cb62ec441b fix(pivot-table): address review feedback on result
aggregation restoration
add 69b58aaaabf fix(pivot-table): fix showValuesAs percent denominators
going blank
add abfe1852778 chore(i18n): regenerate translation catalogs after rebase
onto master
add e12ba67c194 fix(pivot-table): use pd.Series for sample variance/std
aggregations
add e3166de0707 fix(pivot-table): blank null totals at the format
boundary; clarify re-save step
add a0cebd65b18 fix(pivot-table): re-point migration at the current
alembic head
add 52727eda272 test(pivot-table): cover sample variance and standard
deviation aggregations
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 (73546cba662)
\
N -- N -- N refs/heads/fix/pivot-grand-total-mixed-metrics
(52727eda272)
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:
.asf.yaml | 1 +
.github/actions/change-detector/action.yml | 5 +
.github/actions/chart-testing-action | 1 -
.github/workflows/chromatic.yml | 134 ++
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-translations.yml | 2 +
.gitmodules | 3 -
UPDATING.md | 94 ++
docs/admin_docs/configuration/alerts-reports.mdx | 57 +-
docs/admin_docs/configuration/cache.mdx | 37 +-
.../configuration/dashboard-performance.mdx | 4 +-
.../importing-exporting-datasources.mdx | 32 +
docs/admin_docs/configuration/mcp-server.mdx | 168 ++-
.../contributing/development-setup.md | 4 +-
docs/developer_docs/contributing/howtos.md | 11 +
docs/developer_docs/testing/backend-testing.md | 3 +-
docs/docs/quickstart.mdx | 3 +
docs/docs/using-superset/recently-archived.mdx | 10 +
.../using-superset/semantic-member-selections.mdx | 62 +
docs/package.json | 2 +-
docs/src/data/databases.json | 19 +
docs/static/resources/openapi.json | 23 +-
docs/yarn.lock | 78 +-
pyproject.toml | 26 +-
requirements/base.txt | 8 +-
requirements/development.txt | 12 +-
scripts/change_detector.py | 60 +
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/types.py | 1 +
.../src/superset_core/semantic_layers/view.py | 14 +
superset-frontend/jest.config.js | 12 +-
superset-frontend/package-lock.json | 953 ++++++------
superset-frontend/package.json | 63 +-
.../src/sections/sections.tsx | 7 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/getColorFormatters.ts | 84 +-
.../src/chart/models/ChartProps.ts | 10 +
.../src/components/Select/AsyncSelect.test.tsx | 8 +
.../src/components/Select/AsyncSelect.tsx | 3 +-
.../src/components/Select/Select.test.tsx | 9 +
.../src/components/Select/Select.tsx | 3 +-
.../src/components/Table/VirtualTable.test.tsx | 83 ++
.../src/components/Table/VirtualTable.tsx | 20 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../src/query/semanticSelection.ts} | 35 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../test/chart/models/ChartProps.test.ts | 22 +-
.../test/query/extractExtras.test.ts | 62 +
.../src/util/transformPropsUtil.ts | 8 +
.../test/util/pieColors.test.ts | 203 +++
.../src/BigNumber/BigNumberViz.test.tsx | 57 +
.../BigNumberWithTrendline/transformProps.test.ts | 72 +
.../src/Heatmap/controlPanel.tsx | 12 +-
.../src/Heatmap/transformProps.ts | 17 +-
.../plugin-chart-echarts/src/Heatmap/types.ts | 6 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 4 +-
.../src/Timeseries/EchartsTimeseries.test.tsx | 116 +-
.../src/Timeseries/EchartsTimeseries.tsx | 29 +-
.../src/Timeseries/transformProps.ts | 7 +-
.../src/Timeseries/transformers.ts | 6 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 4 +
.../plugin-chart-echarts/src/utils/formatters.ts | 40 +-
.../plugin-chart-echarts/src/utils/series.ts | 28 +-
.../test/Heatmap/transformProps.test.ts | 67 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 13 +-
.../test/Timeseries/transformProps.test.ts | 31 +
.../test/Timeseries/transformers.test.ts | 17 +
.../test/utils/formatters.test.ts | 118 ++
.../plugin-chart-echarts/test/utils/series.test.ts | 96 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/MapLibre.tsx | 62 +-
.../test/MapLibre.test.tsx | 31 +
.../plugin-chart-table/test/TableChart.test.tsx | 88 ++
.../plugin-chart-table/test/buildQuery.test.ts | 42 +
.../plugin-chart-table/test/controlPanel.test.ts | 55 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 14 +
.../plugins/preset-chart-deckgl/package.json | 27 +-
.../src/DeckGLContainer.test.tsx | 95 +-
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 17 +-
.../src/components/DeckGLOverlayMapLibre.test.tsx | 80 ++
.../src/components/DeckGLOverlayMapLibre.tsx | 8 +-
.../src/layers/Contour/Contour.tsx | 2 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../src/components/GridTable/index.tsx | 10 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
.../components/RefreshIntervalModal.test.tsx | 37 +
.../dashboard/components/RefreshIntervalModal.tsx | 2 +-
.../ViewAsTableRendering.test.tsx | 309 ++++
.../FilterBar/FilterControls/FilterValue.test.tsx | 42 +-
.../FilterBar/FilterControls/FilterValue.tsx | 70 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 161 ++-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 145 +-
.../hooks/useFilterOperations.test.ts | 62 +
.../hooks/useFilterOperations.ts | 10 +-
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.ts | 10 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 2 +
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 ++-
.../util/getFormDataWithExtraFilters.test.ts | 412 +++++-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../components/ControlPanelsContainer.test.tsx | 265 +++-
.../explore/components/ControlPanelsContainer.tsx | 44 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 76 +
.../controls/ComparisonRangeLabel.test.tsx | 252 ++++
.../DateFilterControl/tests/CommonFrame.test.tsx | 72 +
.../tests/DateFilterLabel.test.tsx | 193 +++
.../DateFilterControl/tests/DateLabel.test.tsx | 73 +
.../DndMetricSelect.test.tsx | 90 ++
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 17 +
.../index.tsx | 27 +-
.../MatrixifyControl/utils/fetchTopNValues.test.ts | 165 +++
.../controls/MatrixifyDimensionControl.test.tsx | 139 +-
.../controls/MatrixifyDimensionControl.tsx | 26 +-
.../AdhocMetricPopoverTrigger.test.tsx | 278 ++++
.../components/controls/SelectControl.test.tsx | 55 +
.../src/explore/controlPanels/sections.tsx | 7 +
.../controlUtils/getSectionsToRender.test.ts | 179 +++
.../explore/reducers/datasourcesReducer.test.ts | 171 +++
.../src/explore/reducers/exploreReducer.test.ts | 269 +++-
.../src/explore/reducers/exploreReducer.ts | 29 +-
.../src/explore/reducers/saveModalReducer.test.ts | 184 +++
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
.../ArchivedList/ArchivedDatasetPurgeModal.tsx | 3 +-
superset-frontend/src/pages/Home/Home.test.tsx | 47 +-
superset-frontend/src/pages/Home/index.tsx | 20 +-
.../src/utils/downloadAsImage.test.ts | 276 ++++
superset-frontend/src/utils/downloadAsImage.tsx | 113 +-
.../src/utils/semanticViewStructure.test.ts | 13 +
.../src/utils/semanticViewStructure.ts | 15 +-
superset-frontend/src/utils/urlUtils.ts | 17 +
.../TimeTable/components/LeftCell/LeftCell.tsx | 18 +-
superset-websocket/package-lock.json | 56 +-
superset-websocket/package.json | 2 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 3 +
superset/charts/schemas.py | 21 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 ++
.../annotation_layer/importers}/__init__.py | 0
.../importers/dispatcher.py | 20 +-
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +++-
superset/commands/chart/importers/v1/__init__.py | 99 +-
superset/commands/chart/importers/v1/utils.py | 381 ++++-
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
.../commands/deletion_retention/prune_audit.py | 76 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 10 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 7 +-
superset/commands/report/base.py | 10 +-
superset/common/query_context_processor.py | 14 +-
superset/common/query_object.py | 49 +-
superset/common/tabular_query.py | 8 +-
superset/dashboards/api.py | 13 +-
superset/datasource/api.py | 52 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/bigquery.py | 35 +-
superset/db_engine_specs/postgres.py | 34 +
superset/initialization/__init__.py | 1 -
superset/mcp_service/app.py | 2 +
superset/mcp_service/auth.py | 22 +-
superset/mcp_service/caching.py | 37 +-
superset/mcp_service/chart/plugins/bubble.py | 2 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/schemas.py | 98 +-
superset/mcp_service/chart/tool/generate_chart.py | 18 +-
superset/mcp_service/chart/tool/get_chart_info.py | 34 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 5 +-
superset/mcp_service/chart/tool/list_charts.py | 130 +-
superset/mcp_service/chart/tool/update_chart.py | 16 +-
.../mcp_service/chart/tool/update_chart_preview.py | 18 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
superset/mcp_service/dashboard/schemas.py | 95 +-
.../dashboard/tool/apply_dashboard_filters.py | 8 +
.../dashboard/tool/generate_dashboard.py | 18 +-
.../dashboard/tool/get_dashboard_info.py | 21 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
superset/mcp_service/dashboard_scope.py | 1365 ++++++++++++++++++
superset/mcp_service/dashboard_scope_sql.py | 516 +++++++
superset/mcp_service/dataset/schemas.py | 45 +-
.../dataset/tool/create_virtual_dataset.py | 16 +-
superset/mcp_service/dataset/tool/list_datasets.py | 18 +-
superset/mcp_service/mcp_config.py | 5 +-
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 9 +
.../semantic_layer/tool/get_compatible_metrics.py | 3 +
.../mcp_service/semantic_layer/tool/get_table.py | 51 +-
.../semantic_layer/tool/list_metrics.py | 3 +
superset/mcp_service/server.py | 112 +-
superset/mcp_service/simple_proxy.py | 6 +-
superset/mcp_service/sql_lab/schemas.py | 10 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 1 +
superset/mcp_service/system/prompts/quickstart.py | 4 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/system/tool/get_schema.py | 7 +-
superset/mcp_service/system/tool/health_check.py | 5 +-
superset/mcp_service/utils/schema_utils.py | 27 +-
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 ++
...141b8ada7731_tag_pivot_tables_with_restored_.py | 4 +-
superset/models/annotations.py | 19 +-
superset/models/core.py | 16 +-
superset/models/helpers.py | 2 +
superset/result_set.py | 10 +
superset/security/manager.py | 25 +-
superset/semantic_layers/api.py | 3 +
.../semantic_layers/bundle_schemas.py | 24 +-
superset/semantic_layers/import_export.py | 240 ++++
superset/semantic_layers/mapper.py | 6 +
superset/semantic_layers/models.py | 3 +
superset/sql/execution/celery_task.py | 1 +
superset/sql/execution/executor.py | 109 +-
superset/sql/parse.py | 101 +-
superset/superset_typing.py | 11 +
superset/tasks/deletion_retention.py | 55 +-
superset/translations/messages.pot | 71 +
superset/utils/core.py | 36 +
superset/utils/date_parser.py | 25 +-
superset/utils/dict_import_export.py | 7 +
superset/utils/pandas_postprocessing/cum.py | 7 +-
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/rls.py | 4 +-
superset/views/users/api.py | 22 +-
.../annotation_layers/commands_tests.py | 750 ++++++++++
tests/integration_tests/charts/commands_tests.py | 1515 ++++++++++++++++++++
tests/integration_tests/commands_test.py | 58 +
.../integration_tests/dashboards/commands_tests.py | 585 ++++++++
.../deletion_retention/prune_audit_tests.py | 88 ++
tests/integration_tests/fixtures/importexport.py | 104 ++
.../db_engine_specs/test_clickhouse.py | 43 +
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
tests/unit_tests/charts/test_client_processing.py | 33 +
.../commands/chart/semantic_export_test.py | 127 ++
.../dashboard/export_example_semantic_test.py | 175 +++
.../deletion_retention/test_prune_audit.py | 33 +-
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../unit_tests/commands/importers/v1/utils_test.py | 34 +
tests/unit_tests/commands/report/create_test.py | 36 +
.../common/test_query_context_processor.py | 33 +
tests/unit_tests/connectors/sqla/utils_test.py | 34 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 87 +-
tests/unit_tests/initialization/init_views_test.py | 113 ++
.../mcp_service/chart/test_chart_utils.py | 55 +
.../chart/test_live_chart_datasource.py | 709 +++++++++
.../mcp_service/chart/tool/test_list_charts.py | 4 +-
.../dashboard/test_dashboard_schemas.py | 18 +
.../dashboard/tool/test_apply_dashboard_filters.py | 54 +-
.../tool/test_get_compatible_metrics.py | 14 +-
.../semantic_layer/tool/test_get_table.py | 39 +
.../semantic_layer/tool/test_list_metrics.py | 10 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 22 +-
.../system/resources/test_instance_metadata.py | 144 ++
.../system/tool/test_get_current_user.py | 6 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1502 +++++++++++++++++++
.../mcp_service/test_dashboard_scope_sql.py | 674 +++++++++
.../unit_tests/mcp_service/test_mcp_docstrings.py | 128 ++
.../mcp_service/test_mcp_tool_registration.py | 106 ++
.../test_tool_description_constraints.py | 655 +++++++++
.../unit_tests/mcp_service/test_tool_inventory.py | 6 +-
.../mcp_service/test_tool_search_transform.py | 82 +-
tests/unit_tests/mcp_service/test_worker.py | 6 +-
tests/unit_tests/models/core_test.py | 62 +
tests/unit_tests/models/helpers_test.py | 51 +
tests/unit_tests/pandas_postprocessing/test_cum.py | 35 +
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +++++
tests/unit_tests/result_set_test.py | 42 +-
tests/unit_tests/scripts/change_detector_test.py | 77 +
tests/unit_tests/security/manager_test.py | 27 +
.../test_superset_user_api_subject_sync.py | 23 +
tests/unit_tests/semantic_layers/api_test.py | 10 +-
.../semantic_layers/import_export_test.py | 921 ++++++++++++
tests/unit_tests/semantic_layers/mapper_test.py | 5 +
tests/unit_tests/semantic_layers/models_test.py | 2 +
.../semantic_layers/selection_identity_test.py | 293 ++++
.../semantic_layers/values_endpoint_test.py | 21 +-
tests/unit_tests/sql/execution/conftest.py | 3 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +
tests/unit_tests/sql/execution/test_executor.py | 850 ++++++++++-
tests/unit_tests/sql/parse_tests.py | 107 ++
tests/unit_tests/tasks/test_deletion_retention.py | 171 ++-
tests/unit_tests/test_mcp_simple_proxy.py | 45 +
tests/unit_tests/utils/date_parser_tests.py | 64 +
tests/unit_tests/views/test_current_user_api.py | 23 +
.../views/test_current_user_auth_errors.py | 122 ++
309 files changed, 24535 insertions(+), 1398 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
copy superset-frontend/{src/views/ScrollToTop.tsx =>
packages/superset-ui-core/src/query/semanticSelection.ts} (50%)
create mode 100644
superset-frontend/plugins/plugin-chart-cartodiagram/test/util/pieColors.test.ts
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapLibre.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/SliceHeaderControls/ViewAsTableRendering.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ComparisonRangeLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/CommonFrame.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/DateFilterControl/tests/DateLabel.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MatrixifyControl/utils/fetchTopNValues.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/controlUtils/getSectionsToRender.test.ts
create mode 100644
superset-frontend/src/explore/reducers/datasourcesReducer.test.ts
create mode 100644
superset-frontend/src/explore/reducers/saveModalReducer.test.ts
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py
(100%)
copy superset/commands/{chart => annotation_layer}/importers/dispatcher.py
(82%)
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644
superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
copy tests/unit_tests/utils/db.py =>
superset/semantic_layers/bundle_schemas.py (56%)
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644
tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_docstrings.py
create mode 100644
tests/unit_tests/mcp_service/test_tool_description_constraints.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py
create mode 100644 tests/unit_tests/test_mcp_simple_proxy.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py