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

sadpandajoe pushed a change to branch fix-clickhouse-stop-query-cancel
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 7d7d54ec0c2 fix(clickhouse): decline to mint a cancel id for the GTF 
chart-data stub
     add c4bc0b1e0cc fix(layout): restore growable app shell so injected 
content above #app doesn't clip it (#45056)
     add 1cf9569807c feat(pivot-table): collapse row groups by default (#45030)
     add 0cb498d08f2 fix(versioning): refuse a chart restore whose datasource 
no longer exists (#44925)
     add c1908747b16 fix(semantic): hide and ignore series limits that have no 
series columns (#44909)
     add 908d688171d fix(async): show the real error for a failed async chart 
query (#45054)
     add dbd546908a8 feat(semantic-layer): show provider queries from chart 
results (#44206)
     add 100f51240bd perf(security): batch dashboard fallback datasource 
resolution (#44993)
     add d27b7344087 fix(mcp): refuse changes to externally managed dashboards 
in all dashboard tools (#45062)
     add a8a828202f7 fix(versioning): preserve history across savepoint 
rollback (#45033)
     add 9c4ad2497df fix(cache): evict rejected cached GET requests (#45055)
     add bdbddb76dc7 fix(semantic): return a client error for unsupported time 
grains (#45053)
     add 0754a86b3e4 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in 
/superset-websocket (#45072)
     add f4c16eb3a4f docs: add DouroECI logo and contributor to In the Wild 
(#45096)
     add 34b3d65cc20 fix(charts): clear perms of charts whose datasource no 
longer exists (#44926)
     add 72ee1fd60df fix(date_parser): use pyparsing snake_case API to silence 
PyparsingDeprecationWarning (#45094)
     add b3d8fdb6061 fix(mcp): don't page MCP_ERROR_HOOK for user-class errors 
in the last-resort catch (SC-125493) (#45093)
     add 1ebfea28efc feat: SIP-209 Improved Alerts & Reports (#44992)
     add b2bafd64fa2 chore(ci): configure more grouped dep upgrades across npm 
subprojects  (#44696)
     add b327d57165c fix(explore): skip Ctrl/Cmd+Enter query while controls 
have errors or chart is loading (#44963)
     add c45391c1689 fix(explore): show 0 zoom, latitude and longitude in the 
map view extent tag (#44962)
     add 6d090bec82e fix(explore): honor a controlled ControlPopover open prop 
(#44959)
     add b22144a76d4 fix(native-filters): show a clear error instead of 
"Network error" when filter values fail to load (#44585)
     add e10e268e992 fix(explore): dispatch datasource metadata fetch (#44958)
     add 489a02e3ea3 fix(semantic-layer): fail incomplete or unverified 
semantic query results (#44832)
     add e9862fb4ab2 fix(dashboard): refresh semantic metadata across edits 
(#45052)
     add 2ec20003ed5 chore: Update CODEOWNERS to include @sadpandajoe (#45120)
     add e5c5e918359 feat(mcp): add typed Sunburst chart support (#43771)
     add 4ca736d81c5 fix(semantic-layer): require write access for 
configuration schema enrichment (#45107)
     add 6efc896e5b9 test(dashboard): wait for async submenu and debounced 
validation in flaky tests (#45106)
     add 3bc9e9e479f fix(datasets): accept certification fields on dataset 
column and metric PUT (#45091)
     add cd34cc1019f chore(deps): bump chromaui/action from 18.10.1 to 18.10.2 
(#45134)
     add 1b35374fecb fix(semantic-layer): honor provider preferred time 
dimension (#44997)
     add ffc81d92a2c feat(dashboard): add column allowlist to Group By native 
filter (#43736)
     add 3fc078abe6b fix(soft-delete): preserve a shared datasource permission 
on purge (#45034)
     add a4a0899e92c perf(versioning): defer capture policy until versioned 
work (#44928)
     add 99899bd392f fix(date-parser): reject malformed time ranges instead of 
scanning everything (#45098)
     add 13c5ff8c87f chore(deps-dev): bump wait-on from 9.4.0 to 9.5.1 in 
/superset-frontend (#45048)
     add 61df1692584 chore(deps): bump mapbox-gl from 3.31.0 to 3.32.0 in 
/superset-frontend (#45049)
     add 035ae052525 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in 
/superset-embedded-sdk (#45074)
     add 9635e7f1f91 chore(deps): bump the swc group across 2 directories with 
1 update (#45118)
     add 9e7a05e6ed1 chore(deps-dev): bump @types/node in 
/superset-embedded-sdk (#45121)
     add cda7a1e8189 chore(deps): bump swagger-ui-react from 5.33.0 to 5.33.1 
in /docs (#45122)
     add cfb0ed61eb8 chore(deps): bump yargs from 18.1.0 to 18.2.0 in 
/superset-frontend (#45129)
     add a8fc576cfe3 chore(deps-dev): bump oxfmt in /docs (#45119)
     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 488810d8395 fix(db-engine): make cachetools import optional in aws_iam 
(#38269)
     add 8503b6b0b5a fix: clamp table pagination index when filtered data 
shrinks (#31403) (#39661)
     add fb99e4b530a fix(embedded): fail closed when the guest-user check can't 
resolve a principal (#43896)
     add bffb5638015 fix(post-processing): raise when a rename would duplicate 
a column label (#45043)
     add 0cd13e92c1d fix(post-processing): keep the caller's index when parsing 
geography columns (#45086)
     add 6d4dc0d3363 fix(bigquery): expose STRUCT fields as columns on virtual 
datasets (#45150)
     add 333b6be7d71 fix(country-map): keep South Africa's islands in frame and 
fix hover … (#45000)
     add 85aa56420a8 fix(explore): XAxisSortControl follows the value prop 
(#44956)
     add fe46e76c510 fix(dashboard): remove duplicate spacing above 
out-of-scope filters section (#44954)
     add 8ace079d8de feat(semantic-layers): add safe containment result cache 
(#42760)
     add c0b713746b1 fix(mcp): make authlib.jose deprecation filter survive 
authlib's own simplefilter (#45219)
     add 963031c209f fix(graph): distinguish null categories from literal 
labels (#44790)
     add 1c4aba2453d docs(databases): refresh ClickHouse guide and support 
dark-theme logos (#44901)
     add 718572cf29a chore(deps-dev): bump sqlalchemy-hana from 3.0.3 to 5.0.0 
(#45189)
     add d6c7ac23183 fix(mypy): silence superset-core mirror-case 
union-attr/assignment errors (#45138)
     add f7a1c8f33bd docs: fix broken anchor links in intro, README and tasks 
guide (#45206)
     add 8796ba16ae7 fix(clickhouse): bump Altinity.Cloud's documented 
clickhouse-connect floor (#45249)
     add 6ded7caa0a9 fix(mcp): refuse an update that would drop a SQL trendline 
column (#45236)
     add b840a4cef38 feat(plugin-chart-echarts): add cross-filtering to the 
Bubble chart (#45223)
     add 48eb96aa843 fix(releasing): various release tooling improvements 
(#45253)
     add f19a71be433 fix(semantic-layer): narrow ValidatedQueryObject.metrics 
to list[str] (#45185)
     add 3cbdff6b6b7 fix(mcp): reject unknown semantic compatibility selections 
(#45153)
     add 1fced034d37 fix(semantic-layer): return 4xx for provider validation 
errors in chart data (#45110)
     add 114d32b12d1 feat(semantic-layer): gate Table pagination on row offset 
support (#44452)
     add 55cb2eb0df5 fix(mcp): only flag get_catalog pages truncated when 
entries are held back (#45148)
     add f5404f7eae3 fix(semantic-layer): preserve NULL selections in chart 
filters (#45133)
     add 8175e0ecc7b fix(semantic-views): hide stale dependent options while 
they refresh (#44995)
     add d970d634f71 fix(mcp): reject apply_dashboard_filters select values 
missing from the data (#45242)
     add bf0a9cc3271 fix(semantic-layer): require data access for semantic view 
edits (#45154)
     add 81d4137b98b fix(semantic-layer): block deletion of sources with 
dependent assets (#45071)
     add 7f1bfaba4b2 fix(reports): apply the server-pagination row limit to 
embedded chart data (#45099)
     add f8e8cfe6e43 chore(openapi): regenerate the published spec for the 
semantic delete 409s (#45262)
     add ffee0a843f1 feat(db_engine_specs): enable MEDIAN/STDDEV_SAMP/VAR_SAMP 
for Databricks and Snowflake (#44627)
     add 0ce9b6ca46c chore(deps): bump urllib3 to 2.8.0 and werkzeug to 3.1.9 
(#45255)
     add 5cf0b8c6046 test(semantic views): finish selected refreshes before 
test teardown (#45282)
     add bbc61ac3a78 chore(deps-dev): bump the swc group across 1 directory 
with 2 updates (#45290)
     add b411454508c chore(deps): bump the babel group across 2 directories 
with 5 updates (#45289)
     add 37c33788f69 fix(dashboard): bind native filter datasources by type so 
semantic views load (#45069)
     add fa0999745fb fix(explore): raise a validation error instead of 
asserting when an IN filter has no value (SC-124271) (#44986)
     add b9709c39576 chore(deps): bump js-yaml from 5.4.2 to 5.4.3 in /docs 
(#45291)
     add 367b6f5cbf5 chore(deps): bump maplibre-gl from 6.12.0 to 6.13.0 in 
/superset-frontend (#45295)
     add c969ac425d6 chore(deps): bump actions/download-artifact from 8.0.1 to 
8.0.2 (#45284)
     add 54d2421ded3 test(bigquery): verify string-literal escaping against a 
real GoogleSQL engine (#44546)
     add 9e4adb98717 fix(alerts): handle report filter loading states and 
errors (#45142)
     add 96e22f4eaba fix(contour): preserve undefined unused fields (#44967)
     add 9659a13ae8e docs(config): document AFTER_ASSET_CREATE hook (#44126)
     add 564b85aa395 build: group Dependabot PRs for GHA refs from `actions` 
org (#45296)
     add 8db419ce1ab feat(build): migrate custom lint rule to Oxlint (#44201)
     add 6a7cfd5ba12 chore(deps): bump actions/setup-node from 7.0.0 to 7.1.0 
(#45285)
     add 9bd8cd9f33f chore(deps): bump actions/upload-artifact from 7.0.1 to 
7.0.2 (#45286)
     add 1aeb8642447 chore(deps-dev): bump baseline-browser-mapping from 
2.11.26 to 2.11.27 in /superset-frontend (#45299)
     add 0dc57e9a9de fix(semantic-views): stop debounced refreshes after the 
modal unmounts (#45281)
     add e6b1d766183 feat(auth): add self-service forgot-password recovery for 
AUTH_DB (sip-201) (#45277)
     add 4c546edbd8f perf(security): resolve user_view_menu_names via role 
semi-join (#45303)
     add f7ad2aba62f chore(deps): bump the codeql group across 1 directory with 
3 updates (#45326)
     add f808b982a59 fix(charts): reject query_context missing 
datasource/queries on save (#44549)
     add 72bfc4134f2 fix(semantic-layer): classify provider errors in value 
suggestions (#45147)
     add fed77adfee5 fix(mcp): preserve embedded guest identity during 
permalink lookup (#45346)
     add e0e728ef764 chore(deps): bump geolib from 3.3.14 to 4.0.0 in 
/superset-frontend (#45328)
     add 6132c019432 fix(extensions-cli): fix scaffold template dep mismatches 
vs. host (#45244)
     add d548e8dce9c fix(filters): use manual semantic-view range bounds 
(#44999)
     add 4b9856bfefd fix(rls): apply Public role RLS rules to anonymous users 
(#45333)
     add 3841bc9e0ec chore(deps): bump immer from 11.1.18 to 11.1.21 in 
/superset-frontend (#45330)
     add 81e558a6a80 chore(deps-dev): bump sqlalchemy-bigquery from 1.17.2 to 
1.17.3 (#45319)
     add d176d68451b chore(deps-dev): bump elasticsearch-dbapi from 0.2.13 to 
0.3.0 (#45318)
     add 13bd0cd9326 fix(sql): keep stop and finish outcomes consistent when 
they race (#45283)
     add f33b030d710 fix(explore): correct HOLIDAY tooltip wording (#45276)
     add d9bc4ea8580 fix(plugin-chart-pivot-table): sticky-position row labels 
and corner header cells (#43917)
     add 2020fea4acb feat(storybook/build): generate Playwright-runnable tests 
from Storybook stories (#44964)
     add e835d670d2e chore(deps-dev): bump prophet from 1.4.0 to 1.5.0 (#45324)
     add 1aaabd8e435 fix(websocket): support Sentinel and full TLS options for 
Redis/Valkey (#45355)
     add 3d82e3dfbcb chore(deps): bump cachetools from 7.2.0 to 7.2.1 (#45323)
     add 5c5061b1c8e chore(deps-dev): bump clickhouse-connect from 1.9.0 to 
1.10.0 (#45321)
     add a23199762c5 fix(mypy): make UUIDMixin.uuid's nullable type resolve 
deterministically (#44817)
     add e734cd00d43 chore(deps): bump react-syntax-highlighter from 16.1.1 to 
16.1.2 in /superset-frontend (#45370)
     add f2b71475ce2 chore(deps): bump @googleapis/sheets from 18.1.0 to 18.1.1 
in /superset-frontend (#45369)
     add 3dfb42a2937 chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0 
(#45368)
     add 576cc9e0952 chore(deps): bump helm/chart-testing-action from 2.8.0 to 
2.9.0 (#45367)
     add 50d34f8aaa2 chore(deps-dev): bump syntaqlite from 0.9.0 to 0.12.1 
(#45320)
     add ad63b3eb7ab fix(impala): stop SQL Lab queries through the live cursor 
only (#45232)
     add 86e186b5f60 fix(tests): stop the unit suite from retaining one 
Superset app per module (#45364)
     add 19bb09461dc fix(examples): rewrite chart datasource references on 
import (#45378)
     add 9c7ca9ba107 fix(docs): improve Kapa AI widget dark mode compatibility 
(#39102)
     add 61d27b4aebe fix(sql): handle trailing comments after empty statements 
(#45274)
     add 58b1de82815 fix(datasets): don't call physical datasets "virtual" in 
sync columns toast (#45376)
     add 853f207c668 fix(dashboard): apply temporal x-axis cross-filters to 
target charts (#45310)
     add c650cbd3c61 fix(import): return 422 instead of 500 for corrupt ZIP 
uploads (#45380)
     add a9a7a35c4b4 fix(dashboard): show an access error for charts the viewer 
cannot read (#45398)
     add 44eac5b37b2 fix(soft-delete): align dashboard card dialogs and archive 
permission hints (#45302)
     add 21fad62645a fix(semantic-layer): resolve grain variants 
deterministically (#44454)
     add a13af92ff34 fix(semantic-layer): return 400 for mapper validation 
refusals (#45292)
     add a5d29a9d27d test(e2e): add a stub semantic-layer provider for 
Playwright (#45103)
     add 84be38cfc90 chore(deps): update pygithub requirement from >=2.1.1 to 
>=2.10.0 (#45413)
     add 31ee5719f77 fix(semantic layers): reject unknown compatibility 
selections (#45359)
     add e336cd04c3c fix(mcp): keep refusal and rejection categories in 
get_chart_data (#45360)
     add 5e1962e9a1d test(mcp): correct Dublin fold timestamp expectations 
(#45358)
     add ae71281c519 fix(dashboard): resolve to a fixed point when un-clipping 
scrollable chart content (#44102)
     add 4569608fc44 fix(pivot-table): keep MIN/MAX of non-numeric columns off 
the additive fast-path (#45408)
     add dfd13baab0e fix(versioning): don't record dataset column and metric 
extra rewrites as edits (#45349)
     add 4f49d24151d test(i18n): run the babel_update.sh msgcat tests on CI 
(#45247)
     add e837c37bc29 fix(semantic-layer): raise typed rejections from the E2E 
stub provider (#45401)
     add 4ccd337b932 chore(deps-dev): bump oracledb from 4.0.2 to 26.0.0 
(#44443)
     add 297449d68e7 fix(semantic layers): return 400 for ambiguous variants in 
compatibility name check (#45426)
     add 663d691c311 fix(embedded): apply the chart-data guest redaction to 
samples and the legacy query endpoint (#45273)
     add acdd2d27667 chore(deps-dev): bump oxlint-tsgolint in /docs (#45450)
     add b8a4a5e20ad chore(deps): bump the swc group across 2 directories with 
1 update (#45449)
     add c812be8019f chore(deps): bump EnricoMi/publish-unit-test-result-action 
from 2.24.0 to 2.25.0 (#45448)
     add 22654af3337 chore(deps): bump express from 5.2.1 to 5.3.0 in 
/superset-websocket/utils/client-ws-app (#45447)
     add 118acbcde35 chore(deps): bump pydantic from 2.13.5 to 2.14.0 (#45417)
     add 56ff8920385 fix(security): don't let dataset editorship substitute for 
data access (#45266)
     add 99ecfe5801c chore(deps): bump sqlalchemy-utils from 0.42.1 to 0.43.0 
(#45416)
     add f0cfaff7881 fix(sql): decode async SQLExecutor results from the 
results backend (#45348)
     add 8e6e91e4dc0 feat(semantic-layers): add the provider execution context 
contract (#45251)
     add 53f14e7b7b1 fix(semantic-layer): refuse a chart's own filter on a 
column the semantic view lacks (#45294)
     add 98d5fa50b4c fix(semantic-layer): validate views before creation 
(#45287)
     add d36febc96ec fix(versioning): don't record save-path defaults as user 
changes (#45352)
     add 5a1831000a9 fix: add dblink and pg_* state-mutating functions to SQL 
denylist (#45089)
     add 88e92663b8f fix(semantic-layers): restore mocking compatibility after 
implementation became a plain property (#45501)
     add 152e1e9de9a fix(dataset): convert timezone-aware values with the 
dataset timezone (#45344)
     add 25e94d00d37 fix(pivot-table): stop the grand-total corner from 
silently picking one metric (#44657)
     add d285a1abae8 fix(dashboards): prevent horizontal filter bar from 
vanishing on cross-filter (#45050) (#45051)
     add 15f55686ea9 fix(dashboard): respect DASHBOARD_AUTO_REFRESH_INTERVALS 
configuration in refresh dropdown (#45039)
     add 1e18d01d76d feat(mcp): add caller-scoped PNG chart previews (#44558)
     add 9c287d989a8 feat(build): migrate to Typescript 6 (#44726)
     add 7b23ddea9f6 chore(build): migrate from external `copy-webpack-plugin` 
to Webpack-native `output.copy` (#44965)
     add 0a17a75f9a8 chore(deps): bump the storybook group across 2 directories 
with 4 updates (#45513)
     add d5bccecf581 chore(deps): bump chromaui/action from 18.11.0 to 18.12.1 
(#45512)
     add 77b0fd62ea7 docs: add Plum to In the Wild (#45518)
     add 3cf94c87aef chore(deps-dev): bump @types/node from 26.6.4 to 26.6.5 in 
/superset-embedded-sdk (#45514)
     add 1df897b3bba fix(pivot-table): blank mixed-metric totals in exports and 
reports (#45311)
     add 38353434467 fix(cache): honor disabled datasource suggestion caches 
(#45288)
     add ad30c898f86 fix(dashboard): copy a layout that omits the source's 
current charts (#45472)
     add 3988a771f37 fix(dataset): warn immediately when normalize_columns is 
toggled on (#44617)
     add 3c42a68d439 test(mcp): refresh native tool inventory for PNG chart 
previews (#45511)
     add 1811fe5167f fix(dashboard): stop Edit Properties hanging on dashboards 
with many charts (#45354)
     add 65cfc1ed18c fix(deck.gl): set maplibre-gl 6's worker URL so vector 
basemaps load (#45396)
     add 973ac9b8efb fix(export): honor CSV_EXPORT encoding in streaming CSV 
exports (#45351)
     add a708a08cdb0 feat(semantic-layers): declare provider obligations and 
add a registration test fixture (#45393)
     add 488a3c53b45 fix(soft-delete): show Recently Archived in the menu to 
everyone who can open it (#45523)
     add 82a7ec91d6e feat(semantic-layers): apply a default chronological order 
for time-series queries (#45389)
     add fe79ab48e93 fix(tags): make owner-tag creation safe under concurrent 
creates (#45498)
     add e315ed365e8 test(reports): cover scheduled reports on semantic-view 
charts (#45526)
     add 036d1dafe2c fix(semantic-layers): report async chart query validation 
errors as failures (#45525)
     add d73c9b93398 fix(alerts): don't flag "Every minute" schedule as invalid 
in cron picker (#45468)
     add 63c6d273616 chore(plugin-chart-ag-grid-table): remove unused 
useTableTheme hook (#45469)
     add aa3df7caf77 fix(explore): hide empty Actual range for comparison 
header (#44996)
     add f0b43df751a fix(dashboard): remap native filter scopes when 
duplicating charts on save as (#45038)
     add b1fe28b5791 fix(ci): narrow nullable filters in metric_filter_test and 
resync oxfmt formatting (#45239)
     add 875dcbb1bb0 feat(action-log): open JSON payloads in a tree modal 
(#45337)
     add c01e784fc64 fix(ci): restore the full-repo mypy check on two 
semantic-layer and sqla test files (#45315)
     add 293f159deaf fix(sqllab): keep the results grid header opaque when rows 
scroll under it (#45480)
     add 25186586572 fix(chart): keep the chart on screen during a dashboard 
auto-refresh (#45234)
     add fcff5931594 fix(sqllab): ignore a Run/Stop click whose gesture started 
on the other action (#45336)
     add 87dc979e986 fix(table-chart): show the record count in the search box 
(#45497)
     add ec40973ae81 fix(semantic-layer): reject SQL extras in direct mapper 
calls (#45534)
     add ddbf152ac92 fix(dashboard): keep archived charts' membership when 
restoring a version (#45482)
     add 208438b18b6 test(tasks): cover the embedded-guest error text on task 
show and list (#45533)
     add 2d0203e3699 fix(plugin-chart-echarts): merge a series object in 
ECharts Options into every series (#45421)
     add 77ded19ba5c fix(sqllab): commit the recomputed row limit before async 
dispatch (#45178)
     add a1fd5b1f81e fix(sqllab): resolve query datasources when opening SQL 
Lab (#45374)
     add c06005afb1e fix(dashboard): load the saved description into dashboard 
info (#45298)
     add 2978799419e fix(models): keep NULL rows in !=, NOT LIKE and NOT ILIKE 
filters (#45317)
     add 33687492472 test(explore): cover chart header actions, chart pills, 
and view container wiring (#44848)
     add 304f5a38b58 test(playwright): add Featured Charts render smoke and 
Explore image download (#44844)
     add 6842e2f76b3 test(explore): cover cartodiagram and primitive explore 
controls (#44850)
     add c807ee7f909 fix(native-filters): keep pending removal timers when 
another filter is removed (#44837)
     add 7ff5709882f fix(candlestick): give OHLC labels their own translatable 
strings (#45458)
     add 0f376ba9f97 fix(semantic-layers): show per-view errors when adding 
semantic views (#45524)
     add 190873e9832 fix(version-history): preview banner, history panel 
layout, scope labels and current-version marking (#45471)
     add 6dc0641c91a fix(reports): keep the first column header in XLSX exports 
of semantic-view tables (#45527)
     add 4e7e2b7390d fix(tests): narrow Optional StatementResult.data in async 
result tests (#45517)
     add 836c0f3f95d fix(table): reset default margins on the pagination list 
(#45365)
     add 8d3ade7e0a8 test(trino): close db_engine_spec test gaps (#45361)
     add 3d902d9eb3a chore(deps): bump the security group across 2 directories 
with 2 updates (#45542)
     add 527021d5819 chore(deps): bump react-virtualized-auto-sizer from 1.0.26 
to 2.0.3 in /superset-frontend (#45197)
     add c11f993af37 fix(auth): close forced-password-change redirect loop and 
sweep stale legacy password perms from all roles (#44857)
     add 7d0e1c939ee fix(frontend): retry a failed lazy import before surfacing 
ChunkLoadError (#43215)
     add abc1b50f65d fix(mcp): clean up nits from PNG chart preview review 
(#45509)
     add b6ef0bf48d8 chore(tags): stop auto-generating 
type:/editor:/favorited_by: tags (#43471)
     add cb04282f501 chore(deps): bump swagger-ui-react from 5.33.1 to 5.33.2 
in /docs (#45567)
     add f1d8161777c chore(deps): bump chromaui/action from 18.12.1 to 18.12.2 
(#45564)
     add f9aec7515b4 chore(deps): bump actions/setup-java from 6.0.1 to 6.1.0 
in the gh-actions group (#45563)
     add 75be8f981a6 feat(improvements): let deployments withhold assets from 
list queries and commands (#45451)
     add f9a0d8af493 chore(deps-dev): bump oxlint from 1.87.0 to 1.88.0 in 
/docs (#45566)
     add fa8a035fcf6 fix(mcp): stop rejecting titles that contain "data:" in 
prose (#45485)
     add e8824351f19 fix(mcp): isolate dashboard copies and clarify chart 
evidence (#45504)
     add cdc9430597c fix(db_engine_specs): patch oceanbase_py's dialect for 
SQLAlchemy 2.0 (#45507)
     add 00688c7871b chore(deps-dev): update pinotdb requirement from 
<10.0.0,>=8.0.0 to >=9.2.2,<10.0.0 (#45414)
     add 73737afbfbb chore(deps): bump pyarrow from 25.0.1 to 26.0.0 (#45412)
     add 067d536e216 chore(deps-dev): bump fastmcp from 3.4.7 to 4.1.0 (#45415)
     add b7bfbd365e6 chore(deps-dev): bump oxfmt in /docs (#45565)
     add 2b1046959d2 chore: bump pillow, certifi and geopy pins, tidy two small 
code nits (#45578)
     add 54aaf3ad7d7 fix(mcp): surface missing query_context warning in 
get_chart_data result (#45250)
     add fdb22260e25 fix(number-format): make the adaptive formatters follow 
D3_FORMAT (#45241)
     add c3279f01921 ci: skip jobs that cannot complete on forks and private 
mirrors (#45035)
     add 385844237e6 fix(explore): preserve zero thresholds in contour controls 
(#44966)
     add 3de22376c5c fix(dashboards): update last modified timestamp when 
adding chart to dashboard (#44305) (#44358)
     add 77ebc0e55f3 fix(chart): keep dataset_uuid in exports when the dataset 
is deleted (#44347)
     add 452dea81f23 chore(deps-dev): bump @playwright/test from 1.62.1 to 
1.64.0 in /superset-frontend (#45371)
     add bc83e3e6fdb fix(mcp): propose a matching value when a dashboard filter 
value is rejected (#45547)
     add b129d6a4c12 fix(semantic-layer): narrow Filter|OrFilter unions in test 
helpers for mypy (#45268)
     add ff214bdfb14 fix(sqllab): clip multi-line result values to their row 
(#45487)
     add 62d22e0697c fix(semantic-layer): type the E2E stub filters for the 
full filter union (#45419)
     add 5eaad449f5c fix(import): return 422 instead of 500 for unsafe ZIP 
import bundles (#45440)
     add 676af61b1c9 fix(jinja): keep filters with 0 or false values in 
get_filters and fi… (#45437)
     add 47358be13c1 fix(import): return 422 instead of 500 for non-UTF-8 
members in import bundles (#45424)
     add b4f8ca407a3 chore(deps-dev): bump vite from 8.3.1 to 8.3.5 in 
/superset-websocket in the security group across 1 directory (#45590)
     add 7ff7f9048bf fix(semantic-layer): handle absent fetch-values predicate 
(#45539)
     add 9ce458594fe fix(connection): encode next in the unauthorized login 
redirect (#45477)
     add 2304d1b80f2 fix(datasets): re-check statement count after query 
mutation (#45453)
     add 4bfd874c4cb fix(postprocessing): handle Decimal comparisons with zero 
baselines (#45467)
     add 4e5d0ef8f13 fix(models): keep NULL rows in NOT IN filters without a 
NULL value (#45305)
     add a0ebed9ff1a docs(auth): add Keycloak PKCE, logout and group-mapping 
example (#38092)
     add b3471a1369c fix(a11y): WCAG 1.4.1 — add non-color visual cues to 
status indicators (#39233)
     add 3297c39d94c docs(installation): describe the default image instead of 
lean in Docker Compose responsibilities (#45582)
     add 47300cf4c2f fix(mcp): pass time_grain as a string and keep annotation 
DB error classification (#45484)
     add 030f36a00c3 docs(extensions): move Semantic Layers into its own 
extension point page (#45630)
     add 578d43fef9b fix(listview): prevent table column layout shift on 
content change (#37299)
     add 97a536f37d9 feat(echarts): allow configuring minInterval on bar and 
line chart axes (#43515)
     add dfd84bf3d9e fix(mcp): only serve the browser hello page on the MCP 
endpoint (#45391)
     add 7fceb05c1ce docs(docker): drop redundant packages from custom image 
example, bump version numbers (#44240)
     add aabddf5b3f5 fix(semantic-layers): cap and time-bound bulk semantic 
view creation (#45532)
     add 2c275ed0a5b fix(echarts): restore series color markers in sanitized 
tooltips (#45505)
     add 98fac9104fb fix(datasets): validate metric d3format (#45633)
     add bf18152476a chore: stop forcing .ipynb as a binary attribute (#45602)
     add 87d1abb21e6 chore(frontend): let JEST_MAX_WORKERS cap the Jest worker 
pool locally (#45594)
     add c3d5a60aaed Merge remote-tracking branch 'origin/master' into 
fix-clickhouse-stop-query-cancel
     add ff9eab73e60 test(sql-execution): update celery stopped-status test for 
upstream fix

No new revisions were added by this update.

Summary of changes:
 .gitattributes                                     |     1 -
 .github/CODEOWNERS                                 |     8 +-
 .github/actions/change-detector/action.yml         |     3 +
 .github/dependabot.yml                             |    96 +-
 .github/workflows/bashlib.sh                       |    13 +
 .github/workflows/bump-python-package.yml          |     2 +-
 .github/workflows/chromatic.yml                    |     2 +-
 .github/workflows/codeql-analysis.yml              |    23 +-
 .github/workflows/docker.yml                       |    27 +-
 .github/workflows/embedded-sdk-release.yml         |     2 +-
 .github/workflows/embedded-sdk-test.yml            |     2 +-
 .github/workflows/frontend-bundle-size-nightly.yml |     3 +
 .github/workflows/generate-FOSSA-report.yml        |     2 +-
 .github/workflows/github-action-validator.yml      |    16 +-
 .github/workflows/license-check.yml                |     2 +-
 .github/workflows/pre-commit.yml                   |    16 +-
 .github/workflows/python-nightly-canary.yml        |     9 +
 .github/workflows/release.yml                      |     2 +-
 .../scripts/check-code-scanning-available.sh       |    64 +
 .../scripts/check-code-scanning-available.test.sh  |   118 +
 .github/workflows/showtime-cleanup.yml             |     3 +
 .github/workflows/superset-docs-deploy.yml         |     4 +-
 .github/workflows/superset-docs-verify.yml         |     9 +-
 .github/workflows/superset-e2e.yml                 |    22 +-
 .github/workflows/superset-extensions-cli.yml      |     2 +-
 .github/workflows/superset-frontend.yml            |    24 +-
 .github/workflows/superset-helm-lint-test.yml      |     2 +-
 .../workflows/superset-python-integrationtest.yml  |    52 +-
 .../workflows/superset-python-unittest-report.yml  |     6 +-
 .github/workflows/superset-python-unittest.yml     |    17 +-
 .../workflows/superset-translations-comment.yml    |     2 +-
 .github/workflows/superset-translations.yml        |    13 +-
 .github/workflows/superset-websocket.yml           |     2 +-
 .github/workflows/tag-release.yml                  |     4 +-
 .github/workflows/tech-debt.yml                    |     2 +-
 .github/workflows/testcontainers.yml               |    10 +-
 .gitignore                                         |     2 +
 .pre-commit-config.yaml                            |    39 +-
 AGENTS.md                                          |     1 +
 README.md                                          |    13 +-
 RELEASING/Dockerfile.from_local_tarball            |    13 +-
 RELEASING/Dockerfile.from_svn_tarball              |    13 +-
 RELEASING/README.md                                |    23 +-
 RELEASING/changelog.py                             |   220 +-
 RELEASING/requirements.txt                         |     2 +
 RESOURCES/INTHEWILD.yaml                           |     8 +-
 UPDATING.md                                        |   578 +-
 docs/admin_docs/configuration/alerts-reports.mdx   |   133 +-
 .../configuration/async-queries-celery.mdx         |     7 +
 docs/admin_docs/configuration/cache.mdx            |    52 +
 .../configuration/configuring-superset.mdx         |    81 +
 docs/admin_docs/configuration/feature-flags.mdx    |    29 +
 .../importing-exporting-datasources.mdx            |    22 +
 docs/admin_docs/configuration/mcp-server.mdx       |   658 +-
 docs/admin_docs/installation/docker-builds.mdx     |    43 +-
 .../installation/installation-methods.mdx          |     4 +-
 docs/admin_docs/security/oauth.mdx                 |   318 +
 docs/admin_docs/security/security.mdx              |    63 +
 .../contributing/development-setup.md              |     6 +
 docs/developer_docs/contributing/howtos.md         |    92 +-
 .../contributing/translation-guide.md              |   104 +
 .../extensions/contribution-types.md               |    75 +-
 docs/developer_docs/extensions/development.md      |    37 +
 .../extensions/extension-points/semantic-layers.md |   520 +
 docs/developer_docs/extensions/mcp.md              |   100 +
 docs/developer_docs/extensions/overview.md         |    22 +-
 docs/developer_docs/extensions/tasks.md            |     2 +-
 docs/developer_docs/semantic-layer-cache-clear.md  |   107 +
 docs/developer_docs/semantic-metadata-contract.md  |   187 -
 docs/developer_docs/semantic-query-errors.md       |   101 +
 .../developer_docs/semantic-result-completeness.md |    70 +
 docs/developer_docs/sidebars.js                    |     1 +
 docs/docs/index.mdx                                |     4 +-
 .../creating-your-first-dashboard.mdx              |    91 +-
 docs/docs/using-superset/exploring-data.mdx        |    71 +
 .../using-superset/exporting-dashboard-data.mdx    |     4 +-
 docs/docs/using-superset/number-formatting.mdx     |     2 +-
 docs/docs/using-superset/recently-archived.mdx     |    53 +
 .../using-superset/semantic-layer-connections.mdx  |    80 +
 .../using-superset/semantic-member-selections.mdx  |    56 +-
 .../docs/using-superset/using-ai-with-superset.mdx |    62 +-
 docs/docs/using-superset/version-history.mdx       |    61 +-
 docs/docusaurus.config.ts                          |    53 +-
 docs/package.json                                  |    18 +-
 docs/scripts/generate-database-docs.mjs            |    84 +
 docs/sidebarTutorials.js                           |     2 +
 docs/sip/pivot-table-aggregation-parity.md         |   112 +
 docs/src/components/databases/DatabaseLogo.tsx     |    62 +
 docs/src/components/databases/DatabaseLogoWall.tsx |     9 +-
 docs/src/components/databases/DatabasePage.tsx     |    59 +-
 docs/src/components/databases/types.ts             |     8 +
 docs/src/data/databases.json                       |    90 +-
 docs/src/pages/index.tsx                           |    11 +-
 docs/static/feature-flags.json                     |    15 +-
 docs/static/img/databases/clickhouse-dark.svg      |   Bin 0 -> 4480 bytes
 docs/static/img/databases/clickhouse-mark-dark.svg |   Bin 0 -> 960 bytes
 docs/static/img/databases/clickhouse-mark.svg      |   Bin 0 -> 963 bytes
 docs/static/img/databases/clickhouse.svg           |   Bin 0 -> 4483 bytes
 docs/static/img/logos/douroeci.png                 |   Bin 0 -> 22657 bytes
 docs/static/img/logos/plum.svg                     |   Bin 0 -> 4215 bytes
 docs/static/resources/openapi.json                 |  1516 +-
 docs/yarn.lock                                     |   819 +-
 pyproject.toml                                     |    94 +-
 requirements/base.in                               |    12 +-
 requirements/base.txt                              |    42 +-
 requirements/development.in                        |     9 +-
 requirements/development.txt                       |   110 +-
 scripts/change_detector.py                         |    16 +
 scripts/eslint.sh                                  |    30 -
 scripts/translations/babel_update.sh               |     7 +
 scripts/translations/backfill_po.py                |    79 +-
 scripts/translations/check_pot_drift.py            |    81 +-
 superset-core/pyproject.toml                       |     5 +-
 .../src/superset_core/semantic_layers/context.py   |    62 +
 .../src/superset_core/semantic_layers/errors.py    |    76 +
 .../src/superset_core/semantic_layers/layer.py     |   109 +-
 .../src/superset_core/semantic_layers/metadata.py  |   196 -
 .../src/superset_core/semantic_layers/testing.py   |    61 +
 .../src/superset_core/semantic_layers/types.py     |   183 +-
 .../src/superset_core/semantic_layers/view.py      |    92 +-
 .../tests/semantic_layers/example_provider.py      |   167 +
 superset-core/tests/semantic_layers/test_errors.py |    66 +
 .../semantic_layers/test_execution_context.py      |    71 +
 .../tests/semantic_layers/test_registration.py     |   153 +
 superset-core/tests/semantic_layers/test_view.py   |    96 +
 superset-embedded-sdk/package-lock.json            |   505 +-
 superset-embedded-sdk/package.json                 |    12 +-
 .../src/superset_extensions_cli/cli.py             |     7 +-
 .../templates/frontend/package.json.j2             |     9 +-
 superset-extensions-cli/tests/test_cli_build.py    |     4 +-
 superset-frontend/.storybook/main.mjs              |    10 +-
 .../playwright.storybook-ci.config.ts}             |    23 +-
 superset-frontend/.storybook/setup-stories.test.ts |   156 +
 superset-frontend/.storybook/setup-stories.ts      |   179 +
 .../types.ts => .storybook/stories.spec.ts}        |    10 +-
 superset-frontend/.storybook/test-runner.ts        |    38 -
 .../i18n-strings/index.js}                         |   116 +-
 .../i18n-strings}/no-eager-t-in-config.test.ts     |    13 +-
 .../i18n-strings}/no-template-vars.test.ts         |    12 +-
 .../i18n-strings}/package.json                     |     9 +-
 .../index.ts => custom-lint-rules/icons/index.js}  |    61 +-
 .../icons}/no-fontawesome.test.ts                  |    13 +-
 .../icons}/package.json                            |     9 +-
 .../theme-colors/colors.js}                        |     7 +-
 .../theme-colors/index.js}                         |   111 +-
 .../theme-colors/no-literal-colors.test.ts         |    81 +
 .../theme-colors}/package.json                     |    12 +-
 superset-frontend/eslint.config.minimal.js         |   130 -
 superset-frontend/jest.config.js                   |    12 +-
 superset-frontend/oxlint.custom-lint-rules.mts     |   121 +
 superset-frontend/oxlint.json                      |    20 +-
 superset-frontend/package-lock.json                | 31808 ++++++++-----------
 superset-frontend/package.json                     |   102 +-
 .../packages/generator-superset/package.json       |     2 +-
 .../packages/superset-core/package.json            |     2 +-
 .../superset-core/src/theme/GlobalStyles.test.tsx  |    67 +
 .../superset-core/src/theme/GlobalStyles.tsx       |     9 +-
 .../packages/superset-core/tsconfig.json           |    18 +-
 .../src/operators/utils/extractExtraMetrics.ts     |     4 +-
 .../components/RadioButtonControl.tsx              |     9 +-
 .../src/shared-controls/dndControls.tsx            |     1 +
 .../src/shared-controls/matrixifyControls.tsx      |     1 +
 .../src/shared-controls/sharedControls.tsx         |    21 +
 .../src/utils/D3Formatting.ts                      |     1 +
 .../src/utils/getTemporalColumns.ts                |     4 +-
 .../superset-ui-chart-controls/src/utils/index.ts  |     1 +
 .../src/utils/isServerPaginationUnsupported.ts     |    70 +
 .../src/utils/metricColumnFilter.ts                |     4 +-
 .../superset-ui-chart-controls/tsconfig.json       |    18 +-
 .../packages/superset-ui-core/package.json         |    10 +-
 .../components/CachedLabel/TooltipContent.test.tsx |    25 +
 .../src/components/CachedLabel/TooltipContent.tsx  |    21 +-
 .../src/components/CachedLabel/index.tsx           |    14 +-
 .../src/components/CachedLabel/types.ts            |     3 +
 .../src/components/CronPicker/CronPicker.test.tsx  |    28 +-
 .../src/components/CronPicker/index.tsx            |     6 +-
 .../DropdownContainer/DropdownContainer.test.tsx   |    28 +
 .../src/components/DropdownContainer/types.ts      |     4 +-
 .../src/components/Loading/Loading.stories.tsx     |     5 +-
 .../components/MetadataBar/MetadataBar.test.tsx    |    40 +-
 .../src/components/MetadataBar/MetadataBar.tsx     |     6 +-
 .../src/components/SafeMarkdown/SafeMarkdown.tsx   |     2 +-
 .../src/components/Table/VirtualTable.test.tsx     |    10 +-
 .../src/components/Table/VirtualTable.tsx          |     4 +-
 .../src/components/TableCollection/utils.tsx       |     3 +-
 .../src/components/Typography/index.tsx            |     3 +-
 .../superset-ui-core/src/components/index.ts       |     6 +-
 .../src/connection/SupersetClientClass.ts          |    35 +-
 .../src/number-format/NumberFormatterRegistry.ts   |    28 +-
 .../factories/createSmartNumberFormatter.ts        |    56 +-
 .../src/query/buildQueryContext.ts                 |    15 +-
 .../superset-ui-core/src/query/buildQueryObject.ts |    10 +-
 .../superset-ui-core/src/query/processFilters.ts   |     3 +
 .../src/query/types/QueryResponse.ts               |     8 +
 .../superset-ui-core/src/utils/featureFlags.ts     |     1 +
 .../packages/superset-ui-core/src/utils/tooltip.ts |    31 +
 .../test/connection/SupersetClientClass.test.ts    |    32 +-
 .../number-format/NumberFormatterRegistry.test.ts  |    18 +
 .../factories/createSmartNumberFormatter.test.ts   |    14 +
 .../test/query/buildQueryContext.test.ts           |    41 +
 .../test/query/buildQueryObject.test.ts            |    76 +-
 .../superset-ui-core/test/utils/tooltip.test.ts    |    34 +
 .../packages/superset-ui-core/tsconfig.json        |    18 +-
 .../packages/superset-ui-switchboard/tsconfig.json |    18 +-
 .../components/modals/EditDatasetModal.ts          |     7 +-
 .../playwright/helpers/api/assertions.ts           |    16 +-
 .../playwright/helpers/api/dashboard.ts            |    28 +
 .../playwright/helpers/api/semanticLayer.test.ts   |    65 +
 .../playwright/helpers/api/semanticLayer.ts        |   136 +
 .../playwright/helpers/fixtures/testAssets.ts      |    25 +-
 superset-frontend/playwright/pages/ExplorePage.ts  |    23 +-
 .../playwright/tests/chart/chart-list.spec.ts      |     4 +-
 .../tests/dashboard/dashboard-list.spec.ts         |     4 +-
 .../tests/dashboard/dashboard-test-helpers.ts      |    20 +-
 .../tests/dashboard/featured-charts-render.spec.ts |   234 +
 .../dashboard/version-history-placement.spec.ts    |    39 +-
 .../playwright/tests/dataset/dataset-list.spec.ts  |     4 +-
 .../tests/explore/explore-download-image.spec.ts   |    65 +
 .../semantic-view/semantic-view-dashboard.spec.ts  |   204 +
 .../tests/version-history/activity-log.spec.ts     |    14 +-
 .../src/controlPanel.tsx                           |    50 +-
 .../src/utils/useTableTheme.ts                     |    42 -
 .../test/buildQuery.test.ts                        |    23 +
 .../test/controlPanel.test.tsx                     |   364 +
 .../plugin-chart-ag-grid-table/tsconfig.json       |    18 +-
 .../plugins/plugin-chart-calendar/tsconfig.json    |    18 +-
 .../src/components/OlChartMap.tsx                  |    18 +-
 .../test/components/OlChartMap.test.tsx            |   108 +
 .../plugin-chart-cartodiagram/tsconfig.json        |    18 +-
 .../plugin-chart-cartodiagram/types/external.d.ts  |     2 +
 .../plugins/plugin-chart-chord/tsconfig.json       |    18 +-
 .../scripts/Country Map GeoJSON Generator.ipynb    |    30 +
 .../plugin-chart-country-map/src/CountryMap.ts     |    37 +-
 .../src/ReactCountryMap.tsx                        |     5 +-
 .../plugin-chart-country-map/src/controlPanel.ts   |    23 +
 .../src/countries/south_africa.geojson             |   Bin 57043 -> 57075 bytes
 .../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}                     |    35 +-
 .../test/geographicRendering.test.tsx              |   296 +
 .../test/normalizeRegions.test.ts                  |   251 +
 .../test/south_africa.geojson.test.ts              |    57 +
 .../test/transformProps.test.ts                    |   125 +
 .../plugins/plugin-chart-country-map/tsconfig.json |    18 +-
 .../src/Bubble/EchartsBubble.tsx                   |   137 +-
 .../plugin-chart-echarts/src/Bubble/constants.ts   |     3 +-
 .../plugin-chart-echarts/src/Bubble/crossFilter.ts |   226 +
 .../plugin-chart-echarts/src/Bubble/index.ts       |     8 +-
 .../src/Bubble/transformProps.ts                   |    39 +-
 .../plugin-chart-echarts/src/Bubble/types.ts       |     9 +-
 .../src/Candlestick/constants.ts                   |    12 +-
 .../src/Candlestick/controlPanel.tsx               |     8 +-
 .../src/Graph/transformProps.ts                    |    51 +-
 .../src/Histogram/transformProps.ts                |     8 +-
 .../src/Timeseries/EchartsTimeseries.tsx           |     4 +
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |    28 +
 .../src/Timeseries/Regular/Line/controlPanel.tsx   |    19 +
 .../src/Timeseries/transformProps.ts               |    77 +-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |     2 +
 .../plugins/plugin-chart-echarts/src/controls.tsx  |    30 +
 .../plugins/plugin-chart-echarts/src/types.ts      |     2 -
 .../plugin-chart-echarts/src/utils/forecast.ts     |    20 +-
 .../src/utils/mergeCustomEChartOptions.test.ts     |    67 +
 .../src/utils/mergeCustomEChartOptions.ts          |    17 +
 .../test/BoxPlot/buildQuery.test.ts                |    20 +
 .../test/Bubble/EchartsBubble.test.tsx             |   335 +
 .../test/Bubble/crossFilter.test.ts                |   129 +
 .../test/Bubble/transformProps.test.ts             |   134 +
 .../test/Bullet/buildQuery.test.ts                 |    15 +
 .../test/Bullet/transformProps.test.ts             |   172 +-
 .../test/Candlestick/controlPanel.test.ts          |    10 +
 .../test/Candlestick/transformProps.test.ts        |    17 +
 .../test/Graph/categoryIdentity.test.ts            |   398 +
 .../test/Graph/transformProps.test.ts              |    38 +
 .../test/Histogram/transformProps.test.ts          |    11 +
 .../test/MixedTimeseries/transformProps.test.ts    |     8 +-
 .../test/Rose/buildQuery.test.ts                   |    24 +-
 .../test/Timeseries/Bar/controlPanel.test.ts       |    28 +
 .../test/Timeseries/EchartsTimeseries.test.tsx     |     6 +
 .../test/Timeseries/Line/controlPanel.test.ts      |    42 +
 .../test/Timeseries/helpers.ts                     |     1 +
 .../test/Timeseries/transformProps.test.ts         |   142 +-
 .../test/utils/forecast.test.ts                    |    63 +-
 .../plugins/plugin-chart-echarts/tsconfig.json     |    18 +-
 .../plugins/plugin-chart-handlebars/package.json   |     2 +-
 .../plugins/plugin-chart-handlebars/tsconfig.json  |    18 +-
 .../plugin-chart-horizon/test/buildQuery.test.ts   |    11 +
 .../plugins/plugin-chart-horizon/tsconfig.json     |    18 +-
 .../plugin-chart-paired-t-test/tsconfig.json       |    18 +-
 .../tsconfig.json                                  |    18 +-
 .../plugin-chart-partition/test/buildQuery.test.ts |    13 +
 .../plugins/plugin-chart-partition/tsconfig.json   |    18 +-
 .../src/PivotTableChart.tsx                        |     5 +
 .../src/plugin/buildQuery.ts                       |    35 +-
 .../src/plugin/controlPanel.tsx                    |    82 +-
 .../src/plugin/resultAggregation.ts                |   121 +
 .../src/plugin/transformProps.ts                   |    39 +-
 .../src/plugin/utilities.ts                        |    42 +-
 .../src/react-pivottable/Styles.ts                 |    98 +-
 .../src/react-pivottable/TableRenderers.tsx        |   215 +-
 .../src/react-pivottable/utilities.ts              |   739 +-
 .../plugins/plugin-chart-pivot-table/src/types.ts  |     6 +
 .../test/PivotTableChart.test.tsx                  |    22 +
 .../test/plugin/buildQuery.test.ts                 |    70 +
 .../test/plugin/transformProps.test.ts             |    82 +-
 .../test/plugin/utilities.test.ts                  |    49 +-
 .../test/react-pivottable/Styles.test.tsx          |   328 +
 .../test/react-pivottable/tableRenders.test.tsx    |   436 +-
 .../test/react-pivottable/utilities.test.ts        |   890 +-
 .../plugin-chart-pivot-table/test/testData.ts      |    68 +
 .../plugins/plugin-chart-pivot-table/tsconfig.json |    18 +-
 .../plugin-chart-point-cluster-map/package.json    |     4 +-
 .../src/MapLibre.tsx                               |    35 +-
 .../test/MapLibre.test.tsx                         |    69 +-
 .../plugin-chart-point-cluster-map/tsconfig.json   |    16 +-
 .../types/external.d.ts                            |     2 +
 .../plugin-chart-table/src/DataTable/DataTable.tsx |     9 +
 .../plugins/plugin-chart-table/src/Styles.tsx      |     4 +
 .../plugins/plugin-chart-table/src/TableChart.tsx  |     7 +-
 .../plugin-chart-table/src/controlPanel.tsx        |    50 +-
 .../test/DataTable/DataTable.test.tsx              |    31 +
 .../plugin-chart-table/test/TableChart.test.tsx    |   129 +-
 .../plugin-chart-table/test/buildQuery.test.ts     |    53 +
 .../plugin-chart-table/test/controlPanel.test.tsx  |   546 +-
 .../plugins/plugin-chart-table/tsconfig.json       |    18 +-
 .../plugins/plugin-chart-word-cloud/tsconfig.json  |    18 +-
 .../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}                     |    35 +-
 .../test/transformData.test.ts                     |   169 +
 .../test/transformProps.test.ts                    |    52 +
 .../plugins/plugin-chart-world-map/tsconfig.json   |    18 +-
 .../plugins/preset-chart-deckgl/package.json       |     4 +-
 .../src/CategoricalDeckGLContainer.test.tsx        |   213 +-
 .../src/CategoricalDeckGLContainer.tsx             |    73 +-
 .../src/DeckGLContainer.test.tsx                   |    28 +
 .../preset-chart-deckgl/src/DeckGLContainer.tsx    |    11 +
 .../preset-chart-deckgl/src/Multi/Multi.tsx        |    25 +-
 .../preset-chart-deckgl/src/Multi/MultiV1.test.tsx |    66 +-
 .../plugins/preset-chart-deckgl/src/Multi/index.ts |     2 +-
 .../src/Multi/transformProps.test.ts               |    43 +
 .../src/Multi/transformProps.ts}                   |    26 +-
 .../preset-chart-deckgl/src/factory.test.tsx       |   117 +
 .../plugins/preset-chart-deckgl/src/factory.tsx    |    25 +
 .../preset-chart-deckgl/src/layers/Arc/Arc.test.ts |     6 +
 .../src/layers/Contour/Contour.test.ts             |    56 +
 .../src/layers/Contour/Contour.tsx                 |     2 +-
 .../src/layers/Geojson/Geojson.test.tsx            |    22 +
 .../src/layers/Polygon/Polygon.test.tsx            |   100 +
 .../src/layers/Polygon/Polygon.tsx                 |    22 +
 .../src/layers/Scatter/buildQuery.test.ts          |    24 +
 .../src/layers/Scatter/buildQuery.ts               |     7 +-
 .../src/layers/Scatter/controlPanel.test.ts}       |    35 +-
 .../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 +
 .../plugins/preset-chart-deckgl/tsconfig.json      |    16 +-
 .../preset-chart-deckgl/types/external.d.ts        |     2 +
 .../types/global.d.ts}                             |    13 +-
 superset-frontend/scripts/check-custom-rules.js    |     6 +-
 .../scripts/internal/oxlint-metrics-uploader.js    |   174 +-
 .../fixtures/mockSemanticDashboardDatasources.ts   |   177 +
 .../spec/helpers/geographicControlPanel.ts         |    75 +
 superset-frontend/spec/helpers/runStopButton.ts    |    55 +
 .../spec/scripts/oxlint-metrics-uploader.test.ts   |   327 +-
 .../src/SqlLab/actions/sqlLab.test.ts              |   308 +
 superset-frontend/src/SqlLab/actions/sqlLab.ts     |    68 +-
 .../ExploreCtasResultsButton.test.tsx              |    11 +-
 .../SqlLab/components/ResultSet/ResultSet.test.tsx |    13 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |    10 +-
 .../RunQueryActionButton.test.tsx                  |   545 +-
 .../components/RunQueryActionButton/index.tsx      |    37 +-
 .../SqlLab/components/SqlEditor/SqlEditor.test.tsx |    17 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |    10 +-
 .../TableExploreTree/TableExploreTree.test.tsx     |    13 +-
 .../SqlLab/components/TableExploreTree/index.tsx   |    10 +-
 .../components/TablePreview/TablePreview.test.tsx  |    13 +-
 .../src/SqlLab/components/TablePreview/index.tsx   |     8 +-
 .../DynamicGroupBy/DynamicGroupByPlugin.test.tsx   |    56 +
 .../DynamicGroupBy/DynamicGroupByPlugin.tsx        |    52 +-
 .../DynamicGroupBy/columnAllowlist.test.ts         |    67 +
 .../components/DynamicGroupBy/columnAllowlist.ts   |   105 +
 .../components/DynamicGroupBy/types.ts             |     5 +
 .../src/components/Chart/Chart.test.tsx            |    64 +
 superset-frontend/src/components/Chart/Chart.tsx   |     8 +
 .../components/Chart/ChartErrorMessage.test.tsx    |     2 +-
 .../src/components/Chart/ChartErrorMessage.tsx     |     3 +-
 .../Chart/ChartRenderer.refresh.test.tsx           |   302 +
 .../src/components/Chart/ChartRenderer.test.tsx    |    19 +
 .../src/components/Chart/ChartRenderer.tsx         |    90 +-
 .../src/components/Chart/chartAction.ts            |    34 +
 .../src/components/Chart/chartActions.test.ts      |    62 +
 .../FoldersEditor/FoldersEditor.test.tsx           |    17 +-
 .../components/Datasource/FoldersEditor/index.tsx  |    12 +-
 .../DatasourceEditor/DatasourceEditor.tsx          |    45 +-
 ...atasourceEditorNormalizeColumnsWarning.test.tsx |   146 +
 .../src/components/Datasource/utils/index.ts       |    12 +-
 .../src/components/Datasource/utils/utils.test.tsx |    28 +-
 .../components/ErrorMessage/ErrorAlert.test.tsx    |    41 +
 .../src/components/GridTable/GridTable.test.tsx    |    46 +-
 .../src/components/GridTable/index.tsx             |    19 +-
 .../src/components/JsonModal/JsonModal.test.tsx    |    18 +
 .../src/components/JsonModal/utils.ts              |    10 +-
 .../src/dashboard/actions/dashboardInfo.ts         |    98 +-
 .../src/dashboard/actions/dashboardState.test.ts   |   146 +
 .../src/dashboard/actions/dashboardState.ts        |    63 +-
 .../src/dashboard/actions/datasources.test.ts      |   114 +
 .../src/dashboard/actions/datasources.ts           |    41 +-
 .../src/dashboard/actions/hydrate.test.ts          |    43 +
 superset-frontend/src/dashboard/actions/hydrate.ts |    32 +-
 .../components/AnchorLink/AnchorLink.test.tsx      |     2 +-
 .../DashboardBuilder/DashboardBuilder.test.tsx     |   137 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |   155 +-
 .../DashboardBuilder/DashboardWrapper.tsx          |     2 +-
 .../DetailsPanel/DetailsPanel.test.tsx             |    19 +
 .../components/FiltersBadge/DetailsPanel/index.tsx |    22 +
 .../components/FiltersBadge/FiltersBadge.test.tsx  |    40 +
 .../dashboard/components/FiltersBadge/index.tsx    |    20 +-
 .../src/dashboard/components/Header/index.tsx      |     4 +-
 .../PropertiesModal.manyCharts.test.tsx            |   107 +
 .../dashboard/components/PropertiesModal/index.tsx |     9 +-
 .../PropertiesModal/sections/AccessSection.tsx     |     2 +-
 .../RefreshFrequencySelect.test.tsx                |   358 +
 .../RefreshFrequency/RefreshFrequencySelect.tsx    |   164 +-
 .../dashboard/components/RefreshFrequency/index.ts |     3 +
 .../components/RefreshIntervalModal.test.tsx       |    43 +
 .../src/dashboard/components/SliceAdder.test.tsx   |     2 +-
 .../src/dashboard/components/SliceAdder.tsx        |     8 +-
 .../SliceHeaderControls.test.tsx                   |    37 +
 .../components/SliceHeaderControls/index.tsx       |     1 +
 .../components/gridComponents/Chart/Chart.test.tsx |    24 +-
 .../components/gridComponents/Header/Header.tsx    |     2 +-
 .../DownloadMenuItems/DownloadMenuItems.test.tsx   |     4 +-
 .../FilterControls.overflow.test.tsx               |   269 +
 .../FilterControls/FilterControls.test.tsx         |    65 +
 .../FilterBar/FilterControls/FilterControls.tsx    |    16 +-
 .../FilterBar/FilterControls/FilterValue.test.tsx  |   165 +-
 .../FilterBar/FilterControls/FilterValue.tsx       |    51 +-
 .../FilterControls/GroupByFilterCard.test.tsx      |   159 +
 .../FilterBar/FilterControls/GroupByFilterCard.tsx |    41 +-
 .../ColumnSelect.requestLifetime.test.tsx          |   155 +
 .../FiltersConfigForm/ColumnSelect.test.tsx        |    39 +
 .../FiltersConfigForm/ColumnSelect.tsx             |   113 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |   535 +-
 .../GroupByColumnAllowlist.test.tsx                |   429 +
 .../FiltersConfigForm/getControlItemsMap.test.tsx  |    19 +-
 .../FiltersConfigForm/getControlItemsMap.tsx       |     3 +-
 .../FiltersConfigForm/utils.test.ts                |   120 +-
 .../FiltersConfigModal/FiltersConfigForm/utils.ts  |    48 +-
 .../FiltersConfigModal.semanticDefault.test.tsx    |  1173 +
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |    78 +-
 .../hooks/useFilterOperations.test.ts              |   145 +-
 .../hooks/useItemStateManager.ts                   |    28 +-
 .../transformers/customizationTransformer.test.ts  |   109 +
 .../transformers/customizationTransformer.ts       |    59 +-
 .../nativeFilters/FiltersConfigModal/types.ts      |     8 +
 .../components/nativeFilters/selectors.test.ts     |    71 +
 .../components/nativeFilters/selectors.ts          |     8 +-
 .../useDisplayControlDatasource.test.ts            |    22 +-
 .../nativeFilters/useDisplayControlDatasource.ts   |    25 +-
 .../dashboard/containers/DashboardPage.test.tsx    |   153 +-
 .../src/dashboard/containers/DashboardPage.tsx     |    64 +-
 .../src/dashboard/reducers/dashboardInfo.test.ts   |   327 +
 .../src/dashboard/reducers/dashboardInfo.ts        |   160 +
 superset-frontend/src/dashboard/types.ts           |    15 +-
 .../util/charts/getFormDataWithExtraFilters.ts     |     7 +-
 .../util/getFormDataWithExtraFilters.test.ts       |    49 +
 superset-frontend/src/embedded/index.tsx           |     5 +-
 .../src/explore/actions/saveModalActions.test.ts   |   212 +
 .../src/explore/actions/saveModalActions.ts        |    14 +
 .../components/ChartPills.behavior.test.tsx        |   158 +
 .../src/explore/components/ChartPills.test.tsx     |   134 +
 .../src/explore/components/ChartPills.tsx          |    36 +-
 .../src/explore/components/Control.test.tsx        |    20 +-
 .../src/explore/components/ControlHeader.test.tsx  |    92 +-
 .../src/explore/components/ControlHeader.tsx       |    37 +-
 .../DatasourcePanel.real-autosizer.test.tsx        |     7 +-
 .../DatasourcePanel/DatasourcePanel.test.tsx       |    13 +-
 .../explore/components/DatasourcePanel/index.tsx   |    10 +-
 .../ExploreChartHeader/ExploreChartHeader.test.tsx |   449 +
 .../components/ExploreChartHeader/index.tsx        |    37 +-
 .../ExploreChartPanel/ExploreChartPanel.test.tsx   |    28 +-
 .../explore/components/ExploreChartPanel/index.tsx |     6 +
 .../ExploreViewContainer.test.tsx                  |   429 +-
 .../components/ExploreViewContainer/index.tsx      |    38 +-
 .../components/LegacyAggregationAlert.test.tsx     |   302 +
 .../explore/components/LegacyAggregationAlert.tsx  |   115 +
 .../RunQueryButton/RunQueryButton.test.tsx         |   361 +-
 .../explore/components/RunQueryButton/index.tsx    |     6 +-
 .../src/explore/components/SaveModal.test.tsx      |    55 +
 .../src/explore/components/SaveModal.tsx           |    15 +-
 .../components/controls/CheckboxControl.test.tsx   |   146 +-
 .../components/controls/CheckboxControl.tsx        |    73 +-
 .../CollectionControl/CollectionControl.test.tsx   |    14 +-
 .../ColorSchemeControl/ColorSchemeLabel.test.tsx   |    14 +
 .../ColorSchemeControl/ColorSchemeLabel.tsx        |     3 +
 .../ColumnConfigConstants.test.tsx                 |    25 +-
 .../controls/ColumnConfigControl/constants.tsx     |     2 +
 .../controls/ComparisonRangeLabel.test.tsx         |    38 +-
 .../components/controls/ComparisonRangeLabel.tsx   |    24 +-
 .../ConditionalFormattingControl.test.tsx          |   112 +-
 .../ConditionalFormattingControl.tsx               |    12 +-
 .../ContourControl/ContourControl.test.tsx         |   128 +
 .../controls/ContourControl/ContourOption.tsx      |     8 +-
 .../ContourPopoverControl-unused-fields.test.tsx   |    60 +
 .../ContourControl/ContourPopoverControl.tsx       |    21 +-
 .../ControlPopover/ControlPopover.test.tsx         |    66 +
 .../controls/ControlPopover/ControlPopover.tsx     |    39 +-
 .../controls/CustomListItem/index.test.tsx         |    48 +
 .../DatasourceControl/DatasourceControl.test.tsx   |     2 +-
 .../components/DateFunctionTooltip.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 |   175 +-
 .../index.tsx                                      |    62 +-
 .../FilterControl/AdhocFilterOption/index.tsx      |     3 +
 .../AdhocFilterPopoverTrigger/index.tsx            |     3 +
 .../controls/FixedOrMetricControl/index.tsx        |     2 +-
 .../components/controls/JSEditorControl.test.tsx   |     9 +-
 .../components/controls/JSEditorControl.tsx        |    10 +-
 .../LayerConfigsControl.test.tsx                   |   271 +
 .../controls/MapViewControl/ExtentTag.test.tsx     |    68 +
 .../controls/MapViewControl/ExtentTag.tsx          |    13 +-
 .../MapViewControl/MapViewControl.test.tsx         |   134 +
 .../MapViewControl/MapViewPopoverContent.test.tsx  |    78 +
 .../components/controls/MapViewControl/types.ts    |     6 +-
 .../controls/MatrixifyDimensionControl.test.tsx    |    72 +-
 .../controls/MatrixifyDimensionControl.tsx         |    25 +-
 .../controls/SemanticRequestView.test.tsx          |   111 +
 .../components/controls/SemanticRequestView.tsx    |    71 +
 .../components/controls/SliderControl.test.tsx     |    71 +
 .../components/controls/SwitchControl.test.tsx     |    57 +
 .../controls/TimeRangeControl/index.test.tsx       |    55 +
 .../controls/VerticalRadioControl.test.tsx         |    83 +
 .../components/controls/ViewQueryModal.test.tsx    |   300 +-
 .../explore/components/controls/ViewQueryModal.tsx |    98 +-
 .../controls/ViewQueryModalFooter.test.tsx         |   142 +-
 .../controls/VizTypeControl/VizTypeGallery.tsx     |    24 +-
 .../components/controls/XAxisSortControl.test.tsx  |    80 +
 .../components/controls/XAxisSortControl.tsx       |    10 +-
 .../ZoomConfigControl/ZoomConfigControl.test.tsx   |   195 +-
 .../ZoomConfigControl/ZoomConfigsChart.test.tsx    |   178 +
 .../useExploreAdditionalActionsMenu/index.tsx      |     1 +
 .../useExploreAdditionalActionsMenu.test.tsx       |    33 +
 superset-frontend/src/explore/constants.ts         |    10 +
 superset-frontend/src/explore/controls.tsx         |     8 +-
 .../src/explore/exploreUtils/index.ts              |     7 +-
 .../exploreUtils/legacyAggregationTag.test.ts      |   137 +
 .../explore/exploreUtils/legacyAggregationTag.ts   |    93 +
 .../src/explore/reducers/exploreReducer.test.ts    |    26 +
 .../src/explore/reducers/exploreReducer.ts         |    15 +-
 superset-frontend/src/explore/types.ts             |     2 +
 .../src/features/alerts/AlertReportModal.test.tsx  |  1914 +-
 .../src/features/alerts/AlertReportModal.tsx       |  1350 +-
 .../alerts/ReportConfigurationModal.test.tsx       |   409 +
 .../features/alerts/ReportConfigurationModal.tsx   |   488 +
 .../alerts/components/AlertStatusIcon.test.tsx     |    14 +
 .../features/alerts/components/AlertStatusIcon.tsx |     1 +
 .../alerts/hooks/useReportConfiguration.ts         |    64 +
 superset-frontend/src/features/alerts/types.ts     |    34 +-
 .../src/features/charts/ChartCard.test.tsx         |    32 +
 .../src/features/charts/ChartCard.tsx              |    10 +-
 .../src/features/dashboards/DashboardCard.test.tsx |    47 +-
 .../src/features/dashboards/DashboardCard.tsx      |    14 +-
 .../DatabaseConnectionForm/CommonParameters.tsx    |     2 +
 .../src/features/home/DashboardTable.test.tsx      |    58 +-
 .../src/features/home/DashboardTable.tsx           |    31 +-
 .../src/features/home/RightMenu.test.tsx           |    76 +
 superset-frontend/src/features/home/RightMenu.tsx  |    16 +
 .../reports/ReportModal/ReportModal.test.tsx       |   279 +-
 .../src/features/reports/ReportModal/index.tsx     |    83 +-
 superset-frontend/src/features/reports/types.ts    |     2 +
 .../semanticLayers/MultiEnumControl.test.tsx       |    36 +
 .../semanticLayers/SemanticLayerModal.test.tsx     |   540 +-
 .../features/semanticLayers/SemanticLayerModal.tsx |   172 +-
 .../semanticLayers/jsonFormsAntdRenderers.test.tsx |   269 +
 .../features/semanticLayers/jsonFormsHelpers.tsx   |   139 +-
 .../semanticViews/AddSemanticViewModal.test.tsx    |  1204 +-
 .../semanticViews/AddSemanticViewModal.tsx         |   411 +-
 .../src/features/semanticViews/creationResult.ts   |    90 +
 superset-frontend/src/features/tags/tags.ts        |     2 +-
 .../src/features/versionHistory/ActionRow.tsx      |     5 +-
 .../versionHistory/CurrentVersionSection.tsx       |    12 +-
 .../DashboardVersionHistory.test.tsx               |     4 +-
 .../versionHistory/RelatedUpdateRow.test.tsx       |    27 +
 .../features/versionHistory/RelatedUpdateRow.tsx   |     5 +-
 .../features/versionHistory/SaveGroupItem.test.tsx |    88 +-
 .../src/features/versionHistory/SaveGroupItem.tsx  |    66 +-
 .../versionHistory/VersionHistoryPanel.test.tsx    |   139 +-
 .../versionHistory/VersionHistoryPanel.tsx         |    54 +-
 .../src/features/versionHistory/display.test.ts    |    75 +
 .../src/features/versionHistory/display.ts         |    61 +-
 .../versionHistory/useVersionActivity.test.ts      |     4 +-
 .../filters/components/Range/RangeChart.test.tsx   |   115 +
 .../components/Range/RangeFilterPlugin.test.tsx    |   475 +-
 .../filters/components/Range/RangeFilterPlugin.tsx |   195 +-
 .../filters/components/Range/buildQuery.test.ts    |    50 +
 .../src/filters/components/Range/buildQuery.ts     |     4 +
 .../src/filters/components/Range/index.ts          |     2 +
 .../components/Range/isSemanticRange.ts}           |    21 +-
 .../src/filters/components/Range/transformProps.ts |     2 +-
 .../components/Select/SelectFilterPlugin.test.tsx  |   346 +-
 .../components/Select/SelectFilterPlugin.tsx       |   178 +-
 .../src/hooks/apiResources/dashboards.test.ts      |    48 +
 .../src/hooks/apiResources/dashboards.ts           |     1 +
 .../src/hooks/apiResources/datasets.cache.test.ts  |    48 +
 .../src/hooks/apiResources/datasets.test.ts        |    36 +-
 .../src/hooks/apiResources/datasets.ts             |     6 +-
 superset-frontend/src/hooks/useRunStopButton.ts    |   181 +
 .../src/middleware/asyncEvent.test.ts              |   370 +-
 superset-frontend/src/middleware/asyncEvent.ts     |    90 +-
 .../src/middleware/asyncQueryError.ts              |   118 +
 .../src/pages/ActionLog/ActionLog.test.tsx         |    76 +
 superset-frontend/src/pages/ActionLog/index.tsx    |    67 +-
 .../pages/AlertReportList/AlertReportList.test.tsx |    43 +
 .../src/pages/AlertReportList/index.tsx            |    22 +
 .../pages/ChartList/ChartList.permissions.test.tsx |    27 +-
 superset-frontend/src/pages/ChartList/index.tsx    |    19 +-
 .../DashboardList/DashboardList.cardview.test.tsx  |    77 +-
 .../DashboardList.permissions.test.tsx             |    34 +-
 .../src/pages/DashboardList/index.tsx              |    34 +-
 .../DatabaseList.semanticLayerDelete.test.tsx      |    51 +-
 superset-frontend/src/pages/DatabaseList/index.tsx |     2 +
 .../DatasetList/DatasetList.behavior.test.tsx      |   101 +
 .../DatasetList/DatasetList.permissions.test.tsx   |    30 +
 superset-frontend/src/pages/DatasetList/index.tsx  |    66 +-
 .../pages/ForgotPassword/ForgotPassword.test.tsx   |   157 +
 .../src/pages/ForgotPassword/index.tsx             |   168 +
 superset-frontend/src/pages/Login/Login.test.tsx   |    39 +
 superset-frontend/src/pages/Login/index.tsx        |    39 +-
 .../index.tsx => src/pages/Login/styles.ts}        |    41 +-
 .../src/pages/ResetPassword/ResetPassword.test.tsx |   301 +
 .../src/pages/ResetPassword/index.tsx              |   285 +
 superset-frontend/src/types/Chart.ts               |     1 +
 superset-frontend/src/types/Dashboard.ts           |     1 +
 superset-frontend/src/types/bootstrapTypes.ts      |     1 +
 superset-frontend/src/utils/cacheWrapper.test.ts   |    54 +
 superset-frontend/src/utils/cacheWrapper.ts        |     6 +
 .../src/utils/cachedSupersetGet.test.ts            |    20 +
 .../utils/getChartRequiredFieldsMissingMessage.ts  |     1 +
 superset-frontend/src/utils/lazyWithRetry.test.tsx |   140 +
 superset-frontend/src/utils/lazyWithRetry.ts       |   135 +
 .../src/utils/semanticViewStructure.test.ts        |    56 +-
 .../src/utils/semanticViewStructure.ts             |    42 +-
 superset-frontend/src/views/App.test.tsx           |    12 +-
 superset-frontend/src/views/App.tsx                |    11 +-
 superset-frontend/src/views/routePaths.ts          |     2 +
 superset-frontend/src/views/routes.test.tsx        |    10 +
 superset-frontend/src/views/routes.tsx             |   100 +-
 .../TimeTable/config/buildQuery.test.ts            |    14 +
 superset-frontend/tsconfig.json                    |    20 +-
 superset-frontend/webpack.config.js                |    36 +-
 superset-websocket/README.md                       |    25 +
 superset-websocket/config.example.json             |    10 +-
 superset-websocket/package-lock.json               |   592 +-
 superset-websocket/package.json                    |    10 +-
 superset-websocket/spec/config.test.ts             |    42 +
 superset-websocket/spec/index.test.ts              |   161 +-
 superset-websocket/src/config.ts                   |    75 +
 superset-websocket/src/index.ts                    |    93 +-
 .../utils/client-ws-app/package-lock.json          |   147 +-
 .../utils/client-ws-app/package.json               |     2 +-
 superset/app.py                                    |    36 +-
 superset/charts/api.py                             |    19 +-
 superset/charts/client_processing.py               |   302 +-
 superset/charts/data/api.py                        |    68 +-
 superset/charts/data/dashboard_filter_context.py   |    22 +
 superset/charts/data/form_data.py                  |     2 +-
 superset/charts/filters.py                         |    18 +-
 superset/charts/schemas.py                         |    16 +-
 superset/cli/update.py                             |    17 -
 superset/commands/chart/create.py                  |     4 +
 superset/commands/chart/data/get_data_command.py   |    37 +-
 superset/commands/chart/exceptions.py              |     4 +
 superset/commands/chart/export.py                  |    34 +-
 superset/commands/chart/restore_version.py         |    17 +
 superset/commands/chart/update.py                  |    29 +
 superset/commands/chart/utils.py                   |    48 +
 superset/commands/chart/warm_up_cache.py           |    26 +-
 superset/commands/dashboard/exceptions.py          |     4 +
 superset/commands/dashboard/export.py              |    51 +-
 superset/commands/dashboard/permalink/create.py    |    13 +-
 superset/commands/dashboard/restore.py             |   132 +
 superset/commands/dashboard/update.py              |    55 +-
 superset/commands/dataset/create.py                |    69 +-
 superset/commands/dataset/duplicate.py             |    48 +-
 superset/commands/dataset/exceptions.py            |    46 +
 superset/commands/dataset/importers/v1/utils.py    |   194 +-
 superset/commands/dataset/update.py                |   127 +-
 .../commands/deletion_retention/force_purge.py     |     7 +-
 .../commands/deletion_retention/purge_cascade.py   |     5 +-
 .../commands/deletion_retention/purge_policy.py    |    60 +-
 superset/commands/distributed_lock/release.py      |     3 +-
 superset/commands/export/assets.py                 |    75 +-
 superset/commands/export/models.py                 |    18 +-
 superset/commands/importers/v1/examples.py         |     8 +-
 superset/commands/importers/v1/utils.py            |    73 +-
 superset/commands/report/alert.py                  |    52 +-
 superset/commands/report/base.py                   |   238 +-
 superset/commands/report/create.py                 |    46 +
 superset/commands/report/exceptions.py             |   155 +-
 superset/commands/report/execute.py                |   265 +-
 superset/commands/report/update.py                 |   324 +-
 superset/commands/report/update_config.py          |   145 +
 superset/commands/restore.py                       |     7 +-
 superset/commands/security/exceptions.py           |    15 +
 superset/commands/security/password_recovery.py    |   315 +
 superset/commands/security/reset.py                |    23 +-
 superset/commands/semantic_layer/create.py         |    55 +-
 superset/commands/semantic_layer/delete.py         |   243 +
 superset/commands/semantic_layer/exceptions.py     |    28 +-
 superset/commands/semantic_layer/update.py         |    62 +-
 superset/commands/semantic_layer/utils.py          |     2 +-
 superset/commands/sql_lab/execute.py               |    12 +
 superset/commands/streaming_export/base.py         |    34 +-
 superset/commands/version_restore.py               |     5 +
 superset/common/db_query_status.py                 |     6 +
 superset/common/form_data_query_context.py         |  1629 +-
 superset/common/query_actions.py                   |     1 +
 superset/common/query_context_factory.py           |    63 +-
 superset/common/query_context_processor.py         |   110 +-
 superset/common/query_object.py                    |    28 +
 superset/common/query_object_factory.py            |    31 +-
 superset/common/tabular_query.py                   |     7 +-
 superset/common/tags.py                            |   496 -
 superset/common/utils/dataframe_utils.py           |     8 +-
 superset/common/utils/query_cache_manager.py       |     9 +-
 superset/common/utils/time_range_utils.py          |    32 +-
 superset/config.py                                 |   139 +
 superset/connectors/sqla/models.py                 |    26 +-
 superset/connectors/sqla/utils.py                  |    51 +-
 superset/constants.py                              |    40 +
 superset/coordination/cache_backend.py             |    72 +
 superset/daos/chart.py                             |     7 +-
 superset/daos/dashboard.py                         |   468 +-
 superset/daos/datasource.py                        |    34 +-
 superset/daos/key_value.py                         |    43 +-
 superset/daos/query.py                             |    26 +-
 superset/daos/report.py                            |   212 +-
 superset/dashboards/api.py                         |    25 +-
 superset/dashboards/excel_export/workbook.py       |    11 +-
 superset/dashboards/filters.py                     |     7 +
 superset/dashboards/schemas.py                     |     3 +
 superset/databases/api.py                          |     7 +-
 superset/dataframe.py                              |     4 +
 superset/datasets/api.py                           |     7 +-
 superset/datasets/schemas.py                       |    56 +-
 superset/datasource/api.py                         |   369 +-
 superset/db_engine_specs/README.md                 |     3 +
 superset/db_engine_specs/aws_iam.py                |    42 +-
 superset/db_engine_specs/base.py                   |    38 +
 superset/db_engine_specs/bigquery.py               |    83 +-
 superset/db_engine_specs/clickhouse.py             |    80 +-
 superset/db_engine_specs/databricks.py             |    27 +-
 superset/db_engine_specs/hive.py                   |    18 +-
 superset/db_engine_specs/impala.py                 |   138 +-
 superset/db_engine_specs/lib.py                    |    11 +
 superset/db_engine_specs/oceanbase.py              |    86 +
 superset/db_engine_specs/postgres.py               |     3 +-
 superset/db_engine_specs/snowflake.py              |    18 +-
 superset/db_engine_specs/spark.py                  |     6 +-
 superset/db_engine_specs/trino.py                  |    35 +-
 superset/errors.py                                 |     1 +
 superset/exceptions.py                             |    53 +
 superset/explore/api.py                            |     5 +
 superset/explore/form_data/api.py                  |     9 +-
 superset/explore/permalink/api.py                  |     5 +-
 superset/explore/utils.py                          |     6 +
 superset/extensions/metadb.py                      |     3 +-
 superset/importexport/api.py                       |     7 +-
 superset/initialization/__init__.py                |   140 +-
 superset/jinja_context.py                          |    21 +-
 superset/key_value/types.py                        |    44 +-
 superset/mcp_service/CLAUDE.md                     |     5 +-
 superset/mcp_service/README.md                     |    41 +
 superset/mcp_service/__init__.py                   |    10 +
 superset/mcp_service/app.py                        |    18 +-
 superset/mcp_service/auth.py                       |    13 +-
 superset/mcp_service/caching.py                    |     2 +-
 superset/mcp_service/catalog/schemas.py            |    12 +-
 superset/mcp_service/catalog/tool/get_catalog.py   |    46 +-
 superset/mcp_service/chart/chart_helpers.py        |   688 +-
 superset/mcp_service/chart/chart_utils.py          |  2417 +-
 superset/mcp_service/chart/compile.py              |   633 +-
 superset/mcp_service/chart/datasource_resolver.py  |   412 +
 superset/mcp_service/chart/plugin.py               |   276 +-
 superset/mcp_service/chart/plugins/__init__.py     |    18 +
 superset/mcp_service/chart/plugins/big_number.py   |   101 +-
 superset/mcp_service/chart/plugins/bubble.py       |     4 +-
 superset/mcp_service/chart/plugins/bullet.py       |   596 +
 superset/mcp_service/chart/plugins/gantt.py        |    33 +
 superset/mcp_service/chart/plugins/gauge.py        |    40 +-
 superset/mcp_service/chart/plugins/geographic.py   |   836 +
 superset/mcp_service/chart/plugins/histogram.py    |    11 +-
 .../mcp_service/chart/plugins/mixed_timeseries.py  |    99 +-
 superset/mcp_service/chart/plugins/pivot_table.py  |     4 +
 superset/mcp_service/chart/plugins/sunburst.py     |   288 +
 superset/mcp_service/chart/plugins/table.py        |    45 +
 superset/mcp_service/chart/plugins/treemap.py      |     3 +-
 superset/mcp_service/chart/plugins/waterfall.py    |    21 +-
 superset/mcp_service/chart/plugins/xy.py           |   240 +-
 superset/mcp_service/chart/preview_utils.py        |  1514 +-
 .../chart/prompts/create_chart_guided.py           |     4 +-
 superset/mcp_service/chart/query_result.py         |  1952 +-
 superset/mcp_service/chart/registry.py             |    18 +
 .../mcp_service/chart/resources/chart_configs.py   |   130 +-
 superset/mcp_service/chart/response_preflight.py   |   204 +
 superset/mcp_service/chart/schemas.py              |  3040 +-
 superset/mcp_service/chart/sunburst.py             |   436 +
 superset/mcp_service/chart/tool/generate_chart.py  |   384 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |   947 +-
 superset/mcp_service/chart/tool/get_chart_info.py  |    12 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   369 +-
 superset/mcp_service/chart/tool/get_chart_sql.py   |   195 +-
 .../chart/tool/get_chart_type_schema.py            |    82 +-
 superset/mcp_service/chart/tool/list_charts.py     |     4 +-
 superset/mcp_service/chart/tool/update_chart.py    |   949 +-
 .../mcp_service/chart/tool/update_chart_preview.py |   392 +-
 .../chart/validation/dataset_validator.py          |   467 +-
 superset/mcp_service/chart/validation/pipeline.py  |    73 +-
 .../validation/runtime/chart_type_suggester.py     |    13 +-
 superset/mcp_service/common/pagination_schemas.py  |     3 +-
 .../mcp_service/common/time_range_validation.py    |    81 +-
 superset/mcp_service/constants.py                  |     1 +
 superset/mcp_service/dashboard/layout_placement.py |    21 +-
 superset/mcp_service/dashboard/permalink.py        |     6 +-
 superset/mcp_service/dashboard/schemas.py          |   265 +-
 .../tool/add_chart_to_existing_dashboard.py        |    11 +
 .../dashboard/tool/apply_dashboard_filters.py      |   412 +-
 .../mcp_service/dashboard/tool/delete_dashboard.py |    66 +-
 .../dashboard/tool/duplicate_dashboard.py          |    30 +-
 .../dashboard/tool/get_dashboard_data.py           |    96 +-
 .../mcp_service/dashboard/tool/governance_utils.py |    15 +-
 .../tool/manage_dashboard_certification.py         |    10 +-
 .../dashboard/tool/manage_dashboard_markdown.py    |    15 +-
 .../dashboard/tool/manage_dashboard_owners.py      |    12 +-
 .../dashboard/tool/manage_dashboard_roles.py       |    32 +-
 .../dashboard/tool/manage_native_filters.py        |    82 +-
 .../dashboard/tool/remove_chart_from_dashboard.py  |    12 +
 .../dashboard/tool/restore_dashboard.py            |    61 +-
 .../mcp_service/dashboard/tool/update_dashboard.py |    10 +
 superset/mcp_service/dashboard_scope_sql.py        |    25 +-
 superset/mcp_service/database/schemas.py           |     8 +-
 superset/mcp_service/dataset/schemas.py            |    58 +-
 superset/mcp_service/dataset/tool/query_dataset.py |   149 +-
 .../dataset/tool/update_dataset_metric.py          |     2 +-
 superset/mcp_service/dataset_scope.py              |   146 +-
 .../explore/tool/generate_explore_link.py          |   158 +-
 superset/mcp_service/jwt_verifier.py               |    28 +-
 superset/mcp_service/mcp_config.py                 |    68 +-
 superset/mcp_service/middleware.py                 |   159 +-
 superset/mcp_service/report/schemas.py             |     4 +
 superset/mcp_service/semantic_layer/schemas.py     |     8 +-
 .../tool/get_compatible_dimensions.py              |    50 +-
 .../semantic_layer/tool/get_compatible_metrics.py  |    50 +-
 .../mcp_service/semantic_layer/tool/get_table.py   |   138 +-
 .../semantic_layer/tool/list_metrics.py            |    13 +-
 superset/mcp_service/server.py                     |   177 +-
 superset/mcp_service/simple_proxy.py               |     2 +-
 superset/mcp_service/tag/tool/get_tag_info.py      |     6 +-
 superset/mcp_service/tag/tool/list_tags.py         |     6 +-
 superset/mcp_service/utils/cache_utils.py          |    32 +-
 superset/mcp_service/utils/query_utils.py          |    18 +-
 superset/mcp_service/utils/response_size_utils.py  |     4 +
 superset/mcp_service/utils/response_utils.py       |   294 +-
 superset/mcp_service/utils/sanitization.py         |   114 +-
 superset/mcp_service/utils/schema_utils.py         |    19 +
 superset/mcp_service/utils/serialization.py        |    51 +-
 superset/mcp_service/utils/validation.py           |    89 +-
 ...141b8ada7731_tag_pivot_tables_with_restored_.py |   334 +
 ...ep_legacy_password_view_perms_from_all_roles.py |   120 +
 ...00_e4a7c2b9d1f3_add_run_as_and_report_config.py |   178 +
 ...79af013f48_add_semantic_layer_cache_version.py} |    31 +-
 superset/models/core.py                            |     5 +-
 superset/models/dashboard.py                       |   101 +-
 superset/models/helpers.py                         |   264 +-
 superset/models/slice.py                           |    96 +-
 superset/queries/api.py                            |    15 +-
 superset/queries/saved_queries/api.py              |     7 +-
 superset/reports/api.py                            |   196 +-
 superset/reports/filters.py                        |    37 +
 superset/reports/models.py                         |    45 +
 superset/reports/notifications/email.py            |    14 +-
 superset/reports/notifications/slack_mixin.py      |     4 +-
 superset/reports/schemas.py                        |   225 +-
 superset/reports/types.py                          |    20 +-
 superset/reports/utils.py                          |   183 +
 superset/result_set.py                             |     5 +
 superset/security/api.py                           |   214 +-
 superset/security/manager.py                       |   223 +-
 superset/security/password_change.py               |   110 +-
 superset/security/password_recovery.py             |   316 +
 superset/semantic_layers/access.py                 |    50 +
 superset/semantic_layers/api.py                    |   273 +-
 superset/semantic_layers/cache.py                  |   496 +
 superset/semantic_layers/cache_coordination.py     |   240 +
 superset/semantic_layers/cache_host.py             |   241 +
 superset/semantic_layers/cache_identity.py         |   336 +
 superset/semantic_layers/cache_policy.py           |   427 +
 superset/semantic_layers/cache_repository.py       |   463 +
 superset/semantic_layers/cache_transform.py        |   283 +
 superset/semantic_layers/cache_types.py            |   133 +
 superset/semantic_layers/completeness.py           |    44 +
 superset/semantic_layers/dimension_resolution.py   |   117 +
 superset/semantic_layers/exceptions.py             |   127 +
 superset/semantic_layers/execution.py              |   286 +
 superset/semantic_layers/labels.py                 |     7 +-
 superset/semantic_layers/mapper.py                 |   745 +-
 superset/semantic_layers/members.py                |    52 +
 superset/semantic_layers/models.py                 |   416 +-
 superset/semantic_layers/ordering.py               |    59 +
 superset/sql/execution/celery_task.py              |   541 +-
 superset/sql/execution/executor.py                 |   252 +-
 superset/sql/execution/serialization.py            |   130 +
 superset/sql/execution/utils.py                    |   260 +
 superset/sql/parse.py                              |    54 +-
 superset/sql_lab.py                                |   366 +-
 superset/sqllab/api.py                             |     4 +-
 superset/subjects/utils.py                         |    19 +-
 superset/superset_typing.py                        |    10 +-
 superset/tags/core.py                              |    98 +-
 superset/tags/models.py                            |   311 +-
 superset/tasks/api.py                              |    23 +-
 superset/tasks/async_queries.py                    |    49 +-
 superset/tasks/deletion_retention.py               |   397 +-
 .../exceptions.py => tasks/retention_cap.py}       |    29 +-
 superset/tasks/schemas.py                          |    12 +
 superset/tasks/version_history_retention.py        |   282 +-
 superset/themes/api.py                             |     7 +-
 superset/translations/ar/LC_MESSAGES/messages.po   |   732 +-
 superset/translations/ca/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/cs/LC_MESSAGES/messages.po   |   711 +-
 superset/translations/de/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/en/LC_MESSAGES/messages.po   |   682 +-
 superset/translations/es/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/fa/LC_MESSAGES/messages.po   |   696 +-
 superset/translations/fi/LC_MESSAGES/messages.po   |   696 +-
 superset/translations/fr/LC_MESSAGES/messages.po   |   704 +-
 superset/translations/it/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |   697 +-
 superset/translations/ko/LC_MESSAGES/messages.po   |   688 +-
 superset/translations/lv/LC_MESSAGES/messages.po   |   711 +-
 superset/translations/messages.pot                 |   673 +-
 superset/translations/mi/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/nl/LC_MESSAGES/messages.po   |   696 +-
 superset/translations/pl/LC_MESSAGES/messages.po   |   699 +-
 superset/translations/pt/LC_MESSAGES/messages.po   |   702 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |   696 +-
 superset/translations/ro/LC_MESSAGES/messages.po   |   714 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |   712 +-
 superset/translations/sk/LC_MESSAGES/messages.po   |   711 +-
 superset/translations/sl/LC_MESSAGES/messages.po   |   720 +-
 superset/translations/sr/LC_MESSAGES/messages.po   |   711 +-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |   711 +-
 superset/translations/ta/LC_MESSAGES/messages.po   |   702 +-
 superset/translations/th/LC_MESSAGES/messages.po   |   687 +-
 superset/translations/tr/LC_MESSAGES/messages.po   |   696 +-
 superset/translations/uk/LC_MESSAGES/messages.po   |   720 +-
 superset/translations/zh/LC_MESSAGES/messages.po   |   687 +-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |   687 +-
 superset/utils/cache_manager.py                    |    17 +
 superset/utils/core.py                             |    27 +-
 superset/utils/csv.py                              |    14 +-
 superset/utils/date_parser.py                      |    43 +-
 superset/utils/error_sanitization.py               |   147 +-
 superset/utils/excel.py                            |     7 +-
 superset/utils/filters.py                          |   111 +-
 superset/utils/geographic.py                       |   105 +
 superset/utils/geographic_regions.py               |   385 +
 superset/utils/geographic_world.py                 |   205 +
 superset/utils/network.py                          |    23 +-
 superset/utils/number_format.py                    |    94 +
 superset/utils/pandas_postprocessing/compare.py    |    14 +-
 .../utils/pandas_postprocessing/contribution.py    |    24 +-
 superset/utils/pandas_postprocessing/geography.py  |     8 +-
 superset/utils/pandas_postprocessing/histogram.py  |     8 +-
 superset/utils/pandas_postprocessing/rename.py     |    11 +-
 superset/utils/schema.py                           |    60 +
 superset/utils/screenshot_utils.py                 |    34 +-
 superset/utils/webdriver.py                        |     4 +-
 superset/versioning/api_helpers.py                 |    14 +-
 superset/versioning/baseline/listener.py           |     6 +-
 superset/versioning/changes/listener.py            |    21 +-
 superset/versioning/changes/shadow_queries.py      |     9 +-
 superset/versioning/diff.py                        |   124 +-
 superset/versioning/metrics.py                     |     6 +-
 superset/versioning/restore.py                     |   187 +-
 superset/versioning/savepoints.py                  |   149 +
 superset/versioning/unit_of_work.py                |   113 +-
 superset/views/api.py                              |     9 +-
 superset/views/archived_assets.py                  |    18 +-
 superset/views/auth.py                             |    22 +-
 superset/views/base.py                             |     7 +
 superset/views/core.py                             |     2 +-
 superset/views/dashboard/mixin.py                  |     1 +
 superset/views/datasource/views.py                 |   234 +-
 superset/views/error_handling.py                   |    11 +-
 superset/views/filters.py                          |     5 +-
 .../src/superset_e2e_semantic_stub/__init__.py     |   294 +
 .../semantic_stub/dist/manifest.json               |    10 +
 tests/integration_tests/charts/api_tests.py        |    10 +-
 .../charts/semantic_metadata_authz_tests.py        |   647 +
 .../charts/semantic_save_tests.py                  |    46 +
 tests/integration_tests/dashboards/api_tests.py    |   559 +-
 tests/integration_tests/dashboards/dao_tests.py    |   120 +-
 .../dashboards/version_restore_tests.py            |   358 +
 tests/integration_tests/datasets/api_tests.py      |    45 +
 tests/integration_tests/datasource/api_tests.py    |   273 +-
 .../deletion_retention/force_purge_tests.py        |    11 +-
 .../deletion_retention/purge_tests.py              |   210 +-
 tests/integration_tests/queries/api_tests.py       |    29 +-
 tests/integration_tests/reports/alert_tests.py     |    40 +-
 tests/integration_tests/reports/api_tests.py       |   342 +-
 tests/integration_tests/reports/commands_tests.py  |    61 +-
 tests/integration_tests/reports/config_tests.py    |   104 +
 .../security/row_level_security_tests.py           |    69 +
 tests/integration_tests/security_tests.py          |   121 +-
 .../semantic_layers/api_flag_test.py               |   423 +
 .../semantic_layers/cache_coordination_tests.py    |   200 +
 tests/integration_tests/sqllab_tests.py            |    29 +-
 .../superset_test_config_semantic.py               |    26 +-
 tests/integration_tests/tagging_tests.py           |   294 -
 tests/integration_tests/tags/dao_tests.py          |    94 +-
 tests/integration_tests/tags/race_tests.py         |    94 +
 tests/integration_tests/tasks/api_tests.py         |   206 +-
 .../versioning/retention_prune_tests.py            |    65 +
 .../mypy_fixtures/__init__.py                      |    11 +-
 tests/mypy_fixtures/uuid_mixin_nullable.py         |    44 +
 .../db_engine_specs/_bigquery_container.py         |    79 +
 .../db_engine_specs/test_bigquery.py               |   183 +
 tests/testcontainers/db_engine_specs/test_mysql.py |   113 +
 .../db_engine_specs/test_oceanbase.py              |    94 +-
 .../db_engine_specs/test_postgres.py               |   690 +
 .../charts/commands/data/test_get_data_command.py  |    63 +-
 .../charts/commands/importers/v1/import_test.py    |    46 +
 .../charts/data/streaming_filename_test.py         |    18 +-
 .../charts/data/test_time_range_validation.py      |    48 +
 .../charts/semantic_view_chart_filter_test.py      |    14 +-
 tests/unit_tests/charts/test_chart_data_api.py     |    87 +-
 tests/unit_tests/charts/test_client_processing.py  |   822 +-
 tests/unit_tests/charts/test_filters.py            |   110 +
 tests/unit_tests/charts/test_schemas.py            |    51 +-
 tests/unit_tests/commands/chart/create_test.py     |   254 +-
 tests/unit_tests/commands/chart/export_test.py     |   576 +
 .../commands/chart/test_warm_up_cache.py           |   135 +
 tests/unit_tests/commands/chart/update_test.py     |   268 +-
 tests/unit_tests/commands/dashboard/export_test.py |     8 +-
 .../commands/dashboard/permalink_create_test.py    |     6 +-
 .../dashboard/restore_semantic_filters_test.py     |   363 +
 .../unit_tests/commands/dashboard/restore_test.py  |     3 +
 tests/unit_tests/commands/dataset/test_create.py   |   268 +-
 .../unit_tests/commands/dataset/test_duplicate.py  |   136 +-
 tests/unit_tests/commands/dataset/update_test.py   |   475 +-
 .../deletion_retention/test_purge_chart_detach.py  |   301 +
 .../deletion_retention/test_purge_policy.py        |     6 +-
 .../commands/importers/v1/examples_test.py         |    51 +
 .../unit_tests/commands/importers/v1/utils_test.py |   233 +
 tests/unit_tests/commands/report/alert_test.py     |    21 +-
 tests/unit_tests/commands/report/base_test.py      |   239 +
 .../unit_tests/commands/report/conftest.py         |     8 +-
 tests/unit_tests/commands/report/create_test.py    |     1 +
 tests/unit_tests/commands/report/execute_test.py   |   275 +-
 tests/unit_tests/commands/report/executor_test.py  |   621 +
 tests/unit_tests/commands/report/run_as_test.py    |  1340 +
 .../commands/report/semantic_view_report_test.py   |   232 +
 .../commands/report/update_config_test.py          |   223 +
 tests/unit_tests/commands/report/update_test.py    |    45 +
 tests/unit_tests/commands/security/reset_test.py   |    62 +
 .../commands/semantic_layer/create_test.py         |   193 +-
 .../commands/semantic_layer/delete_test.py         |   634 +-
 .../commands/semantic_layer/update_test.py         |    12 +-
 .../semantic_layer/view_data_access_test.py        |   148 +
 tests/unit_tests/commands/sql_lab/test_estimate.py |    27 +
 tests/unit_tests/commands/sql_lab/test_execute.py  |    92 +
 .../commands/streaming_export}/__init__.py         |     0
 .../commands/streaming_export/base_test.py         |    51 +
 .../common/test_form_data_query_context.py         |   296 +-
 tests/unit_tests/common/test_query_actions.py      |    31 +-
 .../unit_tests/common/test_query_cache_manager.py  |    18 +
 .../common/test_query_context_factory.py           |    35 +
 .../common/test_query_context_processor.py         |   341 +-
 .../common/test_query_context_processor_timing.py  |    79 +
 tests/unit_tests/common/test_time_range_utils.py   |    27 +
 tests/unit_tests/config_test.py                    |    10 +-
 tests/unit_tests/conftest.py                       |    70 +-
 tests/unit_tests/connectors/sqla/models_test.py    |    87 +-
 tests/unit_tests/connectors/sqla/utils_test.py     |    64 +
 .../unit_tests/coordination/test_cache_backend.py  |   189 +
 tests/unit_tests/dao/dashboard_test.py             |  1132 +-
 tests/unit_tests/dao/key_value_test.py             |    43 +
 tests/unit_tests/dao/queries_test.py               |    30 +-
 tests/unit_tests/dao/query_stop_isolation_test.py  |   126 +
 .../dao/test_copy_dashboard_legacy_ids.py          |   282 +
 tests/unit_tests/dao/test_query_stop_race.py       |    73 +-
 tests/unit_tests/daos/test_chart_dao.py            |    59 +
 tests/unit_tests/daos/test_query_dao.py            |   619 +
 tests/unit_tests/dashboards/datasets_test.py       |    88 +
 .../dashboards/semantic_view_access_test.py        |   327 +-
 .../dashboards/test_excel_export_sync_budget.py    |    47 +
 tests/unit_tests/databases/api_test.py             |    47 +-
 tests/unit_tests/dataframe_test.py                 |    86 +
 .../datasets/commands/importers/v1/import_test.py  |   608 +-
 tests/unit_tests/datasets/dao/dao_tests.py         |    65 +
 tests/unit_tests/datasets/schema_tests.py          |   132 +
 tests/unit_tests/datasource/test_compatible_api.py |    98 +
 tests/unit_tests/db_engine_specs/test_aws_iam.py   |    61 +
 tests/unit_tests/db_engine_specs/test_base.py      |    11 +
 tests/unit_tests/db_engine_specs/test_bigquery.py  |   311 +-
 .../unit_tests/db_engine_specs/test_databricks.py  |   180 +-
 .../test_extended_aggregations_unverified.py       |     8 +-
 .../db_engine_specs/test_impala_pending.py         |   401 +
 tests/unit_tests/db_engine_specs/test_lib.py       |    31 +-
 tests/unit_tests/db_engine_specs/test_oceanbase.py |   228 +
 tests/unit_tests/db_engine_specs/test_snowflake.py |    25 +
 tests/unit_tests/db_engine_specs/test_trino.py     |  1104 +-
 .../distributed_lock/distributed_lock_tests.py     |     6 +-
 tests/unit_tests/exceptions_test.py                |    46 +
 tests/unit_tests/explore/utils_test.py             |     2 +
 tests/unit_tests/importexport/api_test.py          |   111 +-
 tests/unit_tests/initialization_test.py            |    82 +-
 tests/unit_tests/jinja_context_test.py             |    74 +
 .../mcp_service/catalog/tool/test_get_catalog.py   |   238 +-
 .../mcp_service/chart/query_result_fixtures.py     |   165 +
 ...test_axis_offset_and_spatial_query_contracts.py |   474 +
 .../mcp_service/chart/test_bubble_chart.py         |    10 +-
 .../mcp_service/chart/test_bullet_chart.py         |  5316 ++++
 .../mcp_service/chart/test_bullet_tool_paths.py    |  2347 ++
 .../mcp_service/chart/test_chart_examples.py       |    48 +
 .../mcp_service/chart/test_chart_helpers.py        |   911 +-
 .../chart/test_chart_plugin_contract.py            |   355 +-
 .../mcp_service/chart/test_chart_schemas.py        |   265 +
 .../mcp_service/chart/test_chart_target_schemas.py |   213 +
 .../mcp_service/chart/test_chart_utils.py          |   927 +
 tests/unit_tests/mcp_service/chart/test_compile.py |  1001 +-
 .../chart/test_dashboard_time_binding.py           |    90 +
 .../mcp_service/chart/test_datasource_resolver.py  |   622 +
 .../mcp_service/chart/test_gantt_chart.py          |    70 +-
 .../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 +
 ..._metric_aggregation_and_comparison_contracts.py |   379 +
 .../chart/test_native_chart_regressions.py         |   375 +
 ...ative_form_data_and_dataset_rebind_contracts.py |  1328 +
 .../mcp_service/chart/test_new_chart_types.py      |    30 +-
 .../mcp_service/chart/test_preview_utils.py        |   337 +-
 .../mcp_service/chart/test_query_result.py         |  2027 +-
 .../unit_tests/mcp_service/chart/test_registry.py  |    33 +-
 .../mcp_service/chart/test_response_preflight.py   |   488 +
 .../test_review_query_and_preview_regressions.py   |   533 +
 .../mcp_service/chart/test_sunburst_chart.py       |  5584 ++++
 .../chart/test_time_grain_generic_axes.py          |   171 +
 .../mcp_service/chart/test_treemap_completeness.py |    88 +-
 .../mcp_service/chart/tool/test_generate_chart.py  |    95 +
 .../tool/test_generate_chart_semantic_view.py      |   412 +
 .../mcp_service/chart/tool/test_get_chart_data.py  |  3387 +-
 .../chart/tool/test_get_chart_preview.py           |   877 +-
 .../mcp_service/chart/tool/test_get_chart_sql.py   |   338 +-
 .../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    |  1346 +-
 .../chart/tool/test_update_chart_preview.py        |   395 +-
 .../chart/tool/test_update_chart_rebind.py         |  1006 +
 .../validation/test_column_name_normalization.py   |    21 +
 .../chart/validation/test_dataset_validator.py     |   421 +-
 .../common/test_list_scope_validation.py           |   105 +
 .../common/test_time_range_validation.py           |    82 +-
 .../dashboard/test_dashboard_schemas.py            |    39 +
 .../mcp_service/dashboard/test_permalink.py        |    40 +-
 .../dashboard/tool/test_apply_dashboard_filters.py |  1364 +-
 .../dashboard/tool/test_dashboard_generation.py    |     1 +
 .../dashboard/tool/test_delete_dashboard.py        |     1 +
 .../dashboard/tool/test_duplicate_dashboard.py     |   145 +-
 .../dashboard/tool/test_get_dashboard_data.py      |   507 +
 .../dashboard/tool/test_get_dashboard_datasets.py  |     2 +
 .../dashboard/tool/test_get_dashboard_layout.py    |     4 +-
 .../dashboard/tool/test_list_dashboards.py         |    85 +
 .../dashboard/tool/test_manage_dashboard_owners.py |     1 +
 .../dashboard/tool/test_manage_dashboard_roles.py  |     2 +
 .../dashboard/tool/test_manage_native_filters.py   |     1 +
 .../tool/test_managed_dashboard_refusal.py         |   353 +
 .../dashboard/tool/test_restore_dashboard.py       |     4 +
 .../mcp_service/dataset/tool/test_query_dataset.py |   970 +-
 .../explore/tool/test_generate_explore_link.py     |   476 +-
 .../test_generate_explore_link_semantic_view.py    |   245 +
 .../mcp_service/native_tool_inventory.json         |  1289 +
 .../mcp_service/semantic_layer/test_flag_off.py    |   203 +
 .../test_compatibility_selection_validation.py     |   144 +
 .../tool/test_get_compatible_dimensions.py         |    12 +
 .../tool/test_get_compatible_metrics.py            |    11 +
 .../semantic_layer/tool/test_get_table.py          |  1081 +-
 .../semantic_layer/tool/test_list_metrics.py       |    32 +-
 .../system/resources/test_schema_discovery.py      |     2 +-
 .../mcp_service/system/tool/test_get_schema.py     |    11 +
 .../mcp_service/test_browser_hello_middleware.py   |   126 +
 .../mcp_service/test_chart_tool_inventory.py       |    44 +-
 .../unit_tests/mcp_service/test_dashboard_scope.py |    11 +-
 .../mcp_service/test_dashboard_scope_sql.py        |    75 +
 tests/unit_tests/mcp_service/test_dataset_scope.py |   247 +-
 tests/unit_tests/mcp_service/test_mcp_config.py    |     9 +
 tests/unit_tests/mcp_service/test_mcp_server.py    |    97 +
 .../mcp_service/test_mcp_tool_registration.py      |    23 +
 tests/unit_tests/mcp_service/test_middleware.py    |   233 +-
 .../mcp_service/test_middleware_logging.py         |   140 +-
 .../mcp_service/test_native_tool_surface.py        |  1146 +
 .../test_sanitization_warning_inputs.py            |   450 +-
 tests/unit_tests/mcp_service/test_simple_proxy.py  |    47 +
 .../test_tool_description_constraints.py           |    44 +-
 .../unit_tests/mcp_service/test_tool_inventory.py  |    41 +-
 .../mcp_service/test_tool_search_transform.py      |   237 +-
 .../mcp_service/test_validation_contract.py        |    94 +-
 .../mcp_service/test_worker_metadata_pool.py       |     6 +-
 .../mcp_service/utils/test_cache_utils.py          |    32 +-
 .../mcp_service/utils/test_response_utils.py       |   246 +
 .../mcp_service/utils/test_sanitization.py         |   163 +
 .../mcp_service/utils/test_serialization.py        |    68 +
 .../test_add_run_as_and_report_config.py           |   274 +
 .../test_sweep_legacy_password_view_perms.py       |   190 +
 ...t_tag_pivot_tables_with_restored_aggregation.py |   461 +
 tests/unit_tests/models/dashboard_test.py          |   191 +
 tests/unit_tests/models/helpers_test.py            |   967 +-
 tests/unit_tests/models/slice_test.py              |   153 +
 tests/unit_tests/models/template_params_test.py    |    68 +
 .../unit_tests/models/test_certification_mixin.py  |    76 +
 tests/unit_tests/models/test_multivalue_filter.py  |   138 +
 .../pandas_postprocessing/test_compare.py          |   109 +
 .../pandas_postprocessing/test_geography.py        |    81 +
 .../pandas_postprocessing/test_histogram.py        |    32 +-
 .../pandas_postprocessing/test_rename.py           |    96 +
 .../unit_tests/pandas_postprocessing/test_utils.py |    18 +-
 tests/unit_tests/queries/query_object_test.py      |    29 +
 tests/unit_tests/reports/api_test.py               |    33 +
 tests/unit_tests/reports/config_api_test.py        |   135 +
 tests/unit_tests/reports/config_dao_test.py        |   359 +
 tests/unit_tests/reports/filters_test.py           |    53 +
 .../reports/notifications/email_tests.py           |     9 +-
 .../reports/notifications/slack_tests.py           |    20 +-
 tests/unit_tests/reports/schemas_test.py           |    86 +
 tests/unit_tests/reports/utils_test.py             |   222 +
 tests/unit_tests/scripts/change_detector_test.py   |    29 +
 .../scripts/translations/babel_update_test.py      |   105 +-
 .../scripts/translations/backfill_po_test.py       |   226 +-
 .../scripts/translations/check_pot_drift_test.py   |   215 +-
 tests/unit_tests/security/manager_test.py          |   792 +-
 .../unit_tests/security/semantic_guest_rls_test.py |    18 +-
 tests/unit_tests/security/test_password_change.py  |    63 +
 .../unit_tests/security/test_password_recovery.py  |  1073 +
 .../security/test_password_recovery_rate_limit.py  |    71 +
 tests/unit_tests/semantic_layers/api_test.py       |   540 +-
 .../semantic_layers/cache_coordination_test.py     |   525 +
 .../unit_tests/semantic_layers/cache_host_test.py  |   375 +
 .../semantic_layers/cache_identity_test.py         |   285 +
 .../semantic_layers/cache_integration_test.py      |   998 +
 .../semantic_layers/cache_or_filters_test.py       |   220 +
 .../semantic_layers/cache_policy_test.py           |   964 +
 .../semantic_layers/cache_repository_test.py       |   929 +
 tests/unit_tests/semantic_layers/cache_test.py     |   956 +
 .../semantic_layers/cache_transform_test.py        |   229 +
 tests/unit_tests/semantic_layers/conftest.py       |   263 +
 .../semantic_layers/default_order_test.py          |   376 +
 .../semantic_layers/dimension_resolution_test.py   |   161 +
 .../semantic_layers/e2e_stub_extension_test.py     |   246 +
 .../semantic_layers/execution_context_test.py      |  1141 +
 .../semantic_layers/grain_validation_test.py       |   129 +
 .../semantic_layers/import_export_test.py          |    28 +-
 .../semantic_layers/integer_precision_test.py      |   372 +
 tests/unit_tests/semantic_layers/labels_test.py    |    13 +
 .../semantic_layers/layer_list_scope_test.py       |   215 +
 tests/unit_tests/semantic_layers/layer_test.py     |    91 +
 tests/unit_tests/semantic_layers/mapper_test.py    |  1485 +-
 tests/unit_tests/semantic_layers/members_test.py   |    83 +
 .../semantic_layers/metadata_contract_test.py      |   648 +-
 .../semantic_layers/metric_filter_test.py          |   459 +
 tests/unit_tests/semantic_layers/models_test.py    |   737 +-
 .../semantic_layers/null_filters_test.py           |   339 +
 .../semantic_layers/query_errors_test.py           |   846 +
 .../semantic_layers/result_completeness_test.py    |    86 +
 .../semantic_layers/simple_cache_clear_test.py     |   715 +
 tests/unit_tests/semantic_layers/test_access.py    |    42 +
 .../semantic_layers/test_runtime_flag.py           |   216 +
 .../semantic_layers/values_endpoint_test.py        |   649 +-
 .../soft_delete/test_restore_purge_hoist.py        |    13 +
 tests/unit_tests/sql/execution/conftest.py         |     6 +-
 .../unit_tests/sql/execution/test_async_results.py |  1500 +
 tests/unit_tests/sql/execution/test_celery_task.py |  2395 +-
 tests/unit_tests/sql/execution/test_executor.py    |    42 +-
 tests/unit_tests/sql/execution/test_utils.py       |   207 +
 tests/unit_tests/sql/parse_tests.py                |   127 +
 tests/unit_tests/sql_lab_test.py                   |  1714 +
 tests/unit_tests/sqllab/api_test.py                |    24 +-
 .../subjects/test_creator_group_call_sites.py      |    22 +-
 tests/unit_tests/tags/models_test.py               |     6 +-
 tests/unit_tests/tags/race_test.py                 |    84 +
 tests/unit_tests/tasks/test_async_queries.py       |   205 +-
 tests/unit_tests/tasks/test_deletion_retention.py  |   796 +-
 tests/unit_tests/tasks/test_schemas.py             |    62 +
 .../tasks/test_version_history_retention.py        |   659 +-
 tests/unit_tests/test_app_reinitialization.py      |   114 +
 tests/unit_tests/test_sqllab_error_stacktrace.py   |    17 +-
 tests/unit_tests/themes/api_test.py                |    33 +
 tests/unit_tests/utils/core_override_user_test.py  |    71 +
 tests/unit_tests/utils/date_parser_tests.py        |    47 +
 tests/unit_tests/utils/excel_tests.py              |    13 +
 tests/unit_tests/utils/filters_test.py             |   260 +-
 .../unit_tests/utils/geographic_world_test.py      |    23 +-
 tests/unit_tests/utils/number_format_test.py       |    31 +
 tests/unit_tests/utils/test_cache_manager.py       |    33 +
 tests/unit_tests/utils/test_core.py                |    20 +
 tests/unit_tests/utils/test_error_sanitization.py  |   226 +-
 tests/unit_tests/utils/test_network.py             |    29 +
 tests/unit_tests/utils/test_schema.py              |   138 +
 tests/unit_tests/utils/test_screenshot_utils.py    |   134 +
 .../versioning/test_dataset_child_extra.py         |   148 +
 .../versioning/test_diff_save_defaults.py          |   264 +
 tests/unit_tests/versioning/test_listener.py       |    34 +-
 tests/unit_tests/versioning/test_restore.py        |    54 +
 .../versioning/test_restore_datasource_race.py     |   189 +
 .../versioning/test_restore_missing_datasource.py  |   305 +
 .../unit_tests/versioning/test_runtime_capture.py  |   380 +
 tests/unit_tests/versioning/test_shadow_queries.py |    79 +
 tests/unit_tests/views/datasource/views_test.py    |   995 +-
 tests/unit_tests/views/test_archived_assets.py     |    86 +
 tests/unit_tests/views/test_base.py                |    72 +
 tests/unit_tests/views/test_error_handling.py      |    38 +
 1337 files changed, 218065 insertions(+), 34296 deletions(-)
 create mode 100755 .github/workflows/scripts/check-code-scanning-available.sh
 create mode 100755 
.github/workflows/scripts/check-code-scanning-available.test.sh
 create mode 100644 docs/admin_docs/security/oauth.mdx
 create mode 100644 docs/developer_docs/contributing/translation-guide.md
 create mode 100644 
docs/developer_docs/extensions/extension-points/semantic-layers.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/developer_docs/semantic-query-errors.md
 create mode 100644 docs/developer_docs/semantic-result-completeness.md
 create mode 100644 docs/docs/using-superset/semantic-layer-connections.mdx
 create mode 100644 docs/sip/pivot-table-aggregation-parity.md
 create mode 100644 docs/src/components/databases/DatabaseLogo.tsx
 create mode 100644 docs/static/img/databases/clickhouse-dark.svg
 create mode 100644 docs/static/img/databases/clickhouse-mark-dark.svg
 create mode 100644 docs/static/img/databases/clickhouse-mark.svg
 create mode 100644 docs/static/img/databases/clickhouse.svg
 create mode 100644 docs/static/img/logos/douroeci.png
 create mode 100644 docs/static/img/logos/plum.svg
 delete mode 100755 scripts/eslint.sh
 create mode 100644 superset-core/src/superset_core/semantic_layers/context.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/errors.py
 delete mode 100644 superset-core/src/superset_core/semantic_layers/metadata.py
 create mode 100644 superset-core/src/superset_core/semantic_layers/testing.py
 create mode 100644 superset-core/tests/semantic_layers/example_provider.py
 create mode 100644 superset-core/tests/semantic_layers/test_errors.py
 create mode 100644 
superset-core/tests/semantic_layers/test_execution_context.py
 create mode 100644 superset-core/tests/semantic_layers/test_registration.py
 create mode 100644 superset-core/tests/semantic_layers/test_view.py
 copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts => 
.storybook/playwright.storybook-ci.config.ts} (64%)
 create mode 100644 superset-frontend/.storybook/setup-stories.test.ts
 create mode 100644 superset-frontend/.storybook/setup-stories.ts
 copy 
superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/types.ts
 => .storybook/stories.spec.ts} (77%)
 delete mode 100644 superset-frontend/.storybook/test-runner.ts
 rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings/index.ts => 
custom-lint-rules/i18n-strings/index.js} (69%)
 rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings => 
custom-lint-rules/i18n-strings}/no-eager-t-in-config.test.ts (92%)
 rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings => 
custom-lint-rules/i18n-strings}/no-template-vars.test.ts (88%)
 rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings => 
custom-lint-rules/i18n-strings}/package.json (64%)
 rename superset-frontend/{eslint-rules/eslint-plugin-icons/index.ts => 
custom-lint-rules/icons/index.js} (66%)
 rename superset-frontend/{eslint-rules/eslint-plugin-icons => 
custom-lint-rules/icons}/no-fontawesome.test.ts (88%)
 rename superset-frontend/{eslint-rules/eslint-plugin-icons => 
custom-lint-rules/icons}/package.json (66%)
 rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/colors.ts => 
custom-lint-rules/theme-colors/colors.js} (97%)
 rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/index.ts => 
custom-lint-rules/theme-colors/index.js} (67%)
 create mode 100644 
superset-frontend/custom-lint-rules/theme-colors/no-literal-colors.test.ts
 rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors => 
custom-lint-rules/theme-colors}/package.json (54%)
 delete mode 100644 superset-frontend/eslint.config.minimal.js
 create mode 100644 superset-frontend/oxlint.custom-lint-rules.mts
 create mode 100644 
superset-frontend/packages/superset-core/src/theme/GlobalStyles.test.tsx
 create mode 100644 
superset-frontend/packages/superset-ui-chart-controls/src/utils/isServerPaginationUnsupported.ts
 create mode 100644 
superset-frontend/playwright/helpers/api/semanticLayer.test.ts
 create mode 100644 superset-frontend/playwright/helpers/api/semanticLayer.ts
 create mode 100644 
superset-frontend/playwright/tests/dashboard/featured-charts-render.spec.ts
 create mode 100644 
superset-frontend/playwright/tests/explore/explore-download-image.spec.ts
 create mode 100644 
superset-frontend/playwright/tests/semantic-view/semantic-view-dashboard.spec.ts
 delete mode 100644 
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/useTableTheme.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-cartodiagram/test/components/OlChartMap.test.tsx
 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/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx
 => plugins/plugin-chart-country-map/test/controlPanel.test.ts} (52%)
 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-country-map/test/south_africa.geojson.test.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/src/Bubble/crossFilter.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/test/Bubble/EchartsBubble.test.tsx
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/test/Bubble/crossFilter.test.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/test/Graph/categoryIdentity.test.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/resultAggregation.ts
 create mode 100644 
superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/Styles.test.tsx
 create mode 100644 
superset-frontend/plugins/plugin-chart-world-map/src/worldGeometry.ts
 copy 
superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx
 => plugins/plugin-chart-world-map/test/controlPanel.test.ts} (52%)
 create mode 100644 
superset-frontend/plugins/preset-chart-deckgl/src/Multi/transformProps.test.ts
 copy superset-frontend/{src/utils/cacheWrapper.ts => 
plugins/preset-chart-deckgl/src/Multi/transformProps.ts} (62%)
 create mode 100644 
superset-frontend/plugins/preset-chart-deckgl/src/factory.test.tsx
 create mode 100644 
superset-frontend/plugins/preset-chart-deckgl/src/layers/Contour/Contour.test.ts
 copy 
superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx
 => plugins/preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (52%)
 copy superset-frontend/plugins/{plugin-chart-cartodiagram/types/external.d.ts 
=> preset-chart-deckgl/types/global.d.ts} (74%)
 create mode 100644 
superset-frontend/spec/fixtures/mockSemanticDashboardDatasources.ts
 create mode 100644 superset-frontend/spec/helpers/geographicControlPanel.ts
 create mode 100644 superset-frontend/spec/helpers/runStopButton.ts
 create mode 100644 
superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.test.ts
 create mode 100644 
superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.ts
 create mode 100644 
superset-frontend/src/components/Chart/ChartRenderer.refresh.test.tsx
 create mode 100644 
superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorNormalizeColumnsWarning.test.tsx
 create mode 100644 superset-frontend/src/dashboard/actions/datasources.test.ts
 create mode 100644 
superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.manyCharts.test.tsx
 create mode 100644 
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.requestLifetime.test.tsx
 create mode 100644 
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/GroupByColumnAllowlist.test.tsx
 create mode 100644 
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.semanticDefault.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/ChartPills.behavior.test.tsx
 create mode 100644 superset-frontend/src/explore/components/ChartPills.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/LegacyAggregationAlert.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/LegacyAggregationAlert.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/ContourControl/ContourControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl-unused-fields.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/CustomListItem/index.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/MapViewControl/ExtentTag.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/MapViewControl/MapViewControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/MapViewControl/MapViewPopoverContent.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/SemanticRequestView.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/SemanticRequestView.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/SliderControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/SwitchControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/TimeRangeControl/index.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/VerticalRadioControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/XAxisSortControl.test.tsx
 create mode 100644 
superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigsChart.test.tsx
 create mode 100644 
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.test.ts
 create mode 100644 
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.ts
 create mode 100644 
superset-frontend/src/features/alerts/ReportConfigurationModal.test.tsx
 create mode 100644 
superset-frontend/src/features/alerts/ReportConfigurationModal.tsx
 create mode 100644 
superset-frontend/src/features/alerts/hooks/useReportConfiguration.ts
 create mode 100644 
superset-frontend/src/features/semanticViews/creationResult.ts
 create mode 100644 
superset-frontend/src/filters/components/Range/RangeChart.test.tsx
 create mode 100644 
superset-frontend/src/filters/components/Range/buildQuery.test.ts
 copy superset-frontend/src/{utils/getChartRequiredFieldsMissingMessage.ts => 
filters/components/Range/isSemanticRange.ts} (64%)
 create mode 100644 
superset-frontend/src/hooks/apiResources/datasets.cache.test.ts
 create mode 100644 superset-frontend/src/hooks/useRunStopButton.ts
 create mode 100644 superset-frontend/src/middleware/asyncQueryError.ts
 create mode 100644 
superset-frontend/src/pages/ForgotPassword/ForgotPassword.test.tsx
 create mode 100644 superset-frontend/src/pages/ForgotPassword/index.tsx
 copy 
superset-frontend/{packages/superset-ui-core/src/components/Typography/index.tsx
 => src/pages/Login/styles.ts} (57%)
 create mode 100644 
superset-frontend/src/pages/ResetPassword/ResetPassword.test.tsx
 create mode 100644 superset-frontend/src/pages/ResetPassword/index.tsx
 create mode 100644 superset-frontend/src/utils/lazyWithRetry.test.tsx
 create mode 100644 superset-frontend/src/utils/lazyWithRetry.ts
 create mode 100644 superset/commands/report/update_config.py
 create mode 100644 superset/commands/security/password_recovery.py
 delete mode 100644 superset/common/tags.py
 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
 create mode 100644 superset/mcp_service/chart/plugins/sunburst.py
 create mode 100644 superset/mcp_service/chart/response_preflight.py
 create mode 100644 superset/mcp_service/chart/sunburst.py
 create mode 100644 
superset/migrations/versions/2026-09-25_00-00_141b8ada7731_tag_pivot_tables_with_restored_.py
 create mode 100644 
superset/migrations/versions/2026-09-30_00-00_d623a0cb6bb0_sweep_legacy_password_view_perms_from_all_roles.py
 create mode 100644 
superset/migrations/versions/2026-10-05_12-00_e4a7c2b9d1f3_add_run_as_and_report_config.py
 copy superset/{commands/security/exceptions.py => 
migrations/versions/2026-10-08_00-00_c179af013f48_add_semantic_layer_cache_version.py}
 (55%)
 create mode 100644 superset/reports/utils.py
 create mode 100644 superset/security/password_recovery.py
 create mode 100644 superset/semantic_layers/access.py
 create mode 100644 superset/semantic_layers/cache.py
 create mode 100644 superset/semantic_layers/cache_coordination.py
 create mode 100644 superset/semantic_layers/cache_host.py
 create mode 100644 superset/semantic_layers/cache_identity.py
 create mode 100644 superset/semantic_layers/cache_policy.py
 create mode 100644 superset/semantic_layers/cache_repository.py
 create mode 100644 superset/semantic_layers/cache_transform.py
 create mode 100644 superset/semantic_layers/cache_types.py
 create mode 100644 superset/semantic_layers/completeness.py
 create mode 100644 superset/semantic_layers/dimension_resolution.py
 create mode 100644 superset/semantic_layers/exceptions.py
 create mode 100644 superset/semantic_layers/execution.py
 create mode 100644 superset/semantic_layers/members.py
 create mode 100644 superset/semantic_layers/ordering.py
 create mode 100644 superset/sql/execution/serialization.py
 create mode 100644 superset/sql/execution/utils.py
 copy superset/{commands/security/exceptions.py => tasks/retention_cap.py} (56%)
 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 superset/versioning/savepoints.py
 create mode 100644 
tests/e2e_extensions/semantic_stub/dist/backend/src/superset_e2e_semantic_stub/__init__.py
 create mode 100644 tests/e2e_extensions/semantic_stub/dist/manifest.json
 create mode 100644 
tests/integration_tests/charts/semantic_metadata_authz_tests.py
 create mode 100644 tests/integration_tests/reports/config_tests.py
 create mode 100644 tests/integration_tests/semantic_layers/api_flag_test.py
 create mode 100644 
tests/integration_tests/semantic_layers/cache_coordination_tests.py
 copy superset/mcp_service/utils/query_utils.py => 
tests/integration_tests/superset_test_config_semantic.py (50%)
 delete mode 100644 tests/integration_tests/tagging_tests.py
 create mode 100644 tests/integration_tests/tags/race_tests.py
 copy RELEASING/requirements.txt => tests/mypy_fixtures/__init__.py (73%)
 create mode 100644 tests/mypy_fixtures/uuid_mixin_nullable.py
 create mode 100644 tests/testcontainers/db_engine_specs/_bigquery_container.py
 create mode 100644 tests/testcontainers/db_engine_specs/test_bigquery.py
 create mode 100644 tests/unit_tests/charts/data/test_time_range_validation.py
 create mode 100644 tests/unit_tests/commands/chart/export_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/commands/deletion_retention/test_purge_chart_detach.py
 copy RELEASING/requirements.txt => 
tests/unit_tests/commands/report/conftest.py (82%)
 create mode 100644 tests/unit_tests/commands/report/executor_test.py
 create mode 100644 tests/unit_tests/commands/report/run_as_test.py
 create mode 100644 
tests/unit_tests/commands/report/semantic_view_report_test.py
 create mode 100644 tests/unit_tests/commands/report/update_config_test.py
 create mode 100644 tests/unit_tests/commands/security/reset_test.py
 create mode 100644 
tests/unit_tests/commands/semantic_layer/view_data_access_test.py
 copy {scripts => tests/unit_tests/commands/streaming_export}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/streaming_export/base_test.py
 create mode 100644 tests/unit_tests/dao/query_stop_isolation_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/daos/test_query_dao.py
 create mode 100644 tests/unit_tests/datasource/test_compatible_api.py
 create mode 100644 tests/unit_tests/db_engine_specs/test_impala_pending.py
 create mode 100644 tests/unit_tests/exceptions_test.py
 create mode 100644 tests/unit_tests/mcp_service/chart/query_result_fixtures.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_axis_offset_and_spatial_query_contracts.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_metric_aggregation_and_comparison_contracts.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_native_chart_regressions.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_native_form_data_and_dataset_rebind_contracts.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_response_preflight.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_review_query_and_preview_regressions.py
 create mode 100644 tests/unit_tests/mcp_service/chart/test_sunburst_chart.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/common/test_list_scope_validation.py
 create mode 100644 
tests/unit_tests/mcp_service/dashboard/tool/test_list_dashboards.py
 create mode 100644 
tests/unit_tests/mcp_service/dashboard/tool/test_managed_dashboard_refusal.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/semantic_layer/tool/test_compatibility_selection_validation.py
 create mode 100644 
tests/unit_tests/mcp_service/test_browser_hello_middleware.py
 create mode 100644 tests/unit_tests/mcp_service/test_native_tool_surface.py
 create mode 100644 tests/unit_tests/mcp_service/test_simple_proxy.py
 create mode 100644 
tests/unit_tests/migrations/test_add_run_as_and_report_config.py
 create mode 100644 
tests/unit_tests/migrations/test_sweep_legacy_password_view_perms.py
 create mode 100644 
tests/unit_tests/migrations/test_tag_pivot_tables_with_restored_aggregation.py
 create mode 100644 tests/unit_tests/models/template_params_test.py
 create mode 100644 tests/unit_tests/models/test_certification_mixin.py
 create mode 100644 tests/unit_tests/reports/config_api_test.py
 create mode 100644 tests/unit_tests/reports/config_dao_test.py
 create mode 100644 tests/unit_tests/reports/utils_test.py
 create mode 100644 tests/unit_tests/security/test_password_recovery.py
 create mode 100644 
tests/unit_tests/security/test_password_recovery_rate_limit.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_coordination_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_host_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_identity_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_integration_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_or_filters_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_policy_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_repository_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_test.py
 create mode 100644 tests/unit_tests/semantic_layers/cache_transform_test.py
 create mode 100644 tests/unit_tests/semantic_layers/conftest.py
 create mode 100644 tests/unit_tests/semantic_layers/default_order_test.py
 create mode 100644 
tests/unit_tests/semantic_layers/dimension_resolution_test.py
 create mode 100644 tests/unit_tests/semantic_layers/e2e_stub_extension_test.py
 create mode 100644 tests/unit_tests/semantic_layers/execution_context_test.py
 create mode 100644 tests/unit_tests/semantic_layers/grain_validation_test.py
 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/layer_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/null_filters_test.py
 create mode 100644 tests/unit_tests/semantic_layers/query_errors_test.py
 create mode 100644 tests/unit_tests/semantic_layers/result_completeness_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
 create mode 100644 tests/unit_tests/sql/execution/test_async_results.py
 create mode 100644 tests/unit_tests/sql/execution/test_utils.py
 create mode 100644 tests/unit_tests/tags/race_test.py
 create mode 100644 tests/unit_tests/test_app_reinitialization.py
 create mode 100644 tests/unit_tests/utils/core_override_user_test.py
 copy superset/mcp_service/utils/query_utils.py => 
tests/unit_tests/utils/geographic_world_test.py (53%)
 create mode 100644 tests/unit_tests/utils/test_schema.py
 create mode 100644 tests/unit_tests/versioning/test_dataset_child_extra.py
 create mode 100644 tests/unit_tests/versioning/test_diff_save_defaults.py
 create mode 100644 tests/unit_tests/versioning/test_restore_datasource_race.py
 create mode 100644 
tests/unit_tests/versioning/test_restore_missing_datasource.py
 create mode 100644 tests/unit_tests/views/test_archived_assets.py

Reply via email to