This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch fix-heatmap-string-y-axis-sort
in repository https://gitbox.apache.org/repos/asf/superset.git
from eb6c6010379 fix(chart): default Heatmap Y-axis sort to ascending when
unset
add 5ecb19cf92a fix(mcp): pre-validate metric/dimension compatibility in
semantic-view get_table (#44265)
add 128c0c159ab fix(mcp): rebuild full parent chains in dashboard layouts
(#44405)
add 43fee876722 test(versioning): mock the restore locking re-read in the
#44253 LookupError tests (fixes red master) (#44445)
add f170d2670e5 chore(deps): bump baseline-browser-mapping from 2.11.21 to
2.11.22 in /docs (#44418)
add 253eef33d5d fix(databricks): prefer python-connector spec over legacy
Hive spec for unrecognized drivers (#44449)
add db556ec66eb chore(deps): bump pyjwt from 2.13.0 to 2.14.0 (#44442)
add 4511c138193 chore(deps-dev): bump psycopg2-binary from 2.9.12 to
2.9.13 (#44444)
add 6300622dd4a fix(mcp): catch ValueError for reversed date range in
query_dataset (#44462)
add c9fd9bf94f4 fix(bigquery): avoid ESCAPE clause in column-value
typeahead search (SC-121408) (#44429)
add 27935c2c648 chore(deps-dev): bump @testing-library/dom from 10.4.1 to
10.4.2 in /superset-frontend (#44488)
add 3f924aa1aab chore(deps): bump antd from 6.6.3 to 6.6.4 in
/superset-frontend (#44487)
add 76496b2df61 chore(deps): bump zod from 4.6.2 to 4.6.5 in
/superset-frontend (#44485)
add 41aa1221be0 chore(deps-dev): bump @formatjs/intl-durationformat from
0.10.18 to 0.11.1 in /superset-frontend (#44484)
add 9bb07f2292a chore(deps-dev): bump baseline-browser-mapping from
2.11.22 to 2.11.23 in /superset-frontend (#44483)
add 07b28abe82a chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/superset-frontend (#44482)
add 38fac53e55c chore(deps): bump antd from 6.6.3 to 6.6.4 in /docs
(#44481)
add d0739416d50 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/docs (#44480)
add a82a001fe0a chore(deps): bump js-yaml from 5.4.1 to 5.4.2 in /docs
(#44479)
add caa82d5b102 chore(deps): bump codecov/codecov-action from 7.0.0 to
7.1.0 (#44477)
add 085e535b8e7 chore(deps-dev): bump webpack from 5.110.3 to 5.111.0 in
/superset-embedded-sdk (#44476)
add 1f1e09c971e chore(deps): bump hot-shots from 17.1.0 to 17.1.1 in
/superset-websocket (#44475)
add b0f7c581db2 chore(deps): bump yeoman-generator from 8.4.0 to 9.1.0 in
/superset-frontend (#44489)
add 7486b7187bf chore(deps): bump morgan from 1.12.0 to 1.12.1 in
/superset-websocket/utils/client-ws-app (#44474)
add fc016454fb0 chore(deps): bump baseline-browser-mapping from 2.11.22 to
2.11.23 in /docs (#44478)
add c11dc027969 fix(sql): classify ATTACH/DETACH and MySQL
REPLACE/RENAME/SET PASSWORD as mutating (#44072)
add 00b1a353018 fix(shillelagh): disable ATTACH DATABASE on APSW
connections (#43991)
add 8ec8beecffd fix(reports): enable alert retries with execution
safeguards (#44336)
add 2ea9ef6cef7 feat(mcp): search dataset descriptions and add an optional
per-role dataset scope (#44146)
add 8b9b055ef0f fix(mcp): never block a committed update_chart write as
ToolError (#44386)
add 371ad7cac5a refactor(soft-delete): hoist triplicated restore/purge
route bodies onto SoftDeleteApiMixin (#44259)
add 5a7d269580f fix(charts): guard set_related_perm against unknown
datasource_type (#43885)
add 774d83b4d63 fix(sql-lab): remove the ecpg-based PostgreSQL SQL
validator (#43020)
add 322eaeaf991 fix(ci): align Docker image publishing policy (#44250)
add 782b7ae924c fix(security): skip session checks for health probes
(#43786)
add fe2ed7bb8e7 fix(dashboard): make screenshot completion truthful
(#44144)
add cf39d22f382 fix(mcp): honor extra_form_data time_grain_sqla on Generic
Chart Axes charts (#44435)
add e4eb0591bdb fix(sql lab): keep the real Flask session on synchronous
runs (#44428)
add 75447bc068f fix(pandas_postprocessing): pass string aggregator names
to GroupBy.agg to silence FutureWarning (#43259)
add aaa9390a24a fix(semantic-layer): wrap raw pandas TypeError/DataError
from post-processing as QueryObjectValidationError (#44502)
add d0edf759c90 test(dashboard): migrate native filter
cross-filter/dependency E2E to Playwright (#41458)
add 2f4eb735187 fix(explore): keep edits to a dashboard-inherited filter
when saving (#43947)
add c355f0a21df fix(plugin-chart-table): re-measure sticky layout when the
table gains a box (#44430)
add ed9bb9169d8 fix(dashboard): stop wide table charts bleeding over
neighbours in dashboard image export (#44414)
add f7784b64f46 fix(ci): give the db2 testcontainer boot real wait
headroom (#44399)
add 7e6b25a90b3 fix(row-level-security): allow roles as RLS rule subjects
(#43948)
add 4a7b8b6279c fix(ui): preserve HTTP status in error messages (#44271)
add 6cc5c0e00ba feat(db_engine_specs): add metadata block to
OdpsEngineSpec (#43239)
add 48dfbcc6527 fix(explore): keep an externally updated TextControl value
visible (#43220)
add afd8dac7c85 fix(sqllab): migrate tabs after database deletion (#43278)
add b8cc2a769d4 fix(echarts): only reserve left grid padding when a Y-axis
title exists (#43299)
add 53484ac21c9 feat(charts): Clean up "shadow state" in conditional
formatting dialog (#43692)
add ba677f0c5ba feat(mcp): read Explore permalinks in get_chart_info
(#44338)
add cbd5bf85fe7 fix(dataset): render semantic datasource type as a badge
(#44398)
add 3756b7ae2c8 fix(i18n): guard messages.pot against source drift and
regenerate it (#44467)
add 3fd761d1740 fix(ui): preserve default modal resize handles when config
is partial (#43806)
add 5a2a90b38ab feat(mcp): bubble chart type plugin (#43572)
add 889f9f1751e fix(reports): validate final capture artifacts before
delivery (#44465)
add 298d776ec56 fix(dashboard): include semantic views in the dashboard
datasets payload so semantic charts render their errors (#44413)
add 92482f07f30 fix(echarts): emit no cross-filter for clicks that are not
categories (#43192)
add cf10e894a19 fix(mcp): preserve omitted chart colors and row limits
(#44188)
add 0050b187d78 perf(deletion-retention): scope purge-audit repeat checks
with legacy database fallback (#44262)
add 649a665b482 fix(security): allow schema_access holders to explore SQL
Lab queries from other authors (#43994)
add d45bbdcdf2e fix(sql): use AST for disallowed function checks (#43641)
add 5745162faf7 docs: point remaining Release Notes links at GitHub
releases (#43803)
add 600db8e5816 fix(matrixify): apply dimension filters to all
query-specific adhoc filter collections (#43861)
add 903a1e1ff3e docs(singlestore): require singlestoredb[sqlalchemy] and
update logo (#44170)
add c666a6400c4 fix(database): allow metadata edits on an unreachable
database (#44000)
add fd5efcbf5ba fix(superset-ui-core): add year to smart_date_verbose
tooltip tiers (#44212)
add 1b8800c84d1 fix(sqllab): restore SQL code folding (#44236)
add 0382c19ad3b fix: show the server's error message in the publish toggle
and user info toasts (#44238)
add f47fcad3d6e fix(reports): replace stale Selenium references in
screenshot messages (#44244)
add 3e39ba13e34 fix(country-map): correct Karelia boundary (#44273)
add 3cbee94525d docs: fix internal link guidance examples (#44275)
add 468936a7e04 fix(sql): preserve literal percents in where_in (#44284)
add b78585c9715 fix(databricks): select the SQLAlchemy 2 dialect (#44286)
add 8039aa983d7 test(explore): await the Customize tab click in
ControlPanelsContainer test (#44315)
add 57108b416bf test(explore): await userEvent calls in
useExploreAdditionalActionsMenu test (#44323)
add 7eb9532c0ba fix(chart-controls): keep axis sort available for columns
with unknown type (#44344)
add 770bcfb2e95 fix(extensions-cli): fail build and bundle when the
frontend build fails (#44407)
add 86fb8db31d8 chore(version-history): use typed app dispatch (#44438)
add 156549ffed3 fix(temporary-cache): forward tab_id on DELETE so
contextual cache mappings are cleared (#44451)
add 22d37f3ed0a chore(deps): bump fast-uri from 3.1.5 to 3.1.8 in
/superset-frontend/cypress-base (#44510)
add 4df9c0ad362 chore(deps): bump qs from 6.15.2 to 6.16.0 in
/superset-frontend/cypress-base (#44511)
add 1428f138d20 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/docs (#44518)
add 1c803d923f3 chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in
/superset-websocket (#44516)
add fc1c7798e9e chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in /docs
(#44517)
add a54e7353a2b chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/superset-websocket (#44515)
add d43785a2c22 chore(deps): bump docker/setup-buildx-action from 4.3.0 to
4.4.1 (#44519)
add 4c229cb66a7 fix(dashboard): import getClientErrorObject; regenerate
stale messages.pot (#44513)
add 4afaf60a4fe feat(build): use latest patch version for Python base
image (#44458)
add c691d768d2f chore(deps-dev): bump oxfmt from 0.67.0 to 0.68.0 in
/superset-frontend (#44521)
add 21db4a5eeef chore(deps): bump @types/d3-selection from 3.0.11 to
3.0.12 in /superset-frontend (#44524)
add 47fd4f4cbfc fix(matrixify): lazy-load grid cells with dashboard
virtualization (#43053)
add 250a4797bf1 fix(plugin-chart-ag-grid-table): send export column
filters as structured filters (#44308)
add c6d0890f2e0 fix(api): restore three schema fields disabled by a stray
trailing comma (#43225)
add 61a5d0e3348 fix(csrf): recover from an expired CSRF token without a
page reload (#43655)
add d21aa9b4f46 chore(deps): bump yeoman-generator from 9.1.0 to 9.2.0 in
/superset-frontend (#44522)
add 2b5a929523d fix(chart-controls): type post-processing columns as a
string-to-string mapping (#43589)
add a3afedeaab4 fix(core): normalize bare date-only strings to UTC in
normalizeTimestamp (#43807)
add 107a61c4caf feat(databend): add a sqlglot dialect based on Postgres
(#43964)
add c163112f4e2 chore(deps): bump @googleapis/sheets from 17.0.0 to 18.0.0
in /superset-frontend (#44523)
add 5c1f617740c fix(echarts): apply the bar label legibility floor to
manual label positions (#44469)
add c4943a0ab34 feat(native-filters): add configurable display format for
time filters (#44237)
add cef83b3f8df fix(import): catch KeyError for missing uuid/ssh_tunnel in
load_configs (#43305)
add df6e0d08b35 fix(sqla): wrap TypeError from virtual dataset Jinja
rendering as a validation error (#44312)
add 1788486228c fix(datasets): soften render-time UndefinedError in
get_virtual_table_metadata (#44316)
add ee4b8ddff6e fix(ci): align superset-cache tag consumers with the
Dockerfile PY_VER (#44534)
add 43f0f8876ad chore(ci): make the DB migration conflict bot comment less
emoji-heavy and more actionable (#44506)
add 0fe0662b271 fix(i18n): regenerate messages.pot to match source (#44509)
add 9f48d0eac9e fix(tests): await userEvent.click in CsrfErrorMessage
compact-mode test (#44540)
add 7024401aef2 fix(mcp): drop tiktoken, size-guard responses by exact
byte length (#44508)
add 9413294b2bd docs(pivot-table): document the "Show values as"
percentage display option (#44127)
add 48795f9a2d4 docs(explore): document show_download param for standalone
chart embeds (#43906)
add 7dd70eaf2d6 fix: tighten object-level and destination checks across
four unrelated endpoints (#44036)
add add97e5d190 fix(embedded): tighten guest-token scoping for
annotations, result types, and channels (#43391)
add ca7cdfcd0ff fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
add 0f229fda75f fix(security): exempt health blueprint from forced
password changes (#44504)
add 269b9f99fef fix(views): return 401 for NoAuthorizationError in
handle_api_exception (SC-121647) (#44533)
add 50bbcedf13b docs(mcp): document restore_chart and restore_dashboard
tools (#44207)
add ea1ffcf0adb fix: fixed inverseSelection (#40970)
add 350dd0d60ec fix(security): delete deprecated permissions left over
after upgrades (#44142)
add 7a9fe06762b fix(mcp): stop data tool responses crashing on binary and
NaT values (#44495)
add 9612437a9c8 fix(extensions): preserve chat state across display modes
(#44490)
add 61fffbe0c08 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in
/superset-frontend (#44525)
add c14ac29f477 fix(mcp): complete Treemap round-trip and previews (#44152)
add 3b4e5f5d0c6 chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in
/superset-frontend (#44570)
add 7fe03a536b6 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-frontend (#44569)
add 6403e16fe56 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-embedded-sdk (#44568)
add d1f395914f1 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-embedded-sdk (#44567)
add 6c9138a6b7c chore(deps-dev): bump baseline-browser-mapping from
2.11.23 to 2.11.24 in /superset-frontend (#44566)
add 4b180bddad7 chore(deps): bump baseline-browser-mapping from 2.11.23 to
2.11.24 in /docs (#44565)
add 4290d94d6c9 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in
/superset-websocket (#44564)
add 3e80a53e14f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in
/superset-websocket (#44563)
add f8f293d2666 chore(deps): bump benchmark-action/github-action-benchmark
from 1.22.1 to 1.22.2 (#44520)
add 689ab4a77af fix(translations): regenerate messages.pot after the
connection-move reword (#44574)
add 02dbfd2ab5b fix(dashboard): don't register an active tab for childless
TABS components (#44345)
add 838376dbc28 fix(mongodb): treat the Mongo database as the SQL Lab
schema so Data Preview returns rows (#44141)
add 6323b37f50a fix(dashboard): prevent and repair self-nested layout
components (#44303)
add 7c7b3adf745 fix(export): keep the acting user in streaming CSV exports
(#44425)
add c0c688d3e4b fix(mcp): return a specific error per failure class on
tool calls (#44387)
add a071d23b41f fix(dashboard): guest sessions, pluggable storage, and
streamed downloads for the Excel export (#43805)
add d7a918b814c fix(ci): make check_pot_drift extract from an isolated git
snapshot (#44578)
add 775f7c5a1fd fix(db2): Use DATE_TRUNC to improve timegrain expressions
(#43236)
add 298aa2f0ba4 fix(dataset): bump changed_on on column refresh so chart
cache invalidates (#43921)
add 082961ba168 fix(chart): require edit rights for query-context-only
updates (#44494)
add 3b355b6a854 fix(chart): allow semantic view datasource when saving
charts (#44169)
add 390bf299ff9 fix(i18n): stop f-strings in gettext leaking a bogus msgid
on Python 3.12 (#44584)
add 8141d666d6d fix(dashboard): show loading spinner for charts outside an
in-flight auto-refresh batch (#44272)
add d4370cd46eb chore(deps): bump the rjsf group in /superset-frontend
with 3 updates (#44593)
add 0ad50dc77e7 chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in
/superset-frontend (#44596)
add b4cc82b7662 chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in
/superset-embedded-sdk (#44592)
add 687dcbc63eb chore(deps): bump swagger-ui-react from 5.32.15 to 5.33.0
in /docs (#44594)
add ad7fcac11f9 fix(export): stamp ZIP entries with the export time
(#44391)
add 92a3b7d7e33 chore(deps): bump google-auth-library from 11.0.2 to
11.1.0 in /superset-frontend (#44599)
add 45d76f6abaf chore(deps): bump react-draggable from 4.7.1 to 4.7.2 in
/superset-frontend (#44597)
add 2ac6e2468d5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.3
to 5.4.0 in /superset-frontend (#44598)
add 613033b294b chore(build): replace external file-related deps with
native Node modules (#42939)
add 25cb6fc02d2 chore(deps): bump the ag-grid group in /superset-frontend
with 2 updates (#44595)
add 732248e4755 fix(logging): record dashboard_id and slice_id for REST
mutation endpoints (#44553)
add 9ad6917600d chore(cypress): remove dead dashboard drill-to-detail
Cypress suite (#44537)
add f5d663c480d fix(versioning): narrow nullable uuid/description reads
flagged by mypy in versioning tests (#44424)
add e357014559b fix(dashboard): initialize label colors before mounting
charts (#44557)
add e04d38a85f2 fix(mypy): resolve the dataset-scope and datasource-perm
errors from the full-repo lint (#44610)
add 1c7d1f049bc fix(utils): return None from cast_to_num for non-decimal
digit strings (#44615)
add defcd639107 fix(mongodb): route dataset FROM clauses through
quote_table so chart queries return rows (#44583)
add f5487f04a36 fix(db_engine_specs): raise
SupersetGenericDBErrorException instead of bare-reraising JSONDecodeError
(#44616)
add 855ca2228cb fix(query_context): raise 422 not 500 on malformed Jinja
in Query datasource access check (#44011)
add 7b716b1838c fix(versioning): clean up history actions and refresh
after saves (#44613)
add 96d31ee3e35 docs(mcp): document deleted_state trash listing for
list_charts/list_dashboards (#44128)
add 599026a0e5a feat(standalone): granular Explore standalone modes and
iframe-safe dashboard fullscreen (#44165)
add 7558f3b4515 Merge branch 'master' into fix-heatmap-string-y-axis-sort
No new revisions were added by this update.
Summary of changes:
.devcontainer/Dockerfile | 2 +-
.devcontainer/devcontainer-base.json | 2 +-
.github/workflows/bashlib.sh | 2 -
.github/workflows/check-db-migration-confict.yml | 21 +-
.github/workflows/docker.yml | 301 +-
.github/workflows/frontend-bundle-size-nightly.yml | 2 +-
.github/workflows/mirror-service-images.yml | 2 +-
.../workflows/scheduled-docker-image-refresh.yml | 195 -
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 4 +-
.../workflows/superset-python-integrationtest.yml | 6 +-
.github/workflows/superset-python-presto-hive.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 2 +-
.github/workflows/superset-translations.yml | 11 +
.github/workflows/tag-release.yml | 22 +-
Dockerfile | 3 +-
README.md | 2 +-
UPDATING.md | 226 +-
docker-compose.yml | 2 +-
docs/DOCS_CLAUDE.md | 17 +-
docs/admin_docs/configuration/alerts-reports.mdx | 64 +-
.../configuration/configuring-superset.mdx | 11 +
docs/admin_docs/configuration/mcp-server.mdx | 214 +-
docs/admin_docs/installation/docker-builds.mdx | 66 +-
docs/admin_docs/installation/docker-compose.mdx | 2 +-
docs/admin_docs/security/security.mdx | 30 +-
docs/developer_docs/contributing/howtos.md | 2 +-
.../extensions/extension-points/chat.md | 4 +
docs/docs/faq.mdx | 13 +
docs/docs/using-superset/embedding.mdx | 21 +
docs/docs/using-superset/exploring-data.mdx | 16 +
.../using-superset/exporting-dashboard-data.mdx | 116 +-
docs/docs/using-superset/sql-templating.mdx | 4 +-
.../docs/using-superset/using-ai-with-superset.mdx | 2 +
docs/docs/using-superset/version-history.mdx | 7 +
docs/package.json | 14 +-
docs/scripts/generate-database-docs.mjs | 7 +-
docs/src/data/databases.json | 14 +-
docs/static/img/databases/singlestore.png | Bin 15978 -> 9806 bytes
docs/static/resources/openapi.json | 154 +-
.../version-6.0.0/intro.md | 2 +-
.../version-6.1.0/index.mdx | 2 +-
.../version-6.1.0/intro.md | 2 +-
docs/yarn.lock | 1233 +-
pyproject.toml | 45 +-
requirements/base.txt | 4 +-
requirements/development.txt | 13 +-
scripts/change_detector.py | 1 -
scripts/docker-build-extra-flags.sh | 49 +-
scripts/docker-build-plan.sh | 50 +
scripts/docker-publish-guard.sh | 53 +
scripts/translations/check_pot_drift.py | 218 +
superset-embedded-sdk/package-lock.json | 333 +-
superset-embedded-sdk/package.json | 8 +-
superset-extensions-cli/README.md | 5 +
.../src/superset_extensions_cli/cli.py | 3 +
superset-extensions-cli/tests/test_cli_build.py | 131 +-
.../cypress/e2e/dashboard/drilltodetail.test.ts | 614 -
.../e2e/dashboard/shared_dashboard_functions.ts | 201 -
.../cypress-base/cypress/e2e/dashboard/utils.ts | 559 -
.../cypress-base/cypress/e2e/explore/chart.test.js | 2 +-
.../cypress-base/cypress/e2e/explore/utils.ts | 4 +-
.../cypress-base/cypress/support/directories.ts | 678 -
.../cypress-base/cypress/utils/urls.ts | 2 -
superset-frontend/cypress-base/package-lock.json | 51 +-
superset-frontend/package-lock.json | 846 +-
superset-frontend/package.json | 43 +-
.../packages/generator-superset/package.json | 3 +-
.../generator-superset/test/plugin-chart.test.ts | 6 +-
.../packages/superset-core/package.json | 2 +-
.../src/utils/isSortable.ts | 10 +
.../test/utils/isSortable.test.ts | 9 +
.../packages/superset-ui-core/package.json | 8 +-
.../Matrixify/MatrixifyGridCell.test.tsx | 273 +-
.../components/Matrixify/MatrixifyGridCell.tsx | 127 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 90 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 37 +-
.../components/Matrixify/virtualizationEvents.ts | 82 +
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 33 +
.../src/components/AsyncAceEditor/index.tsx | 4 +-
.../superset-ui-core/src/components/Form/Form.tsx | 1 +
.../Label/reusable/DatasetTypeLabel.test.tsx | 48 +-
.../components/Label/reusable/DatasetTypeLabel.tsx | 11 +-
.../src/components/Modal/Modal.test.tsx | 93 +-
.../src/components/Modal/Modal.tsx | 33 +-
.../src/connection/SupersetClientClass.ts | 83 +-
.../superset-ui-core/src/connection/constants.ts | 3 +
.../superset-ui-core/src/query/api/v1/types.ts | 3 +
.../src/query/getClientErrorObject.ts | 33 +-
.../src/query/types/PostProcessing.ts | 6 +-
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/time-comparison/fetchTimeRange.ts | 29 +-
.../src/time-format/formatters/smartDateVerbose.ts | 10 +-
.../src/time-format/utils/normalizeTimestamp.ts | 13 +
.../superset-ui-core/src/ui-overrides/types.ts | 1 +
.../connection/SupersetClientCsrfRecovery.test.ts | 191 +
.../test/query/getClientErrorObject.test.ts | 46 +-
.../test/query/types/PostProcessing.test.ts | 6 +-
.../test/time-comparison/fetchTimeRange.test.ts | 60 +
.../formatters/smartDateVerbose.test.ts | 57 +-
.../time-format/utils/normalizeTimestamp.test.ts | 5 +
.../superset-ui-core/types/ace-builds.d.ts | 1 +
.../playwright/components/core/Select.ts | 14 +
.../components/dashboard/DashboardFilterBar.ts | 30 +-
.../dashboard/dashboard-drill-to-detail.spec.ts | 3 -
.../tests/dashboard/dashboard-test-helpers.ts | 24 +-
.../tests/dashboard/native-filters.spec.ts | 438 +
.../recently-archived/recently-archived.spec.ts | 5 +
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 125 +-
.../plugin-chart-ag-grid-table/src/index.ts | 1 -
.../src/stateConversion.ts | 302 +-
.../src/utils/agGridFilterConverter.ts | 73 +-
.../test/buildQuery.test.ts | 206 +-
.../test/stateConversion.test.ts | 77 +-
.../test/utils/agGridFilterConverter.test.ts | 55 +-
.../test/utils/filterStateManager.test.ts | 2 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 226846 -> 227629
bytes
.../src/countries/russia.geojson | Bin 747442 -> 678517
bytes
.../test/russia.geojson.test.ts | 87 +
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/Gantt/transformProps.ts | 7 +-
.../src/Timeseries/transformers.ts | 44 +-
.../src/components/Echart.test.tsx | 3 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 5 +-
.../src/utils/eventHandlers.ts | 26 +-
.../test/MixedTimeseries/buildQuery.test.ts | 33 +
.../test/MixedTimeseries/transformProps.test.ts | 4 +-
.../test/Timeseries/Bar/transformProps.test.ts | 6 +-
.../test/Timeseries/transformers.test.ts | 160 +-
.../test/utils/eventHandlers.test.ts | 56 +
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/DataTable/hooks/useSticky.tsx | 30 +-
.../test/DataTable/hooks/useSticky.test.tsx | 88 +-
superset-frontend/scripts/build.js | 21 +-
superset-frontend/scripts/copyAssets.js | 56 -
superset-frontend/spec/helpers/testing-library.tsx | 1 +
.../src/SqlLab/actions/sqlLab.test.ts | 118 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 108 +-
.../src/components/Chart/Chart.test.tsx | 55 +
superset-frontend/src/components/Chart/Chart.tsx | 5 +-
...rMessage.test.tsx => CsrfErrorMessage.test.tsx} | 42 +-
...etworkErrorMessage.tsx => CsrfErrorMessage.tsx} | 16 +-
.../src/components/ErrorMessage/index.tsx | 1 +
superset-frontend/src/components/Tag/utils.tsx | 16 +-
superset-frontend/src/core/chat/ChatHost.tsx | 20 +-
.../actions/chartCustomizationActions.test.ts | 20 +-
.../dashboard/actions/chartCustomizationActions.ts | 4 +-
.../src/dashboard/actions/dashboardInfo.ts | 6 +
.../src/dashboard/actions/dashboardState.test.ts | 71 +-
.../src/dashboard/actions/dashboardState.ts | 21 +-
.../src/dashboard/actions/hydrate.test.ts | 85 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 28 +-
.../DashboardBuilder/DashboardContainer.test.tsx | 145 +-
.../DashboardBuilder/DashboardContainer.tsx | 12 +-
.../dashboard/components/Header/Header.test.tsx | 41 +-
.../Header/useHeaderActionsDropdownMenu.tsx | 10 +-
.../Header/useHeaderAutoRefresh.test.tsx | 58 +-
.../components/Header/useHeaderAutoRefresh.ts | 2 +-
.../PropertiesModal/PropertiesModal.test.tsx | 6 +
.../dashboard/components/PropertiesModal/index.tsx | 6 +-
.../components/gridComponents/Chart/Chart.test.tsx | 59 +
.../components/gridComponents/Chart/Chart.tsx | 4 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 95 +
.../components/gridComponents/Tabs/Tabs.tsx | 22 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 2 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 616 +-
.../components/menu/DownloadMenuItems/index.tsx | 210 +-
.../FiltersConfigForm/ColumnSelect.tsx | 11 +-
.../FiltersConfigForm/DatasetSelect.tsx | 16 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 61 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 14 +
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../components/nativeFilters/utils.test.ts | 13 +
.../dashboard/contexts/AutoRefreshContext.test.tsx | 69 +
.../src/dashboard/contexts/AutoRefreshContext.tsx | 31 +-
.../dashboard/hooks/useDownloadScreenshot.test.ts | 118 +-
.../src/dashboard/hooks/useDownloadScreenshot.ts | 67 +-
.../src/dashboard/reducers/dashboardInfo.ts | 10 +
.../src/dashboard/reducers/dashboardLayout.test.ts | 62 +
.../src/dashboard/reducers/dashboardLayout.ts | 26 +
.../src/dashboard/reducers/dashboardState.test.ts | 23 +
.../src/dashboard/reducers/dashboardState.ts | 2 +
.../src/dashboard/util/getDropPosition.test.ts | 83 +
.../src/dashboard/util/getDropPosition.ts | 13 +
.../util/removeUnreachableComponents.test.ts | 283 +
.../dashboard/util/removeUnreachableComponents.ts | 225 +
.../util/updateComponentParentsList.test.ts | 17 +
.../dashboard/util/updateComponentParentsList.ts | 7 +-
.../components/ControlPanelsContainer.test.tsx | 2 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 11 +-
.../explore/components/ExploreChartPanel/index.tsx | 17 +-
.../ExploreViewContainer.test.tsx | 77 +-
.../components/ExploreViewContainer/index.tsx | 28 +-
.../explore/components/PropertiesModal/index.tsx | 4 +
.../FormattingPopoverContent.test.tsx | 129 +-
.../FormattingPopoverContent.tsx | 176 +-
.../controls/DateFilterControl/DateFilterLabel.tsx | 116 +-
.../tests/DateFilterLabel.test.tsx | 114 +
.../components/controls/DateFilterControl/types.ts | 1 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 41 +
.../index.tsx | 6 +
.../controls/TextControl/TextControl.test.tsx | 15 +
.../components/controls/TextControl/index.tsx | 16 +-
.../useExploreAdditionalActionsMenu/index.tsx | 10 +-
.../useExploreAdditionalActionsMenu.test.tsx | 24 +-
superset-frontend/src/explore/constants.ts | 6 +
.../src/explore/exploreUtils/exploreUtils.test.tsx | 25 +
.../src/explore/exploreUtils/index.ts | 8 +-
.../src/explore/reducers/exploreReducer.ts | 2 +-
.../src/explore/reducers/saveModalReducer.ts | 15 +-
superset-frontend/src/explore/types.ts | 5 +-
.../src/features/alerts/AlertReportModal.test.tsx | 57 +-
.../src/features/alerts/AlertReportModal.tsx | 6 +-
.../src/features/userInfo/UserInfoModal.test.tsx | 102 +
.../src/features/userInfo/UserInfoModal.tsx | 11 +-
.../src/features/versionHistory/ActionRow.tsx | 110 +-
.../versionHistory/ChartVersionPreview.tsx | 5 +-
.../DashboardVersionHistory.test.tsx | 89 +-
.../versionHistory/DashboardVersionHistory.tsx | 49 +-
.../versionHistory/ExploreVersionHistory.test.tsx | 344 +-
.../versionHistory/ExploreVersionHistory.tsx | 54 +-
.../src/features/versionHistory/PreviewBanner.tsx | 5 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 92 +-
.../src/features/versionHistory/SaveGroupItem.tsx | 5 -
.../versionHistory/VersionHistoryPanel.test.tsx | 3 +-
.../versionHistory/useDashboardVersionPreview.ts | 5 +-
.../versionHistory/useVersionActions.test.tsx | 6 +-
.../features/versionHistory/useVersionActions.tsx | 5 +-
.../components/Select/SelectFilterPlugin.tsx | 22 +-
.../components/Time/TimeFilterPlugin.test.tsx | 95 +
.../filters/components/Time/TimeFilterPlugin.tsx | 1 +
.../src/filters/components/Time/controlPanel.ts | 17 +
.../src/filters/components/Time/types.ts | 1 +
.../src/pages/DatasetList/DatasetList.test.tsx | 52 +
superset-frontend/src/pages/DatasetList/index.tsx | 12 +-
superset-frontend/src/setup/setupErrorMessages.ts | 5 +
.../src/utils/downloadAsImage.test.ts | 79 +-
superset-frontend/src/utils/downloadAsImage.tsx | 40 +-
superset-frontend/src/utils/urlUtils.test.ts | 23 +
superset-frontend/src/views/App.test.tsx | 125 +
superset-frontend/src/views/App.tsx | 28 +-
superset-websocket/package-lock.json | 532 +-
superset-websocket/package.json | 10 +-
.../utils/client-ws-app/package-lock.json | 14 +-
.../utils/client-ws-app/package.json | 2 +-
superset/charts/api.py | 68 +-
superset/charts/data/dashboard_filter_context.py | 6 +-
superset/charts/schemas.py | 61 +-
superset/cli/importexport.py | 8 +-
superset/commands/chart/update.py | 17 +-
superset/commands/dashboard/update.py | 7 +-
superset/commands/database/exceptions.py | 9 +-
superset/commands/database/update.py | 80 +-
superset/commands/database/utils.py | 47 +
.../commands/deletion_retention/prune_audit.py | 479 +-
superset/commands/distributed_lock/acquire.py | 9 +-
superset/commands/importers/v1/utils.py | 19 +
superset/commands/report/execute.py | 478 +-
superset/commands/report/execution_claim.py | 199 +
superset/commands/report/update.py | 6 -
superset/commands/semantic_layer/update.py | 55 +-
superset/commands/streaming_export/base.py | 41 +-
superset/common/query_context_processor.py | 25 +-
superset/common/utils/time_grain_utils.py | 41 +
superset/config.py | 103 +-
superset/connectors/sqla/models.py | 67 +-
superset/connectors/sqla/utils.py | 10 +
superset/core/mcp/core_mcp_injection.py | 5 +-
superset/daos/dashboard.py | 5 +
superset/dashboards/api.py | 678 +-
superset/dashboards/excel_export/download_link.py | 160 +
superset/dashboards/excel_export/email.py | 29 +-
superset/dashboards/filter_state/api.py | 4 +
superset/dashboards/layout.py | 269 +
superset/dashboards/schemas.py | 13 +
superset/databases/api.py | 6 +-
superset/datasets/api.py | 46 +-
superset/db_engine_specs/README.md | 6 +-
superset/db_engine_specs/base.py | 106 +-
superset/db_engine_specs/databricks.py | 404 +-
superset/db_engine_specs/db2.py | 27 +-
superset/db_engine_specs/gsheets.py | 2 +
superset/db_engine_specs/ibmi.py | 21 +
superset/db_engine_specs/lib.py | 22 +-
superset/db_engine_specs/mongodb.py | 72 +-
superset/db_engine_specs/odps.py | 34 +-
superset/db_engine_specs/pinot.py | 4 +
superset/db_engine_specs/shillelagh.py | 39 +
superset/db_engine_specs/singlestore.py | 4 +-
superset/db_engine_specs/snowflake.py | 1 +
superset/embedded/view.py | 8 +-
superset/errors.py | 1 +
superset/explore/form_data/api.py | 7 +-
superset/extensions/metastore_cache.py | 77 +-
superset/importexport/api.py | 9 +-
superset/jinja_context.py | 5 +
superset/key_value/types.py | 1 +
superset/mcp_service/README.md | 6 +-
superset/mcp_service/SECURITY.md | 2 +-
superset/mcp_service/__main__.py | 4 +-
superset/mcp_service/app.py | 17 +-
superset/mcp_service/auth.py | 15 +-
superset/mcp_service/chart/chart_helpers.py | 64 +-
superset/mcp_service/chart/chart_utils.py | 185 +-
superset/mcp_service/chart/compile.py | 50 +-
superset/mcp_service/chart/plugins/__init__.py | 3 +
superset/mcp_service/chart/plugins/big_number.py | 2 +-
superset/mcp_service/chart/plugins/box_plot.py | 2 +-
superset/mcp_service/chart/plugins/bubble.py | 149 +
superset/mcp_service/chart/plugins/handlebars.py | 2 +-
superset/mcp_service/chart/plugins/histogram.py | 2 +-
.../mcp_service/chart/plugins/interactive_pivot.py | 2 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 2 +-
superset/mcp_service/chart/plugins/pie.py | 2 +-
superset/mcp_service/chart/plugins/pivot_table.py | 2 +-
superset/mcp_service/chart/plugins/table.py | 2 +-
superset/mcp_service/chart/plugins/treemap.py | 12 +-
superset/mcp_service/chart/plugins/waterfall.py | 2 +-
superset/mcp_service/chart/plugins/xy.py | 2 +-
superset/mcp_service/chart/preview_utils.py | 76 +-
superset/mcp_service/chart/query_result.py | 113 +-
superset/mcp_service/chart/schemas.py | 542 +-
superset/mcp_service/chart/tool/generate_chart.py | 9 +-
superset/mcp_service/chart/tool/get_chart_data.py | 43 +-
superset/mcp_service/chart/tool/get_chart_info.py | 315 +-
.../mcp_service/chart/tool/get_chart_preview.py | 43 +-
.../chart/tool/get_chart_type_schema.py | 40 +-
superset/mcp_service/chart/tool/update_chart.py | 30 +-
.../mcp_service/chart/tool/update_chart_preview.py | 51 +-
superset/mcp_service/chart/treemap_preview.py | 297 +
superset/mcp_service/common/schema_discovery.py | 7 +-
superset/mcp_service/constants.py | 30 +-
.../mcp_service/dashboard/layout_validation.py | 54 +
superset/mcp_service/dashboard/schemas.py | 23 +-
.../tool/add_chart_to_existing_dashboard.py | 33 +-
.../dashboard/tool/duplicate_dashboard.py | 6 +
.../dashboard/tool/generate_dashboard.py | 22 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 13 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 14 +-
superset/mcp_service/dataset/schemas.py | 40 +-
superset/mcp_service/dataset/tool/list_datasets.py | 55 +-
superset/mcp_service/dataset/tool/query_dataset.py | 11 +
superset/mcp_service/dataset_scope.py | 265 +
superset/mcp_service/explore/schemas.py | 5 +-
.../explore/tool/generate_explore_link.py | 3 +-
superset/mcp_service/flask_singleton.py | 11 +
superset/mcp_service/mcp_config.py | 29 +-
superset/mcp_service/middleware.py | 846 +-
superset/mcp_service/semantic_layer/schemas.py | 29 +-
.../mcp_service/semantic_layer/tool/get_table.py | 33 +-
superset/mcp_service/sql_lab/schemas.py | 18 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 19 -
.../{token_utils.py => response_size_utils.py} | 593 +-
superset/mcp_service/utils/response_utils.py | 8 +-
superset/mcp_service/utils/serialization.py | 225 +
superset/migrations/shared/security_converge.py | 34 +
...4fb8bfc1_delete_deprecated_permissions_33272.py | 153 +
...a4572f8a_rename_deprecated_permissions_33272.py | 193 +
..._93d1b4a76c02_add_report_execution_ownership.py | 55 +
...e6_merge_deprecated_permissions_with_master.py} | 12 +-
...merge_deprecated_permissions_with_master_v2.py} | 12 +-
...merge_deprecated_permissions_with_master_v3.py} | 12 +-
superset/models/core.py | 1 +
superset/models/dashboard.py | 63 +-
superset/models/helpers.py | 43 +-
superset/models/slice.py | 24 +-
superset/models/sql_lab.py | 11 +-
superset/queries/saved_queries/api.py | 7 +-
superset/reports/models.py | 2 +
superset/reports/notifications/base.py | 1 +
superset/reports/notifications/email.py | 16 +-
superset/reports/notifications/slack_mixin.py | 6 +-
superset/reports/notifications/webhook.py | 9 +-
superset/reports/schemas.py | 7 -
superset/security/api.py | 13 +-
superset/security/manager.py | 463 +-
superset/security/password_change.py | 11 +-
superset/security/session_invalidation.py | 16 +-
superset/semantic_layers/models.py | 3 +
superset/sql/dialects/__init__.py | 2 +
superset/sql/dialects/databend.py | 604 +
superset/sql/execution/executor.py | 4 +-
superset/sql/parse.py | 58 +-
superset/sql_lab.py | 11 +-
superset/sql_validators/__init__.py | 3 +-
superset/sql_validators/postgres.py | 59 -
superset/tasks/export_dashboard_excel.py | 272 +-
superset/tasks/scheduler.py | 13 +
superset/tasks/thumbnails.py | 66 +-
superset/temporary_cache/api.py | 3 +-
superset/themes/api.py | 7 +-
superset/translations/ar/LC_MESSAGES/messages.po | 2204 +-
superset/translations/ca/LC_MESSAGES/messages.po | 2114 +-
superset/translations/cs/LC_MESSAGES/messages.po | 2129 +-
superset/translations/de/LC_MESSAGES/messages.po | 2111 +-
superset/translations/en/LC_MESSAGES/messages.po | 2042 +-
superset/translations/es/LC_MESSAGES/messages.po | 2119 +-
superset/translations/fa/LC_MESSAGES/messages.po | 2109 +-
superset/translations/fi/LC_MESSAGES/messages.po | 2388 +-
superset/translations/fr/LC_MESSAGES/messages.po | 2907 +-
superset/translations/it/LC_MESSAGES/messages.po | 50773 ++++++++++---------
superset/translations/ja/LC_MESSAGES/messages.po | 2066 +-
superset/translations/ko/LC_MESSAGES/messages.po | 2391 +-
superset/translations/lv/LC_MESSAGES/messages.po | 2120 +-
superset/translations/messages.pot | 2097 +-
superset/translations/mi/LC_MESSAGES/messages.po | 2114 +-
superset/translations/nl/LC_MESSAGES/messages.po | 2132 +-
superset/translations/pl/LC_MESSAGES/messages.po | 2145 +-
superset/translations/pt/LC_MESSAGES/messages.po | 2286 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 2122 +-
superset/translations/ro/LC_MESSAGES/messages.po | 2136 +-
superset/translations/ru/LC_MESSAGES/messages.po | 2110 +-
superset/translations/sk/LC_MESSAGES/messages.po | 2129 +-
superset/translations/sl/LC_MESSAGES/messages.po | 3250 +-
superset/translations/sr/LC_MESSAGES/messages.po | 2223 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 2225 +-
superset/translations/ta/LC_MESSAGES/messages.po | 5342 +-
superset/translations/th/LC_MESSAGES/messages.po | 2366 +-
superset/translations/tr/LC_MESSAGES/messages.po | 2087 +-
superset/translations/uk/LC_MESSAGES/messages.po | 2148 +-
superset/translations/zh/LC_MESSAGES/messages.po | 2246 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 2111 +-
superset/utils/core.py | 29 +-
superset/utils/error_sanitization.py | 1 +
superset/utils/export_storage.py | 76 +
superset/utils/gcs.py | 101 +
superset/utils/log.py | 101 +-
superset/utils/network.py | 115 +
superset/utils/pandas_postprocessing/utils.py | 15 +-
superset/utils/report_execution.py | 108 +
superset/utils/s3.py | 124 +-
superset/utils/screenshot_utils.py | 383 +-
superset/utils/screenshots.py | 427 +-
superset/utils/webdriver.py | 331 +-
superset/views/error_handling.py | 18 +-
superset/views/filters.py | 74 +-
superset/views/utils.py | 12 +
tests/integration_tests/base_tests.py | 14 +-
tests/integration_tests/charts/api_tests.py | 120 +
tests/integration_tests/charts/commands_tests.py | 133 +-
tests/integration_tests/dashboards/api_tests.py | 1735 +-
.../dashboards/soft_delete_tests.py | 7 +
tests/integration_tests/databases/api_tests.py | 100 +-
tests/integration_tests/datasets/api_tests.py | 15 +-
.../deletion_retention/prune_audit_tests.py | 227 +-
tests/integration_tests/embedded/test_view.py | 23 +
.../extensions/metastore_cache_test.py | 80 +
.../commands/execute_dashboard_report_tests.py | 9 +-
tests/integration_tests/reports/commands_tests.py | 172 +-
.../reports/execution_claim_tests.py | 32 +
tests/integration_tests/security/api_tests.py | 28 +
tests/integration_tests/security_tests.py | 8 +
tests/integration_tests/sql_validator_tests.py | 36 -
.../versioning/activity_write_after_read_tests.py | 5 +-
.../versioning/conditional_token_lock_tests.py | 16 +-
.../versioning/creation_row_tests.py | 35 +-
.../versioning/restore_fails_closed_tests.py | 23 +-
tests/testcontainers/db_engine_specs/test_db2.py | 16 +-
.../charts/semantic_view_chart_filter_test.py | 9 +-
tests/unit_tests/charts/test_chart_data_api.py | 62 +-
tests/unit_tests/charts/test_filters.py | 96 +
tests/unit_tests/charts/test_schemas.py | 92 +-
tests/unit_tests/commands/chart/create_test.py | 33 +-
.../chart/streaming_export_command_test.py | 61 +
tests/unit_tests/commands/chart/update_test.py | 111 +-
tests/unit_tests/commands/dashboard/update_test.py | 46 +
tests/unit_tests/commands/databases/update_test.py | 209 +-
tests/unit_tests/commands/databases/utils_test.py | 58 +
.../commands/databases/validate_sql_test.py | 49 +-
.../deletion_retention/test_prune_audit.py | 728 +-
.../unit_tests/commands/importers/v1/utils_test.py | 96 +-
tests/unit_tests/commands/report/execute_test.py | 1100 +-
.../commands/report/execution_claim_test.py | 412 +
.../report/execution_ownership_migration_test.py | 87 +
tests/unit_tests/commands/report/update_test.py | 10 +-
.../commands/semantic_layer/update_test.py | 96 +
.../commands/test_base_restore_version_command.py | 54 +-
.../common/test_query_context_processor.py | 63 +
tests/unit_tests/connectors/sqla/models_test.py | 321 +
tests/unit_tests/connectors/sqla/utils_test.py | 27 +-
tests/unit_tests/dao/dashboard_test.py | 139 +
tests/unit_tests/dao/test_query_stop_race.py | 68 +-
tests/unit_tests/dashboards/api_test.py | 116 +
tests/unit_tests/dashboards/datasets_test.py | 353 +
.../unit_tests/dashboards/filter_state_api_test.py | 56 +
tests/unit_tests/dashboards/layout_test.py | 325 +
.../dashboards/test_excel_export_download_link.py | 65 +
tests/unit_tests/databases/api_test.py | 77 +
tests/unit_tests/db_engine_specs/test_base.py | 274 +-
.../unit_tests/db_engine_specs/test_databricks.py | 97 +-
.../db_engine_specs/test_databricks_multi_cloud.py | 4 +
tests/unit_tests/db_engine_specs/test_db2.py | 35 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 31 +-
tests/unit_tests/db_engine_specs/test_ibmi.py | 76 +
tests/unit_tests/db_engine_specs/test_lib.py | 84 +
tests/unit_tests/db_engine_specs/test_mongodb.py | 241 +-
tests/unit_tests/db_engine_specs/test_odps.py | 19 +
tests/unit_tests/db_engine_specs/test_pinot.py | 41 +-
.../unit_tests/db_engine_specs/test_shillelagh.py | 100 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 7 +-
tests/unit_tests/db_engine_specs/test_trino.py | 7 +-
.../distributed_lock/distributed_lock_tests.py | 22 +
tests/unit_tests/explore/form_data_api_test.py | 80 +
tests/unit_tests/jinja_context_test.py | 120 +
.../mcp_service/chart/test_bubble_chart.py | 471 +
.../mcp_service/chart/test_chart_utils.py | 73 +
.../chart/test_time_grain_generic_axes.py | 365 +
.../mcp_service/chart/test_treemap_completeness.py | 1373 +
.../mcp_service/chart/tool/test_generate_chart.py | 41 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 266 +-
.../chart/tool/test_get_chart_info_permalink.py | 454 +
.../chart/tool/test_get_chart_preview.py | 117 +
.../chart/tool/test_get_chart_type_schema.py | 26 +
.../validation/test_column_name_normalization.py | 60 +
.../dashboard/test_layout_validation.py | 174 +
.../tool/test_add_chart_to_existing_dashboard.py | 98 +
.../dashboard/tool/test_dashboard_generation.py | 241 +-
.../dashboard/tool/test_duplicate_dashboard.py | 55 +
.../tool/test_remove_chart_from_dashboard.py | 44 +
.../dashboard/tool/test_update_dashboard.py | 70 +
.../mcp_service/dataset/tool/test_dataset_tools.py | 258 +
.../mcp_service/dataset/tool/test_query_dataset.py | 99 +
.../explore/tool/test_generate_explore_link.py | 49 +
.../semantic_layer/tool/test_get_table.py | 385 +
.../semantic_layer/tool/test_list_metrics.py | 62 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 104 +-
tests/unit_tests/mcp_service/test_dataset_scope.py | 504 +
.../mcp_service/test_error_classification.py | 679 +
.../mcp_service/test_mcp_tool_registration.py | 82 +
tests/unit_tests/mcp_service/test_middleware.py | 771 +-
.../mcp_service/test_response_serialization.py | 321 +
..._token_utils.py => test_response_size_utils.py} | 568 +-
.../mcp_service/utils/test_serialization.py | 294 +
.../migrations/shared/security_converge_test.py | 218 +
.../test_deprecated_permissions_33272.py | 420 +
tests/unit_tests/models/dashboard_test.py | 41 +-
tests/unit_tests/models/helpers_test.py | 49 +-
tests/unit_tests/models/slice_test.py | 80 +-
tests/unit_tests/models/sql_lab_test.py | 62 +-
.../pandas_postprocessing/test_aggregate.py | 21 +
.../reports/notifications/email_tests.py | 38 +-
.../reports/notifications/slack_tests.py | 18 +
.../reports/notifications/webhook_tests.py | 71 +-
tests/unit_tests/reports/schemas_test.py | 28 +
.../scheduled_docker_image_refresh_test.py | 65 -
tests/unit_tests/scripts/docker_cache_ref_test.py | 90 +
.../scripts/translations/check_pot_drift_test.py | 156 +
tests/unit_tests/security/manager_test.py | 508 +-
tests/unit_tests/security/test_password_change.py | 68 +-
.../security/test_permission_instructions_link.py | 2 +
.../security/test_session_invalidation.py | 18 +
tests/unit_tests/semantic_layers/models_test.py | 270 +
.../unit_tests/soft_delete}/__init__.py | 0
.../soft_delete/test_restore_purge_hoist.py | 268 +
.../sql/dialects/databend_function_catalogue.txt | 741 +
tests/unit_tests/sql/dialects/databend_tests.py | 1553 +
tests/unit_tests/sql/execution/test_executor.py | 58 +
tests/unit_tests/sql/parse_tests.py | 17 +
tests/unit_tests/sql_lab_test.py | 72 +
tests/unit_tests/subjects/test_filters.py | 25 +
tests/unit_tests/subjects/test_raise_for_access.py | 204 +
.../tasks/test_export_dashboard_excel.py | 681 +-
.../tasks/test_scheduler_soft_timeout.py | 17 +
tests/unit_tests/tasks/test_thumbnails.py | 75 +
tests/unit_tests/utils/create_zip_tests.py | 84 +
tests/unit_tests/utils/gcs_tests.py | 120 +
tests/unit_tests/utils/log_tests.py | 150 +-
tests/unit_tests/utils/s3_tests.py | 102 +-
tests/unit_tests/utils/screenshot_test.py | 336 +
tests/unit_tests/utils/test_core.py | 19 +
tests/unit_tests/utils/test_network.py | 81 +-
tests/unit_tests/utils/test_report_execution.py | 64 +
.../unit_tests/utils/test_screenshot_cache_fix.py | 79 +
tests/unit_tests/utils/test_screenshot_utils.py | 455 +-
tests/unit_tests/utils/webdriver_test.py | 450 +-
tests/unit_tests/views/test_error_handling.py | 136 +-
tests/unit_tests/views/test_utils.py | 69 +-
578 files changed, 126694 insertions(+), 47951 deletions(-)
delete mode 100644 .github/workflows/scheduled-docker-image-refresh.yml
create mode 100644 scripts/docker-build-plan.sh
create mode 100644 scripts/docker-publish-guard.sh
create mode 100644 scripts/translations/check_pot_drift.py
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard/shared_dashboard_functions.ts
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
delete mode 100644
superset-frontend/cypress-base/cypress/support/directories.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/chart/components/Matrixify/virtualizationEvents.ts
create mode 100644
superset-frontend/packages/superset-ui-core/test/connection/SupersetClientCsrfRecovery.test.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/native-filters.spec.ts
create mode 100644
superset-frontend/plugins/plugin-chart-country-map/test/russia.geojson.test.ts
delete mode 100644 superset-frontend/scripts/copyAssets.js
copy
superset-frontend/src/components/ErrorMessage/{FrontendNetworkErrorMessage.test.tsx
=> CsrfErrorMessage.test.tsx} (59%)
copy
superset-frontend/src/components/ErrorMessage/{FrontendNetworkErrorMessage.tsx
=> CsrfErrorMessage.tsx} (68%)
create mode 100644
superset-frontend/src/dashboard/util/removeUnreachableComponents.test.ts
create mode 100644
superset-frontend/src/dashboard/util/removeUnreachableComponents.ts
create mode 100644
superset-frontend/src/features/userInfo/UserInfoModal.test.tsx
create mode 100644
superset-frontend/src/filters/components/Time/TimeFilterPlugin.test.tsx
create mode 100644 superset-frontend/src/views/App.test.tsx
create mode 100644 superset/commands/report/execution_claim.py
create mode 100644 superset/common/utils/time_grain_utils.py
create mode 100644 superset/dashboards/excel_export/download_link.py
create mode 100644 superset/dashboards/layout.py
create mode 100644 superset/mcp_service/chart/plugins/bubble.py
create mode 100644 superset/mcp_service/chart/treemap_preview.py
create mode 100644 superset/mcp_service/dataset_scope.py
rename superset/mcp_service/utils/{token_utils.py => response_size_utils.py}
(60%)
create mode 100644 superset/mcp_service/utils/serialization.py
create mode 100644
superset/migrations/versions/2026-09-10_00-00_1f5f4fb8bfc1_delete_deprecated_permissions_33272.py
create mode 100644
superset/migrations/versions/2026-09-10_00-01_3ce9a4572f8a_rename_deprecated_permissions_33272.py
create mode 100644
superset/migrations/versions/2026-09-16_00-00_93d1b4a76c02_add_report_execution_ownership.py
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-16_00-01_2ce579e91ae6_merge_deprecated_permissions_with_master.py} (79%)
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-17_00-00_53a7abc31422_merge_deprecated_permissions_with_master_v2.py}
(76%)
copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py =>
2026-09-23_00-00_95d8a99c822e_merge_deprecated_permissions_with_master_v3.py}
(76%)
create mode 100644 superset/sql/dialects/databend.py
delete mode 100644 superset/sql_validators/postgres.py
create mode 100644 superset/utils/export_storage.py
create mode 100644 superset/utils/gcs.py
create mode 100644 tests/integration_tests/reports/execution_claim_tests.py
create mode 100644 tests/unit_tests/commands/report/execution_claim_test.py
create mode 100644
tests/unit_tests/commands/report/execution_ownership_migration_test.py
create mode 100644 tests/unit_tests/dashboards/datasets_test.py
create mode 100644 tests/unit_tests/dashboards/layout_test.py
create mode 100644
tests/unit_tests/dashboards/test_excel_export_download_link.py
create mode 100644 tests/unit_tests/db_engine_specs/test_ibmi.py
create mode 100644 tests/unit_tests/db_engine_specs/test_lib.py
create mode 100644 tests/unit_tests/db_engine_specs/test_shillelagh.py
create mode 100644 tests/unit_tests/explore/form_data_api_test.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bubble_chart.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_time_grain_generic_axes.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_treemap_completeness.py
create mode 100644
tests/unit_tests/mcp_service/chart/tool/test_get_chart_info_permalink.py
create mode 100644 tests/unit_tests/mcp_service/test_dataset_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_error_classification.py
create mode 100644 tests/unit_tests/mcp_service/test_response_serialization.py
rename tests/unit_tests/mcp_service/utils/{test_token_utils.py =>
test_response_size_utils.py} (60%)
create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.py
create mode 100644 tests/unit_tests/migrations/shared/security_converge_test.py
create mode 100644
tests/unit_tests/migrations/test_deprecated_permissions_33272.py
delete mode 100644 tests/unit_tests/scheduled_docker_image_refresh_test.py
create mode 100644 tests/unit_tests/scripts/docker_cache_ref_test.py
create mode 100644
tests/unit_tests/scripts/translations/check_pot_drift_test.py
copy {scripts => tests/unit_tests/soft_delete}/__init__.py (100%)
create mode 100644 tests/unit_tests/soft_delete/test_restore_purge_hoist.py
create mode 100644
tests/unit_tests/sql/dialects/databend_function_catalogue.txt
create mode 100644 tests/unit_tests/sql/dialects/databend_tests.py
create mode 100644 tests/unit_tests/utils/create_zip_tests.py
create mode 100644 tests/unit_tests/utils/gcs_tests.py