You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2026/10/13 16:21:21 UTC
(superset) branch sc-120994-athena-new-form updated (4f731d12e8d -> d60365e428e)
This is an automated email from the ASF dual-hosted git repository.
eschutho pushed a change to branch sc-120994-athena-new-form
in repository https://gitbox.apache.org/repos/asf/superset.git
from 4f731d12e8d Merge remote-tracking branch 'origin/master' into sc-120994-athena-new-form
add cb8ff2885a6 fix(permalink): use a shared lock when re-reading a concurrently created permalink (#45102)
add ab2c69f29cd fix(column-config): allow commas in D3 number formats (#45145)
add e538ebfa2c9 feat(mcp): opt-in compact native tools/list and trimmed tool guidance (#45084)
add 64b02eebed4 fix(mcp): add sort_by option to XYChartConfig (#42627) (#44464)
add 1267bd1acee test(semantic-layer): pin layer list scoping to accessible layers (#45101)
add 8aeb2850914 fix(mcp): keep isError through call_tool and test native tool surface parity (#45081)
add d3c47f6212e chore(deps): bump slack-sdk from 3.44.1 to 3.45.0 (#45116)
add 0edbccc71a8 chore(deps-dev): bump trino from 0.339.0 to 0.340.0 (#45117)
add 5e6156a820c chore(deps-dev): bump gevent from 26.8.0 to 26.9.0 (#45115)
add 461cf9e49af chore(deps): bump sqlalchemy-continuum from 1.7.0 to 1.8.0 (#45114)
add 97ce269b962 chore(deps): bump cryptography from 50.0.1 to 50.0.2 (#45112)
add 2918a7b94d1 feat(i18n): extract translator context comments from source (#44397)
add 82223373a3a chore(deps-dev): update teradatasql requirement from >=20.0.0.68 to >=20.0.0.69 (#45162)
add d48b8486851 chore(deps): bump msgpack from 1.2.2 to 1.2.3 (#45161)
add 7e6aa124e1a chore(deps): bump pyjwt from 2.14.0 to 2.15.1 (#45159)
add 8318398da46 chore(deps): bump the security group across 1 directory with 4 updates (#45143)
add 5faa58e7d2b chore(deps-dev): bump pymssql from 2.4.1 to 2.4.2 (#45156)
add b9e8188ad60 chore(deps): bump simplejson from 4.1.2 to 4.2.0 (#45158)
add d7717743b1f test(utils): add unit test for scalar_to_sequence (#45144)
add f9f2eb283d3 test(sql): pin Druid JSON_VALUE RETURNING parsing (#45131)
add a55b236a5be fix(semantic-layer): fetch view metadata once per query (#45104)
add 76b62d34fba fix(semantic-layer): preserve nullable integer precision in chart data (#45126)
add 38ad1150ecf feat(retention): cap soft-delete purge and version-history prune per run (#45029)
add 04db66b0f66 feat(semantic-layer): invalidate metadata caches on configuration save (#45100)
add fd2740bec1e fix(charts): avoid loading semantic provider metadata before denying chart data access (#45060)
add e229ea4a543 fix(mcp): resolve saved semantic-view chart sources by type (#45067)
add af7978ae74d docs(mcp): document dashboard owner/role/certification governance tools (#43900)
add bae6d10cebc chore(deps): bump react-resize-detector from 7.1.2 to 12.3.0 in /superset-frontend (#45124)
add db7557a7a58 feat(mcp): add typed geographic chart generation (#44148)
add 0e50b64263f fix(bigquery): filter __NULL__ and __UNPARTITIONED__ from max partition query (#44156)
add aef1f70cdfd chore(deps): bump pyparsing from 3.3.2 to 3.3.3 (#45157)
add 0ad650c507e chore(deps): bump mako from 1.4.1 to 1.4.3 (#45188)
add 4dc7ba70ef3 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in /superset-embedded-sdk (#45194)
add 1c116342642 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in /superset-frontend (#45201)
add 713c41e0ba5 chore(deps-dev): bump stylelint from 17.15.0 to 17.16.0 in /superset-frontend (#45200)
add 0c201b4dd2c chore(deps-dev): bump minimizer-webpack-plugin from 5.12.0 to 5.13.0 in /superset-frontend (#45196)
add ea235f25b9e chore(deps-dev): bump google-cloud-bigquery from 3.45.2 to 3.46.1 (#45190)
add 3579cbc6c68 chore(deps-dev): bump @storybook/test-runner from 0.24.5 to 0.26.0 in /superset-frontend in the storybook group (#45073)
add 5e9e6beb4ac chore(deps): bump flask-compress from 1.24 to 1.25 (#45193)
add e2dd50ab340 chore(deps-dev): bump grpcio from 1.83.1 to 1.84.0 (#45192)
add 6d39864102a chore(deps): bump @googleapis/sheets from 18.0.1 to 18.1.0 in /superset-frontend (#45195)
add bc98688d5ff docs: Improve README clarity and consistency (#38957)
add 2c8665f9cbc fix(histogram): normalize before accumulating a cumulative histogram (#44652)
add 726c1ef67c9 fix(impala): cancel pending SQL Lab operations through the live cursor (#44737)
add 90dc7ac3289 fix(databricks): enable equality operators for boolean filters (#36765) (#44355)
add c58db3b704d chore(deps): bump maplibre-gl from 6.11.2 to 6.12.0 in /superset-frontend (#45199)
add 42bbfa49079 chore(deps-dev): update thrift requirement from <1.0.0,>=0.24.0 to >=0.25.0,<1.0.0 (#45191)
add f4fe4e13c47 fix(mcp): support custom user models during dashboard and chart operations (#45036)
add 88a14e9be56 docs(i18n): add a translation guide with shared principles (#45181)
add a4cf0ff09e7 chore(ci): correct download-artifact version comment to v8.0.1 (#45212)
add 209bdafc124 fix(tests): narrow nullable uuid before passing it to KeyValueDAO.get_entry (#45171)
add 2747094d4c2 feat(mcp): add typed Bullet chart support (#43770)
add 02304af9a99 fix(mypy): narrow nullable uuid/perm reads in chart restore version tests (#45080)
add cd526f9e97d chore(deps-dev): bump fastmcp from 3.4.7 to 4.0.3 (#44200)
add ea0687222a5 fix(dashboard): honour DASHBOARD_AUTO_REFRESH_INTERVALS in the refresh dropdown (#44982)
add 11b6997a488 fix(dashboard): drop missing semantic-view controls on restore (#45130)
add f923be702a1 fix(semantic-layer): report incompatible dashboard filters on semantic views instead of dropping them (#45105)
add f774479c990 fix(mcp): allow chart filtering by dataset ID (#44950)
add 60c66fe8d50 fix(explore): honor chart edit permissions for titles (#45146)
add 59404f47cd3 feat(mcp): target semantic views in chart tools (#44393)
add 945d8bbd632 fix(mcp): promote tools whose full names appear in a search query (#45149)
add 63a7a6e4eca chore(deps): bump chrono-node from 2.10.1 to 2.10.2 in /superset-frontend (#45227)
add dd1312b3c2b chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#45224)
add aa321aab31d chore(deps): bump chromaui/action from 18.10.2 to 18.11.0 (#45222)
add a26c984279c chore(deps-dev): bump oxlint from 1.86.0 to 1.87.0 in /docs (#45226)
add 962272b6f20 feat(semantic-layer): allow toggling SEMANTIC_LAYERS at runtime (#45061)
add f154d23a954 fix(dashboard): reconcile position_json against membership on save (#44028)
add b39e1e0db71 chore(ci): correct upload-artifact version comment to v7.0.1 (#45229)
add 8f13b2b2e69 chore(ci): correct upload-artifact version comment in translations workflow (#45213)
add 9c70fa40159 chore(deps-dev): bump oxfmt from 0.71.0 to 0.72.0 in /docs (#45225)
add 1cedab01e9e chore(deps): bump geostyler-openlayers-parser from 5.7.1 to 5.8.0 in /superset-frontend (#45077)
add 0f875cadbe0 fix(network): refine address classification (#45230)
add 1578b8cbc11 fix(semantic-layer): restore value suggestions for semantic view filters (#45109)
add 6d974e19c51 fix(mcp): keep the saved chart variant when update_chart omits it (#45221)
add f18c034a689 fix(connection): let SupersetClient.postForm accept an absolute url (#45204)
add 1caea41f425 docs: give bare relative links an explicit extension (#43170)
add e7ca70c784e fix(datasource): apply target-table access check on same-database repoint (#44080)
add 1b10345f3bf docs(semantic-layer): write down member identity, grain, NULL and ordering rules in the SDK (#45108)
add 61a0fd28ec6 fix(semantic-layer): improve credential entry and connection feedback (#45173)
add 7aadf35e7d7 feat(mcp): accept a callable for MCP_DATASET_ROLE_ALLOWLIST (#45231)
add 139a06eee15 chore(ci): correct upload-artifact version comment to v7.0.1 (#45211)
add 4da3ab9277b refactor(db_engine_specs): dedupe boolean-coercion logic for Databricks/Spark (#45202)
add 952ff3b22f4 perf(filters): use useDeferredValue in SelectFilterPlugin (#44880)
add 57bcddc11f8 Merge remote-tracking branch 'origin/master' into sc-120994-athena-new-form
add d60365e428e fix(athena): preserve URI params on re-save and mask the secret in edit mode
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 1 +
.github/workflows/chromatic.yml | 2 +-
.github/workflows/superset-e2e.yml | 4 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 16 +-
.../workflows/superset-python-integrationtest.yml | 2 +-
.../workflows/superset-python-unittest-report.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 4 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 2 +-
.github/workflows/testcontainers.yml | 2 +-
README.md | 9 +-
UPDATING.md | 99 +-
docs/admin_docs/configuration/feature-flags.mdx | 29 +
docs/admin_docs/configuration/mcp-server.mdx | 439 +-
docs/developer_docs/contributing/howtos.md | 89 +-
.../contributing/translation-guide.md | 104 +
.../extensions/contribution-types.md | 4 +-
docs/developer_docs/extensions/mcp.md | 91 +
docs/developer_docs/extensions/overview.md | 22 +-
docs/developer_docs/semantic-layer-cache-clear.md | 106 +
docs/developer_docs/semantic-metadata-contract.md | 187 -
.../creating-your-first-dashboard.mdx | 27 +
docs/docs/using-superset/exploring-data.mdx | 4 +
docs/docs/using-superset/number-formatting.mdx | 2 +-
docs/docs/using-superset/recently-archived.mdx | 49 +
.../using-superset/semantic-layer-connections.mdx | 47 +
.../using-superset/semantic-member-selections.mdx | 25 +-
.../docs/using-superset/using-ai-with-superset.mdx | 5 +
docs/docs/using-superset/version-history.mdx | 53 +-
docs/package.json | 6 +-
docs/sidebarTutorials.js | 1 +
docs/static/resources/openapi.json | 835 ++-
docs/yarn.lock | 489 +-
pyproject.toml | 52 +-
requirements/base.in | 4 +-
requirements/base.txt | 18 +-
requirements/development.txt | 40 +-
scripts/translations/babel_update.sh | 7 +
scripts/translations/backfill_po.py | 79 +-
scripts/translations/check_pot_drift.py | 81 +-
.../src/superset_core/semantic_layers/layer.py | 20 +-
.../src/superset_core/semantic_layers/metadata.py | 196 -
.../src/superset_core/semantic_layers/types.py | 143 +-
.../src/superset_core/semantic_layers/view.py | 49 +-
.../tests/semantic_layers/test_view.py | 11 +-
superset-embedded-sdk/package-lock.json | 151 +-
superset-embedded-sdk/package.json | 2 +-
superset-frontend/jest.config.js | 5 +-
superset-frontend/package-lock.json | 854 ++--
superset-frontend/package.json | 26 +-
.../packages/generator-superset/package.json | 2 +-
.../src/shared-controls/dndControls.tsx | 1 +
.../src/shared-controls/matrixifyControls.tsx | 1 +
.../src/shared-controls/sharedControls.tsx | 21 +
.../src/utils/D3Formatting.ts | 1 +
.../packages/superset-ui-core/package.json | 4 +-
.../components/MetadataBar/MetadataBar.test.tsx | 40 +-
.../src/components/MetadataBar/MetadataBar.tsx | 6 +-
.../src/components/Table/VirtualTable.test.tsx | 10 +-
.../src/components/Table/VirtualTable.tsx | 4 +-
.../src/connection/SupersetClientClass.ts | 31 +-
.../superset-ui-core/src/query/buildQueryObject.ts | 10 +-
.../superset-ui-core/src/query/processFilters.ts | 3 +
.../test/connection/SupersetClientClass.test.ts | 27 +
.../test/query/buildQueryObject.test.ts | 76 +-
.../plugin-chart-country-map/src/CountryMap.ts | 30 +-
.../plugin-chart-country-map/src/controlPanel.ts | 23 +
.../src/countries/uk.geojson | Bin 477503 -> 477503 bytes
.../src/normalizeRegions.ts | 129 +
.../plugin-chart-country-map/src/regions.ts | 383 ++
.../plugin-chart-country-map/src/transformProps.ts | 53 +-
.../test/CountryMap.test.tsx | 109 +
.../test/controlPanel.test.ts | 25 +-
.../test/geographicRendering.test.tsx | 296 ++
.../test/normalizeRegions.test.ts | 251 +
.../test/transformProps.test.ts | 125 +
.../test/Bullet/buildQuery.test.ts | 15 +
.../test/Bullet/transformProps.test.ts | 172 +-
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../plugins/plugin-chart-world-map/src/WorldMap.ts | 13 +-
.../plugin-chart-world-map/src/controlPanel.ts | 2 +
.../plugin-chart-world-map/src/countries.ts | 36 +-
.../plugin-chart-world-map/src/transformData.ts | 49 +-
.../plugin-chart-world-map/src/transformProps.ts | 20 +-
.../plugin-chart-world-map/src/worldGeometry.ts | 198 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 78 +
.../test/controlPanel.test.ts | 25 +-
.../test/transformData.test.ts | 169 +
.../test/transformProps.test.ts | 52 +
.../plugins/preset-chart-deckgl/package.json | 4 +-
.../src/layers/Geojson/Geojson.test.tsx | 22 +
.../src/layers/Scatter/buildQuery.test.ts | 24 +
.../src/layers/Scatter/buildQuery.ts | 7 +-
.../src/layers/Scatter/controlPanel.test.ts} | 41 +-
.../src/layers/Scatter/controlPanel.ts | 2 +
.../src/layers/Scatter/transformProps.test.ts | 324 +-
.../src/layers/Scatter/transformProps.ts | 102 +-
.../preset-chart-deckgl/src/layers/spatialUtils.ts | 7 +-
.../src/layers/utils/metricUtils.ts | 17 +
.../spec/helpers/geographicControlPanel.ts | 75 +
.../ExploreCtasResultsButton.test.tsx | 11 +-
.../src/components/Chart/Chart.test.tsx | 26 +
.../DetailsPanel/DetailsPanel.test.tsx | 19 +
.../components/FiltersBadge/DetailsPanel/index.tsx | 22 +
.../components/FiltersBadge/FiltersBadge.test.tsx | 40 +
.../dashboard/components/FiltersBadge/index.tsx | 20 +-
.../RefreshFrequencySelect.test.tsx | 261 +
.../RefreshFrequency/RefreshFrequencySelect.tsx | 147 +-
.../dashboard/components/RefreshFrequency/index.ts | 3 +
.../components/RefreshIntervalModal.test.tsx | 43 +
.../components/nativeFilters/selectors.test.ts | 71 +
.../components/nativeFilters/selectors.ts | 8 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 160 +
.../components/ExploreChartHeader/index.tsx | 37 +-
.../src/explore/components/SaveModal.test.tsx | 55 +
.../src/explore/components/SaveModal.tsx | 15 +-
.../ColumnConfigConstants.test.tsx | 25 +-
.../controls/ColumnConfigControl/constants.tsx | 2 +
.../DndAdhocFilterOption.tsx | 3 +
.../DndFilterSelect.test.tsx | 76 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 6 +
.../FilterControl/AdhocFilterControl/index.tsx | 15 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 3 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 106 +
.../index.tsx | 24 +-
.../FilterControl/AdhocFilterOption/index.tsx | 3 +
.../AdhocFilterPopoverTrigger/index.tsx | 3 +
.../controls/MatrixifyDimensionControl.test.tsx | 72 +-
.../controls/MatrixifyDimensionControl.tsx | 25 +-
superset-frontend/src/explore/controls.tsx | 8 +-
.../src/explore/exploreUtils/index.ts | 7 +-
.../src/explore/reducers/exploreReducer.test.ts | 26 +
.../src/explore/reducers/exploreReducer.ts | 15 +-
...d.test.tsx => AwsSecretAccessKeyField.test.tsx} | 40 +-
.../DatabaseConnectionForm/CommonParameters.tsx | 29 +
.../DatabaseConnectionForm/ValidatedInputField.tsx | 14 -
.../DatabaseConnectionForm/constants.ts | 3 +-
.../semanticLayers/SemanticLayerModal.test.tsx | 540 +-
.../features/semanticLayers/SemanticLayerModal.tsx | 172 +-
.../semanticLayers/jsonFormsAntdRenderers.test.tsx | 260 +
.../features/semanticLayers/jsonFormsHelpers.tsx | 125 +-
.../components/Select/SelectFilterPlugin.test.tsx | 346 +-
.../components/Select/SelectFilterPlugin.tsx | 178 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 2 +
superset-frontend/src/types/Chart.ts | 1 +
.../utils/getChartRequiredFieldsMissingMessage.ts | 1 +
superset-websocket/package-lock.json | 320 +-
superset-websocket/package.json | 4 +-
superset/charts/api.py | 12 +-
superset/charts/data/api.py | 14 +-
superset/commands/chart/update.py | 10 +
superset/commands/chart/utils.py | 9 +
superset/commands/chart/warm_up_cache.py | 26 +-
superset/commands/dashboard/exceptions.py | 4 +
superset/commands/dashboard/permalink/create.py | 13 +-
superset/commands/dashboard/restore.py | 132 +
superset/commands/dashboard/update.py | 55 +-
superset/commands/distributed_lock/release.py | 3 +-
superset/commands/restore.py | 7 +-
superset/commands/semantic_layer/update.py | 58 +-
superset/common/query_context_factory.py | 42 +-
superset/common/query_context_processor.py | 46 +-
superset/common/query_object.py | 13 +
superset/common/utils/dataframe_utils.py | 8 +-
superset/config.py | 19 +
superset/connectors/sqla/models.py | 4 +-
superset/daos/chart.py | 7 +-
superset/daos/dashboard.py | 310 +-
superset/daos/datasource.py | 10 +
superset/daos/key_value.py | 14 +-
superset/daos/report.py | 3 +-
superset/dashboards/api.py | 14 +
superset/dataframe.py | 4 +
superset/datasource/api.py | 56 +-
superset/db_engine_specs/athena.py | 68 +-
superset/db_engine_specs/base.py | 19 +
superset/db_engine_specs/bigquery.py | 20 +-
superset/db_engine_specs/databricks.py | 8 +-
superset/db_engine_specs/hive.py | 18 +-
superset/db_engine_specs/impala.py | 118 +-
superset/db_engine_specs/spark.py | 6 +-
superset/explore/api.py | 5 +
superset/explore/form_data/api.py | 9 +-
superset/explore/permalink/api.py | 5 +-
superset/explore/utils.py | 6 +
superset/initialization/__init__.py | 19 +-
superset/key_value/types.py | 30 +-
superset/mcp_service/CLAUDE.md | 5 +-
superset/mcp_service/app.py | 6 +-
superset/mcp_service/auth.py | 13 +-
superset/mcp_service/caching.py | 2 +-
superset/mcp_service/chart/chart_helpers.py | 158 +-
superset/mcp_service/chart/chart_utils.py | 1142 ++++-
superset/mcp_service/chart/compile.py | 322 +-
superset/mcp_service/chart/datasource_resolver.py | 412 ++
superset/mcp_service/chart/plugin.py | 70 +-
superset/mcp_service/chart/plugins/__init__.py | 15 +
superset/mcp_service/chart/plugins/big_number.py | 67 +-
superset/mcp_service/chart/plugins/bullet.py | 596 +++
superset/mcp_service/chart/plugins/gantt.py | 1 +
superset/mcp_service/chart/plugins/geographic.py | 836 +++
superset/mcp_service/chart/plugins/histogram.py | 1 +
.../mcp_service/chart/plugins/mixed_timeseries.py | 15 +
superset/mcp_service/chart/plugins/table.py | 20 +
superset/mcp_service/chart/plugins/waterfall.py | 15 +
superset/mcp_service/chart/plugins/xy.py | 210 +-
superset/mcp_service/chart/preview_utils.py | 1150 ++++-
superset/mcp_service/chart/query_result.py | 218 +-
.../mcp_service/chart/resources/chart_configs.py | 65 +
superset/mcp_service/chart/schemas.py | 1051 +++-
superset/mcp_service/chart/tool/generate_chart.py | 312 +-
superset/mcp_service/chart/tool/get_chart_data.py | 136 +-
superset/mcp_service/chart/tool/get_chart_info.py | 12 +-
.../mcp_service/chart/tool/get_chart_preview.py | 64 +-
.../chart/tool/get_chart_type_schema.py | 61 +-
superset/mcp_service/chart/tool/list_charts.py | 4 +-
superset/mcp_service/chart/tool/update_chart.py | 608 ++-
.../mcp_service/chart/tool/update_chart_preview.py | 26 +-
.../chart/validation/dataset_validator.py | 36 +
superset/mcp_service/chart/validation/pipeline.py | 73 +-
superset/mcp_service/common/pagination_schemas.py | 3 +-
superset/mcp_service/dashboard/schemas.py | 60 +-
.../dashboard/tool/duplicate_dashboard.py | 16 +-
.../dashboard/tool/manage_dashboard_owners.py | 4 +-
.../dashboard/tool/manage_dashboard_roles.py | 22 +-
.../dashboard/tool/restore_dashboard.py | 14 +-
superset/mcp_service/dataset/schemas.py | 18 +-
superset/mcp_service/dataset_scope.py | 146 +-
.../explore/tool/generate_explore_link.py | 158 +-
superset/mcp_service/mcp_config.py | 65 +-
superset/mcp_service/middleware.py | 60 +-
.../tool/get_compatible_dimensions.py | 18 +
.../semantic_layer/tool/get_compatible_metrics.py | 18 +
.../mcp_service/semantic_layer/tool/get_table.py | 10 +
.../semantic_layer/tool/list_metrics.py | 13 +-
superset/mcp_service/server.py | 177 +-
superset/mcp_service/simple_proxy.py | 2 +-
...79af013f48_add_semantic_layer_cache_version.py} | 25 +-
superset/models/dashboard.py | 88 +-
superset/models/helpers.py | 5 +-
superset/security/manager.py | 4 +
superset/semantic_layers/access.py | 50 +
superset/semantic_layers/api.py | 87 +-
superset/semantic_layers/labels.py | 7 +-
superset/semantic_layers/mapper.py | 213 +-
superset/semantic_layers/members.py | 52 +
superset/semantic_layers/models.py | 157 +-
superset/tasks/deletion_retention.py | 397 +-
.../rank.py => tasks/retention_cap.py} | 29 +-
superset/tasks/version_history_retention.py | 282 +-
superset/translations/ar/LC_MESSAGES/messages.po | 71 +
superset/translations/ca/LC_MESSAGES/messages.po | 71 +
superset/translations/cs/LC_MESSAGES/messages.po | 71 +
superset/translations/de/LC_MESSAGES/messages.po | 71 +
superset/translations/en/LC_MESSAGES/messages.po | 71 +
superset/translations/es/LC_MESSAGES/messages.po | 71 +
superset/translations/fa/LC_MESSAGES/messages.po | 71 +
superset/translations/fi/LC_MESSAGES/messages.po | 71 +
superset/translations/fr/LC_MESSAGES/messages.po | 71 +
superset/translations/it/LC_MESSAGES/messages.po | 71 +
superset/translations/ja/LC_MESSAGES/messages.po | 71 +
superset/translations/ko/LC_MESSAGES/messages.po | 71 +
superset/translations/lv/LC_MESSAGES/messages.po | 71 +
superset/translations/messages.pot | 126 +-
superset/translations/mi/LC_MESSAGES/messages.po | 71 +
superset/translations/nl/LC_MESSAGES/messages.po | 71 +
superset/translations/pl/LC_MESSAGES/messages.po | 71 +
superset/translations/pt/LC_MESSAGES/messages.po | 71 +
.../translations/pt_BR/LC_MESSAGES/messages.po | 71 +
superset/translations/ro/LC_MESSAGES/messages.po | 71 +
superset/translations/ru/LC_MESSAGES/messages.po | 71 +
superset/translations/sk/LC_MESSAGES/messages.po | 71 +
superset/translations/sl/LC_MESSAGES/messages.po | 71 +
superset/translations/sr/LC_MESSAGES/messages.po | 71 +
.../translations/sr_Latn/LC_MESSAGES/messages.po | 71 +
superset/translations/ta/LC_MESSAGES/messages.po | 71 +
superset/translations/th/LC_MESSAGES/messages.po | 71 +
superset/translations/tr/LC_MESSAGES/messages.po | 71 +
superset/translations/uk/LC_MESSAGES/messages.po | 71 +
superset/translations/zh/LC_MESSAGES/messages.po | 71 +
.../translations/zh_TW/LC_MESSAGES/messages.po | 71 +
superset/utils/core.py | 4 +
superset/utils/geographic.py | 105 +
superset/utils/geographic_regions.py | 385 ++
superset/utils/geographic_world.py | 205 +
superset/utils/network.py | 23 +-
.../utils/pandas_postprocessing/contribution.py | 24 +-
superset/utils/pandas_postprocessing/histogram.py | 8 +-
superset/views/api.py | 4 +-
superset/views/core.py | 2 +-
superset/views/dashboard/mixin.py | 1 +
superset/views/datasource/views.py | 176 +-
superset/views/filters.py | 5 +-
tests/integration_tests/charts/api_tests.py | 2 +
.../charts/semantic_metadata_authz_tests.py | 647 +++
.../charts/semantic_save_tests.py | 46 +
tests/integration_tests/dashboards/api_tests.py | 440 +-
tests/integration_tests/dashboards/dao_tests.py | 120 +-
tests/integration_tests/datasource/api_tests.py | 36 +-
.../semantic_layers/api_flag_test.py | 423 ++
.../versioning/retention_prune_tests.py | 65 +
tests/unit_tests/commands/chart/create_test.py | 2 +
.../commands/chart/test_warm_up_cache.py | 135 +
tests/unit_tests/commands/chart/update_test.py | 2 +
.../commands/dashboard/permalink_create_test.py | 6 +-
.../dashboard/restore_semantic_filters_test.py | 363 ++
.../unit_tests/commands/dashboard/restore_test.py | 3 +
.../deletion_retention/test_purge_chart_detach.py | 18 +-
.../common/test_query_context_processor.py | 12 +-
tests/unit_tests/conftest.py | 17 +
tests/unit_tests/dao/dashboard_test.py | 551 +-
tests/unit_tests/dao/key_value_test.py | 43 +
.../dao/test_copy_dashboard_legacy_ids.py | 213 +
tests/unit_tests/daos/test_chart_dao.py | 59 +
tests/unit_tests/dashboards/datasets_test.py | 2 +
tests/unit_tests/dataframe_test.py | 86 +
tests/unit_tests/db_engine_specs/test_athena.py | 112 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 86 +-
.../unit_tests/db_engine_specs/test_databricks.py | 133 +-
.../db_engine_specs/test_impala_pending.py | 303 ++
.../distributed_lock/distributed_lock_tests.py | 6 +-
tests/unit_tests/explore/utils_test.py | 2 +
.../mcp_service/chart/test_bullet_chart.py | 5308 ++++++++++++++++++++
.../mcp_service/chart/test_bullet_tool_paths.py | 2337 +++++++++
.../mcp_service/chart/test_chart_helpers.py | 342 +-
.../chart/test_chart_plugin_contract.py | 178 +-
.../mcp_service/chart/test_chart_schemas.py | 244 +
.../mcp_service/chart/test_chart_target_schemas.py | 213 +
.../mcp_service/chart/test_chart_utils.py | 814 +++
tests/unit_tests/mcp_service/chart/test_compile.py | 69 +
.../chart/test_dashboard_time_binding.py | 90 +
.../mcp_service/chart/test_datasource_resolver.py | 622 +++
.../mcp_service/chart/test_gantt_chart.py | 35 +
.../mcp_service/chart/test_gauge_chart.py | 98 +-
.../mcp_service/chart/test_geographic_chart.py | 2199 ++++++++
.../chart/test_histogram_boxplot_charts.py | 8 +-
.../chart/test_live_chart_datasource.py | 2 +
.../chart/test_native_chart_regressions.py | 351 ++
...ative_form_data_and_dataset_rebind_contracts.py | 4 +-
.../mcp_service/chart/test_preview_utils.py | 47 +-
.../mcp_service/chart/test_response_preflight.py | 4 +-
.../test_review_query_and_preview_regressions.py | 92 +
.../mcp_service/chart/test_sunburst_chart.py | 37 +
.../mcp_service/chart/test_treemap_completeness.py | 32 +-
.../tool/test_generate_chart_semantic_view.py | 412 ++
.../mcp_service/chart/tool/test_get_chart_data.py | 88 +-
.../chart/tool/test_get_chart_preview.py | 62 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 6 +-
.../mcp_service/chart/tool/test_list_charts.py | 148 +
.../chart/tool/test_saved_chart_datasource.py | 432 ++
.../mcp_service/chart/tool/test_update_chart.py | 358 +-
.../chart/tool/test_update_chart_preview.py | 91 +-
.../chart/tool/test_update_chart_rebind.py | 1006 ++++
.../validation/test_column_name_normalization.py | 21 +
.../chart/validation/test_dataset_validator.py | 195 +-
.../dashboard/tool/test_duplicate_dashboard.py | 59 +-
.../dashboard/tool/test_get_dashboard_datasets.py | 2 +
.../dashboard/tool/test_get_dashboard_layout.py | 4 +-
.../dashboard/tool/test_restore_dashboard.py | 3 +
.../test_generate_explore_link_semantic_view.py | 245 +
.../mcp_service/native_tool_inventory.json | 1289 +++++
.../mcp_service/semantic_layer/test_flag_off.py | 203 +
.../tool/test_get_compatible_dimensions.py | 5 +
.../tool/test_get_compatible_metrics.py | 4 +
.../semantic_layer/tool/test_get_table.py | 69 +
.../semantic_layer/tool/test_list_metrics.py | 7 +
.../system/resources/test_schema_discovery.py | 2 +-
.../mcp_service/system/tool/test_get_schema.py | 11 +
.../mcp_service/test_chart_tool_inventory.py | 44 +-
tests/unit_tests/mcp_service/test_dataset_scope.py | 247 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 69 +
tests/unit_tests/mcp_service/test_middleware.py | 34 +-
.../mcp_service/test_middleware_logging.py | 140 +-
.../mcp_service/test_native_tool_surface.py | 1144 +++++
.../test_simple_proxy.py} | 34 +-
.../test_tool_description_constraints.py | 44 +-
.../unit_tests/mcp_service/test_tool_inventory.py | 20 +-
.../mcp_service/test_tool_search_transform.py | 237 +-
.../mcp_service/test_validation_contract.py | 52 +-
.../mcp_service/test_worker_metadata_pool.py | 6 +-
tests/unit_tests/models/dashboard_test.py | 191 +
tests/unit_tests/models/helpers_test.py | 42 +
.../pandas_postprocessing/test_histogram.py | 32 +-
.../unit_tests/pandas_postprocessing/test_utils.py | 18 +-
tests/unit_tests/reports/config_dao_test.py | 8 +-
.../scripts/translations/backfill_po_test.py | 226 +-
.../scripts/translations/check_pot_drift_test.py | 215 +-
tests/unit_tests/security/manager_test.py | 281 ++
.../semantic_layers/import_export_test.py | 22 +
.../semantic_layers/integer_precision_test.py | 366 ++
tests/unit_tests/semantic_layers/labels_test.py | 13 +
.../semantic_layers/layer_list_scope_test.py | 215 +
tests/unit_tests/semantic_layers/mapper_test.py | 182 +-
tests/unit_tests/semantic_layers/members_test.py | 83 +
.../semantic_layers/metadata_contract_test.py | 566 +--
.../semantic_layers/metric_filter_test.py | 288 ++
tests/unit_tests/semantic_layers/models_test.py | 10 +-
.../semantic_layers/simple_cache_clear_test.py | 650 +++
tests/unit_tests/semantic_layers/test_access.py | 42 +
.../semantic_layers/test_runtime_flag.py | 216 +
.../semantic_layers/values_endpoint_test.py | 110 +-
.../soft_delete/test_restore_purge_hoist.py | 13 +
tests/unit_tests/sql/parse_tests.py | 17 +
.../subjects/test_creator_group_call_sites.py | 22 +-
tests/unit_tests/tasks/test_async_queries.py | 31 +
tests/unit_tests/tasks/test_deletion_retention.py | 796 ++-
.../tasks/test_version_history_retention.py | 659 ++-
.../unit_tests/utils/geographic_world_test.py | 31 +-
tests/unit_tests/utils/test_network.py | 29 +
.../versioning/test_restore_datasource_race.py | 4 +
.../versioning/test_restore_missing_datasource.py | 6 +
tests/unit_tests/views/datasource/views_test.py | 559 ++-
414 files changed, 51195 insertions(+), 3956 deletions(-)
create mode 100644 docs/developer_docs/contributing/translation-guide.md
create mode 100644 docs/developer_docs/semantic-layer-cache-clear.md
delete mode 100644 docs/developer_docs/semantic-metadata-contract.md
create mode 100644 docs/docs/using-superset/semantic-layer-connections.mdx
delete mode 100644 superset-core/src/superset_core/semantic_layers/metadata.py
copy superset/mcp_service/common/__init__.py => superset-core/tests/semantic_layers/test_view.py (79%)
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/src/normalizeRegions.ts
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/src/regions.ts
copy superset-frontend/plugins/{plugin-chart-partition => plugin-chart-country-map}/test/controlPanel.test.ts (55%)
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/test/geographicRendering.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/test/normalizeRegions.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-world-map/src/worldGeometry.ts
copy superset-frontend/plugins/{plugin-chart-partition => plugin-chart-world-map}/test/controlPanel.test.ts (55%)
copy superset-frontend/plugins/{plugin-chart-echarts/src/defaults.ts => preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (53%)
create mode 100644 superset-frontend/spec/helpers/geographicControlPanel.ts
copy superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/{ValidatedInputField.test.tsx => AwsSecretAccessKeyField.test.tsx} (60%)
create mode 100644 superset/mcp_service/chart/datasource_resolver.py
create mode 100644 superset/mcp_service/chart/plugins/bullet.py
create mode 100644 superset/mcp_service/chart/plugins/geographic.py
copy superset/migrations/versions/{2026-06-01_00-00_b7c9d1e2f3a4_add_password_must_change.py => 2026-10-08_00-00_c179af013f48_add_semantic_layer_cache_version.py} (65%)
create mode 100644 superset/semantic_layers/access.py
create mode 100644 superset/semantic_layers/members.py
copy superset/{utils/pandas_postprocessing/rank.py => tasks/retention_cap.py} (59%)
create mode 100644 superset/utils/geographic.py
create mode 100644 superset/utils/geographic_regions.py
create mode 100644 superset/utils/geographic_world.py
create mode 100644 tests/integration_tests/charts/semantic_metadata_authz_tests.py
create mode 100644 tests/integration_tests/semantic_layers/api_flag_test.py
create mode 100644 tests/unit_tests/commands/chart/test_warm_up_cache.py
create mode 100644 tests/unit_tests/commands/dashboard/restore_semantic_filters_test.py
create mode 100644 tests/unit_tests/dao/test_copy_dashboard_legacy_ids.py
create mode 100644 tests/unit_tests/daos/test_chart_dao.py
create mode 100644 tests/unit_tests/db_engine_specs/test_impala_pending.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bullet_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bullet_tool_paths.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_target_schemas.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_datasource_resolver.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_geographic_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_native_chart_regressions.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_generate_chart_semantic_view.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_saved_chart_datasource.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_update_chart_rebind.py
create mode 100644 tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link_semantic_view.py
create mode 100644 tests/unit_tests/mcp_service/native_tool_inventory.json
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/test_flag_off.py
create mode 100644 tests/unit_tests/mcp_service/test_native_tool_surface.py
copy tests/unit_tests/{test_mcp_simple_proxy.py => mcp_service/test_simple_proxy.py} (58%)
create mode 100644 tests/unit_tests/semantic_layers/integer_precision_test.py
create mode 100644 tests/unit_tests/semantic_layers/layer_list_scope_test.py
create mode 100644 tests/unit_tests/semantic_layers/members_test.py
create mode 100644 tests/unit_tests/semantic_layers/metric_filter_test.py
create mode 100644 tests/unit_tests/semantic_layers/simple_cache_clear_test.py
create mode 100644 tests/unit_tests/semantic_layers/test_access.py
create mode 100644 tests/unit_tests/semantic_layers/test_runtime_flag.py
copy superset/mcp_service/sql_lab/tool/__init__.py => tests/unit_tests/utils/geographic_world_test.py (55%)