This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/annotation-cache-scope
in repository https://gitbox.apache.org/repos/asf/superset.git
from 4e7dee066cd fix(charts): never cache annotation data under an
unresolved scope
add bc3698b5d64 test(explore): port remaining deleted Cypress explore
specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed
restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from
post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string
extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails
during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in
CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against
NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to
info (#43520)
add 396030d87e0 docs: remove stale Selenium references after
Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in
instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal
x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync
with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for
Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are
disabled or realtime access is missing (#44796)
add 7260916b905 test(dashboard): cover "View as table" end-to-end for a
view-as-table-only role (#44881)
add 646de3a46b5 test(clickhouse): cover GROUP BY ALL against a real
instance (#40482) (#44879)
add ba453d3cb43 fix(sec): sanitize HTML text before shown as impact item's
label (#43825)
add 2220f53d9db fix(chart): accept quarter and day in end-of time ranges
(#43204)
add 62ab4cae23d fix(sql-lab): avoid duplicate generated result column
names (#44189)
add 743a27f7ed3 fix(chart): sort Heatmap Y-axis by default when unset
(#44588)
add 87bb752814a fix(select): remove Space wrapper from optionRender to fix
option label truncation (#44357)
add d6689283942 fix(sql-lab): use function valueGetter for GridTable row
numbers (#41574)
add 10356c30edb fix(mcp): stop partial-update tools from advertising null
defaults (#44573)
add 6966c1f6ccb fix(cartodiagram): share Pie colors across locations in
Explore (#44794)
add 81466987cbb fix(mcp): use create_proxy in simple_proxy for fastmcp 4
compatibility (#44787)
add ea79c63e878 fix(post-processing): stop treating gaps as zero for
cumprod, cummin and cummax (#44828)
add f1ae8909d85 fix(import): remove duplicate config redefinition in
load_configs (#44932)
add afa98f3391a perf(deletion-retention): one window pass for repeat
predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement
from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector
requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to
1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool
discovery (#44656)
add 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 d7dea0e6f5c chore: merge master into fix/annotation-cache-scope
add 404f14e3a41 test: adapt semantic annotation versioning test to scoped
annotation key
No new revisions were added by this update.
Summary of changes:
.github/CODEOWNERS | 8 +-
.github/dependabot.yml | 93 +-
.github/workflows/bashlib.sh | 149 +-
.github/workflows/chromatic.yml | 134 +
.github/workflows/codeql-analysis.yml | 11 +-
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 2 +-
.github/workflows/superset-e2e.yml | 169 +
.github/workflows/testcontainers.yml | 1 +
Dockerfile | 8 +-
README.md | 9 +-
RESOURCES/INTHEWILD.yaml | 3 +-
UPDATING.md | 197 +
docker-compose-light.yml | 1 -
docker-compose.yml | 1 -
docker/.env | 1 -
docs/admin_docs/configuration/alerts-reports.mdx | 180 +-
.../configuration/async-queries-celery.mdx | 7 +
docs/admin_docs/configuration/cache.mdx | 37 +-
.../configuration/dashboard-performance.mdx | 4 +-
docs/admin_docs/configuration/mcp-server.mdx | 558 +-
docs/admin_docs/installation/docker-builds.mdx | 1 -
.../contributing/development-setup.md | 3 +-
docs/developer_docs/contributing/howtos.md | 94 +-
.../extensions/contribution-types.md | 19 +
docs/developer_docs/extensions/mcp.md | 81 +
docs/developer_docs/semantic-layer-cache-clear.md | 106 +
.../developer_docs/semantic-result-completeness.md | 70 +
docs/developer_docs/testing/backend-testing.md | 3 +-
.../creating-your-first-dashboard.mdx | 50 +
docs/docs/using-superset/embedding.mdx | 3 +-
docs/docs/using-superset/exploring-data.mdx | 26 +
.../using-superset/exporting-dashboard-data.mdx | 4 +-
docs/docs/using-superset/recently-archived.mdx | 172 +-
.../using-superset/semantic-member-selections.mdx | 4 +
.../docs/using-superset/using-ai-with-superset.mdx | 122 +
docs/docs/using-superset/version-history.mdx | 33 +-
docs/package.json | 14 +-
docs/static/feature-flags.json | 8 +-
docs/static/img/logos/douroeci.png | Bin 0 -> 22657 bytes
docs/static/resources/openapi.json | 355 +-
docs/yarn.lock | 722 +-
pyproject.toml | 61 +-
requirements/base.in | 4 +-
requirements/base.txt | 28 +-
requirements/development.txt | 42 +-
scripts/change_detector.py | 7 +
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 | 42 +
.../src/superset_core/semantic_layers/layer.py | 18 +-
.../src/superset_core/semantic_layers/view.py | 34 +-
superset-core/tests/semantic_layers/test_errors.py | 66 +
.../tests/semantic_layers/test_view.py | 8 +-
superset-embedded-sdk/package-lock.json | 379 +-
superset-embedded-sdk/package.json | 6 +-
superset-frontend/jest.config.js | 2 +-
superset-frontend/package-lock.json | 1443 ++--
superset-frontend/package.json | 56 +-
.../packages/generator-superset/package.json | 4 +-
.../superset-core/src/theme/GlobalStyles.test.tsx | 67 +
.../superset-core/src/theme/GlobalStyles.tsx | 9 +-
.../src/shared-controls/sharedControls.tsx | 21 +
.../src/utils/D3Formatting.ts | 1 +
.../packages/superset-ui-core/package.json | 6 +-
.../src/chart/models/ChartProps.ts | 10 +
.../components/MetadataBar/MetadataBar.test.tsx | 40 +-
.../src/components/MetadataBar/MetadataBar.tsx | 6 +-
.../src/components/Select/AsyncSelect.test.tsx | 8 +
.../src/components/Select/AsyncSelect.tsx | 3 +-
.../src/components/Select/Select.test.tsx | 9 +
.../src/components/Select/Select.tsx | 3 +-
.../src/components/Table/VirtualTable.test.tsx | 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 +
.../src/query/buildQueryContext.ts | 15 +-
.../superset-ui-core/src/utils/featureFlags.ts | 1 +
.../test/chart/models/ChartProps.test.ts | 22 +-
.../test/query/buildQueryContext.test.ts | 41 +
.../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 +-
.../tests/dashboard/dashboard-test-helpers.ts | 464 +-
.../global-async-query-resilience.spec.ts | 600 ++
.../tests/dashboard/global-async-query.spec.ts | 462 ++
.../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 | 14 +
.../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/cellSelectionWiring.test.tsx | 88 +
.../test/controlPanel.test.ts | 8 +
.../test/transformProps.test.ts | 25 +
.../src/util/transformPropsUtil.ts | 8 +
.../test/util/pieColors.test.ts | 203 +
.../plugin-chart-country-map/src/CountryMap.ts | 30 +-
.../plugin-chart-country-map/src/controlPanel.ts | 23 +
.../src/countries/uk.geojson | Bin 477503 -> 477503
bytes
.../src/normalizeRegions.ts | 129 +
.../plugin-chart-country-map/src/regions.ts | 383 +
.../plugin-chart-country-map/src/transformProps.ts | 53 +-
.../test/CountryMap.test.tsx | 109 +
.../test/controlPanel.test.ts} | 30 +-
.../test/geographicRendering.test.tsx | 296 +
.../test/normalizeRegions.test.ts | 251 +
.../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/Heatmap/controlPanel.tsx | 12 +-
.../src/Heatmap/transformProps.ts | 17 +-
.../plugin-chart-echarts/src/Heatmap/types.ts | 6 +
.../src/MixedTimeseries/controlPanel.tsx | 2 +
.../src/MixedTimeseries/transformProps.ts | 3 +
.../src/MixedTimeseries/types.ts | 2 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 4 +-
.../src/Timeseries/Area/controlPanel.tsx | 2 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 1 +
.../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 +
.../plugin-chart-echarts/src/utils/formatters.ts | 40 +-
.../plugin-chart-echarts/src/utils/series.ts | 28 +-
.../test/BoxPlot/buildQuery.test.ts | 20 +
.../test/Heatmap/transformProps.test.ts | 67 +-
.../test/MixedTimeseries/transformProps.test.ts | 15 +
.../test/Rose/buildQuery.test.ts | 12 +
.../test/Timeseries/transformProps.test.ts | 60 +
.../test/utils/formatters.test.ts | 118 +
.../plugin-chart-echarts/test/utils/series.test.ts | 96 +-
.../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/controlPanel.tsx | 28 +-
.../src/plugin/transformProps.ts | 2 +
.../src/react-pivottable/TableRenderers.tsx | 109 +-
.../src/react-pivottable/utilities.ts | 46 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 5 +
.../test/plugin/buildQuery.test.ts | 49 +
.../test/react-pivottable/tableRenders.test.tsx | 446 ++
.../test/react-pivottable/utilities.test.ts | 217 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 85 +-
.../plugin-chart-table/src/controlPanel.tsx | 58 +-
.../plugin-chart-table/test/buildQuery.test.ts | 312 +
.../plugin-chart-table/test/controlPanel.test.ts | 44 +
.../plugin-chart-table/test/controlPanel.test.tsx | 56 +
.../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} | 30 +-
.../test/transformData.test.ts | 169 +
.../test/transformProps.test.ts | 52 +
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/layers/Scatter/buildQuery.test.ts | 24 +
.../src/layers/Scatter/buildQuery.ts | 7 +-
.../src/layers/Scatter/controlPanel.test.ts} | 30 +-
.../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 | 203 +-
.../spec/helpers/geographicControlPanel.ts | 75 +
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 56 +
.../DynamicGroupBy/DynamicGroupByPlugin.tsx | 52 +-
.../DynamicGroupBy/columnAllowlist.test.ts | 67 +
.../components/DynamicGroupBy/columnAllowlist.ts | 105 +
.../components/DynamicGroupBy/types.ts | 5 +
.../ChartContextMenu/ChartContextMenu.test.tsx | 2 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 2 +-
.../components/Chart/MenuItemWithTruncation.tsx | 5 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 2 +-
.../CollectionTable/CollectionTable.test.tsx | 236 +-
.../components/CollectionTable/index.tsx | 75 +-
.../src/components/GridTable/index.tsx | 10 +-
.../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 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
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 +-
.../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 +
.../src/dashboard/components/SliceHeader/index.tsx | 2 +
.../SliceHeaderControls.test.tsx | 71 +
.../ViewAsTableRendering.test.tsx | 309 +
.../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 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 92 +-
.../FilterBar/FilterControls/FilterValue.tsx | 23 +-
.../FilterControls/GroupByFilterCard.test.tsx | 183 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 41 +-
.../FiltersConfigForm/ColumnSelect.test.tsx | 39 +
.../FiltersConfigForm/ColumnSelect.tsx | 99 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 211 +-
.../GroupByColumnAllowlist.test.tsx | 429 ++
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 48 +-
.../hooks/useFilterOperations.test.ts | 62 +
.../hooks/useFilterOperations.ts | 10 +-
.../transformers/customizationTransformer.test.ts | 109 +
.../transformers/customizationTransformer.ts | 59 +-
.../nativeFilters/FiltersConfigModal/types.ts | 4 +
.../useDisplayControlDatasource.test.ts | 22 +-
.../nativeFilters/useDisplayControlDatasource.ts | 25 +-
.../dashboard/containers/DashboardPage.test.tsx | 153 +-
.../src/dashboard/containers/DashboardPage.tsx | 79 +-
.../contexts/DashboardDatasetsContext.ts} | 11 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 327 +
.../src/dashboard/reducers/dashboardInfo.ts | 160 +
superset-frontend/src/dashboard/types.ts | 13 +
.../ExploreViewContainer.test.tsx | 153 +
.../components/ExploreViewContainer/index.tsx | 32 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../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 +
.../ControlPopover/ControlPopover.test.tsx | 66 +
.../controls/ControlPopover/ControlPopover.tsx | 39 +-
.../ColumnSelectPopover.test.tsx | 38 +-
.../DndColumnSelect.test.tsx | 20 +-
.../DndMetricSelect.test.tsx | 90 +
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 4 +-
.../controls/MapViewControl/ExtentTag.test.tsx | 68 +
.../controls/MapViewControl/ExtentTag.tsx | 13 +-
.../components/controls/MapViewControl/types.ts | 6 +-
.../AdhocMetricEditPopover.test.tsx | 4 +-
.../components/controls/SelectControl.test.tsx | 55 +
.../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 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 115 +
.../ZoomConfigControl/ZoomConfigControl.tsx | 36 +-
.../useExploreAdditionalActionsMenu/index.tsx | 40 +-
.../useExploreAdditionalActionsMenu.test.tsx | 71 +-
.../src/explore/exploreUtils/exploreUtils.test.tsx | 32 +
.../src/explore/reducers/exploreReducer.test.ts | 72 +-
.../src/explore/reducers/exploreReducer.ts | 25 +-
.../src/features/alerts/AlertReportModal.test.tsx | 428 ++
.../src/features/alerts/AlertReportModal.tsx | 1012 ++-
.../alerts/ReportConfigurationModal.test.tsx | 409 +
.../features/alerts/ReportConfigurationModal.tsx | 488 ++
.../alerts/hooks/useReportConfiguration.ts | 64 +
superset-frontend/src/features/alerts/types.ts | 34 +-
.../DatabaseConnectionForm/CommonParameters.tsx | 2 +
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
.../reports/ReportModal/ReportModal.test.tsx | 279 +-
.../src/features/reports/ReportModal/index.tsx | 83 +-
superset-frontend/src/features/reports/types.ts | 2 +
.../semanticLayers/SemanticLayerModal.test.tsx | 130 +-
.../features/semanticLayers/SemanticLayerModal.tsx | 75 +-
.../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 +
.../ArchivedList/ArchivedDatasetPurgeModal.tsx | 3 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 2 +
superset-frontend/src/pages/Home/Home.test.tsx | 2 +-
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 | 6 +-
.../src/utils/semanticViewStructure.ts | 40 +-
superset-frontend/src/utils/urlUtils.ts | 17 +
superset-frontend/src/views/App.test.tsx | 12 +-
superset-frontend/src/views/App.tsx | 11 +-
.../TimeTable/components/LeftCell/LeftCell.tsx | 18 +-
.../TimeTable/config/buildQuery.test.ts | 14 +
superset-websocket/package-lock.json | 574 +-
superset-websocket/package.json | 12 +-
.../utils/client-ws-app/package-lock.json | 17 +-
superset/charts/api.py | 18 +-
superset/charts/data/api.py | 7 +-
superset/charts/data/form_data.py | 2 +-
superset/charts/filters.py | 10 +-
superset/commands/chart/importers/v1/__init__.py | 7 +-
superset/commands/chart/restore_version.py | 17 +
superset/commands/dashboard/permalink/create.py | 43 +-
superset/commands/dashboard/update.py | 19 +
.../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/utils.py | 3 +
superset/commands/report/alert.py | 52 +-
superset/commands/report/base.py | 175 +-
superset/commands/report/create.py | 46 +
superset/commands/report/exceptions.py | 155 +-
superset/commands/report/execute.py | 213 +-
superset/commands/report/update.py | 324 +-
superset/commands/report/update_config.py | 145 +
superset/commands/security/reset.py | 22 +-
superset/commands/semantic_layer/update.py | 58 +-
superset/commands/theme/import_themes.py | 57 +-
superset/commands/version_restore.py | 5 +
superset/common/form_data_query_context.py | 1599 +++-
superset/common/query_context_factory.py | 60 +-
superset/common/query_context_processor.py | 37 +-
superset/common/query_object.py | 27 +-
superset/common/tabular_query.py | 7 +-
superset/common/utils/dataframe_utils.py | 8 +-
superset/config.py | 50 +-
superset/daos/datasource.py | 21 +-
superset/daos/key_value.py | 14 +-
superset/daos/report.py | 212 +-
superset/dashboards/api.py | 19 +-
superset/dashboards/excel_export/workbook.py | 11 +-
superset/dashboards/schemas.py | 17 +-
superset/datasets/schemas.py | 39 +-
superset/datasource/api.py | 97 +-
superset/db_engine_specs/bigquery.py | 20 +-
superset/db_engine_specs/d1.py | 20 -
superset/db_engine_specs/gsheets.py | 23 +-
superset/db_engine_specs/impala.py | 118 +-
superset/db_engine_specs/shillelagh.py | 20 +-
superset/db_engine_specs/sqlite.py | 16 +-
superset/exceptions.py | 26 +
superset/initialization/__init__.py | 4 +
superset/key_value/types.py | 37 +-
superset/mcp_service/CLAUDE.md | 2 +-
superset/mcp_service/app.py | 17 +-
superset/mcp_service/auth.py | 13 +-
superset/mcp_service/chart/big_number_headline.py | 388 +
superset/mcp_service/chart/chart_helpers.py | 587 +-
superset/mcp_service/chart/chart_utils.py | 1372 +++-
superset/mcp_service/chart/compile.py | 157 +-
superset/mcp_service/chart/plugin.py | 221 +-
superset/mcp_service/chart/plugins/__init__.py | 15 +
superset/mcp_service/chart/plugins/big_number.py | 23 +-
superset/mcp_service/chart/plugins/bubble.py | 4 +-
superset/mcp_service/chart/plugins/gantt.py | 32 +
superset/mcp_service/chart/plugins/gauge.py | 40 +-
superset/mcp_service/chart/plugins/geographic.py | 834 ++
superset/mcp_service/chart/plugins/histogram.py | 11 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 84 +-
superset/mcp_service/chart/plugins/pivot_table.py | 4 +
superset/mcp_service/chart/plugins/sunburst.py | 288 +
superset/mcp_service/chart/plugins/table.py | 25 +
superset/mcp_service/chart/plugins/treemap.py | 3 +-
superset/mcp_service/chart/plugins/waterfall.py | 6 +-
superset/mcp_service/chart/plugins/xy.py | 185 +-
superset/mcp_service/chart/preview_utils.py | 395 +-
superset/mcp_service/chart/query_result.py | 1756 ++++-
superset/mcp_service/chart/registry.py | 18 +
.../mcp_service/chart/resources/chart_configs.py | 75 +-
superset/mcp_service/chart/response_preflight.py | 204 +
superset/mcp_service/chart/schemas.py | 1758 ++++-
superset/mcp_service/chart/sunburst.py | 436 ++
superset/mcp_service/chart/tool/generate_chart.py | 243 +-
superset/mcp_service/chart/tool/get_chart_data.py | 713 +-
superset/mcp_service/chart/tool/get_chart_info.py | 28 +-
.../mcp_service/chart/tool/get_chart_preview.py | 160 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 195 +-
.../chart/tool/get_chart_type_schema.py | 59 +-
superset/mcp_service/chart/tool/list_charts.py | 14 +-
superset/mcp_service/chart/tool/update_chart.py | 596 +-
.../mcp_service/chart/tool/update_chart_preview.py | 407 +-
.../chart/validation/dataset_validator.py | 671 +-
.../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/schemas.py | 746 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 234 +-
.../dashboard/tool/apply_dashboard_filters.py | 280 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 66 +-
.../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 | 47 +-
.../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 | 73 +-
.../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 +-
.../explore/tool/generate_explore_link.py | 9 +-
superset/mcp_service/mcp_config.py | 30 +-
superset/mcp_service/middleware.py | 99 +-
superset/mcp_service/semantic_layer/schemas.py | 8 +-
.../mcp_service/semantic_layer/tool/get_table.py | 128 +-
superset/mcp_service/server.py | 164 +-
superset/mcp_service/simple_proxy.py | 6 +-
superset/mcp_service/sql_lab/schemas.py | 36 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 14 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/utils/cache_utils.py | 32 +-
superset/mcp_service/utils/error_builder.py | 115 +-
superset/mcp_service/utils/response_size_utils.py | 40 +-
superset/mcp_service/utils/response_utils.py | 294 +-
superset/mcp_service/utils/schema_utils.py | 27 +-
superset/mcp_service/utils/serialization.py | 51 +-
...0fab727cd0a_add_theme_editors_theme_id_index.py | 64 +
...00_e4a7c2b9d1f3_add_run_as_and_report_config.py | 178 +
...79af013f48_add_semantic_layer_cache_version.py} | 32 +-
superset/models/helpers.py | 48 +-
superset/models/slice.py | 73 +-
superset/reports/api.py | 181 +-
superset/reports/models.py | 45 +
superset/reports/notifications/email.py | 14 +-
superset/reports/schemas.py | 225 +-
superset/reports/types.py | 20 +-
superset/reports/utils.py | 183 +
superset/result_set.py | 7 +
superset/security/manager.py | 355 +-
superset/semantic_layers/api.py | 61 +-
superset/semantic_layers/completeness.py | 44 +
superset/semantic_layers/mapper.py | 171 +-
superset/semantic_layers/models.py | 257 +-
superset/tasks/api.py | 23 +-
superset/tasks/async_queries.py | 17 +-
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 | 20 +-
superset/translations/ar/LC_MESSAGES/messages.po | 455 +-
superset/translations/ca/LC_MESSAGES/messages.po | 451 +-
superset/translations/cs/LC_MESSAGES/messages.po | 452 +-
superset/translations/de/LC_MESSAGES/messages.po | 451 +-
superset/translations/en/LC_MESSAGES/messages.po | 451 +-
superset/translations/es/LC_MESSAGES/messages.po | 451 +-
superset/translations/fa/LC_MESSAGES/messages.po | 451 +-
superset/translations/fi/LC_MESSAGES/messages.po | 451 +-
superset/translations/fr/LC_MESSAGES/messages.po | 451 +-
superset/translations/it/LC_MESSAGES/messages.po | 451 +-
superset/translations/ja/LC_MESSAGES/messages.po | 450 +-
superset/translations/ko/LC_MESSAGES/messages.po | 450 +-
superset/translations/lv/LC_MESSAGES/messages.po | 452 +-
superset/translations/messages.pot | 426 +-
superset/translations/mi/LC_MESSAGES/messages.po | 451 +-
superset/translations/nl/LC_MESSAGES/messages.po | 451 +-
superset/translations/pl/LC_MESSAGES/messages.po | 451 +-
superset/translations/pt/LC_MESSAGES/messages.po | 8068 ++++++++++----------
.../translations/pt_BR/LC_MESSAGES/messages.po | 4289 ++++++-----
superset/translations/ro/LC_MESSAGES/messages.po | 452 +-
superset/translations/ru/LC_MESSAGES/messages.po | 452 +-
superset/translations/sk/LC_MESSAGES/messages.po | 452 +-
superset/translations/sl/LC_MESSAGES/messages.po | 453 +-
superset/translations/sr/LC_MESSAGES/messages.po | 452 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 452 +-
superset/translations/ta/LC_MESSAGES/messages.po | 451 +-
superset/translations/th/LC_MESSAGES/messages.po | 450 +-
superset/translations/tr/LC_MESSAGES/messages.po | 450 +-
superset/translations/uk/LC_MESSAGES/messages.po | 453 +-
superset/translations/zh/LC_MESSAGES/messages.po | 450 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 450 +-
superset/utils/core.py | 12 +-
superset/utils/date_parser.py | 61 +-
superset/utils/geographic.py | 105 +
superset/utils/geographic_regions.py | 385 +
superset/utils/geographic_world.py | 205 +
.../utils/pandas_postprocessing/contribution.py | 24 +-
superset/utils/pandas_postprocessing/cum.py | 7 +-
superset/utils/pandas_postprocessing/histogram.py | 8 +-
superset/utils/pandas_postprocessing/utils.py | 25 +-
superset/versioning/api_helpers.py | 14 +-
superset/versioning/baseline/listener.py | 6 +-
superset/versioning/changes/listener.py | 21 +-
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/base.py | 1 +
superset/views/dashboard/mixin.py | 1 +
superset/views/error_handling.py | 12 +-
superset/views/users/api.py | 21 +-
tests/common/assert_utils.py | 2 +-
.../charts/semantic_metadata_authz_tests.py | 640 ++
.../deletion_retention/force_purge_tests.py | 11 +-
.../deletion_retention/prune_audit_tests.py | 88 +
.../deletion_retention/purge_tests.py | 210 +-
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/config_tests.py | 104 +
.../integration_tests/superset_test_config_gaq.py | 59 +
tests/integration_tests/tasks/api_tests.py | 128 +-
.../versioning/retention_prune_tests.py | 65 +
.../db_engine_specs/test_clickhouse.py | 43 +
tests/testcontainers/db_engine_specs/test_crate.py | 44 +
tests/testcontainers/db_engine_specs/test_mysql.py | 166 +-
.../db_engine_specs/test_opensearch.py | 155 +
.../testcontainers/db_engine_specs/test_oracle.py | 107 +
.../charts/data/test_time_range_validation.py | 48 +
.../charts/semantic_view_chart_filter_test.py | 14 +-
tests/unit_tests/charts/test_export_api.py | 44 +
.../commands/dashboard/permalink_create_test.py | 131 +
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 +++-
.../unit_tests/commands/importers/v1/utils_test.py | 34 +
tests/unit_tests/commands/report/alert_test.py | 21 +-
tests/unit_tests/commands/report/create_test.py | 37 +
tests/unit_tests/commands/report/execute_test.py | 179 +-
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/theme/test_import_themes.py | 89 +
.../common/test_form_data_query_context.py | 296 +-
.../common/test_query_context_factory.py | 40 +
.../common/test_query_context_processor.py | 155 +-
tests/unit_tests/dao/key_value_test.py | 42 +
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/datasets/dao/dao_tests.py | 65 +
tests/unit_tests/datasets/schema_tests.py | 52 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 86 +-
tests/unit_tests/db_engine_specs/test_d1.py | 48 +-
.../db_engine_specs/test_impala_pending.py | 303 +
.../unit_tests/db_engine_specs/test_shillelagh.py | 13 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 83 +
.../distributed_lock/distributed_lock_tests.py | 6 +-
tests/unit_tests/extensions/test_sqlalchemy.py | 89 +
.../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_chart_helpers.py | 776 +-
.../chart/test_chart_plugin_contract.py | 318 +-
.../mcp_service/chart/test_chart_schemas.py | 244 +
.../mcp_service/chart/test_chart_utils.py | 895 +++
tests/unit_tests/mcp_service/chart/test_compile.py | 550 +-
.../mcp_service/chart/test_gantt_chart.py | 35 +-
.../mcp_service/chart/test_geographic_chart.py | 2199 ++++++
.../chart/test_histogram_boxplot_charts.py | 8 +-
..._metric_aggregation_and_comparison_contracts.py | 379 +
...ative_form_data_and_dataset_rebind_contracts.py | 1326 ++++
.../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 | 486 ++
.../test_review_query_and_preview_regressions.py | 438 ++
.../mcp_service/chart/test_sunburst_chart.py | 5579 ++++++++++++++
.../mcp_service/chart/test_treemap_completeness.py | 88 +-
.../chart/tool/test_column_suggestions.py | 617 ++
.../mcp_service/chart/tool/test_generate_chart.py | 95 +
.../mcp_service/chart/tool/test_get_chart_data.py | 2809 ++++++-
.../chart/tool/test_get_chart_preview.py | 417 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 332 +-
.../chart/tool/test_saved_chart_datasource.py | 422 +
.../mcp_service/chart/tool/test_update_chart.py | 893 +--
.../chart/tool/test_update_chart_preview.py | 318 +-
.../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 +
.../dashboard/tool/test_apply_dashboard_filters.py | 1202 ++-
.../dashboard/tool/test_dashboard_generation.py | 79 +-
.../dashboard/tool/test_delete_dashboard.py | 1 +
.../dashboard/tool/test_get_dashboard_data.py | 44 +
.../dashboard/tool/test_get_dashboard_datasets.py | 220 +-
.../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 | 1 +
.../mcp_service/dataset/tool/test_query_dataset.py | 954 ++-
.../dataset/tool/test_sql_dataset_guidance.py | 181 +
.../explore/tool/test_generate_explore_link.py | 476 +-
.../mcp_service/native_tool_inventory.json | 1289 ++++
.../semantic_layer/tool/test_get_table.py | 1057 ++-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 27 +-
.../sql_lab/tool/test_execute_sql_response.py | 127 +
.../system/resources/test_instance_metadata.py | 144 +
.../system/tool/test_get_current_user.py | 6 +-
.../mcp_service/test_chart_tool_inventory.py | 2 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 11 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 69 +
.../mcp_service/test_mcp_tool_registration.py | 109 +
tests/unit_tests/mcp_service/test_middleware.py | 194 +-
.../mcp_service/test_middleware_logging.py | 138 +-
.../mcp_service/test_native_tool_surface.py | 1144 +++
.../test_tool_description_constraints.py | 700 ++
.../unit_tests/mcp_service/test_tool_inventory.py | 43 +-
.../mcp_service/test_tool_search_transform.py | 90 +-
.../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/helpers_test.py | 81 +
tests/unit_tests/models/slice_test.py | 66 +
.../unit_tests/models/test_certification_mixin.py | 76 +
tests/unit_tests/pandas_postprocessing/test_cum.py | 74 +
.../pandas_postprocessing/test_geography.py | 41 +
.../pandas_postprocessing/test_histogram.py | 32 +-
.../unit_tests/pandas_postprocessing/test_utils.py | 88 +
tests/unit_tests/queries/query_object_test.py | 22 +-
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 +-
tests/unit_tests/reports/schemas_test.py | 86 +
tests/unit_tests/reports/utils_test.py | 222 +
tests/unit_tests/result_set_test.py | 42 +-
tests/unit_tests/scripts/change_detector_test.py | 11 +
.../scripts/translations/backfill_po_test.py | 226 +-
.../scripts/translations/check_pot_drift_test.py | 215 +-
tests/unit_tests/security/manager_test.py | 520 +-
.../unit_tests/security/semantic_guest_rls_test.py | 401 +
.../security/test_guest_token_dataset_allowlist.py | 6 +-
.../security/typed_datasource_access_test.py | 381 +
tests/unit_tests/semantic_layers/api_test.py | 77 +
.../semantic_layers/grain_validation_test.py | 127 +
.../semantic_layers/integer_precision_test.py | 366 +
.../semantic_layers/layer_list_scope_test.py | 215 +
tests/unit_tests/semantic_layers/mapper_test.py | 308 +-
.../semantic_layers/metadata_contract_test.py | 174 +
tests/unit_tests/semantic_layers/models_test.py | 638 +-
.../semantic_layers/result_completeness_test.py | 86 +
.../semantic_layers/simple_cache_clear_test.py | 650 ++
.../semantic_layers/values_endpoint_test.py | 257 +-
tests/unit_tests/sql/parse_tests.py | 17 +
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 | 37 +-
tests/unit_tests/tasks/test_deletion_retention.py | 905 ++-
.../tasks/test_version_history_retention.py | 659 +-
tests/unit_tests/test_mcp_simple_proxy.py | 45 +
tests/unit_tests/utils/core_override_user_test.py | 71 +
tests/unit_tests/utils/date_parser_tests.py | 111 +
.../unit_tests/utils/geographic_world_test.py | 35 +-
tests/unit_tests/versioning/test_listener.py | 34 +-
tests/unit_tests/versioning/test_restore.py | 54 +
.../versioning/test_restore_datasource_race.py | 185 +
.../versioning/test_restore_missing_datasource.py | 299 +
.../unit_tests/versioning/test_runtime_capture.py | 380 +
.../views/test_current_user_auth_errors.py | 122 +
tests/unit_tests/views/test_error_handling.py | 203 +-
737 files changed, 119278 insertions(+), 14765 deletions(-)
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 docs/developer_docs/semantic-layer-cache-clear.md
create mode 100644 docs/developer_docs/semantic-result-completeness.md
create mode 100644 docs/static/img/logos/douroeci.png
create mode 100644 superset-core/src/superset_core/semantic_layers/errors.py
create mode 100644 superset-core/tests/semantic_layers/test_errors.py
copy superset/reports/types.py =>
superset-core/tests/semantic_layers/test_view.py (79%)
create mode 100644
superset-frontend/packages/superset-core/src/theme/GlobalStyles.test.tsx
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/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/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-cartodiagram/test/util/pieColors.test.ts
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/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
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-world-map/src/worldGeometry.ts
copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
plugins/plugin-chart-world-map/test/controlPanel.test.ts} (52%)
copy superset-frontend/{src/utils/getChartRequiredFieldsMissingMessage.ts =>
plugins/preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (52%)
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/SliceHeaderControls/ViewAsTableRendering.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/GroupByColumnAllowlist.test.tsx
copy superset-frontend/{packages/superset-ui-core/src/components/Tag/index.tsx
=> src/dashboard/contexts/DashboardDatasetsContext.ts} (70%)
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.debounce.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/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/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/utils/downloadAsPdf.test.ts
create mode 100644 superset/commands/report/update_config.py
create mode 100644 superset/mcp_service/chart/big_number_headline.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/semantic_layers/completeness.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/integration_tests/charts/semantic_metadata_authz_tests.py
create mode 100644 tests/integration_tests/reports/config_tests.py
create mode 100644 tests/integration_tests/superset_test_config_gaq.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/dashboard/permalink_create_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/dashboards/test_export_api.py
create mode 100644 tests/unit_tests/db_engine_specs/test_impala_pending.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_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_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_saved_chart_datasource.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/native_tool_inventory.json
create mode 100644
tests/unit_tests/mcp_service/sql_lab/tool/test_execute_sql_response.py
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_native_tool_surface.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/typed_datasource_access_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/metadata_contract_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/test_mcp_simple_proxy.py
create mode 100644 tests/unit_tests/utils/core_override_user_test.py
copy superset/mcp_service/dashboard/constants.py =>
tests/unit_tests/utils/geographic_world_test.py (53%)
create mode 100644 tests/unit_tests/versioning/test_restore_datasource_race.py
create mode 100644
tests/unit_tests/versioning/test_restore_missing_datasource.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py