You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by en...@apache.org on 2026/05/07 08:19:48 UTC

(superset) branch fix-clear-all-staging updated (959c515ee9a -> 1e526e21412)

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

EnxDev pushed a change to branch fix-clear-all-staging
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 959c515ee9a fix(test): make optional chains explicit for tsc strictness
     add df396aa6e9d fix(drill-to-detail): drill to detail by correctly filtering by metric (#39766)
     add 9c3c8dcc0bf fix(table): restore dropdown arrow visibility on paginated table page… (#39305)
     add f7c955f81ad feat: provide full endpoint URL construction for plugin developers (#37360)
     add 2c26914c2eb chore(deps-dev): bump typescript-eslint from 8.59.0 to 8.59.1 in /docs (#39694)
     add ce3f19d373a chore(deps): bump swagger-ui-react from 5.32.4 to 5.32.5 in /docs (#39693)
     add c895c4ffa90 chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#39744)
     add 43a2cd36604 chore(deps-dev): bump psycopg2-binary from 2.9.9 to 2.9.12 (#39749)
     add a4532844f49 chore(deps): bump msgpack from 1.0.8 to 1.1.2 (#39752)
     add 9001e7dcf27 chore(deps): bump pandas from 2.1.4 to 2.3.3 (#39754)
     add bfacc3b5ac7 chore(deps): bump xlsxwriter from 3.0.9 to 3.2.9 (#39757)
     add 1061b0612cc chore(deps-dev): bump eslint-plugin-no-only-tests from 3.3.0 to 3.4.0 in /superset-frontend (#39768)
     add 7842a9b05d1 fix(playwright): remove Google Sheets dependency from dataset tests (#39143)
     add bc875aa3e32 feat: Latvian localization (#38965)
     add a135e290355 fix(time-format): handle string input in TimeFormatter to fix pivot table NaN dates (#38949)
     add 56e9331dada chore: add Aadhar Housing Finance Limited to INTHEWILD (#38366)
     add 6ad503201b8 chore(deps): bump zod from 4.3.6 to 4.4.1 in /superset-frontend (#39770)
     add c15b208fdaa chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#39745)
     add 9faeda5723a chore(deps): bump @ant-design/icons from 6.2.0 to 6.2.2 in /docs (#39691)
     add 3f681040076 chore(deps-dev): bump @swc/plugin-emotion from 14.8.0 to 14.9.0 in /superset-frontend (#39715)
     add 4fcb3144ff1 fix(dashboard): prevent duplicate screenshot downloads (#39525)
     add 12f69760f90 fix(table): conditionally render search dropdown only when search input is enabled (#35204)
     add f57ba7645dd fix(CountryMap): ISO updated for France overseas (complete run) (#36055)
     add 512ba43e764 feat(i18n): add Czech translations (#36153)
     add 4244ae87bf7 fix(deps): regenerate pinned requirements for psycopg2-binary 2.9.12 (#39790)
     add 86eb6176d11 fix: Enforce per-user caching on legacy API endpoint (#39789)
     add 3f550f166f3 fix(GSheets OAuth2): Re-add UnauthenticatedError (#39785)
     add f29d82b3b1d feat(mcp): add query_dataset tool to query datasets using semantic layer (#39727)
     add 957b298ae1e fix(mcp): add default request parameter to list_charts and list_dashboards (#39730)
     add e585406fff6 chore(codeowners): notify @sfirke on translation changes (#39794)
     add d23b0cad920 chore: Bump core packages to 0.1.0 RC3 (#39823)
     add 2ec53c0694b chore(deps): bump mapbox-gl from 3.22.0 to 3.23.0 in /superset-frontend (#39769)
     add de45f3a928e chore(deps): bump aws-actions/amazon-ecs-deploy-task-definition from 2.6.1 to 2.6.2 (#39806)
     add 6bfdee98cd9 chore(deps-dev): bump @docusaurus/tsconfig from 3.10.0 to 3.10.1 in /docs (#39811)
     add 1ac113fd449 chore(deps): bump aws-actions/amazon-ecs-render-task-definition from 1.8.4 to 1.8.5 (#39809)
     add e77fb5e3fcb feat(i18n): updated Ukrainian translation  (#39720)
     add cb744388652 fix(viz): correct table chart drill-to-detail temporal boundaries and null handling (#39668)
     add 98eaaaa6d66 fix(mcp): clear stale thread-local DB session in sync tool wrapper (#39798)
     add dbe26d81ce0 chore(deps-dev): bump baseline-browser-mapping from 2.10.21 to 2.10.24 in /superset-frontend (#39759)
     add d8dd2d99b3f fix(time-comparison): use chart row_limit instead of instance config in offset queries (#39490)
     add 9d4384e49ee chore(deps-dev): bump @babel/preset-env from 7.29.2 to 7.29.3 in /superset-frontend (#39822)
     add b14cca15f6b fix(table): preserve decimals in totals row when Time Comparison is enabled (#39747)
     add c90c8612ade chore(deps): bump @docusaurus/faster from 3.10.0 to 3.10.1 in /docs (#39804)
     add 867e173427b chore(deps): drop stale legacy-plugin-chart-map-box lockfile entry (#39825)
     add ad73395c894 chore(deps-dev): bump yeoman-test from 11.3.1 to 11.4.2 in /superset-frontend (#39816)
     add dc1c0f6ba19 docs: add user-facing Handlebars chart page with full helpers reference (#39591)
     add 6205afbaa08 chore(deps-dev): bump webpack-sources from 3.4.0 to 3.4.1 in /superset-frontend (#39851)
     add 28239c18d40 feat(mcp): warn when execute_sql template_params used with templating disabled (#39858)
     add 41a22d79184 chore: Upgrade to React 18 (#38563)
     add 673634f7af7 fix(mcp): point get_dataset_info url to explore view instead of legacy tablemodelview edit (#39838)
     add af8d15fdfcf chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#39852)
     add 812f4ae0804 chore(deps): update zod requirement from ^4.4.1 to ^4.4.3 in /superset-frontend/plugins/plugin-chart-echarts (#39850)
     add 2be971ce770 chore(deps): bump docusaurus-plugin-openapi-docs from 5.0.1 to 5.0.2 in /docs (#39849)
     add 319b8a1124d chore(deps-dev): bump globals from 17.5.0 to 17.6.0 in /docs (#39847)
     add ebb02d0ecf0 chore(deps): bump @swc/core from 1.15.32 to 1.15.33 in /docs (#39845)
     add 2f605724e72 chore(deps-dev): bump globals from 17.5.0 to 17.6.0 in /superset-websocket (#39844)
     add c2725e86f37 fix(markdown): Allow "target" attribute (#39868)
     add e76318633e3 fix(helm): allow chart to work out-of-the-box with legacy Bitnami images (#39839)
     add 5325b87e73e fix(clickhouse): prevent expensive table scan (#39867)
     add 76955017eb0 chore: bump shillelagh to 1.4.4 (#39870)
     add e80207218b8 chore(deps-dev): bump eslint from 10.2.1 to 10.3.0 in /superset-websocket (#39843)
     add 2edae162f07 chore(deps): bump baseline-browser-mapping from 2.10.24 to 2.10.27 in /docs (#39848)
     add d6188374b4f chore(deps): bump docusaurus-theme-openapi-docs from 5.0.1 to 5.0.2 in /docs (#39846)
     add 586de12a05e fix(embedded): prevent duplicate React root on rehandshake (#39860)
     add 8173cfe9e3b fix(CollectionControl): assign stable ids to keyless items (#39862)
     add 5b5f23d1272 test(plugin-chart-echarts): regression guards for temporal x-axis labels on timeseries charts (#39208)
     add 9e91ae8cfff fix(colors): reassign colliding series when dashboard locks shared dimension color (#39297)
     add cb53745d43c feat: semantic layer extension (#37815)
     add 9459bc7bf4b fix(mcp): warn on invalid chart preview form data key (#39891)
     add 4a21a5365f8 fix(mcp): validate column refs in generate_explore_link, update_chart_preview, and update_chart (#39797)
     add 4b17ac26296 fix(explore): add matrixify_enable guard to prevent stale validators on pre-revamp charts (#38765)
     add 3745e37182b fix(OAuth2): Support OAuth2 exception with legacy endpoint (#39897)
     add d0ef19953ac chore(deps): bump memoize-one from 5.2.1 to 6.0.0 in /superset-frontend/plugins/plugin-chart-ag-grid-table (#37910)
     add c06aee85136 chore(deps-dev): bump jsdom from 29.1.0 to 29.1.1 in /superset-frontend (#39815)
     add 14d28c34fdc chore(deps-dev): update cx-oracle requirement from <8.1,>8.0.0 to >8.0.0,<8.4 (#39753)
     add d578fa1949d chore(deps): bump @deck.gl/mapbox from 9.3.1 to 9.3.2 in /superset-frontend (#39814)
     add b305c8681c9 chore(deps-dev): update impyla requirement from <0.17,>0.16.2 to >0.16.2,<0.23 (#39833)
     add 5e2c6d8c9e4 chore(deps): bump nanoid from 5.1.9 to 5.1.11 in /superset-frontend (#39820)
     add f018b678950 chore(deps-dev): update sqlalchemy-vertica-python requirement from <0.6,>=0.5.9 to >=0.5.9,<0.7 (#39831)
     add d7beffcec12 chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.9.3 to 0.10.0 in /superset-frontend (#39853)
     add 7290d3c452a chore(deps-dev): update pyathena requirement from <3,>=2 to >=2,<4 (#39830)
     add d7663a9a1cc chore(deps-dev): update denodo-sqlalchemy requirement from ~=1.0.6 to >=1.0.6,<2.1.0 (#39832)
     add adfbbf1433c fix(sql): quote identifiers in transpile_to_dialect to fix case-sensitive column filters (#39521)
     add 9aaa12c7d44 fix(reports): preserve urlParams in multi-tab report fan-out (#39884)
     add e667ceb6cfa feat(themes): expose active theme mode via data-theme-mode attribute (#39063)
     add 4aa4415d8fd fix(i18n): update Russian translations (#39589)
     add 5b5dd010285 fix(sqla): parenthesize calculated column expressions in WHERE clause (#39793)
     add 1e526e21412 Merge branch 'master' into fix-clear-all-staging

No new revisions were added by this update.

Summary of changes:
 .github/CODEOWNERS                                 |     4 +
 .github/labeler.yml                                |    10 +
 .github/workflows/bashlib.sh                       |    14 +
 .github/workflows/ephemeral-env.yml                |     4 +-
 .github/workflows/superset-python-unittest.yml     |     1 +
 RESOURCES/INTHEWILD.yaml                           |     4 +
 UPDATING.md                                        |     7 +
 docker/pythonpath_dev/superset_config.py           |     8 +-
 .../extensions/contribution-types.md               |    49 +
 docs/docs/using-superset/handlebars-chart.mdx      |   143 +
 docs/package.json                                  |    35 +-
 docs/static/feature-flags.json                     |     6 +
 docs/yarn.lock                                     |  1445 +-
 helm/superset/Chart.yaml                           |     2 +-
 helm/superset/README.md                            |     2 +-
 helm/superset/values.yaml                          |     7 +
 pyproject.toml                                     |    25 +-
 requirements/base.txt                              |     2 +-
 requirements/development.txt                       |     4 +-
 superset-core/pyproject.toml                       |     4 +-
 .../src/superset_core/semantic_layers/config.py    |    73 +
 .../src/superset_core/semantic_layers/daos.py      |   169 +
 .../superset_core/semantic_layers/decorators.py    |   102 +
 .../src/superset_core/semantic_layers/layer.py     |   129 +
 .../src/superset_core/semantic_layers/models.py    |    85 +
 .../src/superset_core/semantic_layers/types.py     |   209 +
 .../src/superset_core/semantic_layers/view.py      |   113 +
 superset-extensions-cli/pyproject.toml             |     2 +-
 superset-frontend/package-lock.json                | 32474 +++++++++----------
 superset-frontend/package.json                     |    40 +-
 .../packages/generator-superset/package.json       |     2 +-
 .../packages/superset-core/package.json            |    13 +-
 .../packages/superset-core/src/testing.tsx         |     4 +-
 .../src/theme/utils/themeUtils.test.ts             |     2 +-
 .../superset-ui-chart-controls/package.json        |     9 +-
 .../src/shared-controls/matrixifyControls.test.ts  |     5 +-
 .../src/shared-controls/matrixifyControls.tsx      |     9 +-
 .../shared-controls/matrixifyControls.test.tsx     |   238 +
 .../packages/superset-ui-core/package.json         |     9 +-
 .../src/color/CategoricalColorScale.ts             |    47 +-
 .../src/components/ActionButton/index.tsx          |    10 +-
 .../AsyncAceEditor/useJsonValidation.test.ts       |     2 +-
 .../src/components/AsyncEsmComponent/index.tsx     |    18 +-
 .../src/components/Button/types.ts                 |     3 +-
 .../DropdownContainer.stories.tsx                  |     2 +-
 .../src/components/DropdownContainer/types.ts      |     3 +-
 .../DynamicEditableTitle.regression.test.tsx       |    80 +
 .../src/components/DynamicEditableTitle/index.tsx  |    43 +-
 .../src/components/EmptyState/types.ts             |     3 +-
 .../superset-ui-core/src/components/Form/Form.tsx  |     2 +-
 .../src/components/Label/Label.test.tsx            |     1 -
 .../components/Label/reusable/DatasetTypeLabel.tsx |    18 +-
 .../src/components/ListViewCard/types.ts           |     1 +
 .../src/components/MetadataBar/MetadataBar.tsx     |     2 +-
 .../src/components/Modal/FormModal.tsx             |     2 +-
 .../src/components/Modal/Modal.tsx                 |     3 +
 .../superset-ui-core/src/components/Modal/types.ts |     5 +-
 .../src/components/PageHeaderWithActions/index.tsx |   114 +-
 .../TableCollection/TableCollection.test.tsx       |     2 +-
 .../src/components/TableCollection/utils.tsx       |     4 +-
 .../src/components/TableView/TableView.test.tsx    |    41 +-
 .../src/components/TableView/TableView.tsx         |    52 +-
 .../src/components/TruncatedList/index.tsx         |     4 +-
 .../src/connection/SupersetClient.ts               |     1 +
 .../superset-ui-core/src/connection/types.ts       |     1 +
 .../hooks/useChangeEffect/useChangeEffect.test.ts  |     2 +-
 .../useComponentDidMount.test.ts                   |     2 +-
 .../useComponentDidUpdate.test.ts                  |     2 +-
 .../useElementOnScreen/useElementOnScreen.test.ts  |    16 +-
 .../src/hooks/usePrevious/usePrevious.test.ts      |     2 +-
 .../useTruncation/useCSSTextTruncation.test.tsx    |     2 +-
 .../useChildElementTruncation.test.ts              |     2 +-
 .../superset-ui-core/src/query/DatasourceKey.ts    |    12 +-
 .../superset-ui-core/src/query/types/Datasource.ts |     8 +
 .../src/time-format/TimeFormatter.ts               |     8 +-
 .../src/time-format/utils/stringifyTimeInput.ts    |     8 +-
 .../superset-ui-core/src/ui-overrides/types.ts     |     3 +-
 .../superset-ui-core/src/utils/featureFlags.ts     |     1 +
 .../test/chart/components/SuperChart.test.tsx      |     2 +-
 .../test/color/CategoricalColorScale.test.ts       |   179 +
 .../test/connection/SupersetClient.test.ts         |    36 +-
 .../test/query/types/Datasource.test.ts            |     3 +-
 .../test/time-format/TimeFormatter.test.ts         |    15 +
 .../components/modals/ImportDatasetModal.ts        |    18 +
 .../playwright/fixtures/dataset_export.zip         |   Bin 5261 -> 0 bytes
 .../playwright/helpers/api/assertions.ts           |    32 +-
 .../playwright/helpers/api/dataset.ts              |    15 +
 .../helpers/api/{savedQuery.ts => sqllab.ts}       |    40 +-
 .../playwright/pages/CreateDatasetPage.ts          |     2 +-
 .../playwright/tests/chart/chart-list.spec.ts      |    29 +-
 .../tests/dashboard/dashboard-list.spec.ts         |    50 +-
 .../tests/dataset/create-dataset.spec.ts           |   297 +-
 .../playwright/tests/dataset/dataset-list.spec.ts  |   126 +-
 .../legacy-plugin-chart-calendar/package.json      |     2 +-
 .../legacy-plugin-chart-country-map/package.json   |     2 +-
 .../scripts/Country Map GeoJSON Generator.ipynb    |   Bin 2319015 -> 10614906 bytes
 .../src/countries/afghanistan.geojson              |   Bin 116233 -> 116055 bytes
 .../src/countries/algeria.geojson                  |   Bin 72436 -> 72143 bytes
 .../src/countries/angola.geojson                   |   Bin 91061 -> 90836 bytes
 .../src/countries/antarctica.geojson               |   Bin 249319 -> 245701 bytes
 .../src/countries/argentina.geojson                |   Bin 92396 -> 91982 bytes
 .../src/countries/central_african_republic.geojson |   Bin 76367 -> 76280 bytes
 .../src/countries/chad.geojson                     |   Bin 59200 -> 59068 bytes
 .../src/countries/chile.geojson                    |   Bin 155583 -> 152109 bytes
 .../src/countries/colombia.geojson                 |   Bin 172825 -> 172427 bytes
 .../src/countries/cook_islands.geojson             |   Bin 4932 -> 4793 bytes
 .../democratic_republic_of_the_congo.geojson       |   Bin 60598 -> 60421 bytes
 .../src/countries/ecuador.geojson                  |   Bin 72252 -> 71984 bytes
 .../src/countries/egypt.geojson                    |   Bin 63171 -> 62737 bytes
 .../src/countries/ethiopia.geojson                 |   Bin 74208 -> 74123 bytes
 .../src/countries/fiji.geojson                     |   Bin 16252 -> 14845 bytes
 .../src/countries/finland.geojson                  |   Bin 131137 -> 130221 bytes
 .../src/countries/france.geojson                   |   Bin 293304 -> 292411 bytes
 .../src/countries/france_overseas.geojson          |   Bin 319670 -> 318427 bytes
 .../src/countries/france_regions.geojson           |   Bin 125649 -> 125270 bytes
 .../src/countries/french_polynesia.geojson         |   Bin 23524 -> 21933 bytes
 .../src/countries/greenland.geojson                |   Bin 183222 -> 180051 bytes
 .../src/countries/iran.geojson                     |   Bin 134537 -> 134245 bytes
 .../src/countries/italy.geojson                    |   Bin 239052 -> 238139 bytes
 .../src/countries/italy_regions.geojson            |   Bin 107344 -> 106568 bytes
 .../src/countries/japan.geojson                    |   Bin 125219 -> 123030 bytes
 .../src/countries/kazakhstan.geojson               |   Bin 97047 -> 96827 bytes
 .../src/countries/libya.geojson                    |   Bin 44004 -> 43958 bytes
 .../src/countries/malaysia.geojson                 |   Bin 61681 -> 61384 bytes
 .../src/countries/mexico.geojson                   |   Bin 155798 -> 153935 bytes
 .../src/countries/mongolia.geojson                 |   Bin 66140 -> 66008 bytes
 .../src/countries/mozambique.geojson               |   Bin 70273 -> 70096 bytes
 .../src/countries/myanmar.geojson                  |   Bin 122123 -> 121555 bytes
 .../src/countries/namibia.geojson                  |   Bin 51744 -> 51566 bytes
 .../src/countries/new_zealand.geojson              |   Bin 51553 -> 50769 bytes
 .../src/countries/niger.geojson                    |   Bin 24447 -> 24404 bytes
 .../src/countries/nigeria.geojson                  |   Bin 132145 -> 131937 bytes
 .../src/countries/norway.geojson                   |   Bin 193186 -> 190978 bytes
 .../src/countries/pakistan.geojson                 |   Bin 71260 -> 71132 bytes
 .../src/countries/papua_new_guinea.geojson         |   Bin 93153 -> 92488 bytes
 .../src/countries/peru.geojson                     |   Bin 121913 -> 121731 bytes
 .../src/countries/philippines.geojson              |   Bin 201029 -> 199021 bytes
 .../src/countries/philippines_regions.geojson      |   Bin 137441 -> 135628 bytes
 .../src/countries/portugal.geojson                 |   Bin 54433 -> 54121 bytes
 .../src/countries/saudi_arabia.geojson             |   Bin 49793 -> 49541 bytes
 .../src/countries/somalia.geojson                  |   Bin 17724 -> 17637 bytes
 .../src/countries/spain.geojson                    |   Bin 197369 -> 196796 bytes
 .../src/countries/sudan.geojson                    |   Bin 50604 -> 50472 bytes
 .../src/countries/sweden.geojson                   |   Bin 122167 -> 121208 bytes
 .../src/countries/tanzania.geojson                 |   Bin 108762 -> 108542 bytes
 .../src/countries/thailand.geojson                 |   Bin 206445 -> 205568 bytes
 .../src/countries/turkey.geojson                   |   Bin 204145 -> 203575 bytes
 .../src/countries/turkey_regions.geojson           |   Bin 107486 -> 107269 bytes
 .../src/countries/turkmenistan.geojson             |   Bin 34959 -> 34870 bytes
 .../src/countries/uk.geojson                       |   Bin 478985 -> 477503 bytes
 .../src/countries/ukraine.geojson                  |   Bin 173452 -> 173064 bytes
 .../united_states_minor_outlying_islands.geojson   |   Bin 3957 -> 3552 bytes
 .../src/countries/uzbekistan.geojson               |   Bin 50378 -> 50250 bytes
 .../src/countries/venezuela.geojson                |   Bin 119692 -> 118980 bytes
 .../src/countries/vietnam.geojson                  |   Bin 138908 -> 138005 bytes
 .../legacy-plugin-chart-horizon/package.json       |     2 +-
 .../legacy-plugin-chart-paired-t-test/package.json |     2 +-
 .../package.json                                   |     2 +-
 .../legacy-plugin-chart-partition/package.json     |     6 +-
 .../plugins/legacy-plugin-chart-rose/package.json  |     2 +-
 .../legacy-plugin-chart-world-map/package.json     |     2 +-
 .../plugins/legacy-preset-chart-nvd3/package.json  |     2 +-
 .../plugin-chart-ag-grid-table/package.json        |    11 +-
 .../src/AgGridTable/index.tsx                      |     8 +-
 .../src/AgGridTableChart.tsx                       |     2 +-
 .../src/renderers/TextCellRenderer.tsx             |     6 +-
 .../src/utils/getInitialSortState.ts               |     2 +-
 .../test/memoization.test.ts                       |    99 +
 .../test/utils/useColDefs.test.ts                  |     2 +-
 .../plugins/plugin-chart-cartodiagram/package.json |     4 +-
 .../src/components/ChartLayer.tsx                  |    19 +-
 .../test/components/chartLayer.test.ts             |     5 +
 .../plugins/plugin-chart-echarts/package.json      |     4 +-
 .../src/MixedTimeseries/EchartsMixedTimeseries.tsx |     2 +-
 .../src/Treemap/EchartsTreemap.tsx                 |     6 +-
 .../test/MixedTimeseries/transformProps.test.ts    |   132 +
 .../test/Timeseries/transformProps.test.ts         |   113 +
 .../test/utils/formatters.test.ts                  |    52 +
 .../plugin-chart-echarts/test/utils/series.test.ts |    20 +-
 .../plugins/plugin-chart-handlebars/README.md      |    95 -
 .../plugins/plugin-chart-handlebars/package.json   |     4 +-
 .../src/plugin/controls/handlebarTemplate.tsx      |    47 +-
 .../src/plugin/controls/style.tsx                  |     2 +-
 .../plugins/plugin-chart-pivot-table/package.json  |     4 +-
 .../plugin-chart-point-cluster-map/package.json    |     8 +-
 .../plugins/plugin-chart-table/package.json        |     9 +-
 .../plugin-chart-table/src/DataTable/DataTable.tsx |     2 +-
 .../plugins/plugin-chart-table/src/Styles.tsx      |     5 +
 .../plugins/plugin-chart-table/src/TableChart.tsx  |   126 +-
 .../plugin-chart-table/src/transformProps.ts       |     9 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |    92 +
 .../plugins/plugin-chart-word-cloud/package.json   |     2 +-
 .../plugins/preset-chart-deckgl/package.json       |     6 +-
 .../src/CategoricalDeckGLContainer.tsx             |     3 +-
 .../preset-chart-deckgl/src/DeckGLContainer.tsx    |     2 +-
 .../preset-chart-deckgl/src/layers/common.test.ts  |     4 +-
 superset-frontend/spec/helpers/testing-library.tsx |     1 +
 .../src/SqlLab/components/AppLayout/index.tsx      |     2 +-
 .../ColumnElement/ColumnElement.test.tsx           |    10 +-
 .../EditorWrapper/EditorWrapper.test.tsx           |    28 +-
 .../EditorWrapper/useAnnotations.test.ts           |     8 +-
 .../components/EditorWrapper/useKeywords.test.ts   |     8 +-
 .../components/KeyboardShortcutButton/index.tsx    |     4 +-
 .../src/SqlLab/components/PopEditorTab/index.tsx   |     4 +-
 .../src/SqlLab/components/QueryTable/index.tsx     |    25 +-
 .../components/RunQueryActionButton/index.tsx      |     8 +-
 .../SaveDatasetModal/SaveDatasetModal.test.tsx     |    39 +-
 .../src/SqlLab/components/SouthPane/index.tsx      |     2 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |     5 +-
 .../SqlEditorTopBar/useDatabaseSelector.test.ts    |     2 +-
 .../hooks/useQueryEditor/useQueryEditor.test.ts    |     2 +-
 .../useDeckLayerMetadata.test.ts                   |    64 +-
 superset-frontend/src/components/Chart/Chart.tsx   |    16 +-
 .../Chart/ChartContextMenu/useContextMenu.test.tsx |    74 +-
 .../components/Chart/DrillBy/DrillBySubmenu.tsx    |     6 +-
 .../Chart/DrillBy/useResultsTableView.test.ts      |     2 +-
 .../Chart/DrillDetail/DrillDetailPane.tsx          |     3 +-
 .../Chart/DrillDetail/DrillDetailTableControls.tsx |     4 +-
 .../Chart/useDrillDetailMenuItems/index.tsx        |     2 +-
 .../src/components/DatabaseSelector/index.tsx      |    24 +-
 .../ChangeDatasourceModal.test.tsx                 |    34 +
 .../Datasource/ChangeDatasourceModal/index.tsx     |    50 +-
 .../DatasourceModal/DatasourceModal.test.tsx       |    27 +-
 .../FoldersEditor/hooks/useDragHandlers.test.ts    |     2 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |     4 +-
 .../Datasource/components/Field/index.tsx          |     2 +-
 .../src/components/DynamicPlugins/index.tsx        |    13 +-
 .../ErrorMessage/DatasetNotFoundErrorMessage.tsx   |     3 +-
 .../src/components/FilterableTable/index.tsx       |    20 +-
 .../FilterableTable/useCellContentParser.test.ts   |     2 +-
 .../src/components/GridTable/Header.tsx            |    10 +-
 .../src/components/GridTable/index.tsx             |    11 +-
 .../src/components/ListView/Filters/index.tsx      |     6 +
 .../src/components/ListView/ListView.tsx           |    31 +-
 .../components/Modal/useModalValidation.test.ts    |     2 +-
 .../ResizableSidebar/useStoredSidebarWidth.test.ts |     2 +-
 .../useStreamingExport.test.ts                     |     3 +-
 .../components/AddSliceCard/AddSliceCard.tsx       |     3 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |     5 +-
 .../DashboardBuilder/DashboardContainer.tsx        |     5 +-
 .../dashboard/components/Header/Header.test.tsx    |    16 +
 .../dashboard/components/PropertiesModal/index.tsx |     2 +-
 .../src/dashboard/components/SliceAdder.tsx        |     3 +-
 .../gridComponents/ChartHolder/ChartHolder.tsx     |     3 +-
 .../DynamicComponent/DynamicComponent.tsx          |     4 +-
 .../gridComponents/Header/Header.test.tsx          |     1 +
 .../gridComponents/Markdown/Markdown.test.tsx      |    46 +-
 .../new/DraggableNewComponent.test.tsx             |     1 +
 .../useCrossFiltersScopingModal.test.ts            |     6 +-
 .../FilterBar/FilterBarSettings/index.tsx          |     2 +-
 .../FilterBar/FilterControls/FilterControls.tsx    |     8 +-
 .../FilterBar/FilterControls/GroupByFilterCard.tsx |    16 +-
 .../FilterBar/FilterControls/state.test.ts         |    11 +-
 .../FiltersConfigForm/DatasetSelect.tsx            |    11 +-
 .../FiltersConfigForm/FilterScope/FilterScope.tsx  |     2 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |    21 +-
 .../FiltersConfigForm/getControlItemsMap.tsx       |    15 +-
 .../transformers/filterTransformer.ts              |    11 +-
 .../components/nativeFilters/state.test.ts         |     2 +-
 .../components/resizable/ResizableContainer.tsx    |     4 +-
 .../dashboard/contexts/AutoRefreshContext.test.tsx |     2 +-
 .../hooks/useAutoRefreshTabPause.test.tsx          |     2 +-
 .../src/dashboard/hooks/useCurrentTime.test.ts     |     2 +-
 .../dashboard/hooks/useDownloadScreenshot.test.ts  |   110 +-
 .../src/dashboard/hooks/useDownloadScreenshot.ts   |    22 +-
 .../src/dashboard/hooks/useTabVisibility.test.ts   |     2 +-
 .../src/embedded/EmbeddedContextProviders.tsx      |     5 +-
 superset-frontend/src/embedded/index.tsx           |    28 +-
 .../src/explore/actions/exploreActions.test.ts     |   105 +
 .../src/explore/actions/exploreActions.ts          |    85 +
 .../src/explore/actions/hydrateExplore.ts          |     8 +-
 .../src/explore/actions/saveModalActions.ts        |     7 +-
 .../src/explore/components/ControlHeader.tsx       |     2 +
 .../DataTableControl/useFilteredTableData.test.ts  |     2 +-
 .../DataTableControl/useTableColumns.test.ts       |     2 +-
 .../DataTablesPane/components/SamplesPane.tsx      |     6 +-
 .../DatasourcePanelDragOption.test.tsx             |     4 +-
 .../DatasourcePanelDragOption/index.tsx            |    40 +-
 .../DatasourcePanel/DatasourcePanelItem.test.tsx   |     2 +-
 .../explore/components/DatasourcePanel/index.tsx   |     6 +-
 .../components/ExploreChartHeader/index.tsx        |   171 +-
 .../explore/components/ExploreChartPanel/index.tsx |     4 +-
 .../explore/components/ExploreContainer/index.tsx  |     3 +-
 .../components/ExploreViewContainer/index.tsx      |    48 +-
 .../components/StashFormDataContainer/index.tsx    |     3 +-
 .../controls/CollectionControl/index.tsx           |   419 +-
 .../ColumnConfigConstants.test.tsx                 |    20 +-
 .../controls/ColumnConfigControl/constants.tsx     |     2 -
 .../components/controls/CustomListItem/index.tsx   |    61 +-
 .../controls/DatasourceControl/index.tsx           |    51 +-
 .../DndColumnSelectControl/ColumnSelectPopover.tsx |    55 +-
 .../DndAdhocFilterOption.tsx                       |     6 +-
 .../DndColumnMetricSelect.tsx                      |    20 +-
 .../DndColumnSelectControl/DndColumnSelect.tsx     |    25 +-
 .../DndColumnSelectPopoverTitle.tsx                |     2 +-
 .../DndFilterSelect.test.tsx                       |     2 +-
 .../DndMetricSelect.test.tsx                       |    20 +-
 .../DndColumnSelectControl/DndMetricSelect.tsx     |    47 +-
 .../controls/DndColumnSelectControl/Option.tsx     |     2 +-
 .../FilterControl/AdhocFilterEditPopover/index.tsx |    34 +-
 .../AdhocFilterPopoverTrigger/index.tsx            |     3 +-
 .../utils/useDatePickerInAdhocfilter.test.ts       |     2 +-
 .../utils/useGetTimeRangeLabel.test.ts             |    22 +-
 .../AdhocMetricEditPopover.test.tsx                |    80 +-
 .../MetricControl/AdhocMetricEditPopover/index.tsx |    39 +-
 .../MetricControl/AdhocMetricOption.test.tsx       |     6 +-
 .../controls/MetricControl/MetricsControl.test.tsx |     9 +-
 superset-frontend/src/explore/controls.tsx         |     3 +-
 .../src/explore/reducers/exploreReducer.ts         |    20 +
 superset-frontend/src/explore/store.test.tsx       |   400 +-
 superset-frontend/src/explore/store.ts             |    58 +-
 superset-frontend/src/explore/types.ts             |     5 +
 .../cssTemplates/CssTemplateModal.test.tsx         |   104 +
 .../databases/DatabaseModal/index.test.tsx         |    12 +-
 .../datasets/hooks/useDatasetLists.test.ts         |     2 +-
 .../metadataBar/useDatasetMetadataBar.test.tsx     |     2 +-
 superset-frontend/src/features/home/Menu.tsx       |    13 +-
 .../src/features/home/RightMenu.test.tsx           |     9 +-
 superset-frontend/src/features/home/SubMenu.tsx    |    33 +-
 superset-frontend/src/features/home/types.ts       |     2 +
 .../src/features/reports/ReportModal/index.tsx     |     2 +-
 .../src/features/roles/RoleListEditModal.test.tsx  |     5 +
 .../src/features/roles/RoleListEditModal.tsx       |    76 +-
 .../semanticLayers/SemanticLayerModal.test.tsx     |   130 +
 .../features/semanticLayers/SemanticLayerModal.tsx |   408 +
 .../semanticLayers/jsonFormsHelpers.test.ts        |   150 +
 .../features/semanticLayers/jsonFormsHelpers.tsx   |   386 +
 .../src/features/semanticLayers/label.ts           |    65 +
 .../semanticViews/AddSemanticViewModal.test.tsx    |   264 +
 .../semanticViews/AddSemanticViewModal.tsx         |   541 +
 .../semanticViews/SemanticViewEditModal.test.tsx   |   267 +
 .../semanticViews/SemanticViewEditModal.tsx        |   241 +
 .../src/features/users/UserListModal.tsx           |   259 +-
 .../src/hooks/apiResources/apiResources.test.ts    |     2 +-
 .../src/hooks/apiResources/dashboards.test.ts      |    19 +-
 .../hooks/apiResources/databaseFunctions.test.ts   |     6 +-
 .../src/hooks/apiResources/datasets.test.ts        |    89 +-
 .../src/hooks/apiResources/queries.test.ts         |    19 +-
 .../hooks/apiResources/queryValidations.test.ts    |     6 +-
 .../src/hooks/apiResources/schemas.test.ts         |    10 +-
 .../src/hooks/apiResources/sqlEditorTabs.test.ts   |    47 +-
 .../src/hooks/apiResources/sqlLab.test.ts          |    19 +-
 .../src/hooks/apiResources/tables.test.ts          |    12 +-
 .../hooks/useBeforeUnload/useBeforeUnload.test.ts  |     2 +-
 .../hooks/useConfirmModal/useConfirmModal.test.tsx |    98 +-
 .../src/hooks/useDebounceValue.test.ts             |     2 +-
 .../src/hooks/usePermissions.test.tsx              |     2 +-
 .../useUnsavedChangesPrompt.test.tsx               |    19 +-
 superset-frontend/src/logger/useLogAction.test.ts  |     2 +-
 .../src/pages/ChartCreation/index.tsx              |    19 +-
 superset-frontend/src/pages/ChartList/index.tsx    |     5 +-
 superset-frontend/src/pages/DatabaseList/index.tsx |   501 +-
 .../DatasetList/DatasetList.behavior.test.tsx      |    39 +-
 .../DatasetList/DatasetList.integration.test.tsx   |    23 +-
 .../DatasetList/DatasetList.listview.test.tsx      |   233 +-
 .../DatasetList/DatasetList.permissions.test.tsx   |    17 +-
 .../src/pages/DatasetList/DatasetList.test.tsx     |    78 +-
 .../pages/DatasetList/DatasetList.testHelpers.tsx  |    28 +-
 superset-frontend/src/pages/DatasetList/index.tsx  |   801 +-
 .../src/pages/FileHandler/index.test.tsx           |    30 +-
 .../src/pages/SqlLab/LocationContext.tsx           |     4 +-
 superset-frontend/src/theme/ThemeController.ts     |    16 +-
 superset-frontend/src/theme/ThemeProvider.tsx      |    14 +-
 .../src/theme/hooks/useThemeValidation.test.ts     |     2 +-
 .../src/theme/tests/ThemeController.test.ts        |    35 +
 .../src/theme/tests/ThemeProvider.test.tsx         |    58 +-
 superset-frontend/src/types/Dataset.ts             |    11 +-
 superset-frontend/src/views/CRUD/hooks.test.tsx    |     2 +-
 .../src/views/RootContextProviders.tsx             |     5 +-
 superset-frontend/src/views/index.tsx              |     5 +-
 superset-frontend/src/views/menu.tsx               |     7 +-
 superset-frontend/webpack.config.js                |    14 +-
 superset-websocket/package-lock.json               |    28 +-
 superset-websocket/package.json                    |     4 +-
 .../commands/datasource}/__init__.py               |     0
 superset/commands/datasource/list.py               |   245 +
 superset/commands/explore/get.py                   |     6 +-
 superset/commands/report/execute.py                |    59 +-
 .../commands/semantic_layer}/__init__.py           |     0
 superset/commands/semantic_layer/create.py         |   104 +
 superset/commands/semantic_layer/delete.py         |   115 +
 superset/commands/semantic_layer/exceptions.py     |    76 +
 superset/commands/semantic_layer/update.py         |   126 +
 superset/common/query_object.py                    |    34 +-
 superset/config.py                                 |     5 +
 superset/connectors/sqla/models.py                 |    27 +-
 superset/core/api/core_api_injection.py            |    35 +
 superset/daos/datasource.py                        |   160 +-
 superset/daos/semantic_layer.py                    |   220 +
 superset/dashboards/permalink/types.py             |     6 +-
 superset/datasets/datetime_format_detector.py      |    11 +-
 superset/datasource/api.py                         |   183 +-
 superset/datasource/schemas.py                     |   155 +
 superset/db_engine_specs/base.py                   |     4 +-
 superset/db_engine_specs/gsheets.py                |     4 +-
 superset/db_engine_specs/mysql.py                  |     6 +-
 superset/explorables/base.py                       |   168 +-
 superset/initialization/__init__.py                |    11 +-
 superset/mcp_service/CLAUDE.md                     |    19 +-
 superset/mcp_service/app.py                        |    13 +
 superset/mcp_service/auth.py                       |     9 +
 superset/mcp_service/chart/compile.py              |   362 +
 superset/mcp_service/chart/tool/generate_chart.py  |    89 +-
 superset/mcp_service/chart/tool/list_charts.py     |     6 +-
 superset/mcp_service/chart/tool/update_chart.py    |    86 +
 .../mcp_service/chart/tool/update_chart_preview.py |    88 +-
 .../chart/validation/dataset_validator.py          |   161 +-
 .../mcp_service/dashboard/tool/list_dashboards.py  |     6 +-
 superset/mcp_service/dataset/schemas.py            |   149 +-
 superset/mcp_service/dataset/tool/__init__.py      |     2 +
 superset/mcp_service/dataset/tool/query_dataset.py |   489 +
 .../explore/tool/generate_explore_link.py          |    55 +
 superset/mcp_service/sql_lab/schemas.py            |     8 +
 superset/mcp_service/sql_lab/tool/execute_sql.py   |    18 +-
 ...6_33d7e0e21daa_add_semantic_layers_and_views.py |   168 +
 superset/models/helpers.py                         |    30 +-
 superset/models/sql_lab.py                         |     6 +-
 superset/security/manager.py                       |   318 +-
 .../semantic_layers}/__init__.py                   |     0
 superset/semantic_layers/api.py                    |  1147 +
 superset/semantic_layers/labels.py                 |   105 +
 superset/semantic_layers/mapper.py                 |   912 +
 superset/semantic_layers/models.py                 |   556 +
 .../utils.py => semantic_layers/registry.py}       |     9 +-
 superset/semantic_layers/schemas.py                |    45 +
 superset/sql/parse.py                              |     3 +
 superset/superset_typing.py                        |    51 +-
 superset/tasks/async_queries.py                    |     5 +
 .../{ca => cs}/LC_MESSAGES/messages.po             | 11114 +++----
 .../{de => lv}/LC_MESSAGES/messages.po             | 11682 ++++---
 superset/translations/ru/LC_MESSAGES/messages.po   |   733 +-
 superset/translations/uk/LC_MESSAGES/messages.po   | 10465 +++---
 superset/utils/cache_keys.py                       |    54 +
 superset/utils/core.py                             |    37 +-
 superset/views/core.py                             |    11 +-
 superset/viz.py                                    |    16 +
 tests/integration_tests/charts/api_tests.py        |     6 +-
 tests/integration_tests/core_tests.py              |    55 +-
 tests/integration_tests/datasource/api_tests.py    |    52 +
 tests/integration_tests/query_context_tests.py     |   226 +-
 .../unit_tests/commands/datasource}/__init__.py    |     0
 tests/unit_tests/commands/datasource/list_test.py  |   162 +
 .../commands/importers/v1/assets_test.py           |    19 +-
 tests/unit_tests/commands/report/execute_test.py   |   111 +
 .../commands/semantic_layer}/__init__.py           |     0
 .../commands/semantic_layer/create_test.py         |   230 +
 .../commands/semantic_layer/delete_test.py         |   164 +
 .../commands/semantic_layer/exceptions_test.py     |    91 +
 .../commands/semantic_layer/update_test.py         |   326 +
 .../common/test_query_context_processor.py         |   227 +
 .../datasets/test_datetime_format_detector.py      |    57 +
 tests/unit_tests/datasource/dao_tests.py           |    29 +
 tests/unit_tests/db_engine_specs/test_gsheets.py   |    31 +
 tests/unit_tests/mcp_service/chart/test_compile.py |   445 +
 .../mcp_service/chart/tool/test_list_charts.py     |    73 +-
 .../mcp_service/chart/tool/test_update_chart.py    |   149 +
 .../chart/tool/test_update_chart_preview.py        |   323 +
 .../validation/test_column_name_normalization.py   |    13 +
 .../dashboard/tool/test_dashboard_tools.py         |    74 +-
 .../mcp_service/dataset/tool/test_dataset_tools.py |    32 +-
 .../mcp_service/dataset/tool/test_query_dataset.py |   831 +
 .../explore/tool/test_generate_explore_link.py     |   131 +
 .../mcp_service/sql_lab/tool/test_execute_sql.py   |    99 +
 .../mcp_service/test_auth_user_resolution.py       |    37 +
 tests/unit_tests/models/core_test.py               |     6 +-
 tests/unit_tests/models/helpers_test.py            |   275 +
 tests/unit_tests/queries/query_object_test.py      |    55 +-
 tests/unit_tests/security/api_test.py              |     2 +-
 tests/unit_tests/semantic_layers/api_test.py       |  2321 ++
 tests/unit_tests/semantic_layers/dao_test.py       |    85 +
 .../unit_tests/semantic_layers/decorators_test.py  |   103 +
 tests/unit_tests/semantic_layers/labels_test.py    |    52 +
 tests/unit_tests/semantic_layers/mapper_test.py    |  2743 ++
 tests/unit_tests/semantic_layers/models_test.py    |  1267 +
 tests/unit_tests/semantic_layers/schemas_test.py   |   296 +
 tests/unit_tests/sql/transpile_to_dialect_test.py  |   124 +
 tests/unit_tests/sql_lab_test.py                   |     2 +-
 tests/unit_tests/tasks/test_async_queries.py       |   174 +-
 tests/unit_tests/test_viz_cache_key.py             |   111 +
 tests/unit_tests/test_viz_get_df_payload.py        |   111 +
 tests/unit_tests/utils/test_core.py                |    42 +
 .../utils/test_impersonation_cache_key.py          |   107 +
 482 files changed, 60013 insertions(+), 38562 deletions(-)
 create mode 100644 docs/docs/using-superset/handlebars-chart.mdx
 create mode 100644 superset-core/src/superset_core/semantic_layers/config.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/daos.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/decorators.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/layer.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/models.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/types.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/view.py
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/test/shared-controls/matrixifyControls.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/DynamicEditableTitle/DynamicEditableTitle.regression.test.tsx
 delete mode 100644 superset-frontend/playwright/fixtures/dataset_export.zip
 copy superset-frontend/playwright/helpers/api/{savedQuery.ts => sqllab.ts} (56%)
 create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/memoization.test.ts
 delete mode 100644 superset-frontend/plugins/plugin-chart-handlebars/README.md
 create mode 100644 superset-frontend/src/features/cssTemplates/CssTemplateModal.test.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/SemanticLayerModal.test.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/jsonFormsHelpers.test.ts
 create mode 100644 superset-frontend/src/features/semanticLayers/jsonFormsHelpers.tsx
 create mode 100644 superset-frontend/src/features/semanticLayers/label.ts
 create mode 100644 superset-frontend/src/features/semanticViews/AddSemanticViewModal.test.tsx
 create mode 100644 superset-frontend/src/features/semanticViews/AddSemanticViewModal.tsx
 create mode 100644 superset-frontend/src/features/semanticViews/SemanticViewEditModal.test.tsx
 create mode 100644 superset-frontend/src/features/semanticViews/SemanticViewEditModal.tsx
 copy {superset-core/src/superset_core/common => superset/commands/datasource}/__init__.py (100%)
 create mode 100644 superset/commands/datasource/list.py
 copy {superset-core/src/superset_core/common => superset/commands/semantic_layer}/__init__.py (100%)
 create mode 100644 superset/commands/semantic_layer/create.py
 create mode 100644 superset/commands/semantic_layer/delete.py
 create mode 100644 superset/commands/semantic_layer/exceptions.py
 create mode 100644 superset/commands/semantic_layer/update.py
 create mode 100644 superset/daos/semantic_layer.py
 create mode 100644 superset/datasource/schemas.py
 create mode 100644 superset/mcp_service/chart/compile.py
 create mode 100644 superset/mcp_service/dataset/tool/query_dataset.py
 create mode 100644 superset/migrations/versions/2025-11-04_11-26_33d7e0e21daa_add_semantic_layers_and_views.py
 copy {superset-core/src/superset_core/common => superset/semantic_layers}/__init__.py (100%)
 create mode 100644 superset/semantic_layers/api.py
 create mode 100644 superset/semantic_layers/labels.py
 create mode 100644 superset/semantic_layers/mapper.py
 create mode 100644 superset/semantic_layers/models.py
 copy superset/{temporary_cache/utils.py => semantic_layers/registry.py} (84%)
 create mode 100644 superset/semantic_layers/schemas.py
 copy superset/translations/{ca => cs}/LC_MESSAGES/messages.po (50%)
 copy superset/translations/{de => lv}/LC_MESSAGES/messages.po (50%)
 create mode 100644 superset/utils/cache_keys.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/commands/datasource}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/datasource/list_test.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/commands/semantic_layer}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/semantic_layer/create_test.py
 create mode 100644 tests/unit_tests/commands/semantic_layer/delete_test.py
 create mode 100644 tests/unit_tests/commands/semantic_layer/exceptions_test.py
 create mode 100644 tests/unit_tests/commands/semantic_layer/update_test.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_compile.py
 create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_query_dataset.py
 create mode 100644 tests/unit_tests/semantic_layers/api_test.py
 create mode 100644 tests/unit_tests/semantic_layers/dao_test.py
 create mode 100644 tests/unit_tests/semantic_layers/decorators_test.py
 create mode 100644 tests/unit_tests/semantic_layers/labels_test.py
 create mode 100644 tests/unit_tests/semantic_layers/mapper_test.py
 create mode 100644 tests/unit_tests/semantic_layers/models_test.py
 create mode 100644 tests/unit_tests/semantic_layers/schemas_test.py
 create mode 100644 tests/unit_tests/test_viz_cache_key.py
 create mode 100644 tests/unit_tests/test_viz_get_df_payload.py
 create mode 100644 tests/unit_tests/utils/test_impersonation_cache_key.py