This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/dashboard-refresh-frequency-json-metadata
in repository https://gitbox.apache.org/repos/asf/superset.git
discard c9f809fb8a0 test: mock SupersetClient.put so the save path reaches
onSubmit
discard 23cfddfc527 fix(dashboard): keep refresh_frequency set via the
Advanced JSON editor
add 69b144ec16a feat(dashboards): Add open graph metadata for dashboards
(#33550)
add fc506c06daa feat: added email delivery of XLSX reports (#40885)
add 905b20a3f2c fix(ci): retry change_detector GitHub API calls on
transient errors (#42138)
add c0781ba3164 chore(i18n): update Russian translations (#41885)
add c05ac138fb9 fix(table): prevent pagination reset on cell click (#42136)
add 9f230bcfc0c fix(cli): add --username option to import-directory
command (#40994)
add f3255c46ac8 feat(mcp): add dashboard owner, role, and certification
management tools (#41606)
add 73aa8ef280d docs(mcp): fix instruction/docstring drift and annotation
metadata in mcp_service (#41922)
add eef3dac72f8 fix(nav): prevent top navbar from flashing to vertical
layout on load (#40781)
add f8cfa459efb fix(presto): fix latest_sub_partition guard bypass +
escape partition filter values (#41877)
add a99c98c6fee feat(mcp): waterfall chart type plugin (#42070)
add 5b837e844e9 fix(sqla): cast native UUID columns to string for
LIKE/ILIKE filters (#41804)
add c84a154b524 feat(helm): support additive extra init containers (#42114)
add 5750d82426c fix(pandas_postprocessing): avoid FutureWarning for
mean/median in boxplot (#42004)
add 5bf26f77f82 fix(label): restore spacing between icon and label text
(#42141)
add 6a330c251b3 chore(deps): bump redis from 5.3.1 to 8.0.1 (#41813)
add 91f814abead feat(pie): add the ability to make half a donut (#35459)
add 68297886d42 fix(ci): stop concurrency cancellation from bricking
required checks on approval-gated PRs (#42148)
add ce8d4397cdd test(jinja): prove current_user_* macros produce
collision-free cache keys (#42122)
add 25f6c6c80bc fix(pivot-table): add bottom border to last grouped row
(#36081)
add b432f8c9175 fix(docs): use modern driver package for CrateDB (#42125)
add 0f61d9a3fb8 fix(bigquery): ensure BigQuery client uses project from
engine URI (#41975)
add 45354994a62 build(deps): update @rjsf deps to v6 (#41955)
add bda62cb28df chore(deps-dev): bump hdbcli from 2.29.23 to 2.29.25
(#42170)
add e495fd80f62 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in
/superset-frontend (#42188)
add cce77b42f64 chore(deps-dev): bump @formatjs/intl-durationformat from
0.10.16 to 0.10.17 in /superset-frontend (#42184)
add f6acf68dfaa chore(deps): bump react-intersection-observer from 10.0.3
to 10.1.0 in /superset-frontend (#42181)
add 8299e7f87c0 chore(deps-dev): bump storybook from 10.4.6 to 10.5.0 in
/superset-frontend (#42185)
add dab5f308425 chore(deps): bump @docusaurus/faster from 3.10.1 to 3.10.2
in /docs (#42179)
add a58012fc0f2 chore(deps): bump the docusaurus-openapi group in /docs
with 2 updates (#42195)
add 79eff6b6f12 chore(deps): bump greenlet from 3.5.1 to 3.5.3 (#42166)
add b6ce28ff729 chore(deps): bump typing-extensions from 4.15.0 to 4.16.0
(#42165)
add 3c233946759 chore(deps-dev): bump eslint from 10.6.0 to 10.7.0 in
/superset-websocket (#42159)
add 74703906df3 chore(deps): bump dom-to-image-more from 3.10.0 to 3.10.2
in /superset-frontend (#42180)
add 42e5640f609 chore(deps-dev): update nzalchemy requirement from
<11.2,>=11.0.2 to >=11.1.2,<11.2 (#42164)
add 2ada286ee92 chore(deps-dev): update pydynamodb requirement from
>=0.4.2 to >=0.8.2 (#42162)
add 023b60c8f01 chore(deps-dev): bump pandas-gbq from 0.19.1 to 0.35.0
(#42161)
add ff1cf5f24ed fix(table): hide search dropdown when search box is
disabled (#41772)
add 3e0f9e60c0e fix(charts): preserve minute/second precision in X-axis
time labels f… (#41505)
add 0a66e4ea2d7 fix(helm): support initContainers in supersetWebsockets
(#42201)
add fb29db61192 fix(sqllab): preserve database state on SET_DATABASES
(#41281)
add b9ede492b7e chore(lint): toggle import/named and import/export lint
rules to error level (#42189)
add 6c13ab66574 feat(ci): optimize Storybook testing in CI by replacing
`http-server` with Python3 static server (#41956)
add a83171bce6b fix(database): capture result metadata after fetch (#42127)
add caf017bd0b3 feat(versioning): cross-entity version activity view
(#41076)
add 5ee4a81906e feat(helm): add Superset MCP server templates (#40507)
add 4e098b6f385 fix(ag-grid-table): use t('Main') for time comparison
column keys to fix i18n (#40681)
add 751f5eb663f fix(dashboard): disable Discard button when there are no
unsaved changes (#40832)
add cd045886d08 feat(helm): add Gateway API HTTPRoute support (#41073)
add c4d50472a9b fix(login): oauth and ldap login ignoring
superset_app_root (#34657)
add 42a2aede78d chore(deps): bump pandas from 2.1.4 to 2.3.3 (#42192)
add 9e9b7c4bbda feat(ci): run helm-unittest on pull requests (#42206)
add 36dbff091f4 refactor: do not cascade to TaggedObject (#42223)
add 3e40bebba86 fix(import): enforce write permission for objects created
by legacy import paths (#42205)
add 09148d0af6b fix(time-table): correctly sort computed columns (#41976)
add 8b415502cf7 chore(deps): bump chrono-node from 2.9.1 to 2.10.0 in
/superset-frontend (#42235)
add 19588826c8a chore(deps-dev): bump baseline-browser-mapping from
2.10.42 to 2.10.43 in /superset-frontend (#42233)
add 9e8b9ac8cf5 chore(deps-dev): bump tsx from 4.23.0 to 4.23.1 in
/superset-frontend (#42232)
add e044d7783a0 chore(deps): bump dompurify from 3.4.11 to 3.4.12 in
/superset-frontend (#42231)
add b5ae7cbd0d5 chore(deps): bump caniuse-lite from 1.0.30001803 to
1.0.30001805 in /docs (#42228)
add 7e63b29741a chore(deps): bump antd from 6.5.0 to 6.5.1 in /docs
(#42226)
add 277c814c5ac fix(i18n): review and complete Portuguese (pt_PT)
translation catalog (#42137)
add eed41b64359 chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0
(#42229)
add ceffbe80f9b chore(deps): bump hot-shots from 16.0.0 to 17.0.0 in
/superset-websocket (#42236)
add 57dc3c0208b chore(deps): bump antd from 6.5.0 to 6.5.1 in
/superset-frontend (#42234)
add 19ca088de63 chore(deps): bump baseline-browser-mapping from 2.10.42 to
2.10.43 in /docs (#42227)
add c1e660fac84 fix(databases): reset import file entry after invalid file
error (#42240)
add 5a17ae12247 chore: drop Python 3.10 support, require Python 3.11+
(#42045)
add 515dfef9554 fix(dashboard import): Importing existing dashboard via UI
won't update charts and datasets (#34880)
add f03a66db9c9 fix(dataset): apply HOURS OFFSET to all temporal columns,
not just the time column (#41489)
add 3a3f087869c fix(native-filters): support double-quote escaping for
comma in filte… (#39068)
add 1f81b700c13 chore(ci): upgrade GHA runner image to Ubuntu 26.04
(#42191)
add e0d0eb6d020 fix(build): deterministic echarts locale imports;
fingerprint loaded config (#42154)
add 15bc73facf4 test(table): add regression test for pagination reset on
cell click (#42155)
add 9178faf9b1b refactor: set cascade_backrefs=False for Query (#42210)
add 48faca5b8de refactor: set cascade_backrefs=False for SqlaTable (#42213)
add d65a816b398 chore(lint): toggle `import/no-named-as-default` to error
level + fix all violations (#42214)
add 940e2c34a25 fix(Calendar Heatmap): Add Back chart options for Calendar
Heatmap (#26230)
add 64053271e87 fix(views): remove stray space in @deprecated new_target
log message (#42218)
add 590357731b2 feat(ci): cancel CI runs when hold label applied, re-run
on removal (#40387)
add 158e3219922 chore(deps): bump axios from 1.16.0 to 1.18.1 in
/superset-frontend (#42251)
add b3757870cce fix(sqllab): apply SQL_QUERY_MUTATOR in SQL Lab when
MUTATE_AFTER_SPLIT is set (#41127)
add abd6dc8e448 refactor: set cascade_backrefs=False for SavedQuery
(#42212)
add 034823e99b6 chore: replace deprecated
datetime.utcnow()/utcfromtimestamp() (#41502)
add b4529c2654f feat: add distance unit (#24444)
add 4b659da5c4c fix(reports): positive per-tile chart readiness check for
tiled screenshots (#42119)
add 8296fe8ce46 fix(home): restore navigation for saved query cards
(#41912)
add e4005f02c6b fix(sqla): render Jinja templates in calculated columns
used via orderby adhoc metrics (#41870)
add 2d3cbc162e4 fix(db_engine_specs): map var_string to STRING for
MySQL/StarRocks (#41868)
add a1d4cda0cb6 chore(deps-dev): bump typescript-eslint from 8.63.0 to
8.64.0 in /docs in the typescript-eslint group (#42259)
add bafe5ad9ba3 chore(deps): bump actions/setup-java from 5.5.0 to 5.6.0
(#42260)
add f7517168675 fix(trino): quote nested ROW field paths per-segment in
physical column expressions (#41946)
add 6c58afe6ac4 refactor: do not cascade to TableColumn (#42222)
add 00cb3037e76 feat(dashboard): export dashboard chart data to Excel
(async, S3 + email) (#41133)
add 5efbd5b157a chore(deps-dev): bump brace-expansion from 5.0.6 to 5.0.7
in /superset-websocket (#42267)
add 7f4d151a37d chore(deps): bump body-parser from 2.2.1 to 2.3.0 in
/superset-websocket/utils/client-ws-app (#42264)
add 3fa7cc59862 chore(deps): bump react-diff-viewer-continued from 4.3.0
to 4.4.0 in /superset-frontend (#42263)
add 666b6805c40 test(sql): prove Oracle GROUP BY stays explicit for
virtual-dataset charts (#42255)
add b362d360193 chore: remove deck.gl JavaScript tooltip controls and
ENABLE_JAVASCRIPT_CONTROLS (#42126)
add df34b5d2775 fix(drill-detail): paginate Elasticsearch samples via
engine cursor (#39509)
add 1a862476e1e fix(dashboard): add cacheKey, dashboardId, and format
context to screenshot download error logs (#42121)
add f999afaac01 fix(mcp): coerce float rowcount to int in ChartData to
prevent PydanticSerializationError (#42140)
add e1a265447f6 fix(charts): use chart name in CSV/XLSX/zip export
filenames (#42193)
add f9378baba8d test(sqla): add the jinja orderby calculated column to the
session (#42274)
add 706a65cb028 fix(docs): allow *.run.app in CSP for the Kapa widget
backend (#42276)
add f2967264d28 fix(ci): diff pre-commit changed files against the live
base branch tip (#42152)
add 40a13883ea6 refactor: do not cascade to SqlMetric (#42221)
add 0dd06f3b7b3 fix: dashboard filter regress (#35218)
add 34ebe3d22ad feat(extensions): add a Storage API for extensions (#39171)
add e5c418a1878 fix(mcp): normalize bracket-shorthand time ranges in
query_dataset (#42144)
add b97a7f5f945 chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4 in
/superset-embedded-sdk (#42282)
add cfac7855416 chore(deps): bump fuse.js from 7.4.2 to 7.5.0 in
/superset-frontend (#42262)
add c95c8086f5b chore(deps-dev): bump webpack-bundle-analyzer from 5.3.0
to 5.3.1 in /superset-frontend (#42261)
add 8329481c2e9 chore(deps-dev): bump the typescript-eslint group across 1
directory with 2 updates (#42258)
add 1b882c1f47d test(explore): cover annotation layer link app-root prefix
in subdire… (#41997)
add ab8e23d8749 chore(deps-dev): bump svgo from 3.3.3 to 3.3.4 in
/superset-frontend (#42285)
add 15d7d365804 chore: remove deprecated from_dttm and to_dttm jinja vars
(#42279)
add 2ddea33bb68 fix(models): inline calculated column expression in
raw-records queries (#34784) (#42040)
add d62dbdb6940 fix(chat): prevent main content reload when toggling chat
panel (#42143)
add 8b1ef3a4cba feat(helm): Add annotations to secrets manifests (#40803)
add 072ff014062 fix: disable recaptcha for LDAP authentication (#36857)
add 9c08240fdc8 chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /docs
(#42287)
add cae61b51e12 fix(cache): QueryCacheManager.get() should fail open on
cache backend errors (#42252)
add 37ef2f381ec chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in /docs
(#42294)
add 936b8a84ae7 chore(deps): bump fast-uri from 3.1.3 to 3.1.4 in
/superset-frontend (#42293)
add db1959b9b61 chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in
/superset-frontend/cypress-base (#42292)
add 60a7c18204b chore(deps): bump svgo from 3.3.3 to 3.3.4 in /docs
(#42286)
add 788165b5bbb fix(frontend): jest testRegex matches Windows path
separators (#41863)
add a086b2eae9b fix(clickhouse): retry adhoc column type probe with
comment-safe SQL (#42298)
add 1392fbc9b24 fix(sql): validate Custom SQL metric has an aggregate
under GROUP BY (#42199)
add b71b58e8214 fix(explore): render stopped state when a chart query is
cancelled (#42270)
add 46c5e30533d chore(deps-dev): bump oxlint from 1.73.0 to 1.74.0 in
/superset-frontend (#42304)
add 248f6e10640 chore(deps): bump zizmorcore/zizmor-action from 0.5.7 to
0.6.0 (#42302)
add 6e1954fd51c chore(deps): bump ws from 8.21.0 to 8.21.1 in
/superset-websocket (#42301)
add b8f3b768d4f fix(sqllab): Fall back to empty editor tab when linked
query no longer exists (#42241)
add 1c0f259e380 refactor(mcp): dedupe list-tool schemas and delete dead
middleware (#41923)
add 10ff4707021 fix(ag-grid-table): respect row limit with server
pagination (#41346)
add c5935b6904d feat(table/pivot-table): correct non-additive
totals/subtotals via DB rollup [SIP-216] (#41184)
add 8c5d465a658 feat(datasets): add RLS filter indicator badge to dataset
list and explore view (#38807)
add be5744c4317 fix(chart): updates counties of kenya map (#38019)
add f50b7b71542 chore(deps): bump actions/setup-go from 6.5.0 to 7.0.0
(#42303)
add ac41f61d4ab chore(deps): bump nanoid from 5.0.9 to 6.0.0 in
/superset-frontend (#42230)
add 49b42431292 test(dashboard): migrate dashboard load smoke test to
Playwright (#41432)
add 894c0191d64 fix(superset_app_root): when used with oauth (#38033)
add 19159d58c80 refactor: engine enforce SQLAlchemy 2.0 (#42277)
add 40d9e7d0485 fix(ag-grid-table): avoid ambiguous build query import
(#42313)
add 641713f6237 fix: Revert "chore(deps): bump echarts from 5.6.0 to 6.1.0
in /superset-frontend" (#42314)
add 8d034ef65ca fix(plugin-chart-echarts): import the -obj locale build so
time axes render (#42317)
add e075133a833 fix(pandas_postprocessing): avoid FutureWarning for
max/min in boxplot MINMAX (#42272)
add 32937f24d25 fix(heatmap): correct tooltip axis value lookup and
percentage calculations and add tests (#41864)
add 17bd286ae9b fix(forecast): resolve time grain robustly for Prophet
forecasting (#42145)
add 3ed8889a010 fix: Added PostgreSQL 17.X to the supported database
versions table in (#42280)
add ef459c21e82 fix(helm): add MCP HTTPRoute configuration (#42219)
add 67924ad35e1 fix(dashboard): offer Exit edit mode when there is nothing
to discard (#42208)
add 2926d6f6a9b chore(deps): bump actions/labeler from 6.2.0 to 7.0.0
(#42332)
add 1dd3103c246 chore(deps): bump github/codeql-action/analyze from 4.37.0
to 4.37.1 (#42331)
add 873da606ddf chore(deps): bump github/codeql-action/init from 4.37.0 to
4.37.1 (#42334)
add ab553c37ab9 chore(deps-dev): bump @formatjs/intl-durationformat from
0.10.17 to 0.10.18 in /superset-frontend (#42337)
add 66543184913 chore(deps): bump caniuse-lite from 1.0.30001805 to
1.0.30001806 in /docs (#42333)
add 2e72080a163 chore(deps): bump echarts to 6.1.0 with locale and
containLabel guards (#42315) (#42321)
add c5f6d33d211 docs: add pattern to the list of organisations using
superset (#42341)
add cc8edd22318 chore(deps): bump ag-grid from 36.0.0 to 36.0.1 in
/superset-frontend (#42338)
add cb319c9b817 fix(mcp): trust dataset is_dttm flag when applying
time_grain to VARCHAR temporal columns (#42288)
add f2848d951c4 chore(deps-dev): update taos-ws-py requirement from
>=0.6.9 to >=0.7.0 (#42344)
add 6b02a423ef8 chore(deps-dev): bump the storybook group in
/superset-frontend with 5 updates (#42355)
add df8bbb548a3 fix(native-filters): keep filter value input caret at
inline start (#42323)
add 2317d9cf918 fix(mcp): truncate query-tool responses instead of
hard-failing (#42244)
add fdb9c152f06 chore(deps): bump nh3 from 0.3.5 to 0.3.6 (#42349)
add 6317113ee85 chore(deps): bump pydantic from 2.11.7 to 2.13.4 (#42350)
add 1049826bc15 chore(deps): bump sqlalchemy-continuum from 1.6.0 to 1.7.0
(#42351)
add 206fe7ab120 fix(embedded): stop rejecting guest chart data built from
control-specific params keys (#42295)
add c43effa4a32 fix(explore): show the beginning date on time-series
x-axis line charts (#42046)
add d41f0febaee fix(api): add example to get_export_ids_schema so Swagger
"Try it out" pre-fills a valid array (#42265)
add 14c96761e55 chore: SQLAlchemy User cascade backref warnings are
irrelevant (#42360)
add 5776aff50ac fix(charts): handle async (202) chart-data responses in
StatefulChart (#42157)
add bcf0361a919 feat(KustoKQL): Add support for NULL / IS NOT NULL
operator (#37890)
add 921f75d5444 chore(deps): bump pillow from 12.2.0 to 12.3.0 (#42348)
add 49f4e84b486 chore(deps): bump flask-compress from 1.17 to 1.24 (#42346)
add cfb04a6e79e chore(deps-dev): bump databricks-sql-connector from 4.2.6
to 4.3.0 (#42347)
add 3ff5dbfe81e fix(native-filters): use FILTER_STATE_CACHE_CONFIG timeout
for dynamic filter option queries (#38910)
add 4ee500e47bf fix(explore): render Jinja before validating legacy chart
filters (#41996)
add a1142b0f915 fix(dataset): disable duplicate button when name is empty
(#42217)
add 4f017de5326 docs(gunicorn): correct dead links in values.yaml (#42385)
add 542416ac6e7 chore(deps): bump @deck.gl/mapbox from 9.3.6 to 9.3.7 in
/superset-frontend in the deckgl group (#42377)
add 5b5e5cf82da chore(deps): bump actions/checkout from 7.0.0 to 7.0.1
(#42376)
add 16de95f0246 chore(deps): bump immer from 11.1.11 to 11.1.15 in
/superset-frontend (#42378)
add 0b9a9c5d038 chore(deps): bump body-parser from 1.20.5 to 1.20.6 in
/docs (#42370)
add d2ea5e9a1a5 chore(deps-dev): bump brace-expansion from 1.1.15 to
1.1.16 in /superset-embedded-sdk (#42369)
add 67c3fea0ce7 fix(security): bump pyasn1 from 0.6.3 to 0.6.4 (#42363)
add 0792f98910d fix(security): bump pillow from 12.2.0 to 12.3.0 (#42362)
add 65528a5b761 docs(map-tiles): add Yandex Maps Tiles API configuration
(#42375)
add 3bdf134aaa2 fix(logging): stop noisy LocalProxy-not-mapped warning for
guest users (#42306)
add 7eceebce1ce feat(dbspec): Support apache datafusion dbspec (#42374)
add f7d0ec3a2c4 chore: add @rusackas to migration code owners (#42398)
add 3a53c4ebc3b chore(deps): raise SQLAlchemy lower bound to >=1.4.43
(#41123)
add 99841fb504b fix(async): include datasets and rev claims in guest
channel HMAC (#41487)
add f3fa1c7d4f6 fix(reports): write a single execution log row per report
run (#29857) (#41966)
add 134cae07ae1 fix(ui): update stale Ant Design v6 internal class
selectors (#42146)
add 52552c8278e test(dashboard): migrate dashboard force-refresh control
to Playwright (#41433)
add 5ffdac1871d fix(mcp): align pooled screenshot override signature
(#42384)
add 857a194c667 chore(deps): bump postcss from 8.5.16 to 8.5.23 in /docs
(#42397)
add e9f61c1e662 chore(deps): bump postcss from 8.5.15 to 8.5.23 in
/superset-frontend (#42396)
add 83ea9a10253 chore(deps): bump js-yaml from 5.2.1 to 5.2.2 in /docs
(#42395)
add b82ff27f9cc fix(sqllab): render each query error once on async
fallback (#42318)
add 2a07f7967d4 chore(deps): bump brace-expansion, @cypress/code-coverage
and eslint in /superset-frontend/cypress-base (#42275)
add c65bedf2d76 fix(extensions): make LOCAL_EXTENSIONS hot reload reliable
in Docker (#40084)
add 5775bdbe5ec chore(deps-dev): bump postcss from 8.5.15 to 8.5.23 in
/superset-embedded-sdk (#42394)
add 8c37d627aa9 fix: allow clearing database/schema in DatasourceModal
(#39918)
add d4652460eed chore(deps-dev): bump google-cloud-bigquery from 3.42.1 to
3.42.2 (#42422)
add 8864b7a0a31 chore(deps-dev): update oracledb requirement from
<5,>=2.0.0 to >=4.0.2,<5 (#42421)
add 9d6fbdceff8 chore(deps-dev): update ibm-db-sa requirement from
<=0.4.4,>0.3.8 to <=0.4.4,>=0.4.4 (#42419)
add 4f3a1a50582 chore(deps-dev): update snowflake-sqlalchemy requirement
from <2,>=1.10.2 to >=1.11.0,<2 (#42418)
add dd08c4f36c1 chore(deps-dev): update flightsql-dbapi requirement from
<0.3,>=0.2.0 to >=0.2.2,<0.3 (#42416)
add 4443357f334 chore(deps): bump flask-caching from 2.3.1 to 2.4.1
(#42413)
add e1ffa53d9b4 chore(deps): bump pyparsing from 3.2.3 to 3.3.2 (#42420)
add 6c2ccc44bdc chore(table): drop dead th.ant-column-cell selector
(#42407)
add e3d3262e977 chore(deps-dev): bump grpcio from 1.81.1 to 1.83.0 (#42414)
add 9a025267bdf fix(reports): positive readiness check for non-tiled
screenshots (#42253)
add ba0900d2b32 fix(semantic-layers): show a friendly warning when schema
enrichment falls back (#42400)
add 90040fc1f6a fix(mcp_service): downgrade client-disconnect transport
noise to WARNING (SC-115264) (#42441)
add 710037d3d2f chore(importers): log field names instead of full config
on validation failure (#42399)
add e54eccd5fb8 chore(a11y): enable jsx-a11y/prefer-tag-over-role as error
(#42078)
add 8f8331f656e chore: session enforce sqlalchemy 2.0 (#42365)
add 6856d0fc671 fix(select): rank case-insensitive matches consistently in
dropdown search (#42408)
add e338c77dd73 fix(dashboard-tabs): disable drag on input fields during
tab reorder (#36889)
add 943bbb92e4e chore(deps): bump @fontsource/fira-code from 5.2.7 to
5.3.0 in /superset-frontend (#42461)
add 5dea601a09a chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in
/superset-frontend (#42460)
add fdea53df9ec chore(deps-dev): bump source-map from 0.7.6 to 0.8.0 in
/superset-frontend (#42459)
add 67face3e3d2 chore(deps-dev): bump lightningcss from 1.32.0 to 1.33.0
in /superset-frontend (#42457)
add 0d2a82c2b2e chore(deps): bump react-arborist from 3.13.2 to 3.15.0 in
/superset-frontend (#42456)
add 5898463ced3 chore(deps-dev): bump @swc/core from 1.15.43 to 1.15.46 in
/superset-frontend (#42455)
add b3c95d138a9 chore(deps): bump chrono-node from 2.10.0 to 2.10.1 in
/superset-frontend (#42454)
add fe787269353 chore(deps-dev): bump stylelint from 17.14.0 to 17.14.1 in
/superset-frontend (#42453)
add 23e5cc24d52 chore(deps): bump @fontsource/fira-code from 5.2.7 to
5.3.0 in /docs (#42451)
add c09ebc2087d chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in
/docs (#42450)
add 3666b9a934c chore(deps): bump swagger-ui-react from 5.32.8 to 5.32.9
in /docs (#42449)
add dece4577924 chore(deps): bump @swc/core from 1.15.43 to 1.15.46 in
/docs (#42448)
add 95e5e25e1a2 feat(helm): mitigate init-db Job hang under Istio sidecar
injection (closes #25798) (#41396)
add 03c97764d15 chore(ci): remove nyc usage for merging coverage results
as Codecov natively supports the action (#42431)
add 45c2b801f7b chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to
5.3.0 in /superset-frontend (#42458)
add faf2cc0f04e chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to
5.3.0 in /docs (#42447)
add 3540f3f9571 chore(deps): bump the rjsf group in /superset-frontend
with 3 updates (#42446)
add 4300e9fb930 chore(deps): bump hot-shots from 17.0.0 to 17.0.1 in
/superset-websocket (#42445)
add 748e1e80f06 chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0
(#42452)
add 74924ae73a4 fix(db_engine_specs): use CAST(DATE({col}) AS DATETIME) in
MySQL HOUR time grain (#38617)
add a44afd81058 chore: drop legacy /superset prefix from remaining
hardcoded URLs (#42156)
add 1d752a0ced6 fix(embedded): load guest charts with missing or stale
query_context (#42150)
add 12d7179c21b fix(hive): select schema via USE prequery instead of
rewriting the URI database (#36603)
add 3e7ae85cc24 fix(importers): catch YAMLError instead of narrower
ParserError in load_yaml (#42426)
add 276b7e2d678 fix(importers): catch YAMLError instead of narrower
ParserError in dataset v0 importer (#42442)
add eb914b8ae35 fix(datasets): log datetime format-detection DB query
failures at WARNING (#42388)
add c792752a58b fix(db_engine_specs): preserve DATE semantics when
applying Postgres time grains (#42254) (#42329)
add 79f3fed1f98 fix(country-map): carve the Great Lakes out of USA map
states (#29503)
add a73e2485de8 feat(versioning): version-history retention cleanup job
(#41075)
add c0117f78a9c feat(dashboard): respect GranularExportControls for
download permission (#41799)
add a8e2a340f19 fix(select): exclude null-valued options from "Select all"
count (#42220)
add 3095d7b07ff fix(metadata-bar): add max-width to text for proper
ellipsis truncation (#42237)
add a10c3f0b1dd test(result_set): add regression test for empty result set
column metadata (#35962)
add 26b6f7bb5df fix(dashboard): preserve refresh_frequency when absent
from save data (#42354)
add ecc7f726a4e fix: guard potential null derefs and remove dead branches
(#42358)
add 47fa9705e47 fix(dashboard): keep refresh_frequency set via the
Advanced JSON editor
add 16e61fb856f test: mock SupersetClient.put so the save path reaches
onSubmit
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 (c9f809fb8a0)
\
N -- N -- N
refs/heads/fix/dashboard-refresh-frequency-json-metadata (16e61fb856f)
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 | 2 +-
.github/ISSUE_TEMPLATE/bug-report.yml | 3 +-
.github/dependabot.yml | 43 +-
.github/workflows/bump-python-package.yml | 8 +-
.github/workflows/check-python-deps.yml | 4 +-
.github/workflows/check_db_migration_confict.yml | 4 +-
.github/workflows/codeql-analysis.yml | 12 +-
.github/workflows/dependency-review.yml | 8 +-
.github/workflows/docker.yml | 25 +-
.github/workflows/embedded-sdk-release.yml | 6 +-
.github/workflows/embedded-sdk-test.yml | 6 +-
.github/workflows/generate-FOSSA-report.yml | 8 +-
.github/workflows/github-action-validator.yml | 8 +-
.github/workflows/hold-label-ci-gate.yml | 115 +
.github/workflows/issue_creation.yml | 4 +-
.github/workflows/labeler.yml | 4 +-
.github/workflows/latest-release-tag.yml | 4 +-
.github/workflows/license-check.yml | 6 +-
.github/workflows/no-hold-label.yml | 2 +-
.github/workflows/pr-lint.yml | 14 +-
.github/workflows/pre-commit.yml | 28 +-
.github/workflows/release.yml | 8 +-
.../workflows/scheduled-docker-image-refresh.yml | 12 +-
.github/workflows/showtime-trigger.yml | 2 +-
.github/workflows/superset-app-cli.yml | 4 +-
.github/workflows/superset-docs-deploy.yml | 10 +-
.github/workflows/superset-docs-verify.yml | 14 +-
.github/workflows/superset-e2e.yml | 29 +-
.github/workflows/superset-extensions-cli.yml | 4 +-
.github/workflows/superset-frontend.yml | 32 +-
...t-helm-lint.yml => superset-helm-lint-test.yml} | 21 +-
.github/workflows/superset-helm-release.yml | 4 +-
.github/workflows/superset-playwright.yml | 14 +-
.../workflows/superset-python-integrationtest.yml | 18 +-
.github/workflows/superset-python-presto-hive.yml | 12 +-
.github/workflows/superset-python-unittest.yml | 10 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 10 +-
.github/workflows/superset-websocket.yml | 6 +-
.github/workflows/supersetbot.yml | 4 +-
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.github/workflows/tag-release.yml | 16 +-
.github/workflows/tech-debt.yml | 8 +-
.github/workflows/welcome-new-users.yml | 2 +-
.gitignore | 1 +
.pre-commit-config.yaml | 9 +-
Makefile | 6 +-
RELEASING/Dockerfile.from_local_tarball | 2 +-
RELEASING/Dockerfile.from_svn_tarball | 2 +-
RELEASING/Dockerfile.make_docs | 2 +-
RELEASING/Dockerfile.make_tarball | 2 +-
RESOURCES/INTHEWILD.yaml | 5 +
UPDATING.md | 140 +
docker-compose-light.yml | 2 +-
docker-compose-non-dev.yml | 2 +-
docker-compose.yml | 3 +-
docker/docker-bootstrap.sh | 4 +-
docker/pythonpath_dev/superset_config.py | 1 +
docs/admin_docs/configuration/alerts-reports.mdx | 2 +-
.../configuration/configuring-superset.mdx | 8 +-
docs/admin_docs/configuration/map-tiles.mdx | 29 +
docs/admin_docs/configuration/mcp-server.mdx | 2 +-
docs/admin_docs/configuration/sql-templating.mdx | 80 +-
.../contributing/development-setup.md | 2 +-
.../developer_docs/contributing/issue-reporting.md | 4 +-
docs/developer_docs/extensions/architecture.md | 36 +-
docs/developer_docs/extensions/overview.md | 21 +-
docs/developer_docs/extensions/quick-start.md | 13 +-
docs/developer_docs/extensions/storage.md | 465 +
docs/developer_docs/index.md | 2 +-
.../using-superset/exporting-dashboard-data.mdx | 99 +
docs/docs/using-superset/sql-templating.mdx | 18 +-
docs/package.json | 50 +-
docs/sidebarTutorials.js | 2 +
docs/src/data/databases.json | 110 +-
docs/static/.htaccess | 3 +-
docs/static/feature-flags.json | 6 -
docs/static/img/databases/datafusion.png | Bin 0 -> 14784 bytes
docs/static/img/logos/pattern_logo.png | Bin 0 -> 7067 bytes
.../version-6.0.0/configuration/alerts-reports.mdx | 2 +-
docs/yarn.lock | 1167 +--
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 82 +-
helm/superset/templates/_helpers.tpl | 14 +
helm/superset/templates/deployment-beat.yaml | 8 +-
helm/superset/templates/deployment-flower.yaml | 8 +-
...{deployment-worker.yaml => deployment-mcp.yaml} | 107 +-
helm/superset/templates/deployment-worker.yaml | 8 +-
helm/superset/templates/deployment-ws.yaml | 9 +
helm/superset/templates/deployment.yaml | 8 +-
helm/superset/templates/httproute.yaml | 95 +
helm/superset/templates/ingress.yaml | 9 +
helm/superset/templates/init-job.yaml | 12 +-
.../templates/{secret-ws.yaml => pdb-mcp.yaml} | 30 +-
helm/superset/templates/secret-env.yaml | 3 +
.../superset/templates/secret-superset-config.yaml | 3 +
helm/superset/templates/secret-ws.yaml | 3 +
helm/superset/templates/service-mcp.yaml | 46 +
helm/superset/tests/checksum_test.yaml | 22 +
helm/superset/tests/httproute_test.yaml | 92 +
helm/superset/tests/init_containers_test.yaml | 206 +
helm/superset/tests/labels_test.yaml | 119 +
helm/superset/tests/test-istio.sh | 183 +
helm/superset/values.yaml | 259 +-
pyproject.toml | 50 +-
pytest.ini | 16 +-
requirements/base.txt | 35 +-
requirements/development.txt | 64 +-
.../superset_core/common => scripts}/__init__.py | 0
scripts/benchmark_migration.py | 2 +-
scripts/change_detector.py | 39 +-
scripts/check-env.py | 4 +-
superset-core/README.md | 2 +-
superset-core/pyproject.toml | 3 +-
.../src/superset_core/extensions/context.py | 119 +
.../superset_core/extensions/storage/__init__.py | 79 +
.../src/superset_core/extensions/storage/dao.py | 70 +
.../superset_core/extensions/storage/ephemeral.py | 162 +
.../src/superset_core/extensions/storage/models.py | 74 +
.../superset_core/extensions/storage/persistent.py | 243 +
.../src/superset_core/extensions/types.py | 12 +-
superset-embedded-sdk/package-lock.json | 26 +-
superset-extensions-cli/README.md | 2 +-
superset-extensions-cli/pyproject.toml | 3 +-
.../src/superset_extensions_cli/cli.py | 4 -
.../templates/frontend/webpack.config.js.j2 | 8 +-
superset-frontend/.storybook/main.mjs | 2 +-
.../cypress-base/cypress/support/directories.ts | 14 +-
superset-frontend/cypress-base/package-lock.json | 6261 ++++++------
superset-frontend/cypress-base/package.json | 2 +-
superset-frontend/jest.config.js | 6 +-
superset-frontend/oxlint.json | 15 +-
superset-frontend/package-lock.json | 2226 +++--
superset-frontend/package.json | 71 +-
superset-frontend/packages/superset-core/README.md | 1 +
.../packages/superset-core/package.json | 6 +-
.../packages/superset-core/src/common/index.ts | 2 -
.../packages/superset-core/src/extensions/index.ts | 71 +
.../packages/superset-core/src/index.ts | 1 +
.../packages/superset-core/src/storage/index.ts | 218 +
.../superset-core/src/translation/types/index.ts | 3 +-
.../src/operators/prophetOperator.ts | 31 +-
.../src/shared-controls/dndControls.tsx | 4 +-
.../src/shared-controls/index.ts | 3 +-
.../src/utils/D3Formatting.ts | 3 +
.../test/operators/prophetOperator.test.ts | 105 +
.../packages/superset-ui-core/package.json | 8 +-
.../src/chart/components/StatefulChart.test.tsx | 491 +-
.../src/chart/components/StatefulChart.tsx | 187 +-
.../src/chart/models/ChartProps.ts | 12 +
.../packages/superset-ui-core/src/color/index.ts | 1 -
.../components/ActionButton/ActionButton.test.tsx | 18 +-
.../src/components/ActionButton/index.tsx | 38 +-
.../src/components/ButtonGroup/index.tsx | 4 +
.../src/components/DesignSystem.stories.tsx | 6 +-
.../DropdownContainer/Overview.stories.tsx | 6 +-
.../src/components/EmptyState/index.tsx | 4 +
.../src/components/FaveStar/index.tsx | 10 +-
.../src/components/Form/LabeledErrorBoundInput.tsx | 4 +
.../src/components/IconButton/index.tsx | 4 +
.../src/components/Label/Label.test.tsx | 19 +
.../src/components/Label/index.tsx | 13 +
.../src/components/Loading/index.tsx | 4 +
.../src/components/MetadataBar/MetadataBar.tsx | 1 +
.../MetadataBar/MetadataBarOverview.stories.tsx | 46 +-
.../src/components/Modal/Modal.tsx | 4 +-
.../src/components/ModalTrigger/index.tsx | 5 +
.../src/components/PopoverDropdown/index.tsx | 15 +-
.../PopoverSection/PopoverSection.test.tsx | 8 +-
.../src/components/PopoverSection/index.tsx | 27 +-
.../components/ProgressBar/ProgressBar.test.tsx | 22 +-
.../src/components/ProgressBar/index.tsx | 4 +-
.../src/components/RefreshLabel/index.tsx | 3 +-
.../src/components/RlsBadge/RlsBadge.test.tsx | 121 +
.../src/components/RlsBadge/index.tsx | 108 +
.../src/components/Select/AsyncSelect.test.tsx | 26 +-
.../src/components/Select/AsyncSelect.tsx | 190 +-
.../src/components/Select/Select.test.tsx | 140 +-
.../src/components/Select/Select.tsx | 219 +-
.../src/components/Select/utils.test.ts | 140 +
.../src/components/Select/utils.tsx | 75 +-
.../src/components/Table/TableOverview.stories.tsx | 34 +-
.../src/components/Table/VirtualTable.tsx | 2 +-
.../ActionCell/ActionCell.overview.tsx | 6 +-
.../src/components/Table/index.tsx | 2 +-
.../src/components/TableCollection/index.tsx | 6 -
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 4 +-
.../src/components/antdDomContract.test.tsx | 145 +-
.../superset-ui-core/src/components/index.ts | 5 +
.../factories/createLengthFormatter.ts | 51 +
.../superset-ui-core/src/number-format/index.ts | 1 +
.../superset-ui-core/src/utils/featureFlags.ts | 2 -
.../src/utils/rankedSearchCompare.test.ts | 27 +
.../src/utils/rankedSearchCompare.ts | 3 +-
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../factories/createLengthFormatter.test.ts | 68 +
.../test/number-format/index.test.ts | 2 +
.../packages/superset-ui-switchboard/src/index.ts | 4 +-
.../playwright/components/core/Menu.ts | 20 +
.../generators/docs/docs-screenshots.spec.ts | 2 +-
.../generators/docs/screenshot-manifest.yaml | 16 +-
.../playwright/helpers/api/dashboard.ts | 85 +
.../playwright/pages/DashboardPage.ts | 31 +-
.../tests/dashboard/clear-all-filters.spec.ts | 41 +-
.../tests/dashboard/dashboard-controls.spec.ts | 152 +
.../tests/dashboard/dashboard-load.spec.ts | 212 +
.../tests/dashboard/dashboard-test-helpers.ts | 121 +-
.../tests/dashboard/delete-display-control.spec.ts | 41 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 41 +-
.../mixed-chart-dashboard-filters.spec.ts | 41 +-
.../tests/embedded/pivot-collapse-state.spec.ts | 37 +-
superset-frontend/playwright/utils/constants.ts | 11 +-
.../legacy-plugin-chart-calendar/src/Calendar.ts | 16 +-
.../src/controlPanel.ts | 37 +-
.../src/transformProps.ts | 4 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11681332 -> 10895145
bytes
.../src/countries/kenya.geojson | Bin 190196 -> 160739
bytes
.../src/countries/usa.geojson | Bin 514889 -> 540974
bytes
.../plugins/legacy-preset-chart-nvd3/package.json | 2 +-
.../src/vendor/superset/exploreUtils.ts | 69 -
.../src/AgGridTable/components/CustomHeader.tsx | 42 +-
.../src/AgGridTable/index.tsx | 2 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 68 +-
.../src/styles/index.tsx | 10 +
.../src/transformProps.ts | 19 +-
.../src/utils/useColDefs.ts | 17 +-
.../test/AgGridTableChart.test.tsx | 113 +
.../test/buildQuery.test.ts | 250 +-
.../src/Heatmap/transformProps.ts | 11 +-
.../src/MixedTimeseries/transformProps.ts | 17 +
.../plugin-chart-echarts/src/Pie/controlPanel.tsx | 40 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 169 +-
.../plugins/plugin-chart-echarts/src/Pie/types.ts | 37 +
.../src/Timeseries/transformProps.ts | 25 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 16 +-
.../src/components/echartsLocale.ts | 108 +
.../plugin-chart-echarts/src/utils/formatters.ts | 31 +-
.../test/Heatmap/transformProps.test.ts | 165 +
.../test/MixedTimeseries/transformProps.test.ts | 55 +
.../test/Pie/transformProps.test.ts | 255 +-
.../test/Timeseries/transformProps.test.ts | 69 +
.../test/components/Echart.test.tsx | 17 +
.../test/components/echartsLocale.test.ts | 82 +
.../test/utils/formatters.test.ts | 53 +
.../plugin-chart-echarts/types/external.d.ts | 8 +
.../plugins/plugin-chart-pivot-table/package.json | 4 +
.../src/PivotTableChart.tsx | 109 +-
.../src/plugin/buildQuery.ts | 68 +-
.../src/plugin/controlPanel.tsx | 45 +-
.../src/plugin/transformProps.ts | 74 +-
.../src/plugin/utilities.ts | 242 +
.../src/react-pivottable/Styles.ts | 20 +
.../src/react-pivottable/TableRenderers.tsx | 60 +-
.../src/react-pivottable/utilities.ts | 194 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 22 +-
.../test/PivotTableChart.test.tsx | 50 +-
.../test/TableRenderer.test.tsx | 158 +
.../test/plugin/buildQuery.test.ts | 60 +-
.../test/plugin/transformProps.test.ts | 153 +-
.../test/plugin/utilities.test.ts | 466 +
.../react-pivottable/nonAdditiveTotals.test.ts | 69 +
.../test/react-pivottable/tableRenders.test.tsx | 138 +-
.../plugin-chart-pivot-table/test/testData.ts | 232 +
.../test/testHelpers.tsx | 0
.../test/tsconfig.json | 0
.../plugin-chart-table/src/DataTable/DataTable.tsx | 3 +-
.../src/DataTable/components/Pagination.tsx | 13 +-
.../src/DataTable/hooks/useSticky.tsx | 4 +
.../plugins/plugin-chart-table/src/Styles.tsx | 11 +-
.../plugins/plugin-chart-table/src/index.ts | 4 +-
.../plugin-chart-table/test/TableChart.test.tsx | 148 +
.../plugin-chart-table/test/buildQuery.test.ts | 59 +-
.../plugins/preset-chart-deckgl/package.json | 4 +-
.../src/CategoricalDeckGLContainer.tsx | 7 -
.../src/components/Legend.test.tsx | 18 +-
.../preset-chart-deckgl/src/components/Legend.tsx | 27 +-
.../src/layers/Arc/buildQuery.ts | 16 +-
.../src/layers/Arc/controlPanel.ts | 13 -
.../src/layers/Arc/stories/Arc.stories.tsx | 4 -
.../src/layers/Arc/transformProps.ts | 17 +-
.../src/layers/Contour/Contour.tsx | 16 +-
.../src/layers/Contour/controlPanel.ts | 13 -
.../src/layers/Geojson/Geojson.test.tsx | 44 -
.../src/layers/Geojson/Geojson.tsx | 114 +-
.../src/layers/Geojson/buildQuery.ts | 14 +-
.../src/layers/Geojson/controlPanel.ts | 145 +-
.../preset-chart-deckgl/src/layers/Grid/Grid.tsx | 16 +-
.../src/layers/Grid/controlPanel.ts | 13 -
.../src/layers/Grid/stories/Grid.stories.tsx | 4 -
.../src/layers/Heatmap/Heatmap.tsx | 18 +-
.../src/layers/Heatmap/controlPanel.ts | 13 -
.../preset-chart-deckgl/src/layers/Hex/Hex.tsx | 17 +-
.../src/layers/Hex/controlPanel.ts | 13 -
.../src/layers/Hex/stories/Hex.stories.tsx | 4 -
.../preset-chart-deckgl/src/layers/Path/Path.tsx | 13 +-
.../src/layers/Path/buildQuery.test.ts | 2 -
.../src/layers/Path/buildQuery.ts | 9 -
.../src/layers/Path/controlPanel.ts | 13 -
.../src/layers/Path/stories/Path.stories.tsx | 4 -
.../src/layers/Path/transformProps.ts | 15 +-
.../src/layers/Polygon/Polygon.tsx | 9 +-
.../src/layers/Polygon/buildQuery.test.ts | 29 +-
.../src/layers/Polygon/buildQuery.ts | 9 -
.../src/layers/Polygon/controlPanel.ts | 12 +-
.../src/layers/Polygon/stories/Polygon.stories.tsx | 4 -
.../src/layers/Polygon/transformProps.ts | 6 +-
.../src/layers/Scatter/buildQuery.test.ts | 17 -
.../src/layers/Scatter/buildQuery.ts | 20 +-
.../src/layers/Scatter/controlPanel.ts | 13 -
.../src/layers/Scatter/stories/Scatter.stories.tsx | 4 -
.../src/layers/Scatter/transformProps.ts | 5 +-
.../src/layers/Screengrid/Screengrid.tsx | 16 +-
.../src/layers/Screengrid/controlPanel.ts | 13 -
.../Screengrid/stories/Screengrid.stories.tsx | 4 -
.../src/layers/buildQueryUtils.ts | 20 -
.../preset-chart-deckgl/src/layers/common.test.ts | 9 +-
.../preset-chart-deckgl/src/layers/common.tsx | 17 +-
.../src/layers/spatialUtils.test.ts | 19 +-
.../preset-chart-deckgl/src/layers/spatialUtils.ts | 48 +-
.../src/utilities/Shared_DeckGL.tsx | 87 -
.../src/utils/crossFiltersDataMask.test.ts | 46 -
.../src/utils/crossFiltersDataMask.ts | 8 +-
.../preset-chart-deckgl/src/utils/explore.ts | 2 +-
.../preset-chart-deckgl/src/utils/sandbox.ts | 65 -
superset-frontend/spec/helpers/testing-library.tsx | 14 +-
.../src/SqlLab/actions/sqlLab.test.ts | 60 +-
.../components/ExploreResultsButton/index.tsx | 1 -
.../components/PopEditorTab/PopEditorTab.test.tsx | 23 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 46 +-
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 29 +
.../src/SqlLab/components/ResultSet/index.tsx | 21 +-
.../components/ScheduleQueryButton/index.tsx | 13 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 2 +-
.../components/TemplateParamsEditor/index.tsx | 4 +-
.../src/SqlLab/reducers/sqlLab.test.ts | 35 +-
superset-frontend/src/SqlLab/reducers/sqlLab.ts | 8 +-
.../src/chartCustomizations/components/common.ts | 7 +
.../src/components/Chart/Chart.test.tsx | 21 +-
superset-frontend/src/components/Chart/Chart.tsx | 51 +-
.../src/components/Chart/ChartRenderer.tsx | 14 +
.../components/Chart/DrillBy/DrillByModal.test.tsx | 2 +-
.../src/components/Chart/DrillBy/DrillByModal.tsx | 31 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 21 +-
.../Chart/DrillDetail/DownloadDropdown.tsx | 16 +-
.../Chart/DrillDetail/DrillDetailTableControls.tsx | 3 +-
.../src/components/Chart/chartAction.ts | 47 +-
.../src/components/Chart/chartActions.test.ts | 107 +
.../CopyToClipboard/CopyToClipboard.stories.tsx | 2 +-
.../src/components/CopyToClipboard/index.tsx | 15 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../Datasource/DatasourceModal/index.tsx | 9 +-
.../components/CollectionTable/index.tsx | 3 +-
.../DatasourceEditor/DatasourceEditor.tsx | 14 +-
.../ErrorMessage/BasicErrorAlert.test.tsx | 1 +
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 1 +
.../DatasetNotFoundErrorMessage.test.tsx | 1 +
.../src/components/ErrorMessage/ErrorAlert.tsx | 34 +-
.../ErrorMessageWithStackTrace.test.tsx | 1 +
.../FrontendNetworkErrorMessage.test.tsx | 1 +
.../ErrorMessage/ParameterErrorMessage.test.tsx | 1 +
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 1 +
.../src/components/ImportModal/index.tsx | 13 +-
.../src/components/ImportModal/styles.ts | 2 +-
.../ListView/Filters/CompactSelectPanel.tsx | 7 +
.../src/components/ListView/ListView.test.tsx | 14 +-
.../src/components/ListView/ListView.tsx | 61 +-
.../src/components/MessageToasts/Toast.tsx | 3 +-
.../src/components/PanelToolbar/index.tsx | 2 +-
.../styles.ts => core/extensions/index.test.ts} | 14 +-
superset-frontend/src/core/extensions/index.ts | 12 +-
superset-frontend/src/core/index.ts | 1 +
.../src/core/storage/binaryCodec.test.ts | 109 +
superset-frontend/src/core/storage/binaryCodec.ts | 65 +
.../src/core/storage/ephemeralState.test.ts | 170 +
.../src/core/storage/ephemeralState.ts | 100 +
.../styles.ts => core/storage/index.ts} | 15 +-
.../src/core/storage/localState.test.ts | 96 +
superset-frontend/src/core/storage/localState.ts | 67 +
.../src/core/storage/persistentState.test.ts | 261 +
.../src/core/storage/persistentState.ts | 143 +
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 4 +
.../components/CustomizationsBadge/index.tsx | 4 +
.../dashboard/components/DeleteComponentButton.tsx | 2 +-
.../DetailsPanel/DetailsPanel.test.tsx | 2 +-
.../components/FiltersBadge/DetailsPanel/index.tsx | 2 +-
.../dashboard/components/FiltersBadge/index.tsx | 12 +-
.../dashboard/components/Header/Header.test.tsx | 22 +-
.../src/dashboard/components/Header/index.tsx | 6 +-
.../src/dashboard/components/IconButton.tsx | 19 +-
.../src/dashboard/components/SliceHeader/index.tsx | 8 +-
.../components/gridComponents/Chart/Chart.tsx | 5 +-
.../components/gridComponents/Tab/Tab.tsx | 22 +-
.../components/gridComponents/Tabs/Tabs.tsx | 6 +-
.../TabsRenderer/TabsRenderer.test.tsx | 65 +
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 8 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 148 +-
.../components/menu/DownloadMenuItems/index.tsx | 71 +-
.../nativeFilters/ConfigModal/ModalFooter.tsx | 2 +-
.../nativeFilters/ConfigModal/SharedStyles.tsx | 2 +-
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 3 +-
.../ScopingModal/ChartsScopingListPanel.test.tsx | 7 +-
.../ScopingModal/ChartsScopingListPanel.tsx | 12 +-
.../FilterBar/CrossFilters/VerticalCollapse.tsx | 21 +-
.../FilterBar/FilterBarSettings/index.tsx | 6 +-
.../FilterConfigurationLink.test.tsx | 21 +-
.../FilterBar/FilterConfigurationLink/index.tsx | 17 +-
.../FilterBar/FilterControls/FilterControl.tsx | 10 +
.../FilterControls/FilterControlShared.tsx | 8 +
.../FilterBar/FilterControls/FilterControls.tsx | 28 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 5 +
.../FilterBar/UrlFilters/VerticalCollapse.tsx | 20 +-
.../nativeFilters/FilterBar/Vertical.tsx | 9 +-
.../nativeFilters/FilterCard/DependenciesRow.tsx | 2 +-
.../components/nativeFilters/FilterCard/Styles.ts | 7 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 21 +-
.../FiltersConfigForm/DependencyList.tsx | 9 +-
.../Footer/CancelConfirmationAlert.tsx | 2 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 21 +-
.../dashboard/hooks/useDownloadScreenshot.test.ts | 50 +
.../src/dashboard/hooks/useDownloadScreenshot.ts | 12 +-
superset-frontend/src/database/actions.test.ts | 67 +
superset-frontend/src/database/actions.ts | 2 +-
.../src/explore/components/ControlHeader.tsx | 5 +
.../explore/components/DataTableControl/index.tsx | 15 +-
.../components/DataTablesPane/DataTablesPane.tsx | 37 +-
.../components/DataTableControls.tsx | 3 +-
.../explore/components/DatasourcePanel/index.tsx | 25 +-
.../src/explore/components/EmbedCodeContent.tsx | 14 +-
.../explore/components/ExploreChartPanel/index.tsx | 39 +-
.../components/ExploreViewContainer/index.tsx | 49 +-
.../AnnotationLayer.subdirectory.test.tsx | 87 +
.../ColorBreakpointPopoverControl.tsx | 4 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 16 +-
.../controls/DatasourceControl/index.tsx | 6 +
.../DateFilterControl/components/DateLabel.tsx | 7 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 44 +-
.../DndColumnSelectPopoverTitle.tsx | 18 +-
.../controls/DndColumnSelectControl/Option.tsx | 3 +-
.../DndColumnSelectControl/useResizeButton.tsx | 5 +
.../FilterControl/AdhocFilterControl/index.tsx | 13 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 5 +
.../FixedOrMetricControl.test.tsx | 1 +
.../controls/LayerConfigsControl/LayerTreeItem.tsx | 29 +-
.../MetricControl/AdhocMetricEditPopover/index.tsx | 34 +-
.../MetricControl/AdhocMetricEditPopoverTitle.tsx | 19 +-
.../components/controls/OptionControls/index.tsx | 10 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 21 +-
.../components/controls/VizTypeControl/index.tsx | 22 +-
.../src/extensions/ExtensionContext.test.ts | 60 +
.../src/extensions/ExtensionContext.ts | 78 +
.../src/extensions/ExtensionsLoader.test.ts | 267 +-
.../src/extensions/ExtensionsLoader.ts | 123 +-
.../src/extensions/webpackFederation.d.ts | 63 +
.../src/features/alerts/AlertReportModal.test.tsx | 23 +
.../alerts/components/NotificationMethod.test.tsx | 23 +
.../alerts/components/NotificationMethod.tsx | 43 +-
.../src/features/charts/ChartCard.tsx | 56 +-
.../src/features/dashboards/DashboardCard.tsx | 58 +-
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 -
.../databases/DatabaseModal/index.test.tsx | 54 +
.../src/features/databases/DatabaseModal/index.tsx | 1 +
.../src/features/databases/DatabaseModal/styles.ts | 8 +-
.../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 3 +-
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 68 +-
.../DatasetPanel/DatasetPanelWrapper.test.tsx | 1 +
.../AddDataset/DatasetPanel/MessageContent.tsx | 6 +-
.../datasets/DuplicateDatasetModal.test.tsx | 28 +
.../features/datasets/DuplicateDatasetModal.tsx | 6 +-
.../src/features/groups/GroupListModal.tsx | 2 +-
superset-frontend/src/features/home/Menu.test.tsx | 84 +-
superset-frontend/src/features/home/Menu.tsx | 19 +-
superset-frontend/src/features/home/RightMenu.tsx | 4 +-
.../src/features/home/SavedQueries.test.tsx | 146 +
.../src/features/home/SavedQueries.tsx | 28 +-
superset-frontend/src/features/home/SubMenu.tsx | 214 +-
.../src/features/queries/QueryPreviewModal.tsx | 13 +-
.../src/features/queries/SyntaxHighlighterCopy.tsx | 3 +-
.../reports/ReportModal/ReportModal.test.tsx | 9 +-
.../src/features/roles/RoleFormItems.tsx | 2 +-
.../src/features/users/UserListModal.tsx | 4 +-
.../components/Select/SelectFilterPlugin.tsx | 8 +-
.../src/filters/components/common.test.tsx | 37 +
superset-frontend/src/filters/components/common.ts | 7 +
.../src/middleware/asyncEvent.test.ts | 61 +-
superset-frontend/src/middleware/asyncEvent.ts | 51 +-
.../src/pages/ChartCreation/index.tsx | 9 +-
.../pages/ChartList/ChartList.cardview.test.tsx | 6 +-
.../pages/ChartList/ChartList.listview.test.tsx | 2 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 16 +-
.../src/pages/ChartList/ChartList.test.tsx | 2 +-
superset-frontend/src/pages/ChartList/index.tsx | 65 +-
.../DashboardList/DashboardList.cardview.test.tsx | 4 +-
.../DashboardList.permissions.test.tsx | 10 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 4 +-
.../src/pages/DashboardList/index.tsx | 75 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 117 +-
.../DatasetList/DatasetList.behavior.test.tsx | 4 +-
.../DatasetList/DatasetList.listview.test.tsx | 25 +-
.../src/pages/DatasetList/DatasetList.test.tsx | 34 +
.../pages/DatasetList/DatasetList.testHelpers.tsx | 31 +
superset-frontend/src/pages/DatasetList/index.tsx | 134 +-
superset-frontend/src/pages/Home/index.tsx | 4 +-
superset-frontend/src/pages/Login/Login.test.tsx | 281 +-
superset-frontend/src/pages/Login/index.tsx | 7 +-
.../src/pages/QueryHistoryList/index.tsx | 26 +-
.../src/pages/Register/Register.test.tsx | 105 +-
.../src/pages/RowLevelSecurityList/index.tsx | 47 +-
superset-frontend/src/pages/Tags/index.tsx | 48 +-
.../src/pages/TaskList/TaskList.test.tsx | 6 +-
superset-frontend/src/pages/TaskList/index.tsx | 31 +-
.../src/setup/setupFormatters.test.ts | 1 +
superset-frontend/src/setup/setupFormatters.ts | 10 +
superset-frontend/src/utils/findPermission.test.ts | 52 +-
superset-frontend/src/utils/findPermission.ts | 13 +
superset-frontend/src/utils/pathUtils.test.ts | 18 +
superset-frontend/src/views/App.tsx | 61 +-
superset-frontend/src/views/CRUD/hooks.ts | 4 +
.../src/visualizations/TimeTable/TimeTable.tsx | 16 +-
.../components/ValueCell/ValueCell.test.tsx | 171 +-
.../TimeTable/components/ValueCell/ValueCell.tsx | 30 +-
.../TimeTable/utils/sortUtils/sortUtils.test.ts | 37 +-
.../TimeTable/utils/sortUtils/sortUtils.ts | 46 +-
superset-frontend/webpack.config.js | 6 +-
superset-websocket/package-lock.json | 30 +-
superset-websocket/package.json | 6 +-
.../utils/client-ws-app/package-lock.json | 108 +-
superset/__init__.py | 10 +
superset/annotation_layers/annotations/schemas.py | 6 +-
superset/annotation_layers/schemas.py | 6 +-
superset/app.py | 19 +-
superset/async_events/async_query_manager.py | 5 +
superset/async_events/cache_backend.py | 61 +-
superset/charts/api.py | 85 +-
superset/charts/client_processing.py | 44 +-
superset/charts/data/api.py | 50 +-
superset/charts/data/dashboard_filter_context.py | 39 +-
superset/charts/schemas.py | 29 +-
superset/cli/importexport.py | 34 +-
superset/cli/test_db.py | 3 +
superset/commands/dashboard/importers/v0.py | 16 +-
.../commands/dashboard/importers/v1/__init__.py | 36 +-
superset/commands/dataset/duplicate.py | 11 +-
superset/commands/dataset/importers/v0.py | 24 +-
superset/commands/datasource/list.py | 23 +
superset/commands/explore/get.py | 21 +
superset/commands/importers/v1/utils.py | 18 +-
superset/commands/logs/prune.py | 8 +-
superset/commands/report/execute.py | 128 +-
superset/commands/report/log_prune.py | 8 +-
superset/commands/streaming_export/base.py | 2 +-
superset/common/grouping_sets.py | 117 +
superset/common/query_context_factory.py | 2 +-
superset/common/query_context_processor.py | 151 +-
superset/common/query_object.py | 4 +
superset/common/utils/query_cache_manager.py | 17 +-
superset/config.py | 175 +-
superset/connectors/sqla/models.py | 33 +-
superset/connectors/sqla/utils.py | 15 +
superset/constants.py | 1 +
superset/core/api/core_api_injection.py | 56 +-
superset/core/mcp/core_mcp_injection.py | 6 +-
superset/css_templates/schemas.py | 6 +-
superset/daos/dataset.py | 358 +-
superset/daos/log.py | 4 +-
superset/daos/query.py | 6 +-
superset/dashboards/api.py | 243 +-
.../dashboards/excel_export}/__init__.py | 0
superset/dashboards/excel_export/email.py | 180 +
superset/dashboards/excel_export/layout.py | 97 +
superset/dashboards/excel_export/screenshot.py | 103 +
superset/dashboards/schemas.py | 47 +-
superset/databases/schemas.py | 14 +-
superset/datasets/api.py | 153 +-
superset/datasets/datetime_format_detector.py | 19 +-
superset/datasets/schemas.py | 12 +-
superset/db_engine_specs/base.py | 63 +
superset/db_engine_specs/bigquery.py | 7 +-
superset/db_engine_specs/clickhouse.py | 12 +
superset/db_engine_specs/crate.py | 2 +-
superset/db_engine_specs/databricks.py | 1 +
superset/db_engine_specs/datafusion.py | 92 +
superset/db_engine_specs/elasticsearch.py | 146 +-
superset/db_engine_specs/gsheets.py | 1 +
superset/db_engine_specs/hive.py | 38 +-
superset/db_engine_specs/kusto.py | 111 +-
superset/db_engine_specs/mysql.py | 14 +-
superset/db_engine_specs/postgres.py | 28 +
superset/db_engine_specs/presto.py | 20 +-
superset/db_engine_specs/snowflake.py | 1 +
superset/db_engine_specs/starrocks.py | 5 +
superset/db_engine_specs/trino.py | 8 +-
superset/embedded/view.py | 3 +
superset/examples/birth_names.py | 15 +-
.../examples/deckgl_demo/charts/Deck.gl_Path.yaml | 6 -
.../deckgl_demo/charts/Deck.gl_Polygons.yaml | 4 -
superset/examples/generic_loader.py | 11 +-
superset/examples/world_bank.py | 6 +-
superset/explore/schemas.py | 35 +
superset/extensions/api.py | 2 +-
superset/extensions/cache_middleware.py | 6 +-
superset/extensions/context.py | 136 +-
superset/extensions/local_extensions_watcher.py | 211 +-
.../storage/__init__.py} | 18 +-
superset/extensions/storage/api.py | 744 ++
superset/extensions/storage/codecs.py | 68 +
superset/extensions/storage/ephemeral.py | 141 +
superset/extensions/storage/ephemeral_dao.py | 161 +
superset/extensions/storage/filters.py | 45 +
superset/extensions/storage/persistent.py | 244 +
superset/extensions/storage/persistent_dao.py | 655 ++
superset/extensions/storage/persistent_model.py | 139 +
superset/extensions/storage/utils.py | 112 +
superset/extensions/utils.py | 9 +-
superset/initialization/__init__.py | 75 +-
superset/jinja_context.py | 43 +-
superset/key_value/types.py | 17 +
superset/mcp_service/CLAUDE.md | 8 +-
superset/mcp_service/README.md | 2 +-
superset/mcp_service/annotation_layer/schemas.py | 167 +-
superset/mcp_service/app.py | 44 +-
superset/mcp_service/chart/chart_helpers.py | 4 -
superset/mcp_service/chart/chart_utils.py | 125 +-
superset/mcp_service/chart/plugins/__init__.py | 3 +
superset/mcp_service/chart/plugins/waterfall.py | 186 +
superset/mcp_service/chart/schemas.py | 259 +-
superset/mcp_service/chart/tool/generate_chart.py | 18 +-
superset/mcp_service/chart/tool/get_chart_data.py | 3 +
.../mcp_service/chart/tool/get_chart_preview.py | 3 +
.../chart/tool/get_chart_type_schema.py | 20 +-
superset/mcp_service/chart/tool/list_charts.py | 11 +-
.../mcp_service/chart/tool/update_chart_preview.py | 2 +-
.../chart/validation/dataset_validator.py | 7 +-
superset/mcp_service/common/pagination_schemas.py | 182 +
superset/mcp_service/dashboard/schemas.py | 512 +-
superset/mcp_service/dashboard/tool/__init__.py | 6 +
.../mcp_service/dashboard/tool/governance_utils.py | 120 +
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../tool/manage_dashboard_certification.py | 155 +
.../dashboard/tool/manage_dashboard_owners.py | 383 +
.../dashboard/tool/manage_dashboard_roles.py | 326 +
.../mcp_service/dashboard/tool/update_dashboard.py | 2 +-
superset/mcp_service/database/schemas.py | 126 +-
superset/mcp_service/dataset/schemas.py | 163 +-
superset/mcp_service/middleware.py | 676 +-
superset/mcp_service/query/schemas.py | 109 +-
superset/mcp_service/report/schemas.py | 122 +-
superset/mcp_service/rls/schemas.py | 89 +-
superset/mcp_service/role/schemas.py | 109 +-
superset/mcp_service/saved_query/schemas.py | 131 +-
.../mcp_service/screenshot/pooled_screenshot.py | 8 +-
superset/mcp_service/server.py | 65 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 37 +-
superset/mcp_service/storage.py | 11 +-
superset/mcp_service/tag/schemas.py | 103 +-
superset/mcp_service/task/schemas.py | 103 +-
superset/mcp_service/theme/schemas.py | 100 +-
superset/mcp_service/user/schemas.py | 109 +-
superset/mcp_service/utils/permissions_utils.py | 289 +-
superset/mcp_service/utils/token_utils.py | 244 +
superset/middleware/legacy_prefix_redirect.py | 10 +-
superset/migrations/shared/catalogs.py | 4 +-
superset/migrations/shared/native_filters.py | 2 +-
..._08-54_c3a8f8611885_materializing_permission.py | 2 +-
...d8bc074f7aad_add_new_field_is_restricted_to_.py | 2 +-
...06-27_08-43_27ae655e4247_make_creator_owners.py | 2 +-
...-09-07_23-50_33d996bcc382_update_slice_model.py | 4 +-
...2_11-31_eca4694defa7_sqllab_setting_defaults.py | 2 +-
...4_12-31_db0c65b146bd_update_slice_model_json.py | 2 +-
...7c195a_rewriting_url_from_shortner_with_new_.py | 2 +-
...-08_08-19_67a6ac9b727b_update_spatial_params.py | 2 +-
...2-17_11-06_21e88bc06c02_annotation_migration.py | 4 +-
.../2018-02-13_08-07_e866bd2d4976_smaller_grid.py | 4 +-
...-04-03_08-19_130915240929_is_sqllab_viz_flow.py | 2 +-
...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py | 2 +-
...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py | 4 +-
...6-07_09-52_afb7730f6a9c_remove_empty_filters.py | 2 +-
...13_10-20_4451805bbaa1_remove_double_percents.py | 58 +-
.../2018-06-13_14-54_bddc498dd179_adhoc_filters.py | 4 +-
...4_14-31_80a67c5192fa_single_pie_chart_metric.py | 4 +-
...1c4c6_migrate_num_period_compare_and_period_.py | 4 +-
.../2018-07-19_23-41_c617da68de7d_form_nullable.py | 2 +-
...07-20_15-31_7f2635b51f5d_update_base_columns.py | 2 +-
...07-20_15-57_e9df189e5c7e_update_base_metrics.py | 2 +-
..._bebcf3fed1fe_convert_dashboard_v1_positions.py | 2 +-
.../versions/2018-08-01_11-47_7fcdcde0761c_.py | 2 +-
...08545_migrate_time_range_for_default_filters.py | 2 +-
...2018-12-11_22-03_fb13d49b72f9_better_filters.py | 4 +-
...e1b21cd94a4_change_owner_to_m2m_relation_on_.py | 2 +-
.../2019-03-21_10-22_d94d33dbe938_form_strip.py | 2 +-
...a3f04bc82_add_parent_ids_in_dashboard_layout.py | 4 +-
.../2019-06-28_13-17_ab8c66efdd01_resample.py | 4 +-
...ng_unique_constraint_on_dashboard_slices_tbl.py | 2 +-
...5afa9079866a_serialize_schema_permissions_py.py | 2 +-
...e_form_strip_leading_and_trailing_whitespace.py | 2 +-
.../2019-10-10_13-52_1495eb914ad3_time_range.py | 4 +-
...127d0d1d_reconvert_legacy_filters_into_adhoc.py | 2 +-
..._14-13_3325d4caccc8_dashboard_scoped_filters.py | 2 +-
...10-42_f9a30386bd74_cleanup_time_grainularity.py | 2 +-
...29_09-24_620241d1153f_update_time_grain_sqla.py | 2 +-
...978245563a02_migrate_iframe_to_dash_markdown.py | 2 +-
...654_fix_data_access_permissions_for_virtual_.py | 2 +-
...b56500de1855_add_uuid_column_to_import_mixin.py | 4 +-
...208f_collapse_alerting_models_into_a_single_.py | 4 +-
...6e99fb176a0_add_import_mixing_to_saved_query.py | 4 +-
...e38177dbf641_security_converge_saved_queries.py | 4 +-
...15-25_40f16acf1ba7_security_converge_reports.py | 4 +-
...8ee129739cf9_security_converge_css_templates.py | 4 +-
..._14-13_ccb74baaa89b_security_converge_charts.py | 4 +-
...5-05_45731db65d9c_security_converge_datasets.py | 4 +-
...45_1f6dca87d1a2_security_converge_dashboards.py | 4 +-
...2_c25cb2c78727_security_converge_annotations.py | 4 +-
...-49_42b4c9e01447_security_converge_databases.py | 4 +-
...14_13-40_4b84f97828aa_security_converge_logs.py | 4 +-
...12-15_e37912a26567_security_converge_queries.py | 4 +-
...60bf0649a77_migrate_x_dateunit_in_time_range.py | 2 +-
...2fdb_add_granularity_to_charts_where_missing.py | 2 +-
...-10_12-32_41ce8799acc3_rename_pie_label_type.py | 4 +-
...1412ec1e5a7b_legacy_force_directed_to_echart.py | 4 +-
...8_09-13_c501b7c653a3_add_missing_uuid_column.py | 2 +-
...989bbe479899_rename_filter_configuration_in_.py | 4 +-
...ea61c5e7_remove_dataset_health_check_message.py | 2 +-
...88938_country_map_use_lowercase_country_name.py | 4 +-
...3a3a8ff221_migrate_filter_sets_to_new_format.py | 4 +-
...ed7ec95_migrate_native_filters_to_new_schema.py | 4 +-
...3605f370a_fix_schemas_allowed_for_csv_upload.py | 2 +-
...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 2 +-
..._17-16_f6196627326f_update_chart_permissions.py | 4 +-
...13dd52_change_fetch_values_predicate_to_text.py | 2 +-
...4fbb_add_type_to_native_filter_configuration.py | 4 +-
...453f4e2e_migrate_timeseries_limit_metric_to_.py | 2 +-
...12_11-15_32646df09c64_update_time_grain_sqla.py | 2 +-
...e5f1dacd_rename_to_schemas_allowed_for_file_.py | 4 +-
...aa3ff_add_force_screenshot_to_alerts_reports.py | 2 +-
...5b9441_rename_big_viz_total_form_data_fields.py | 4 +-
...d1d2_move_pivot_table_v2_legacy_order_by_to_.py | 4 +-
...d8e252_fix_query_and_saved_query_null_schema.py | 2 +-
...b0ca7944_change_adhoc_filter_b_from_none_to_.py | 4 +-
...14-38_a9422eeaae74_new_dataset_models_take_2.py | 2 +-
...d0249074e4_deprecate_time_range_endpoints_v2.py | 2 +-
...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py | 2 +-
...-39_cbe71abde154_fix_report_schedule_and_log.py | 2 +-
...8_16-07_e786798587de_delete_none_permissions.py | 2 +-
..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py | 2 +-
...59_7fb8bca906d2_permalink_rename_filterstate.py | 4 +-
...5-48_409c7b420ab0_add_created_by_fk_as_owner.py | 2 +-
..._13-00_c747c78868b6_migrating_legacy_treemap.py | 4 +-
...-07_14-00_06e1e70058c7_migrating_legacy_area.py | 4 +-
...665d_fix_table_chart_conditional_formatting_.py | 2 +-
...1_4ce1d9b25135_remove_filter_bar_orientation.py | 2 +-
...4-46_c0a3ea245b61_remove_show_native_filters.py | 2 +-
...ac08bb5b83_invert_horizontal_bar_chart_order.py | 4 +-
...7_13-24_b5ea9d343307_bar_chart_stack_options.py | 4 +-
...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py | 2 +-
...2a5681ddfd_convert_key_value_entries_to_json.py | 4 +-
...-41_4ea966691069_cross_filter_global_scoping.py | 4 +-
...02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py | 4 +-
...-08_10-22_4c5da39be729_migrate_treemap_chart.py | 4 +-
...e58e1e58e5c_migrate_dual_line_to_mixed_chart.py | 4 +-
...delete_obsolete_druid_nosql_slice_parameters.py | 2 +-
...6f8b1280_cleanup_erroneous_parent_filter_ids.py | 2 +-
...9_17-54_ee179a490af9_deckgl_path_width_units.py | 2 +-
...23_0769ef90fddd_fix_schema_perm_for_datasets.py | 2 +-
...086c2676_add_normalize_columns_to_sqla_model.py | 2 +-
...317970b4400c_added_time_secondary_column_to_.py | 2 +-
...ff00fe8_add_percent_calculation_type_funnel_.py | 4 +-
...18_14-41_a32e0c4d8646_migrate_sunburst_chart.py | 4 +-
...d09c9_migrate_filter_boxes_to_native_filters.py | 2 +-
...d83218_migrate_can_view_and_drill_permission.py | 4 +-
...47_be1b217cd8cd_big_number_kpi_single_metric.py | 4 +-
...8_15-43_5ad7321c2169_mig_new_csv_upload_perm.py | 4 +-
...14-04_d60591c5515f_mig_new_excel_upload_perm.py | 4 +-
...36_4a33124c18ad_mig_new_columnar_upload_perm.py | 4 +-
...9123a_update_charts_with_old_time_comparison.py | 4 +-
...09-34_d482d51c15ca_remove_legacy_plugins_5_0.py | 4 +-
...-34_74ad1125881c_converge_upload_permissions.py | 4 +-
...fdba9f_merge_x_axis_sort_series_with_x_axis_.py | 4 +-
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...8d8526_fix_form_data_string_in_query_context.py | 2 +-
...00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py | 4 +-
...a1b2c3d4e5f6_add_granular_export_permissions.py | 4 +-
...-00_b4a3f2e1d0c9_fix_security_view_menu_case.py | 2 +-
...23_a7d3f1b9c2e4_cleanup_stale_can_import_pvm.py | 4 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 2 +-
...-00_e5f6a7b8c9d0_add_extension_storage_table.py | 109 +
...a1f6c204_version_transaction_issued_at_index.py | 48 +
superset/models/core.py | 7 +-
superset/models/helpers.py | 228 +-
superset/models/sql_lab.py | 25 +-
superset/queries/saved_queries/schemas.py | 12 +-
superset/reports/notifications/email.py | 49 +-
superset/reports/schemas.py | 6 +-
superset/row_level_security/schemas.py | 6 +-
superset/security/manager.py | 212 +-
superset/semantic_layers/api.py | 11 +-
superset/sql/execution/celery_task.py | 44 +-
superset/sql/execution/executor.py | 117 +-
superset/sql/parse.py | 25 +
superset/sql_lab.py | 29 +-
superset/subjects/utils.py | 35 +
superset/superset_typing.py | 8 +
superset/tags/models.py | 14 +-
superset/tasks/celery_app.py | 2 +-
superset/tasks/decorators.py | 4 +-
superset/tasks/export_dashboard_excel.py | 361 +
superset/tasks/schemas.py | 6 +-
superset/tasks/version_history_retention.py | 548 ++
superset/templates/superset/spa.html | 6 +
superset/themes/schemas.py | 12 +-
superset/translations/ar/LC_MESSAGES/messages.po | 527 +-
superset/translations/ca/LC_MESSAGES/messages.po | 521 +-
superset/translations/cs/LC_MESSAGES/messages.po | 510 +-
superset/translations/de/LC_MESSAGES/messages.po | 516 +-
superset/translations/en/LC_MESSAGES/messages.po | 466 +-
superset/translations/es/LC_MESSAGES/messages.po | 518 +-
superset/translations/fa/LC_MESSAGES/messages.po | 527 +-
superset/translations/fi/LC_MESSAGES/messages.po | 558 +-
superset/translations/fr/LC_MESSAGES/messages.po | 526 +-
superset/translations/it/LC_MESSAGES/messages.po | 550 +-
superset/translations/ja/LC_MESSAGES/messages.po | 2295 +++--
superset/translations/ko/LC_MESSAGES/messages.po | 540 +-
superset/translations/lv/LC_MESSAGES/messages.po | 501 +-
superset/translations/messages.pot | 445 +-
superset/translations/mi/LC_MESSAGES/messages.po | 520 +-
superset/translations/nl/LC_MESSAGES/messages.po | 526 +-
superset/translations/pl/LC_MESSAGES/messages.po | 524 +-
superset/translations/pt/LC_MESSAGES/messages.po | 9917 +++++++-------------
.../translations/pt_BR/LC_MESSAGES/messages.po | 528 +-
superset/translations/ro/LC_MESSAGES/messages.po | 521 +-
superset/translations/ru/LC_MESSAGES/messages.po | 1874 ++--
superset/translations/sk/LC_MESSAGES/messages.po | 512 +-
superset/translations/sl/LC_MESSAGES/messages.po | 526 +-
superset/translations/sr/LC_MESSAGES/messages.po | 525 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 523 +-
superset/translations/th/LC_MESSAGES/messages.po | 553 +-
superset/translations/tr/LC_MESSAGES/messages.po | 519 +-
superset/translations/uk/LC_MESSAGES/messages.po | 514 +-
superset/translations/zh/LC_MESSAGES/messages.po | 503 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 503 +-
superset/utils/backports.py | 11 +-
superset/utils/cache.py | 10 +-
superset/utils/cache_manager.py | 28 +-
superset/utils/core.py | 56 +-
superset/utils/dates.py | 4 +-
superset/utils/encrypt.py | 87 +
superset/utils/excel.py | 9 +-
superset/utils/excel_streaming.py | 250 +
superset/utils/log.py | 8 +-
superset/utils/pandas_postprocessing/boxplot.py | 18 +-
superset/utils/pandas_postprocessing/prophet.py | 2 +-
superset/utils/pandas_sqlalchemy_compat.py | 80 +
superset/utils/s3.py | 83 +
superset/utils/screenshot_utils.py | 243 +-
superset/utils/screenshots.py | 9 +-
superset/utils/webdriver.py | 241 +-
superset/versioning/activity/__init__.py | 102 +
superset/versioning/activity/impact.py | 186 +
superset/versioning/activity/kinds.py | 210 +
superset/versioning/activity/orchestrator.py | 434 +
superset/versioning/activity/queries.py | 870 ++
superset/versioning/activity/render.py | 285 +
superset/versioning/activity/scope.py | 138 +
superset/versioning/activity/visibility.py | 206 +
superset/versioning/activity/windows.py | 108 +
superset/versioning/api_helpers.py | 127 +-
superset/versioning/changes/listener.py | 26 +
superset/versioning/diff.py | 8 +-
superset/versioning/queries.py | 19 +-
superset/versioning/schemas.py | 332 +-
superset/views/base.py | 7 +-
superset/views/core.py | 1 +
superset/views/datasource/utils.py | 85 +-
superset/views/utils.py | 21 +-
superset/viz.py | 10 -
superset_text.yml | 1 +
tests/integration_tests/charts/commands_tests.py | 4 -
tests/integration_tests/charts/data/api_tests.py | 167 +-
tests/integration_tests/cli_tests.py | 118 +-
tests/integration_tests/conftest.py | 84 +-
tests/integration_tests/dao/conftest.py | 3 +-
tests/integration_tests/dashboards/api_tests.py | 169 +
tests/integration_tests/databases/api_tests.py | 8 +
tests/integration_tests/datasets/api_tests.py | 4 +
tests/integration_tests/datasource_tests.py | 15 +-
.../db_engine_specs/base_engine_spec_tests.py | 51 +-
.../db_engine_specs/bigquery_tests.py | 4 +-
.../db_engine_specs/datastore_tests.py | 4 +-
tests/integration_tests/event_logger_tests.py | 85 +-
tests/integration_tests/fixtures/datasource.py | 5 +-
.../fixtures/deck_geojson_form_data.json | 6 -
.../fixtures/deck_path_form_data.json | 6 -
.../integration_tests/fixtures/energy_dashboard.py | 6 +-
tests/integration_tests/fixtures/importexport.py | 4 -
tests/integration_tests/import_export_tests.py | 4 +-
.../composite_pk_association_tables__tests.py | 4 +-
.../migrations/composite_pk_round_trip__tests.py | 6 +-
.../integration_tests/non_additive_totals_tests.py | 315 +
tests/integration_tests/reports/commands_tests.py | 68 +-
tests/integration_tests/sqla_models_tests.py | 88 +-
tests/integration_tests/sqllab_tests.py | 6 +
.../versioning/activity_view_tests.py | 1256 +++
.../versioning/change_records_tests.py | 718 ++
.../versioning/perf_validation_tests.py | 423 +
.../versioning/retention_prune_tests.py | 510 +
tests/integration_tests/viz_tests.py | 5 +-
.../async_events/async_query_manager_tests.py | 38 +
.../unit_tests/async_events/test_cache_backend.py | 148 +
tests/unit_tests/charts/test_chart_data_api.py | 129 +-
tests/unit_tests/charts/test_client_processing.py | 96 +
.../charts/test_dashboard_filter_context.py | 172 +
tests/unit_tests/charts/test_filters.py | 3 +-
.../unit_tests/charts/test_non_additive_totals.py | 136 +
.../commands/dashboard/importers/v1/assets_test.py | 215 +
tests/unit_tests/commands/datasource/list_test.py | 60 +-
.../commands/explore/test_get_explore_rls.py | 123 +
.../unit_tests/commands/importers/v1/utils_test.py | 21 +
tests/unit_tests/commands/report/execute_test.py | 211 +
tests/unit_tests/common/test_grouping_sets.py | 112 +
.../unit_tests/common/test_query_cache_manager.py | 57 +
.../common/test_query_context_factory.py | 36 +
.../common/test_query_context_processor.py | 105 +
tests/unit_tests/config_test.py | 26 +
tests/unit_tests/conftest.py | 4 +-
tests/unit_tests/connectors/sqla/models_test.py | 97 +-
tests/unit_tests/connectors/sqla/utils_test.py | 103 +-
tests/unit_tests/core_tests.py | 63 +
tests/unit_tests/dao/dashboard_test.py | 51 +
tests/unit_tests/dao/dataset_rls_test.py | 496 +
.../dashboards/commands/importers/v0}/__init__.py | 0
.../commands/importers/v0/import_test.py | 92 +
.../dashboards/test_excel_export_email.py | 157 +
.../dashboards/test_excel_export_layout.py | 105 +
.../dashboards/test_excel_export_screenshot.py | 164 +
tests/unit_tests/databases/api_test.py | 2 +
tests/unit_tests/databases/filters_test.py | 6 +-
.../unit_tests/databases/test_schemas.py | 45 +-
.../datasets/commands/importers/v0}/__init__.py | 0
.../datasets/commands/importers/v0/import_test.py | 107 +
.../datasets/test_datetime_format_detector.py | 39 +-
tests/unit_tests/db_engine_specs/test_base.py | 23 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 72 +
.../unit_tests/db_engine_specs/test_clickhouse.py | 50 +
.../unit_tests/db_engine_specs/test_datafusion.py | 101 +
.../db_engine_specs/test_elasticsearch.py | 376 +
.../test_grouping_sets_capability.py | 59 +
tests/unit_tests/db_engine_specs/test_gsheets.py | 2 +
tests/unit_tests/db_engine_specs/test_hive.py | 68 +
tests/unit_tests/db_engine_specs/test_kusto.py | 85 +
tests/unit_tests/db_engine_specs/test_mysql.py | 89 +-
tests/unit_tests/db_engine_specs/test_postgres.py | 47 +
tests/unit_tests/db_engine_specs/test_presto.py | 66 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 2 +-
tests/unit_tests/db_engine_specs/test_starrocks.py | 26 +-
tests/unit_tests/db_engine_specs/test_trino.py | 5 +
.../distributed_lock/distributed_lock_tests.py | 2 +-
.../unit_tests/extensions/storage}/__init__.py | 0
tests/unit_tests/extensions/storage/conftest.py | 64 +
tests/unit_tests/extensions/storage/test_api.py | 1146 +++
tests/unit_tests/extensions/storage/test_codecs.py | 94 +
.../unit_tests/extensions/storage/test_context.py | 124 +
.../extensions/storage/test_ephemeral.py | 276 +
.../extensions/storage/test_ephemeral_dao.py | 323 +
.../unit_tests/extensions/storage/test_filters.py | 78 +
.../extensions/storage/test_persistent.py | 318 +
.../extensions/storage/test_persistent_dao.py | 957 ++
tests/unit_tests/extensions/storage/test_utils.py | 219 +
.../unit_tests/extensions/test_cache_middleware.py | 15 +
.../extensions/test_local_extensions_watcher.py | 59 +
tests/unit_tests/extensions/test_sqlalchemy.py | 12 +-
tests/unit_tests/initialization_test.py | 161 +
tests/unit_tests/jinja_context_test.py | 130 +
tests/unit_tests/key_value/codec_test.py | 14 +
.../mcp_service/chart/test_chart_helpers.py | 12 +-
.../mcp_service/chart/test_chart_utils.py | 83 +
.../mcp_service/chart/test_waterfall_chart.py | 316 +
.../mcp_service/chart/tool/test_get_chart_data.py | 58 +
.../chart/tool/test_get_chart_type_schema.py | 9 +-
.../mcp_service/dashboard/tool/conftest.py | 38 +-
.../tool/test_manage_dashboard_certification.py | 365 +
.../dashboard/tool/test_manage_dashboard_owners.py | 639 ++
.../dashboard/tool/test_manage_dashboard_roles.py | 573 ++
.../mcp_service/dataset/test_dataset_schemas.py | 15 +
.../mcp_service/dataset/tool/test_query_dataset.py | 321 +
.../mcp_service/system/resources}/__init__.py | 0
.../system/resources/test_schema_discovery.py | 133 +
.../unit_tests/mcp_service/test_logging_filters.py | 168 +
tests/unit_tests/mcp_service/test_middleware.py | 295 +
.../mcp_service/test_pooled_screenshot.py | 38 +-
.../mcp_service/utils/test_permissions_utils.py | 107 -
.../mcp_service/utils/test_token_utils.py | 103 +
.../composite_pk_association_tables_test.py | 2 +-
.../test_add_deleted_at_to_dashboards.py | 2 +-
.../migrations/test_add_deleted_at_to_slices.py | 2 +-
.../migrations/test_add_deleted_at_to_tables.py | 2 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 8 +-
.../test_version_transaction_issued_at_index.py | 90 +
tests/unit_tests/models/core_test.py | 93 +-
tests/unit_tests/models/helpers_test.py | 751 +-
.../models/owner_association_tables_test.py | 2 +-
tests/unit_tests/models/test_helpers_offset.py | 125 +
.../pandas_postprocessing/test_boxplot.py | 46 +
.../pandas_postprocessing/test_prophet.py | 34 +
tests/unit_tests/queries/query_object_test.py | 1 +
.../reports/notifications/email_tests.py | 118 +-
tests/unit_tests/result_set_test.py | 50 +
tests/unit_tests/scripts/change_detector_test.py | 96 +
.../security/exclude_users_filter_test.py | 10 +-
tests/unit_tests/security/manager_test.py | 660 ++
tests/unit_tests/semantic_layers/api_test.py | 7 +-
.../unit_tests/semantic_layers/decorators_test.py | 4 +-
tests/unit_tests/semantic_layers/mapper_test.py | 4 +-
tests/unit_tests/sql/execution/conftest.py | 11 +
tests/unit_tests/sql/execution/test_celery_task.py | 199 +-
tests/unit_tests/sql/execution/test_executor.py | 111 +-
tests/unit_tests/sql/parse_tests.py | 324 +
tests/unit_tests/sql_lab_test.py | 210 +
tests/unit_tests/subjects/test_utils.py | 56 +
.../tasks/test_export_dashboard_excel.py | 401 +
.../tasks/test_version_history_retention.py | 200 +
tests/unit_tests/test_viz_query_obj.py | 57 +
tests/unit_tests/utils/excel_streaming_tests.py | 267 +
tests/unit_tests/utils/filters_test.py | 9 +-
.../utils/pandas_sqlalchemy_compat_test.py | 67 +
tests/unit_tests/utils/s3_tests.py | 95 +
tests/unit_tests/utils/test_core.py | 38 +
tests/unit_tests/utils/test_screenshot_utils.py | 285 +-
tests/unit_tests/utils/webdriver_test.py | 401 +-
tests/unit_tests/versioning/test_activity.py | 827 ++
tests/unit_tests/versioning/test_listener.py | 4 +-
.../common => tests/unit_tests/views}/__init__.py | 0
tests/unit_tests/views/datasource/test_utils.py | 396 +
tests/unit_tests/views/test_base.py | 19 +
tests/unit_tests/views/test_bootstrap_auth.py | 49 +-
tests/unit_tests/views/test_soft_delete_filter.py | 2 +-
tests/unit_tests/views/test_utils.py | 48 -
1035 files changed, 72205 insertions(+), 24789 deletions(-)
create mode 100644 .github/workflows/hold-label-ci-gate.yml
rename .github/workflows/{superset-helm-lint.yml =>
superset-helm-lint-test.yml} (65%)
create mode 100644 docs/developer_docs/extensions/storage.md
create mode 100644 docs/docs/using-superset/exporting-dashboard-data.mdx
create mode 100644 docs/static/img/databases/datafusion.png
create mode 100644 docs/static/img/logos/pattern_logo.png
copy helm/superset/templates/{deployment-worker.yaml => deployment-mcp.yaml}
(61%)
create mode 100644 helm/superset/templates/httproute.yaml
copy helm/superset/templates/{secret-ws.yaml => pdb-mcp.yaml} (55%)
create mode 100644 helm/superset/templates/service-mcp.yaml
create mode 100644 helm/superset/tests/httproute_test.yaml
create mode 100644 helm/superset/tests/init_containers_test.yaml
create mode 100755 helm/superset/tests/test-istio.sh
copy {superset-core/src/superset_core/common => scripts}/__init__.py (100%)
create mode 100644 superset-core/src/superset_core/extensions/context.py
create mode 100644
superset-core/src/superset_core/extensions/storage/__init__.py
create mode 100644 superset-core/src/superset_core/extensions/storage/dao.py
create mode 100644
superset-core/src/superset_core/extensions/storage/ephemeral.py
create mode 100644 superset-core/src/superset_core/extensions/storage/models.py
create mode 100644
superset-core/src/superset_core/extensions/storage/persistent.py
create mode 100644
superset-frontend/packages/superset-core/src/storage/index.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/RlsBadge/RlsBadge.test.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/RlsBadge/index.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Select/utils.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/number-format/factories/createLengthFormatter.ts
create mode 100644
superset-frontend/packages/superset-ui-core/test/number-format/factories/createLengthFormatter.test.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/dashboard-controls.spec.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/dashboard-load.spec.ts
delete mode 100644
superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/exploreUtils.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/components/echartsLocale.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/components/echartsLocale.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/utilities.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/TableRenderer.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/utilities.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/nonAdditiveTotals.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/testData.ts
copy superset-frontend/plugins/{plugin-chart-table =>
plugin-chart-pivot-table}/test/testHelpers.tsx (100%)
copy superset-frontend/plugins/{plugin-chart-table =>
plugin-chart-pivot-table}/test/tsconfig.json (100%)
delete mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/utils/sandbox.ts
copy superset-frontend/src/{components/ImportModal/styles.ts =>
core/extensions/index.test.ts} (76%)
create mode 100644 superset-frontend/src/core/storage/binaryCodec.test.ts
create mode 100644 superset-frontend/src/core/storage/binaryCodec.ts
create mode 100644 superset-frontend/src/core/storage/ephemeralState.test.ts
create mode 100644 superset-frontend/src/core/storage/ephemeralState.ts
copy superset-frontend/src/{components/ImportModal/styles.ts =>
core/storage/index.ts} (72%)
create mode 100644 superset-frontend/src/core/storage/localState.test.ts
create mode 100644 superset-frontend/src/core/storage/localState.ts
create mode 100644 superset-frontend/src/core/storage/persistentState.test.ts
create mode 100644 superset-frontend/src/core/storage/persistentState.ts
create mode 100644 superset-frontend/src/database/actions.test.ts
create mode 100644
superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.subdirectory.test.tsx
create mode 100644 superset-frontend/src/extensions/ExtensionContext.test.ts
create mode 100644 superset-frontend/src/extensions/ExtensionContext.ts
create mode 100644 superset-frontend/src/extensions/webpackFederation.d.ts
create mode 100644 superset-frontend/src/features/home/SavedQueries.test.tsx
create mode 100644 superset-frontend/src/filters/components/common.test.tsx
create mode 100644 superset/common/grouping_sets.py
copy {superset-core/src/superset_core/common =>
superset/dashboards/excel_export}/__init__.py (100%)
create mode 100644 superset/dashboards/excel_export/email.py
create mode 100644 superset/dashboards/excel_export/layout.py
create mode 100644 superset/dashboards/excel_export/screenshot.py
create mode 100644 superset/db_engine_specs/datafusion.py
copy superset/{utils/backports.py => extensions/storage/__init__.py} (72%)
create mode 100644 superset/extensions/storage/api.py
create mode 100644 superset/extensions/storage/codecs.py
create mode 100644 superset/extensions/storage/ephemeral.py
create mode 100644 superset/extensions/storage/ephemeral_dao.py
create mode 100644 superset/extensions/storage/filters.py
create mode 100644 superset/extensions/storage/persistent.py
create mode 100644 superset/extensions/storage/persistent_dao.py
create mode 100644 superset/extensions/storage/persistent_model.py
create mode 100644 superset/extensions/storage/utils.py
create mode 100644 superset/mcp_service/chart/plugins/waterfall.py
create mode 100644 superset/mcp_service/common/pagination_schemas.py
create mode 100644 superset/mcp_service/dashboard/tool/governance_utils.py
create mode 100644
superset/mcp_service/dashboard/tool/manage_dashboard_certification.py
create mode 100644
superset/mcp_service/dashboard/tool/manage_dashboard_owners.py
create mode 100644
superset/mcp_service/dashboard/tool/manage_dashboard_roles.py
create mode 100644
superset/migrations/versions/2026-07-07_12-00_e5f6a7b8c9d0_add_extension_storage_table.py
create mode 100644
superset/migrations/versions/2026-07-27_10-00_d3b9a1f6c204_version_transaction_issued_at_index.py
create mode 100644 superset/tasks/export_dashboard_excel.py
create mode 100644 superset/tasks/version_history_retention.py
create mode 100644 superset/utils/excel_streaming.py
create mode 100644 superset/utils/pandas_sqlalchemy_compat.py
create mode 100644 superset/utils/s3.py
create mode 100644 superset/versioning/activity/__init__.py
create mode 100644 superset/versioning/activity/impact.py
create mode 100644 superset/versioning/activity/kinds.py
create mode 100644 superset/versioning/activity/orchestrator.py
create mode 100644 superset/versioning/activity/queries.py
create mode 100644 superset/versioning/activity/render.py
create mode 100644 superset/versioning/activity/scope.py
create mode 100644 superset/versioning/activity/visibility.py
create mode 100644 superset/versioning/activity/windows.py
create mode 100644 tests/integration_tests/non_additive_totals_tests.py
create mode 100644 tests/integration_tests/versioning/activity_view_tests.py
create mode 100644 tests/integration_tests/versioning/change_records_tests.py
create mode 100644 tests/integration_tests/versioning/perf_validation_tests.py
create mode 100644 tests/integration_tests/versioning/retention_prune_tests.py
create mode 100644 tests/unit_tests/async_events/test_cache_backend.py
create mode 100644 tests/unit_tests/charts/test_non_additive_totals.py
create mode 100644
tests/unit_tests/commands/dashboard/importers/v1/assets_test.py
create mode 100644 tests/unit_tests/commands/explore/test_get_explore_rls.py
create mode 100644 tests/unit_tests/common/test_grouping_sets.py
create mode 100644 tests/unit_tests/common/test_query_cache_manager.py
create mode 100644 tests/unit_tests/dao/dataset_rls_test.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/dashboards/commands/importers/v0}/__init__.py (100%)
create mode 100644
tests/unit_tests/dashboards/commands/importers/v0/import_test.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_email.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_layout.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_screenshot.py
copy
superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py
=> tests/unit_tests/databases/test_schemas.py (55%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/datasets/commands/importers/v0}/__init__.py (100%)
create mode 100644
tests/unit_tests/datasets/commands/importers/v0/import_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_datafusion.py
create mode 100644
tests/unit_tests/db_engine_specs/test_grouping_sets_capability.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/extensions/storage}/__init__.py (100%)
create mode 100644 tests/unit_tests/extensions/storage/conftest.py
create mode 100644 tests/unit_tests/extensions/storage/test_api.py
create mode 100644 tests/unit_tests/extensions/storage/test_codecs.py
create mode 100644 tests/unit_tests/extensions/storage/test_context.py
create mode 100644 tests/unit_tests/extensions/storage/test_ephemeral.py
create mode 100644 tests/unit_tests/extensions/storage/test_ephemeral_dao.py
create mode 100644 tests/unit_tests/extensions/storage/test_filters.py
create mode 100644 tests/unit_tests/extensions/storage/test_persistent.py
create mode 100644 tests/unit_tests/extensions/storage/test_persistent_dao.py
create mode 100644 tests/unit_tests/extensions/storage/test_utils.py
create mode 100644 tests/unit_tests/extensions/test_local_extensions_watcher.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_waterfall_chart.py
copy
superset/migrations/versions/2024-01-18_14-41_a32e0c4d8646_migrate_sunburst_chart.py
=> tests/unit_tests/mcp_service/dashboard/tool/conftest.py (52%)
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_certification.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_owners.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_roles.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/system/resources}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/system/resources/test_schema_discovery.py
create mode 100644 tests/unit_tests/mcp_service/test_logging_filters.py
copy
superset/migrations/versions/2023-06-08_11-34_ae58e1e58e5c_migrate_dual_line_to_mixed_chart.py
=> tests/unit_tests/mcp_service/test_pooled_screenshot.py (54%)
delete mode 100644 tests/unit_tests/mcp_service/utils/test_permissions_utils.py
create mode 100644
tests/unit_tests/migrations/test_version_transaction_issued_at_index.py
create mode 100644 tests/unit_tests/models/test_helpers_offset.py
create mode 100644 tests/unit_tests/scripts/change_detector_test.py
create mode 100644 tests/unit_tests/tasks/test_export_dashboard_excel.py
create mode 100644 tests/unit_tests/tasks/test_version_history_retention.py
create mode 100644 tests/unit_tests/test_viz_query_obj.py
create mode 100644 tests/unit_tests/utils/excel_streaming_tests.py
create mode 100644 tests/unit_tests/utils/pandas_sqlalchemy_compat_test.py
create mode 100644 tests/unit_tests/utils/s3_tests.py
create mode 100644 tests/unit_tests/versioning/test_activity.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/views}/__init__.py (100%)
create mode 100644 tests/unit_tests/views/datasource/test_utils.py
delete mode 100644 tests/unit_tests/views/test_utils.py