This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch fix/embedded-guest-query-context-403
in repository https://gitbox.apache.org/repos/asf/superset.git
from 37968f2a5f8 fix(embedded): allow guests to load charts with
missing/stale query_context
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 576fda2aa4c Merge remote-tracking branch 'origin/master' into
fix/embedded-guest-query-context-403
No new revisions were added by this update.
Summary of changes:
.github/ISSUE_TEMPLATE/bug-report.yml | 3 +-
.github/dependabot.yml | 43 +-
.github/workflows/bump-python-package.yml | 6 +-
.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 | 18 +-
...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 +-
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 | 128 +
docker-compose-light.yml | 2 +-
docker-compose-non-dev.yml | 2 +-
docker-compose.yml | 2 +-
docker/pythonpath_dev/superset_config.py | 1 +
.../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 | 38 +-
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
docs/yarn.lock | 947 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 73 +-
helm/superset/templates/_helpers.tpl | 6 +
helm/superset/templates/deployment-mcp.yaml | 197 +
helm/superset/templates/deployment-ws.yaml | 9 +
helm/superset/templates/httproute.yaml | 95 +
helm/superset/templates/ingress.yaml | 9 +
.../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 | 38 +
helm/superset/tests/labels_test.yaml | 119 +
helm/superset/values.yaml | 224 +-
pyproject.toml | 32 +-
pytest.ini | 16 +-
requirements/base.txt | 28 +-
requirements/development.txt | 51 +-
scripts/benchmark_migration.py | 2 +-
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 | 12 +-
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 +-
superset-frontend/cypress-base/package-lock.json | 34 +-
superset-frontend/cypress-base/package.json | 2 +-
superset-frontend/jest.config.js | 6 +-
superset-frontend/oxlint.json | 14 +-
superset-frontend/package-lock.json | 1674 ++--
superset-frontend/package.json | 51 +-
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 -
.../src/components/DesignSystem.stories.tsx | 6 +-
.../DropdownContainer/Overview.stories.tsx | 6 +-
.../MetadataBar/MetadataBarOverview.stories.tsx | 46 +-
.../src/components/RlsBadge/RlsBadge.test.tsx | 121 +
.../src/components/RlsBadge/index.tsx | 108 +
.../src/components/Select/AsyncSelect.test.tsx | 22 +
.../src/components/Select/AsyncSelect.tsx | 188 +-
.../src/components/Select/Select.test.tsx | 107 +
.../src/components/Select/Select.tsx | 212 +-
.../src/components/Select/utils.test.ts | 140 +
.../src/components/Select/utils.tsx | 75 +-
.../src/components/Table/TableOverview.stories.tsx | 34 +-
.../ActionCell/ActionCell.overview.tsx | 6 +-
.../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 -
.../factories/createLengthFormatter.test.ts | 68 +
.../test/number-format/index.test.ts | 2 +
.../packages/superset-ui-switchboard/src/index.ts | 4 +-
.../playwright/helpers/api/dashboard.ts | 85 +
.../playwright/pages/DashboardPage.ts | 9 +
.../tests/dashboard/clear-all-filters.spec.ts | 41 +-
.../tests/dashboard/dashboard-load.spec.ts | 257 +
.../tests/dashboard/delete-display-control.spec.ts | 41 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 38 +-
.../mixed-chart-dashboard-filters.spec.ts | 41 +-
.../tests/embedded/pivot-collapse-state.spec.ts | 37 +-
.../legacy-plugin-chart-calendar/src/Calendar.ts | 16 +-
.../src/controlPanel.ts | 37 +-
.../src/transformProps.ts | 4 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11681332 -> 11683742
bytes
.../src/countries/kenya.geojson | Bin 190196 -> 160739
bytes
.../plugins/legacy-preset-chart-nvd3/package.json | 2 +-
.../src/AgGridTable/index.tsx | 2 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 68 +-
.../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 | 4 +
.../src/react-pivottable/TableRenderers.tsx | 30 +-
.../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 | 2 +-
.../plugins/plugin-chart-table/src/index.ts | 4 +-
.../plugin-chart-table/test/TableChart.test.tsx | 143 +
.../plugin-chart-table/test/buildQuery.test.ts | 59 +-
.../plugins/preset-chart-deckgl/package.json | 4 +-
.../src/CategoricalDeckGLContainer.tsx | 7 -
.../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/sandbox.ts | 65 -
superset-frontend/spec/helpers/testing-library.tsx | 14 +-
.../src/SqlLab/actions/sqlLab.test.ts | 60 +-
.../components/PopEditorTab/PopEditorTab.test.tsx | 23 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 46 +-
.../components/ScheduleQueryButton/index.tsx | 13 +-
.../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 | 24 +
.../src/components/Chart/ChartRenderer.tsx | 14 +
.../src/components/Chart/chartAction.ts | 47 +-
.../src/components/Chart/chartActions.test.ts | 107 +
.../src/components/ImportModal/index.tsx | 13 +-
.../src/components/PanelToolbar/index.tsx | 2 +-
.../core/extensions/index.test.ts} | 13 +-
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 +
.../src => src/core/storage}/index.ts | 12 +-
.../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 +
.../dashboard/components/Header/Header.test.tsx | 22 +-
.../src/dashboard/components/Header/index.tsx | 6 +-
.../src/dashboard/components/SliceHeader/index.tsx | 8 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 148 +-
.../components/menu/DownloadMenuItems/index.tsx | 71 +-
.../FilterBar/FilterBarSettings/index.tsx | 6 +-
.../FilterConfigurationLink.test.tsx | 21 +-
.../FilterBar/FilterControls/FilterControl.tsx | 10 +
.../dashboard/hooks/useDownloadScreenshot.test.ts | 50 +
.../src/dashboard/hooks/useDownloadScreenshot.ts | 12 +-
.../AnnotationLayer.subdirectory.test.tsx | 87 +
.../controls/DatasourceControl/index.tsx | 6 +
.../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 +
.../databases/DatabaseModal/index.test.tsx | 54 +
.../src/features/databases/DatabaseModal/index.tsx | 1 +
.../src/features/databases/DatabaseModal/styles.ts | 4 -
.../datasets/DuplicateDatasetModal.test.tsx | 28 +
.../features/datasets/DuplicateDatasetModal.tsx | 6 +-
superset-frontend/src/features/home/RightMenu.tsx | 4 +-
.../src/features/home/SavedQueries.test.tsx | 146 +
.../src/features/home/SavedQueries.tsx | 24 +-
.../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/DatasetList/DatasetList.test.tsx | 34 +
.../pages/DatasetList/DatasetList.testHelpers.tsx | 31 +
superset-frontend/src/pages/DatasetList/index.tsx | 7 +
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/Register/Register.test.tsx | 105 +-
.../src/setup/setupFormatters.test.ts | 1 +
superset-frontend/src/setup/setupFormatters.ts | 10 +
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/charts/api.py | 85 +-
superset/charts/data/api.py | 50 +-
superset/charts/data/dashboard_filter_context.py | 39 +-
superset/charts/schemas.py | 29 +-
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 | 22 +-
superset/commands/datasource/list.py | 23 +
superset/commands/explore/get.py | 21 +
superset/commands/logs/prune.py | 8 +-
superset/commands/report/execute.py | 73 +-
superset/commands/report/log_prune.py | 8 +-
superset/common/grouping_sets.py | 117 +
superset/common/query_context_processor.py | 151 +-
superset/common/query_object.py | 4 +
superset/common/utils/query_cache_manager.py | 11 +-
superset/config.py | 121 +-
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/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/datafusion.py | 92 +
superset/db_engine_specs/elasticsearch.py | 146 +-
superset/db_engine_specs/gsheets.py | 1 +
superset/db_engine_specs/hive.py | 5 +
superset/db_engine_specs/kusto.py | 111 +-
superset/db_engine_specs/mysql.py | 5 +
superset/db_engine_specs/postgres.py | 1 +
superset/db_engine_specs/presto.py | 6 +
superset/db_engine_specs/snowflake.py | 1 +
superset/db_engine_specs/starrocks.py | 5 +
superset/db_engine_specs/trino.py | 8 +-
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/context.py | 136 +-
.../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/initialization/__init__.py | 2 +
superset/jinja_context.py | 43 +-
superset/key_value/types.py | 17 +
superset/mcp_service/README.md | 2 +-
superset/mcp_service/annotation_layer/schemas.py | 167 +-
superset/mcp_service/chart/chart_helpers.py | 4 -
superset/mcp_service/chart/chart_utils.py | 87 +-
superset/mcp_service/chart/schemas.py | 144 +-
superset/mcp_service/chart/tool/generate_chart.py | 11 +-
superset/mcp_service/chart/tool/list_charts.py | 9 -
superset/mcp_service/common/pagination_schemas.py | 182 +
superset/mcp_service/dashboard/schemas.py | 133 +-
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 +-
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 +-
...13_10-20_4451805bbaa1_remove_double_percents.py | 58 +-
...-00_e5f6a7b8c9d0_add_extension_storage_table.py | 109 +
superset/models/core.py | 7 +-
superset/models/helpers.py | 185 +-
superset/models/sql_lab.py | 25 +-
superset/queries/saved_queries/schemas.py | 12 +-
superset/reports/schemas.py | 6 +-
superset/row_level_security/schemas.py | 6 +-
superset/security/manager.py | 91 +-
superset/sql/execution/celery_task.py | 44 +-
superset/sql/execution/executor.py | 117 +-
superset/sql/parse.py | 25 +
superset/sql_lab.py | 29 +-
superset/superset_typing.py | 8 +
superset/tags/models.py | 12 +-
superset/tasks/decorators.py | 4 +-
superset/tasks/export_dashboard_excel.py | 361 +
superset/tasks/schemas.py | 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 | 429 +-
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 | 4520 ++++++---
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 | 10 +-
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 | 10 +-
superset/utils/pandas_postprocessing/prophet.py | 2 +-
superset/utils/pandas_sqlalchemy_compat.py | 80 +
superset/utils/s3.py | 83 +
superset/utils/screenshot_utils.py | 151 +-
superset/utils/screenshots.py | 9 +-
superset/utils/webdriver.py | 22 +-
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/schemas.py | 332 +-
superset/views/base.py | 7 +-
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/conftest.py | 84 +-
tests/integration_tests/dao/conftest.py | 1 +
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 | 4 +-
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 +
tests/integration_tests/viz_tests.py | 5 +-
tests/unit_tests/charts/test_chart_data_api.py | 129 +-
.../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 +
tests/unit_tests/common/test_grouping_sets.py | 112 +
.../unit_tests/common/test_query_cache_manager.py | 57 +
.../common/test_query_context_processor.py | 105 +
tests/unit_tests/conftest.py | 2 +-
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/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 | 4 +-
.../unit_tests/databases/test_schemas.py | 31 +-
.../datasets/commands/importers/v0}/__init__.py | 0
.../datasets/commands/importers/v0/import_test.py | 77 +
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_kusto.py | 85 +
tests/unit_tests/db_engine_specs/test_mysql.py | 1 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 2 +-
tests/unit_tests/db_engine_specs/test_starrocks.py | 1 +
tests/unit_tests/db_engine_specs/test_trino.py | 5 +
.../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 +
tests/unit_tests/extensions/test_sqlalchemy.py | 12 +-
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/tool/test_get_chart_data.py | 58 +
.../mcp_service/dataset/test_dataset_schemas.py | 15 +
.../mcp_service/dataset/tool/test_query_dataset.py | 321 +
tests/unit_tests/mcp_service/test_middleware.py | 295 +
.../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 | 2 +-
tests/unit_tests/models/core_test.py | 93 +-
tests/unit_tests/models/helpers_test.py | 669 +-
.../models/owner_association_tables_test.py | 2 +-
tests/unit_tests/models/test_helpers_offset.py | 125 +
.../pandas_postprocessing/test_boxplot.py | 22 +
.../pandas_postprocessing/test_prophet.py | 34 +
tests/unit_tests/queries/query_object_test.py | 1 +
.../security/exclude_users_filter_test.py | 2 +-
tests/unit_tests/security/manager_test.py | 93 +
.../unit_tests/semantic_layers/decorators_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 +
.../tasks/test_export_dashboard_excel.py | 401 +
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_screenshot_utils.py | 207 +-
tests/unit_tests/utils/webdriver_test.py | 1 +
tests/unit_tests/versioning/test_activity.py | 827 ++
tests/unit_tests/versioning/test_listener.py | 2 +-
{scripts => 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_utils.py | 48 -
649 files changed, 58838 insertions(+), 19434 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
create mode 100644 helm/superset/templates/deployment-mcp.yaml
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 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-load.spec.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/{plugins/plugin-chart-echarts/types/external.d.ts =>
src/core/extensions/index.test.ts} (75%)
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/{packages/superset-ui-switchboard/src =>
src/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/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 {scripts => 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/common/pagination_schemas.py
create mode 100644
superset/migrations/versions/2026-07-07_12-00_e5f6a7b8c9d0_add_extension_storage_table.py
create mode 100644 superset/tasks/export_dashboard_excel.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/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 {scripts =>
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/utils/dates.py => tests/unit_tests/databases/test_schemas.py
(55%)
copy {scripts => 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 {scripts => 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
delete mode 100644 tests/unit_tests/mcp_service/utils/test_permissions_utils.py
create mode 100644 tests/unit_tests/models/test_helpers_offset.py
create mode 100644 tests/unit_tests/tasks/test_export_dashboard_excel.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 {scripts => 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