You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/10/18 01:35:49 UTC
(superset) branch fix/37700-forced-password-change-stranding updated (56113a313b9 -> 203da83d32d)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/37700-forced-password-change-stranding
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 56113a313b9 chore(auth): reduce complexity of password change enforcement hook
discard e0f280ce358 fix(auth): avoid duplicate flash when user cannot reach the profile page
discard 64a5cbf1635 fix(auth): chain password-perm sweep migration after annotation UUID and stop REMOTE_USER logout loop
discard 7b3088d6487 fix(i18n): add password-change profile-access string to messages.pot
discard 5313bb3026c fix(auth): close the forced-password-change redirect loop and sweep stale legacy password perms from all roles
add afa98f3391a perf(deletion-retention): one window pass for repeat predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to 1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool discovery (#44656)
add f2ff458acde feat: Add GUI for label_colors in Dashboard Properties Modal (#39434)
add 3fccf299469 test(opensearch): cover pagination and Content-Type regression against a real instance (#44924)
add acdd390b354 fix(frontend): finish migrating off direct antd imports, enforce it in custom rules (#44927)
add e72d63b20d8 test(mysql): cover require_mysql_tls fail-closed and verified-TLS paths (#44910)
add e3bdb3894c0 test(oracle): cover cancel-query against a real running statement (#44908)
add 5d158e7e795 test(cratedb): cover epoch-ms timestamp decoding against a real instance (#44904)
add cdafffeacf5 fix(deps): restore dompurify 3.4.16 in frontend lockfile (#44960)
add ccae7784982 fix(mypy): ignore false-positive union-attr on Slice.uuid.in_() (#44944)
add 68f19947a80 docs(mcp): document semantic-layer MCP tools (#44130)
add b5b8a9f3bd0 fix(dataset-editor): preserve edits across sort and sync external SQL changes (#44858)
add 7a2913e2dbe fix(sqlite): write midnight as a bare date for DATE columns in time filters (#44805)
add 46b9ba9587e chore(deps): bump dawidd6/action-download-artifact from 25 to 26 (#44977)
add 3ac856ceb1a chore(deps): bump chromaui/action from 18.7.3 to 18.10.1 (#44973)
add 7a62b3a6535 chore(deps-dev): bump postcss-styled-syntax from 0.7.2 to 0.7.3 in /superset-frontend (#44980)
add bc69daa2328 chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-frontend (#44979)
add fee8e1b9e52 chore(deps-dev): bump webpack-sources from 3.5.3 to 3.6.0 in /superset-frontend (#44978)
add 343dcb09353 chore(deps): bump chalk from 6.0.0 to 6.0.1 in /superset-frontend (#44976)
add d62fc92273b chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-embedded-sdk (#44974)
add c00f6a7aabc chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-embedded-sdk (#44972)
add 303a68b8e2c chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-websocket (#44971)
add 83ea1d9e6f5 chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-websocket (#44970)
add 31d2d06bba3 chore(deps): bump ws from 8.21.3 to 8.22.0 in /superset-websocket (#44969)
add 7fecceb6901 chore: remove unused INCLUDE_FIREFOX build arg and dead screenshot config (#44245)
add 09015bb4bff fix(explore): preserve pending column configuration edits (#44931)
add 48ac1bf8c69 fix(mcp): return actionable authorized column suggestions (#44603)
add 0616ba68afe chore(deps-dev): bump the swc group in /superset-frontend with 2 updates (#44975)
add 13861568aaa chore(build): remove unused `polyline` Python dep (#44961)
add 895bc203601 fix: full CSV download in AgGrid (#41696)
add 3e50c2c1287 feat(mcp): support filter_range and filter_timegrain filters (#44893)
add 0c6373cd9f0 fix(models): silence pandas silent-downcasting FutureWarning in normalize_df (#44897)
add 2fdf756cf1a fix(mcp): avoid duplicate SQL execution results (#44949)
add ce39d221aac fix(charts): return 404 when chart export hits an inaccessible dataset (#44900)
add 13493a3e47f fix(mcp): allow bounding dashboard dataset columns (#44951)
add 05a3d4b880f feat(mcp): return the Big Number headline from chart and dashboard data (#44948)
add 8ff884059fd fix(logging): stop logging tracebacks for client-side HTTP errors (#44666)
add 31e3c9a1944 fix(ag-grid-table): refresh totals when summary aggregation changes (#44612)
add 71ee07e2e2b feat(ci): conditionally run CodeQL analysis workflows only when there are detected JS/Python file changes (#44699)
add c30ae9fd12d fix(embedded): refuse guest row-level security on semantic views (#44987)
add 9a345ad0112 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-websocket (#45005)
add 7b463ddee08 feat(ag-grid-table): expand JSON values in table cells (#44907)
add e0ff1074879 chore(i18n): update pt/pt_BR translations and rebuild translation index (#43022)
add 6aebcd2452d fix(dashboards): close CSS validation gaps in dashboard import and edits (#43666)
add 7b3ce2cf368 fix(themes): overwrite-import guard, missing index, dedupe extra_editors (follow-up to #42404) (#44362)
add bc1abf498d4 feat(bignumber): add an alignment control (#44554)
add 518bfbc5115 fix(reports): propagate force flag to dashboard-tab permalink report URLs (#44775)
add 4578ab31ade refactor(list-view): eliminate any usage in ListView.tsx and TableCollection (#44208)
add 7b3e3ad6f7f fix(dashboard,explore): wire addWarningToast into download callers (#44154)
add f9e9ece86f5 chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#45004)
add 9e18d415d92 chore(deps-dev): bump @swc/core from 1.16.2 to 1.16.12 in /superset-frontend in the swc group (#45012)
add 9d348facce9 chore(deps): bump @swc/core from 1.16.2 to 1.16.12 in /docs (#45008)
add 457007b2f82 chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in /superset-websocket in the security group across 1 directory (#45028)
add a5ffac58f44 feat: add global async query playwright tests (#43004)
add 854d3d59e4d fix(table): omit dormant grains from semantic aggregate requests (#44455)
add 000297a6f07 fix(semantic-layers): offer valid table ordering choices (#44806)
add d6c871a57fb fix(semantic-layers): remove child view permissions when a layer is deleted (#44905)
add 3413a50af05 chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 in /superset-websocket/utils/client-ws-app in the security group across 1 directory (#45027)
add 3cfc7458670 chore(deps): bump dawidd6/action-download-artifact from 26 to 27 (#45011)
add 7330ca4c373 chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /superset-embedded-sdk in the security group across 1 directory (#45024)
add fcee985241b fix(pivot-table): respect per-metric formatters in result aggregation (#44815)
add 1473d481345 fix(query-context): match an adhoc granularity_sqla by its expression (#44773)
add 17f4c215b37 feat(mcp): allow default values on filter_select native filters (#44985)
add 5a2f4c8e80c feat(mcp): add structured dashboard text component management (#44560)
add 55e39fc5f76 fix(explore): avoid mutating ZoomConfigControl configs (#44957)
add 794b243c543 test(frontend): await remaining userEvent calls and lint for un-awaited ones (#44947)
add 715dc017df1 fix(explore): open SQL Lab in a new tab on Ctrl+click in View query modal (#44933)
add ac3fc943dd3 chore(deps): bump the security group across 1 directory with 9 updates (#45026)
add f88b2ef2595 chore(deps): bump the security group across 1 directory with 6 updates (#45025)
add fc1eeb066af chore(deps-dev): bump wait-on from 9.1.0 to 9.4.0 in /superset-frontend (#45015)
add fc754d0e814 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-frontend (#45014)
add ee7b7fdc908 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /docs (#45009)
add 27d5c3655de chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#45007)
add f3da949f61c chore(deps-dev): bump oxfmt from 0.70.0 to 0.71.0 in /superset-websocket (#45006)
add a0f0cb8ae3d feat(mcp): support filter-bar dividers in manage_native_filters (#45021)
add ec1688facd7 fix(mcp): state that dataset tools are SQL-only and point to semantic tools (#44994)
add 388a10efdb1 fix(dashboards): return 404 when dashboard export hits an inaccessible chart or dataset (#44929)
add d526ee4bd1f feat(semantic): add optional metadata refresh SDK contract (#44834)
add 90b0a1a9160 fix(semantic): map layer views as a collection (#44902)
add 6f6be95995e feat(retention): let a host install purge policies for its own soft-delete roots (#44892)
add fca6bdad57b fix(semantic): reject SQL clauses on semantic views (#44899)
add 888795b90f9 fix(security): bind contextual access checks to the datasource type and id (#45002)
add ae297e910e7 fix(permalink): handle concurrent creation of identical dashboard permalinks (#45059)
add 86a6d1dcf34 chore(deps-dev): bump @types/ws from 8.18.1 to 8.18.2 in /superset-websocket (#45045)
add 9b7797f7b21 chore(deps): bump the storybook group in /docs with 2 updates (#45046)
add 735365e2d18 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#45047)
add 11a22e5ceba fix(post-processing): stop duplicating columns in _append_columns (#45018)
add 001cb574e39 feat(plugin-chart-echarts): add a value axis label control (#43660)
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 ac1228fc494 fix(auth): close the forced-password-change redirect loop and sweep stale legacy password perms from all roles
add 5f04ce48b44 fix(i18n): add password-change profile-access string to messages.pot
add 7aebcb8f312 fix(auth): chain password-perm sweep migration after annotation UUID and stop REMOTE_USER logout loop
add 8d1e87ea1cd fix(auth): avoid duplicate flash when user cannot reach the profile page
add aec94781d87 chore(auth): reduce complexity of password change enforcement hook
add 203da83d32d fix(auth): re-chain password-perm sweep migration after c179af013f48
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (56113a313b9)
\
N -- N -- N refs/heads/fix/37700-forced-password-change-stranding (203da83d32d)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/CODEOWNERS | 8 +-
.github/actions/change-detector/action.yml | 3 +
.github/dependabot.yml | 96 +-
.github/workflows/bashlib.sh | 162 +-
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/chromatic.yml | 2 +-
.github/workflows/codeql-analysis.yml | 15 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/embedded-sdk-release.yml | 2 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/pre-commit.yml | 16 +-
.github/workflows/release.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 6 +-
.github/workflows/superset-docs-verify.yml | 6 +-
.github/workflows/superset-e2e.yml | 187 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 21 +-
.github/workflows/superset-helm-lint-test.yml | 2 +-
.../workflows/superset-python-integrationtest.yml | 52 +-
.../workflows/superset-python-unittest-report.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 4 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 4 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/tag-release.yml | 4 +-
.github/workflows/tech-debt.yml | 2 +-
.github/workflows/testcontainers.yml | 4 +-
.gitignore | 2 +
.pre-commit-config.yaml | 39 +-
Dockerfile | 8 +-
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 | 3 +-
UPDATING.md | 399 +-
docker-compose-light.yml | 1 -
docker-compose.yml | 1 -
docker/.env | 1 -
docs/admin_docs/configuration/alerts-reports.mdx | 133 +-
.../configuration/async-queries-celery.mdx | 7 +
docs/admin_docs/configuration/cache.mdx | 36 +
.../configuration/configuring-superset.mdx | 79 +
docs/admin_docs/configuration/feature-flags.mdx | 29 +
.../importing-exporting-datasources.mdx | 22 +
docs/admin_docs/configuration/mcp-server.mdx | 748 +-
docs/admin_docs/installation/docker-builds.mdx | 1 -
.../contributing/development-setup.md | 1 -
docs/developer_docs/contributing/howtos.md | 89 +-
.../contributing/translation-guide.md | 104 +
.../extensions/contribution-types.md | 189 +-
docs/developer_docs/extensions/mcp.md | 100 +
docs/developer_docs/extensions/overview.md | 22 +-
docs/developer_docs/extensions/semantic-filters.md | 79 +
docs/developer_docs/extensions/tasks.md | 2 +-
docs/developer_docs/semantic-layer-cache-clear.md | 106 +
docs/developer_docs/semantic-query-errors.md | 94 +
.../developer_docs/semantic-result-completeness.md | 70 +
docs/docs/index.mdx | 4 +-
.../creating-your-first-dashboard.mdx | 86 +
docs/docs/using-superset/embedding.mdx | 3 +-
docs/docs/using-superset/exploring-data.mdx | 69 +
.../using-superset/exporting-dashboard-data.mdx | 4 +-
docs/docs/using-superset/number-formatting.mdx | 2 +-
docs/docs/using-superset/recently-archived.mdx | 184 +-
.../using-superset/semantic-layer-connections.mdx | 63 +
.../using-superset/semantic-member-selections.mdx | 60 +-
.../docs/using-superset/using-ai-with-superset.mdx | 132 +-
docs/docs/using-superset/version-history.mdx | 53 +-
docs/docusaurus.config.ts | 53 +-
docs/package.json | 16 +-
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/resources/openapi.json | 1518 +-
docs/yarn.lock | 754 +-
pyproject.toml | 99 +-
requirements/base.in | 10 +-
requirements/base.txt | 32 +-
requirements/development.in | 7 +-
requirements/development.txt | 66 +-
scripts/change_detector.py | 22 +
scripts/eslint.sh | 30 -
scripts/translations/babel_update.sh | 7 +
scripts/translations/backfill_po.py | 79 +-
scripts/translations/check_pot_drift.py | 81 +-
.../src/superset_core/semantic_layers/errors.py | 76 +
.../src/superset_core/semantic_layers/layer.py | 79 +-
.../src/superset_core/semantic_layers/types.py | 163 +-
.../src/superset_core/semantic_layers/view.py | 81 +-
superset-core/tests/semantic_layers/test_errors.py | 66 +
superset-core/tests/semantic_layers/test_view.py | 96 +
superset-embedded-sdk/package-lock.json | 523 +-
superset-embedded-sdk/package.json | 12 +-
.../src/superset_extensions_cli/cli.py | 7 +-
.../templates/frontend/package.json.j2 | 8 +-
superset-extensions-cli/tests/test_cli_build.py | 4 +-
.../playwright.storybook-ci.config.ts} | 20 +-
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 | 8 +-
superset-frontend/oxlint.custom-lint-rules.mts | 121 +
superset-frontend/oxlint.json | 20 +-
superset-frontend/package-lock.json | 27746 ++++++++-----------
superset-frontend/package.json | 101 +-
.../packages/generator-superset/package.json | 4 +-
.../superset-core/src/theme/GlobalStyles.test.tsx | 67 +
.../superset-core/src/theme/GlobalStyles.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 +
.../superset-ui-chart-controls/src/utils/index.ts | 1 +
.../src/utils/isServerPaginationUnsupported.ts | 70 +
.../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/Loading/Loading.stories.tsx | 5 +-
.../components/MetadataBar/MetadataBar.test.tsx | 40 +-
.../src/components/MetadataBar/MetadataBar.tsx | 6 +-
.../src/components/Table/VirtualTable.test.tsx | 10 +-
.../src/components/Table/VirtualTable.tsx | 4 +-
.../TableCollection/TableCollection.stories.tsx | 22 +-
.../TableCollection/TableCollection.test.tsx | 63 +
.../src/components/TableCollection/index.tsx | 7 +-
.../src/components/TableCollection/utils.tsx | 93 +-
.../superset-ui-core/src/components/Tag/index.tsx | 1 +
.../superset-ui-core/src/components/index.ts | 6 +-
.../src/connection/SupersetClientClass.ts | 31 +-
.../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 +
.../test/connection/SupersetClientClass.test.ts | 27 +
.../test/query/buildQueryContext.test.ts | 41 +
.../test/query/buildQueryObject.test.ts | 76 +-
.../superset-ui-core/types/react-table-config.d.ts | 149 -
.../superset-ui-core}/types/react-table.d.ts | 54 +-
superset-frontend/playwright.config.ts | 37 +
.../playwright/components/core/Select.ts | 28 +-
.../components/modals/EditDatasetModal.ts | 7 +-
.../playwright/helpers/api/semanticLayer.test.ts | 65 +
.../playwright/helpers/api/semanticLayer.ts | 136 +
.../playwright/helpers/fixtures/testAssets.ts | 25 +-
.../tests/dashboard/dashboard-test-helpers.ts | 484 +-
.../global-async-query-resilience.spec.ts | 600 +
.../tests/dashboard/global-async-query.spec.ts | 462 +
.../semantic-view/semantic-view-dashboard.spec.ts | 204 +
.../tests/sqllab/global-async-query-sqllab.spec.ts | 78 +
superset-frontend/playwright/utils/constants.ts | 18 +
.../src/AgGridTable/index.tsx | 2 +
.../src/AgGridTableChart.tsx | 39 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 64 +-
.../src/renderers/JsonCellRenderer.tsx | 600 +
.../src/renderers/TextCellRenderer.tsx | 59 +-
.../src/renderers/jsonCellRowHeight.ts | 61 +
.../src/renderers/parseJsonCellValue.ts | 234 +
.../src/styles/index.tsx | 7 +
.../src/transformProps.ts | 4 +
.../plugin-chart-ag-grid-table/src/types.ts | 5 +
.../src/utils/externalAPIs.ts | 2 +
.../src/utils/isJsonCellActionTarget.ts | 56 +
.../src/utils/useColDefs.ts | 4 +
.../test/AgGridTableChart.test.tsx | 153 +-
.../test/JsonCellRenderer.test.tsx | 674 +
.../test/buildQuery.test.ts | 23 +
.../test/cellSelectionWiring.test.tsx | 88 +
.../test/controlPanel.test.ts | 8 +
.../test/controlPanel.test.tsx | 364 +
.../test/transformProps.test.ts | 25 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 227629 -> 228908 bytes
.../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 +
.../BigNumber/BigNumberTotal/controlPanel.test.ts | 10 +
.../src/BigNumber/BigNumberTotal/controlPanel.ts | 2 +
.../BigNumberTotal/transformProps.test.ts | 2 +
.../src/BigNumber/BigNumberTotal/transformProps.ts | 2 +
.../src/BigNumber/BigNumberViz.test.tsx | 152 +-
.../src/BigNumber/BigNumberViz.tsx | 23 +-
.../BigNumberWithTrendline/controlPanel.tsx | 2 +
.../BigNumberWithTrendline/transformProps.test.ts | 2 +
.../BigNumberWithTrendline/transformProps.ts | 2 +
.../src/BigNumber/sharedControls.ts | 19 +
.../plugin-chart-echarts/src/BigNumber/types.ts | 4 +
.../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/Graph/transformProps.ts | 51 +-
.../src/MixedTimeseries/controlPanel.tsx | 2 +
.../src/MixedTimeseries/transformProps.ts | 3 +
.../src/MixedTimeseries/types.ts | 2 +
.../src/Timeseries/Area/controlPanel.tsx | 2 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 1 +
.../src/Timeseries/EchartsTimeseries.tsx | 4 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 2 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 2 +
.../Timeseries/Regular/Scatter/controlPanel.tsx | 2 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 2 +
.../src/Timeseries/Step/controlPanel.tsx | 2 +
.../src/Timeseries/constants.ts | 1 +
.../src/Timeseries/transformProps.ts | 7 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 11 +
.../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/Graph/categoryIdentity.test.ts | 398 +
.../test/Graph/transformProps.test.ts | 38 +
.../test/MixedTimeseries/transformProps.test.ts | 15 +
.../test/Rose/buildQuery.test.ts | 12 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 6 +
.../test/Timeseries/transformProps.test.ts | 60 +
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugin-chart-horizon/test/buildQuery.test.ts | 11 +
.../plugin-chart-partition/test/buildQuery.test.ts | 13 +
.../src/PivotTableChart.tsx | 3 +
.../src/plugin/buildQuery.ts | 8 +-
.../src/plugin/controlPanel.tsx | 28 +-
.../src/plugin/transformProps.ts | 6 +-
.../src/plugin/utilities.ts | 42 +-
.../src/react-pivottable/Styles.ts | 98 +-
.../src/react-pivottable/TableRenderers.tsx | 206 +-
.../src/react-pivottable/utilities.ts | 46 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 5 +
.../test/plugin/buildQuery.test.ts | 49 +
.../test/plugin/transformProps.test.ts | 2 +-
.../test/plugin/utilities.test.ts | 49 +-
.../test/react-pivottable/Styles.test.tsx | 328 +
.../test/react-pivottable/tableRenders.test.tsx | 468 +
.../test/react-pivottable/utilities.test.ts | 217 +-
.../plugin-chart-pivot-table/test/testData.ts | 68 +
.../plugin-chart-point-cluster-map/package.json | 4 +-
.../plugin-chart-table/src/DataTable/DataTable.tsx | 9 +
.../plugins/plugin-chart-table/src/buildQuery.ts | 85 +-
.../plugin-chart-table/src/controlPanel.tsx | 108 +-
.../test/DataTable/DataTable.test.tsx | 31 +
.../plugin-chart-table/test/buildQuery.test.ts | 365 +
.../plugin-chart-table/test/controlPanel.test.ts | 44 +
.../plugin-chart-table/test/controlPanel.test.tsx | 602 +-
.../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/preset-chart-deckgl/package.json | 4 +-
.../src/layers/Geojson/Geojson.test.tsx | 22 +
.../src/layers/Scatter/buildQuery.test.ts | 24 +
.../src/layers/Scatter/buildQuery.ts | 7 +-
.../src/layers/Scatter/controlPanel.test.ts} | 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 +
superset-frontend/scripts/check-custom-rules.js | 209 +-
.../scripts/internal/oxlint-metrics-uploader.js | 174 +-
.../fixtures/mockSemanticDashboardDatasources.ts | 177 +
.../spec/helpers/geographicControlPanel.ts | 75 +
.../spec/scripts/oxlint-metrics-uploader.test.ts | 327 +-
.../src/SqlLab/actions/sqlLab.test.ts | 57 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 32 +-
.../ExploreCtasResultsButton.test.tsx | 11 +-
.../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 +
.../ChartContextMenu/ChartContextMenu.test.tsx | 2 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 2 +-
.../components/Chart/MenuItemWithTruncation.tsx | 5 +-
.../src/components/Chart/chartAction.ts | 34 +
.../src/components/Chart/chartActions.test.ts | 62 +
.../Datasource/ChangeDatasourceModal/index.tsx | 2 +-
.../CollectionTable/CollectionTable.test.tsx | 236 +-
.../components/CollectionTable/index.tsx | 75 +-
.../src/components/Datasource/utils/index.ts | 12 +-
.../src/components/Datasource/utils/utils.test.tsx | 28 +-
.../src/components/ListView/CardCollection.tsx | 22 +-
.../src/components/ListView/ListView.test.tsx | 2 -
.../src/components/ListView/ListView.tsx | 27 +-
superset-frontend/src/components/ListView/utils.ts | 8 +-
superset-frontend/src/components/Tag/index.tsx | 8 +-
.../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 +-
.../DetailsPanel/DetailsPanel.test.tsx | 19 +
.../components/FiltersBadge/DetailsPanel/index.tsx | 22 +
.../components/FiltersBadge/FiltersBadge.test.tsx | 40 +
.../dashboard/components/FiltersBadge/index.tsx | 20 +-
.../dashboard/components/Header/Header.test.tsx | 4 +-
.../dashboard/components/PropertiesModal/index.tsx | 2 +
.../PropertiesModal/sections/AdvancedSection.tsx | 60 +-
.../sections/LabelColorMapping.test.tsx | 111 +
.../PropertiesModal/sections/LabelColorMapping.tsx | 494 +
.../sections/StylingSection.test.tsx | 141 +-
.../PropertiesModal/sections/StylingSection.tsx | 11 +
.../RefreshFrequencySelect.test.tsx | 261 +
.../RefreshFrequency/RefreshFrequencySelect.tsx | 147 +-
.../dashboard/components/RefreshFrequency/index.ts | 3 +
.../components/RefreshIntervalModal.test.tsx | 43 +
.../src/dashboard/components/SliceHeader/index.tsx | 2 +
.../SliceHeaderControls.test.tsx | 71 +
.../components/SliceHeaderControls/index.tsx | 9 +-
.../components/SliceHeaderControls/types.ts | 1 +
.../components/gridComponents/Chart/Chart.test.tsx | 312 +-
.../components/gridComponents/Chart/Chart.tsx | 95 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 46 +
.../components/menu/DownloadMenuItems/index.tsx | 21 +-
.../FilterControls/FilterControls.test.tsx | 65 +
.../FilterBar/FilterControls/FilterControls.tsx | 12 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 145 +-
.../FilterBar/FilterControls/FilterValue.tsx | 39 +-
.../FilterControls/GroupByFilterCard.test.tsx | 183 +-
.../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 +-
.../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 | 79 +-
.../contexts/DashboardDatasetsContext.ts} | 14 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 327 +
.../src/dashboard/reducers/dashboardInfo.ts | 160 +
superset-frontend/src/dashboard/types.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 7 +-
.../util/getFormDataWithExtraFilters.test.ts | 49 +
.../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 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 160 +
.../components/ExploreChartHeader/index.tsx | 37 +-
.../ExploreViewContainer.test.tsx | 153 +
.../components/ExploreViewContainer/index.tsx | 32 +-
.../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 +-
.../components/controls/ColorPickerControl.tsx | 2 +-
.../ColumnConfigConstants.test.tsx | 25 +-
.../ControlForm/ControlForm.debounce.test.tsx | 124 +
.../ColumnConfigControl/ControlForm/index.tsx | 50 +-
.../controls/ColumnConfigControl/constants.tsx | 2 +
.../ContourPopoverControl-unused-fields.test.tsx | 60 +
.../ContourControl/ContourPopoverControl.tsx | 4 +-
.../ControlPopover/ControlPopover.test.tsx | 66 +
.../controls/ControlPopover/ControlPopover.tsx | 39 +-
.../components/DateFunctionTooltip.tsx | 2 +-
.../ColumnSelectPopover.test.tsx | 38 +-
.../DndAdhocFilterOption.tsx | 3 +
.../DndColumnSelect.test.tsx | 20 +-
.../DndFilterSelect.test.tsx | 76 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 6 +
.../FilterControl/AdhocFilterControl/index.tsx | 15 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 3 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 179 +-
.../index.tsx | 62 +-
.../FilterControl/AdhocFilterOption/index.tsx | 3 +
.../AdhocFilterPopoverTrigger/index.tsx | 3 +
.../controls/MapViewControl/ExtentTag.test.tsx | 68 +
.../controls/MapViewControl/ExtentTag.tsx | 13 +-
.../components/controls/MapViewControl/types.ts | 6 +-
.../controls/MatrixifyDimensionControl.test.tsx | 72 +-
.../controls/MatrixifyDimensionControl.tsx | 25 +-
.../AdhocMetricEditPopover.test.tsx | 4 +-
.../controls/SemanticRequestView.test.tsx | 111 +
.../components/controls/SemanticRequestView.tsx | 71 +
.../components/controls/TextAreaControl.test.tsx | 103 +
.../components/controls/TextAreaControl.tsx | 169 +-
.../components/controls/ViewQueryModal.test.tsx | 300 +-
.../explore/components/controls/ViewQueryModal.tsx | 98 +-
.../controls/ViewQueryModalFooter.test.tsx | 95 +
.../components/controls/ViewQueryModalFooter.tsx | 7 +-
.../components/controls/XAxisSortControl.test.tsx | 80 +
.../components/controls/XAxisSortControl.tsx | 10 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 115 +
.../ZoomConfigControl/ZoomConfigControl.tsx | 36 +-
.../useExploreAdditionalActionsMenu/index.tsx | 40 +-
.../useExploreAdditionalActionsMenu.test.tsx | 71 +-
superset-frontend/src/explore/controls.tsx | 8 +-
.../src/explore/exploreUtils/exploreUtils.test.tsx | 32 +
.../src/explore/exploreUtils/index.ts | 7 +-
.../src/explore/reducers/exploreReducer.test.ts | 98 +-
.../src/explore/reducers/exploreReducer.ts | 40 +-
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/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 +-
.../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 | 953 +-
.../semanticViews/AddSemanticViewModal.tsx | 290 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 27 +
.../features/versionHistory/RelatedUpdateRow.tsx | 5 +-
.../versionHistory/VersionHistoryPanel.test.tsx | 32 +
.../versionHistory/VersionHistoryPanel.tsx | 1 +
.../src/features/versionHistory/display.test.ts | 47 +
.../src/features/versionHistory/display.ts | 33 +-
.../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 | 14 +
.../src/hooks/apiResources/dashboards.ts | 28 +-
.../src/hooks/apiResources/datasets.cache.test.ts | 48 +
.../src/hooks/apiResources/datasets.test.ts | 36 +-
.../src/hooks/apiResources/datasets.ts | 6 +-
.../src/middleware/asyncEvent.test.ts | 370 +-
superset-frontend/src/middleware/asyncEvent.ts | 90 +-
.../src/middleware/asyncQueryError.ts | 118 +
.../src/pages/ActionLog/ActionLog.test.tsx | 90 +
superset-frontend/src/pages/ActionLog/index.tsx | 3 +
.../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 | 10 +-
.../DashboardList/DashboardList.cardview.test.tsx | 77 +-
.../DashboardList.permissions.test.tsx | 34 +-
.../src/pages/DashboardList/index.tsx | 31 +-
.../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 | 48 +-
.../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 +-
.../XAxisSortControl.tsx => pages/Login/styles.ts} | 44 +-
.../src/pages/ResetPassword/ResetPassword.test.tsx | 301 +
.../src/pages/ResetPassword/index.tsx | 285 +
superset-frontend/src/types/Chart.ts | 1 +
superset-frontend/src/types/react-table.d.ts | 16 +
superset-frontend/src/utils/cacheWrapper.test.ts | 54 +
superset-frontend/src/utils/cacheWrapper.ts | 6 +
.../src/utils/cachedSupersetGet.test.ts | 20 +
.../src/utils/downloadAsImage.test.ts | 302 +-
superset-frontend/src/utils/downloadAsImage.tsx | 36 +-
superset-frontend/src/utils/downloadAsPdf.test.ts | 128 +
superset-frontend/src/utils/downloadAsPdf.ts | 30 +-
superset-frontend/src/utils/downloadUtils.test.ts | 76 +-
superset-frontend/src/utils/downloadUtils.ts | 35 +-
.../utils/getChartRequiredFieldsMissingMessage.ts | 1 +
.../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 | 21 +
.../TimeTable/config/buildQuery.test.ts | 14 +
superset-frontend/tsconfig.json | 2 +-
superset-websocket/README.md | 25 +
superset-websocket/config.example.json | 10 +-
superset-websocket/package-lock.json | 574 +-
superset-websocket/package.json | 12 +-
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 | 17 +-
superset/charts/api.py | 37 +-
superset/charts/data/api.py | 40 +-
superset/charts/data/form_data.py | 2 +-
superset/charts/filters.py | 10 +-
superset/charts/schemas.py | 16 +-
superset/commands/chart/data/get_data_command.py | 37 +-
superset/commands/chart/exceptions.py | 4 +
superset/commands/chart/importers/v1/__init__.py | 7 +-
superset/commands/chart/restore_version.py | 17 +
superset/commands/chart/update.py | 10 +
superset/commands/chart/utils.py | 9 +
superset/commands/chart/warm_up_cache.py | 26 +-
superset/commands/dashboard/exceptions.py | 4 +
superset/commands/dashboard/permalink/create.py | 43 +-
superset/commands/dashboard/restore.py | 132 +
superset/commands/dashboard/update.py | 74 +-
.../commands/deletion_retention/force_purge.py | 7 +-
.../commands/deletion_retention/prune_audit.py | 76 +-
.../commands/deletion_retention/purge_cascade.py | 5 +-
.../commands/deletion_retention/purge_policy.py | 1191 +-
superset/commands/distributed_lock/release.py | 3 +-
superset/commands/importers/v1/examples.py | 8 +-
superset/commands/importers/v1/utils.py | 49 +-
superset/commands/report/alert.py | 52 +-
superset/commands/report/base.py | 165 +-
superset/commands/report/create.py | 46 +
superset/commands/report/exceptions.py | 155 +-
superset/commands/report/execute.py | 289 +-
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/delete.py | 243 +
superset/commands/semantic_layer/exceptions.py | 28 +-
superset/commands/semantic_layer/update.py | 62 +-
superset/commands/theme/import_themes.py | 57 +-
superset/commands/version_restore.py | 5 +
superset/common/db_query_status.py | 6 +
superset/common/form_data_query_context.py | 1599 +-
superset/common/query_actions.py | 1 +
superset/common/query_context_factory.py | 61 +-
superset/common/query_context_processor.py | 94 +-
superset/common/query_object.py | 43 +
superset/common/query_object_factory.py | 31 +-
superset/common/tabular_query.py | 7 +-
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 | 83 +-
superset/connectors/sqla/models.py | 26 +-
superset/connectors/sqla/utils.py | 2 +-
superset/constants.py | 40 +
superset/coordination/cache_backend.py | 72 +
superset/daos/chart.py | 7 +-
superset/daos/dashboard.py | 310 +-
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 | 41 +-
superset/dashboards/excel_export/workbook.py | 11 +-
superset/dashboards/schemas.py | 20 +-
superset/databases/api.py | 7 +-
superset/dataframe.py | 4 +
superset/datasets/api.py | 7 +-
superset/datasets/schemas.py | 39 +-
superset/datasource/api.py | 303 +-
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/d1.py | 20 -
superset/db_engine_specs/databricks.py | 27 +-
superset/db_engine_specs/gsheets.py | 23 +-
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/postgres.py | 3 +-
superset/db_engine_specs/shillelagh.py | 20 +-
superset/db_engine_specs/snowflake.py | 18 +-
superset/db_engine_specs/spark.py | 6 +-
superset/db_engine_specs/sqlite.py | 16 +-
superset/db_engine_specs/trino.py | 35 +-
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/importexport/api.py | 7 +-
superset/initialization/__init__.py | 140 +-
superset/key_value/types.py | 41 +-
superset/mcp_service/CLAUDE.md | 7 +-
superset/mcp_service/__init__.py | 10 +
superset/mcp_service/app.py | 21 +-
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/big_number_headline.py | 388 +
superset/mcp_service/chart/chart_helpers.py | 662 +-
superset/mcp_service/chart/chart_utils.py | 2405 +-
superset/mcp_service/chart/compile.py | 469 +-
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 +-
superset/mcp_service/chart/query_result.py | 1952 +-
superset/mcp_service/chart/registry.py | 18 +
.../mcp_service/chart/resources/chart_configs.py | 120 +-
superset/mcp_service/chart/response_preflight.py | 204 +
superset/mcp_service/chart/schemas.py | 2960 +-
superset/mcp_service/chart/sunburst.py | 436 +
superset/mcp_service/chart/tool/generate_chart.py | 400 +-
superset/mcp_service/chart/tool/get_chart_data.py | 848 +-
superset/mcp_service/chart/tool/get_chart_info.py | 28 +-
.../mcp_service/chart/tool/get_chart_preview.py | 224 +-
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 | 18 +-
superset/mcp_service/chart/tool/update_chart.py | 972 +-
.../mcp_service/chart/tool/update_chart_preview.py | 408 +-
.../chart/validation/dataset_validator.py | 707 +-
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/dashboard/constants.py | 4 +
superset/mcp_service/dashboard/layout_placement.py | 309 +
.../mcp_service/dashboard/layout_validation.py | 11 +-
superset/mcp_service/dashboard/permalink.py | 6 +-
superset/mcp_service/dashboard/schemas.py | 753 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 234 +-
.../dashboard/tool/apply_dashboard_filters.py | 638 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 66 +-
.../dashboard/tool/duplicate_dashboard.py | 16 +-
.../dashboard/tool/generate_dashboard.py | 18 +-
.../dashboard/tool/get_dashboard_data.py | 9 +
.../dashboard/tool/get_dashboard_datasets.py | 13 +-
.../dashboard/tool/get_dashboard_info.py | 21 +-
.../mcp_service/dashboard/tool/governance_utils.py | 15 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
.../tool/manage_dashboard_certification.py | 10 +-
.../dashboard/tool/manage_dashboard_markdown.py | 512 +
.../dashboard/tool/manage_dashboard_owners.py | 12 +-
.../dashboard/tool/manage_dashboard_roles.py | 32 +-
.../dashboard/tool/manage_native_filters.py | 535 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 73 +-
.../dashboard/tool/restore_dashboard.py | 61 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 10 +
superset/mcp_service/dashboard_scope.py | 1 +
superset/mcp_service/dataset/dataset_utils.py | 5 +
superset/mcp_service/dataset/schemas.py | 66 +-
.../mcp_service/dataset/tool/create_dataset.py | 11 +-
.../dataset/tool/create_virtual_dataset.py | 16 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 7 +-
superset/mcp_service/dataset/tool/list_datasets.py | 27 +-
superset/mcp_service/dataset/tool/query_dataset.py | 165 +-
.../mcp_service/dataset/tool/update_dataset.py | 16 +-
superset/mcp_service/dataset_scope.py | 146 +-
.../explore/tool/generate_explore_link.py | 160 +-
superset/mcp_service/mcp_config.py | 67 +-
superset/mcp_service/middleware.py | 105 +-
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 | 257 +-
superset/mcp_service/simple_proxy.py | 2 +-
superset/mcp_service/sql_lab/schemas.py | 36 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 14 +-
superset/mcp_service/utils/cache_utils.py | 32 +-
superset/mcp_service/utils/error_builder.py | 115 +-
superset/mcp_service/utils/query_utils.py | 18 +-
superset/mcp_service/utils/response_size_utils.py | 40 +-
superset/mcp_service/utils/response_utils.py | 294 +-
superset/mcp_service/utils/serialization.py | 51 +-
...0fab727cd0a_add_theme_editors_theme_id_index.py | 64 +
...ep_legacy_password_view_perms_from_all_roles.py | 4 +-
...00_e4a7c2b9d1f3_add_run_as_and_report_config.py | 178 +
...79af013f48_add_semantic_layer_cache_version.py} | 32 +-
superset/models/dashboard.py | 101 +-
superset/models/helpers.py | 93 +-
superset/models/slice.py | 96 +-
superset/queries/api.py | 15 +-
superset/queries/saved_queries/api.py | 7 +-
superset/reports/api.py | 181 +-
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/security/api.py | 214 +-
superset/security/manager.py | 380 +-
superset/security/password_change.py | 9 +-
superset/security/password_recovery.py | 316 +
superset/semantic_layers/access.py | 50 +
superset/semantic_layers/api.py | 204 +-
superset/semantic_layers/cache.py | 496 +
superset/semantic_layers/cache_coordination.py | 240 +
superset/semantic_layers/cache_host.py | 248 +
superset/semantic_layers/cache_identity.py | 336 +
superset/semantic_layers/cache_policy.py | 417 +
superset/semantic_layers/cache_repository.py | 453 +
superset/semantic_layers/cache_transform.py | 268 +
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/labels.py | 7 +-
superset/semantic_layers/mapper.py | 664 +-
superset/semantic_layers/members.py | 52 +
superset/semantic_layers/models.py | 413 +-
superset/sql/execution/celery_task.py | 466 +-
superset/sql/execution/executor.py | 24 +-
superset/sql/execution/utils.py | 260 +
superset/sql/parse.py | 38 +-
superset/sql_lab.py | 366 +-
superset/subjects/utils.py | 19 +-
superset/superset_typing.py | 10 +-
superset/tasks/api.py | 23 +-
superset/tasks/async_queries.py | 36 +-
superset/tasks/deletion_retention.py | 466 +-
.../constants.py => tasks/retention_cap.py} | 28 +-
superset/tasks/schemas.py | 3 +
superset/tasks/version_history_retention.py | 282 +-
superset/themes/api.py | 27 +-
superset/translations/ar/LC_MESSAGES/messages.po | 778 +-
superset/translations/ca/LC_MESSAGES/messages.po | 752 +-
superset/translations/cs/LC_MESSAGES/messages.po | 760 +-
superset/translations/de/LC_MESSAGES/messages.po | 752 +-
superset/translations/en/LC_MESSAGES/messages.po | 734 +-
superset/translations/es/LC_MESSAGES/messages.po | 752 +-
superset/translations/fa/LC_MESSAGES/messages.po | 746 +-
superset/translations/fi/LC_MESSAGES/messages.po | 746 +-
superset/translations/fr/LC_MESSAGES/messages.po | 754 +-
superset/translations/it/LC_MESSAGES/messages.po | 752 +-
superset/translations/ja/LC_MESSAGES/messages.po | 744 +-
superset/translations/ko/LC_MESSAGES/messages.po | 739 +-
superset/translations/lv/LC_MESSAGES/messages.po | 760 +-
superset/translations/messages.pot | 605 +-
superset/translations/mi/LC_MESSAGES/messages.po | 752 +-
superset/translations/nl/LC_MESSAGES/messages.po | 746 +-
superset/translations/pl/LC_MESSAGES/messages.po | 749 +-
superset/translations/pt/LC_MESSAGES/messages.po | 8365 +++---
.../translations/pt_BR/LC_MESSAGES/messages.po | 4582 +--
superset/translations/ro/LC_MESSAGES/messages.po | 763 +-
superset/translations/ru/LC_MESSAGES/messages.po | 761 +-
superset/translations/sk/LC_MESSAGES/messages.po | 760 +-
superset/translations/sl/LC_MESSAGES/messages.po | 768 +-
superset/translations/sr/LC_MESSAGES/messages.po | 760 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 760 +-
superset/translations/ta/LC_MESSAGES/messages.po | 752 +-
superset/translations/th/LC_MESSAGES/messages.po | 738 +-
superset/translations/tr/LC_MESSAGES/messages.po | 747 +-
superset/translations/uk/LC_MESSAGES/messages.po | 768 +-
superset/translations/zh/LC_MESSAGES/messages.po | 738 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 738 +-
superset/utils/cache_manager.py | 17 +
superset/utils/core.py | 16 +-
superset/utils/csv.py | 14 +-
superset/utils/date_parser.py | 36 +-
superset/utils/error_sanitization.py | 109 +-
superset/utils/geographic.py | 105 +
superset/utils/geographic_regions.py | 385 +
superset/utils/geographic_world.py | 205 +
superset/utils/network.py | 23 +-
.../utils/pandas_postprocessing/contribution.py | 24 +-
superset/utils/pandas_postprocessing/geography.py | 8 +-
superset/utils/pandas_postprocessing/histogram.py | 8 +-
superset/utils/pandas_postprocessing/rename.py | 11 +-
superset/utils/pandas_postprocessing/utils.py | 25 +-
superset/utils/schema.py | 60 +
superset/utils/screenshot_utils.py | 34 +-
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 | 56 +-
superset/versioning/metrics.py | 6 +-
superset/versioning/restore.py | 146 +-
superset/versioning/savepoints.py | 149 +
superset/versioning/unit_of_work.py | 113 +-
superset/views/api.py | 4 +-
superset/views/auth.py | 22 +-
superset/views/base.py | 3 +
superset/views/core.py | 2 +-
superset/views/dashboard/mixin.py | 1 +
superset/views/datasource/views.py | 176 +-
superset/views/error_handling.py | 23 +-
superset/views/filters.py | 5 +-
tests/common/assert_utils.py | 2 +-
.../src/superset_e2e_semantic_stub/__init__.py | 266 +
.../semantic_stub/dist/manifest.json | 10 +
tests/integration_tests/charts/api_tests.py | 2 +
.../charts/semantic_metadata_authz_tests.py | 647 +
.../charts/semantic_save_tests.py | 46 +
tests/integration_tests/dashboards/api_tests.py | 440 +-
tests/integration_tests/dashboards/dao_tests.py | 120 +-
tests/integration_tests/datasource/api_tests.py | 273 +-
.../deletion_retention/force_purge_tests.py | 11 +-
.../deletion_retention/prune_audit_tests.py | 88 +
.../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 +-
.../commands/execute_dashboard_report_tests.py | 11 +-
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 | 8 +
.../semantic_layers/api_flag_test.py | 423 +
.../semantic_layers/cache_coordination_tests.py | 200 +
tests/integration_tests/sqllab_tests.py | 29 +-
.../integration_tests/superset_test_config_gaq.py | 59 +
.../superset_test_config_semantic.py | 34 +-
tests/integration_tests/tasks/api_tests.py | 128 +-
.../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_crate.py | 44 +
tests/testcontainers/db_engine_specs/test_mysql.py | 279 +-
.../db_engine_specs/test_opensearch.py | 155 +
.../testcontainers/db_engine_specs/test_oracle.py | 107 +
.../db_engine_specs/test_postgres.py | 690 +
.../charts/commands/data/test_get_data_command.py | 63 +-
.../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_export_api.py | 44 +
tests/unit_tests/charts/test_schemas.py | 51 +-
tests/unit_tests/commands/chart/create_test.py | 2 +
.../commands/chart/test_warm_up_cache.py | 135 +
tests/unit_tests/commands/chart/update_test.py | 2 +
.../commands/dashboard/permalink_create_test.py | 131 +
.../dashboard/restore_semantic_filters_test.py | 363 +
.../unit_tests/commands/dashboard/restore_test.py | 3 +
tests/unit_tests/commands/dashboard/update_test.py | 87 +
.../deletion_retention/test_prune_audit.py | 33 +-
.../deletion_retention/test_purge_chart_detach.py | 301 +
.../deletion_retention/test_purge_policy.py | 1632 +-
.../commands/importers/v1/examples_test.py | 51 +
.../unit_tests/commands/importers/v1/utils_test.py | 143 +
tests/unit_tests/commands/report/alert_test.py | 21 +-
tests/unit_tests/commands/report/create_test.py | 1 +
tests/unit_tests/commands/report/execute_test.py | 374 +-
tests/unit_tests/commands/report/executor_test.py | 621 +
tests/unit_tests/commands/report/run_as_test.py | 1340 +
.../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/delete_test.py | 634 +-
.../semantic_layer/view_data_access_test.py | 148 +
.../commands/theme/test_import_themes.py | 89 +
.../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 | 40 +
.../common/test_query_context_processor.py | 302 +-
.../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 | 38 +
.../unit_tests/coordination/test_cache_backend.py | 189 +
tests/unit_tests/dao/dashboard_test.py | 551 +-
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 | 213 +
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 | 67 +
tests/unit_tests/dashboards/schema_tests.py | 37 +-
.../dashboards/semantic_view_access_test.py | 186 +
.../dashboards/test_excel_export_sync_budget.py | 47 +
tests/unit_tests/dashboards/test_export_api.py | 55 +
tests/unit_tests/databases/api_test.py | 47 +-
tests/unit_tests/dataframe_test.py | 86 +
tests/unit_tests/datasets/dao/dao_tests.py | 65 +
tests/unit_tests/datasets/schema_tests.py | 52 +
tests/unit_tests/datasource/test_compatible_api.py | 85 +
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 +-
tests/unit_tests/db_engine_specs/test_d1.py | 48 +-
.../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 +-
.../unit_tests/db_engine_specs/test_shillelagh.py | 13 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 25 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 83 +
tests/unit_tests/db_engine_specs/test_trino.py | 52 +
.../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/extensions/test_sqlalchemy.py | 89 +
tests/unit_tests/importexport/api_test.py | 42 +
tests/unit_tests/initialization_test.py | 73 +
.../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_big_number_headline.py | 665 +
.../mcp_service/chart/test_bubble_chart.py | 10 +-
.../mcp_service/chart/test_bullet_chart.py | 5316 ++++
.../mcp_service/chart/test_bullet_tool_paths.py | 2344 ++
.../mcp_service/chart/test_chart_helpers.py | 844 +-
.../chart/test_chart_plugin_contract.py | 355 +-
.../mcp_service/chart/test_chart_schemas.py | 244 +
.../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 | 593 +-
.../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 | 351 +
...ative_form_data_and_dataset_rebind_contracts.py | 1328 +
.../mcp_service/chart/test_new_chart_types.py | 4 +-
.../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 | 530 +
.../mcp_service/chart/test_sunburst_chart.py | 5584 ++++
.../mcp_service/chart/test_treemap_completeness.py | 88 +-
.../chart/tool/test_column_suggestions.py | 617 +
.../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 | 2866 +-
.../chart/tool/test_get_chart_preview.py | 424 +-
.../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 | 1405 +-
.../chart/tool/test_update_chart_preview.py | 395 +-
.../chart/tool/test_update_chart_rebind.py | 1006 +
.../validation/test_column_name_normalization.py | 26 +
.../chart/validation/test_dataset_validator.py | 421 +-
.../common/test_time_range_validation.py | 82 +-
.../dashboard/test_dashboard_schemas.py | 120 +
.../mcp_service/dashboard/test_layout_placement.py | 101 +
.../mcp_service/dashboard/test_permalink.py | 40 +-
.../dashboard/tool/test_apply_dashboard_filters.py | 2407 +-
.../dashboard/tool/test_dashboard_generation.py | 79 +-
.../dashboard/tool/test_delete_dashboard.py | 1 +
.../dashboard/tool/test_duplicate_dashboard.py | 59 +-
.../dashboard/tool/test_get_dashboard_data.py | 44 +
.../dashboard/tool/test_get_dashboard_datasets.py | 222 +-
.../dashboard/tool/test_get_dashboard_layout.py | 4 +-
.../tool/test_manage_dashboard_markdown.py | 1279 +
.../dashboard/tool/test_manage_dashboard_owners.py | 1 +
.../dashboard/tool/test_manage_dashboard_roles.py | 2 +
.../dashboard/tool/test_manage_native_filters.py | 2025 +-
.../tool/test_managed_dashboard_refusal.py | 353 +
.../dashboard/tool/test_restore_dashboard.py | 4 +
.../mcp_service/dataset/tool/test_query_dataset.py | 970 +-
.../dataset/tool/test_sql_dataset_guidance.py | 181 +
.../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 | 139 +
.../tool/test_get_compatible_dimensions.py | 12 +
.../tool/test_get_compatible_metrics.py | 11 +
.../semantic_layer/tool/test_get_table.py | 1321 +-
.../semantic_layer/tool/test_list_metrics.py | 15 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 27 +-
.../sql_lab/tool/test_execute_sql_response.py | 127 +
.../system/resources/test_schema_discovery.py | 2 +-
.../mcp_service/system/tool/test_get_schema.py | 11 +
.../mcp_service/test_chart_tool_inventory.py | 44 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 11 +-
tests/unit_tests/mcp_service/test_dataset_scope.py | 247 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 97 +
.../mcp_service/test_mcp_tool_registration.py | 3 +
tests/unit_tests/mcp_service/test_middleware.py | 228 +-
.../mcp_service/test_middleware_logging.py | 140 +-
.../mcp_service/test_native_tool_surface.py | 1144 +
tests/unit_tests/mcp_service/test_simple_proxy.py | 47 +
.../test_tool_description_constraints.py | 700 +
.../unit_tests/mcp_service/test_tool_inventory.py | 49 +-
.../mcp_service/test_tool_search_transform.py | 317 +-
.../mcp_service/test_validation_contract.py | 54 +-
.../mcp_service/test_worker_metadata_pool.py | 6 +-
.../mcp_service/utils/test_cache_utils.py | 32 +-
.../mcp_service/utils/test_response_size_utils.py | 85 +
.../mcp_service/utils/test_response_utils.py | 246 +
.../mcp_service/utils/test_serialization.py | 68 +
.../test_add_run_as_and_report_config.py | 274 +
.../test_add_theme_editors_theme_id_index.py | 90 +
tests/unit_tests/models/dashboard_test.py | 191 +
tests/unit_tests/models/helpers_test.py | 204 +
tests/unit_tests/models/slice_test.py | 153 +
.../unit_tests/models/test_certification_mixin.py | 76 +
tests/unit_tests/pandas_postprocessing/test_cum.py | 39 +
.../pandas_postprocessing/test_geography.py | 122 +
.../pandas_postprocessing/test_histogram.py | 32 +-
.../pandas_postprocessing/test_rename.py | 96 +
.../unit_tests/pandas_postprocessing/test_utils.py | 88 +
tests/unit_tests/queries/query_object_test.py | 51 +-
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 +
.../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 | 27 +
.../scripts/translations/backfill_po_test.py | 226 +-
.../scripts/translations/check_pot_drift_test.py | 215 +-
tests/unit_tests/security/manager_test.py | 627 +-
.../unit_tests/security/semantic_guest_rls_test.py | 401 +
.../security/test_guest_token_dataset_allowlist.py | 6 +-
.../unit_tests/security/test_password_recovery.py | 1067 +
.../security/test_password_recovery_rate_limit.py | 71 +
.../security/typed_datasource_access_test.py | 381 +
tests/unit_tests/semantic_layers/api_test.py | 161 +
.../semantic_layers/cache_coordination_test.py | 525 +
.../unit_tests/semantic_layers/cache_host_test.py | 369 +
.../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 | 963 +
.../semantic_layers/cache_repository_test.py | 929 +
tests/unit_tests/semantic_layers/cache_test.py | 956 +
.../semantic_layers/cache_transform_test.py | 223 +
tests/unit_tests/semantic_layers/conftest.py | 92 +
.../semantic_layers/dimension_resolution_test.py | 161 +
.../semantic_layers/e2e_stub_extension_test.py | 252 +
.../semantic_layers/grain_validation_test.py | 127 +
.../semantic_layers/import_export_test.py | 22 +
.../semantic_layers/integer_precision_test.py | 366 +
tests/unit_tests/semantic_layers/labels_test.py | 13 +
.../semantic_layers/layer_list_scope_test.py | 215 +
tests/unit_tests/semantic_layers/layer_test.py | 91 +
tests/unit_tests/semantic_layers/mapper_test.py | 1239 +-
tests/unit_tests/semantic_layers/members_test.py | 83 +
.../semantic_layers/metadata_contract_test.py | 174 +
.../semantic_layers/metric_filter_test.py | 288 +
tests/unit_tests/semantic_layers/models_test.py | 893 +-
.../semantic_layers/null_filters_test.py | 339 +
.../semantic_layers/query_errors_test.py | 724 +
.../semantic_layers/result_completeness_test.py | 86 +
.../semantic_layers/simple_cache_clear_test.py | 665 +
tests/unit_tests/semantic_layers/test_access.py | 42 +
.../semantic_layers/test_runtime_flag.py | 216 +
.../semantic_layers/values_endpoint_test.py | 465 +-
.../soft_delete/test_restore_purge_hoist.py | 13 +
tests/unit_tests/sql/execution/conftest.py | 1 +
tests/unit_tests/sql/execution/test_celery_task.py | 2222 +-
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 | 112 +
tests/unit_tests/sql_lab_test.py | 1714 ++
.../subjects/test_creator_group_call_sites.py | 22 +-
tests/unit_tests/subjects/test_raise_for_access.py | 12 +-
tests/unit_tests/subjects/test_security.py | 21 +
tests/unit_tests/tasks/test_async_queries.py | 112 +-
tests/unit_tests/tasks/test_deletion_retention.py | 905 +-
.../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 +
.../unit_tests/utils/geographic_world_test.py | 40 +-
tests/unit_tests/utils/test_cache_manager.py | 33 +
tests/unit_tests/utils/test_error_sanitization.py | 132 +-
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 +
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 | 559 +-
tests/unit_tests/views/test_error_handling.py | 241 +-
1170 files changed, 211145 insertions(+), 34808 deletions(-)
create mode 100644 docs/developer_docs/contributing/translation-guide.md
create mode 100644 docs/developer_docs/extensions/semantic-filters.md
create mode 100644 docs/developer_docs/semantic-layer-cache-clear.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
delete mode 100755 scripts/eslint.sh
create mode 100644 superset-core/src/superset_core/semantic_layers/errors.py
create mode 100644 superset-core/tests/semantic_layers/test_errors.py
create mode 100644 superset-core/tests/semantic_layers/test_view.py
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/types.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
delete mode 100644 superset-frontend/packages/superset-ui-core/types/react-table-config.d.ts
copy superset-frontend/{src => packages/superset-ui-core}/types/react-table.d.ts (52%)
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/global-async-query-resilience.spec.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/global-async-query.spec.ts
create mode 100644 superset-frontend/playwright/tests/semantic-view/semantic-view-dashboard.spec.ts
create mode 100644 superset-frontend/playwright/tests/sqllab/global-async-query-sqllab.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/JsonCellRenderer.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/jsonCellRowHeight.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/parseJsonCellValue.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/isJsonCellActionTarget.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/JsonCellRenderer.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/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%)
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx => plugins/preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (52%)
create mode 100644 superset-frontend/spec/fixtures/mockSemanticDashboardDatasources.ts
create mode 100644 superset-frontend/spec/helpers/geographicControlPanel.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/dashboard/actions/datasources.test.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.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
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/types.ts => src/dashboard/contexts/DashboardDatasetsContext.ts} (71%)
create mode 100644 superset-frontend/src/explore/components/ChartPills.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.debounce.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/MapViewControl/ExtentTag.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/ViewQueryModalFooter.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/XAxisSortControl.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigControl.test.tsx
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/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/middleware/asyncQueryError.ts
create mode 100644 superset-frontend/src/pages/ActionLog/ActionLog.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/ForgotPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/index.tsx
copy superset-frontend/src/{explore/components/controls/XAxisSortControl.tsx => pages/Login/styles.ts} (55%)
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/downloadAsPdf.test.ts
create mode 100644 superset/commands/report/update_config.py
create mode 100644 superset/commands/security/password_recovery.py
create mode 100644 superset/mcp_service/chart/big_number_headline.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/mcp_service/dashboard/layout_placement.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_markdown.py
create mode 100644 superset/migrations/versions/2026-09-16_00-01_00fab727cd0a_add_theme_editors_theme_id_index.py
create mode 100644 superset/migrations/versions/2026-10-05_12-00_e4a7c2b9d1f3_add_run_as_and_report_config.py
copy superset/{mcp_service/dashboard/constants.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/members.py
create mode 100644 superset/sql/execution/utils.py
copy superset/{mcp_service/dashboard/constants.py => tasks/retention_cap.py} (57%)
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
create mode 100644 tests/integration_tests/superset_test_config_gaq.py
copy superset/mcp_service/dashboard/constants.py => tests/integration_tests/superset_test_config_semantic.py (50%)
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/testcontainers/db_engine_specs/test_opensearch.py
create mode 100644 tests/unit_tests/charts/data/test_time_range_validation.py
create mode 100644 tests/unit_tests/charts/test_export_api.py
create mode 100644 tests/unit_tests/commands/chart/test_warm_up_cache.py
create mode 100644 tests/unit_tests/commands/dashboard/permalink_create_test.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
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/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
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/dashboards/test_export_api.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_big_number_headline.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_column_suggestions.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/dashboard/test_layout_placement.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_markdown.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_managed_dashboard_refusal.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_sql_dataset_guidance.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/sql_lab/tool/test_execute_sql_response.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/mcp_service/test_tool_description_constraints.py
create mode 100644 tests/unit_tests/migrations/test_add_run_as_and_report_config.py
create mode 100644 tests/unit_tests/migrations/test_add_theme_editors_theme_id_index.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/semantic_guest_rls_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/security/typed_datasource_access_test.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/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/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/metadata_contract_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_utils.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/commands/security/exceptions.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_restore_datasource_race.py
create mode 100644 tests/unit_tests/versioning/test_restore_missing_datasource.py