You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/08/13 22:55:10 UTC

(superset) branch sip/median-stddev-variance-aggregates updated (3b816cd66a1 -> 45641c66881)

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a change to branch sip/median-stddev-variance-aggregates
in repository https://gitbox.apache.org/repos/asf/superset.git


 discard 3b816cd66a1 fix: correct MEDIAN/mysql comment and MCP prompt error-message claim
 discard ff7d6271743 docs: clarify UPDATING.md covers engine specs that subclass verified ones
 discard cefee1b52f5 fix(metrics): restrict extended aggregates to verified engines only
 discard f02ef22e26f docs(sip): reconcile Open questions with what implementation actually decided
 discard 2af44ccfb54 feat(metrics): add MEDIAN/STDDEV_SAMP/VAR_SAMP as system-wide aggregates [DRAFT/SIP]
 discard c7fd6269cb6 docs(sip): propose system-wide MEDIAN/STDDEV_SAMP/VAR_SAMP metric aggregates [DRAFT/SIP]
     add 2a9c5acb019 chore(deps): bump numpy from 1.26.4 to 2.4.6 (#42778)
     add 38727906a2b chore(deps): bump react-window and @types/react-window in /superset-frontend (#42528)
     add 44a86b725f0 chore(deps-dev): update teradatasql requirement from >=20.0.0.63 to >=20.0.0.64 (#42909)
     add 503309531fb chore(deps-dev): update playwright requirement from <2,>=1.61.0 to >=1.62.0,<2 (#42908)
     add 185b5938bac chore(deps-dev): bump pyinstrument from 5.1.2 to 5.1.3 (#42905)
     add 1da7a7fdb10 chore(deps-dev): update starrocks requirement from <2,>=1.3.3 to >=1.3.4,<2 (#42903)
     add 25481799f6b test(deckgl): pin GeoJSON layer against multi-row payloads (#34748) (#42734)
     add 127a6f92a6d chore(i18n): update french po file to match latest pot file version (#40635)
     add 4a587b85398 feat(security): actionable, request-access-aware data permission errors (#41843)
     add abb6dd6e39c fix(i18n): add Tamil (ta) locale with corrected catalog path (#38962)
     add db5cd1aa389 chore(i18n): update Italian messages.po translations (#38948)
     add a75665b014f fix(i18n): improve Simplified Chinese translations (#42794)
     add d14ab29dcb8 feat(a11y): enable ECharts aria-label (#28171)
     add 8181917f790 fix: Apply timezone offset to convert local time boundaries to UTC (#37014)
     add 42e4030104c feat(security): add guest user attributes and get_guest_user_attribute() macro (#33924)
     add bf294cfa43d perf(dashboard): avoid query context N+1 queries (#42474)
     add 3b164e42708 fix(ci): remove extraneous plugins build job (#42677)
     add b4130600309 chore(deps): restore redis floor to >=5.0.0 (#42915)
     add fea84e81ef9 fix(tech-debt): measure oxlint metrics against the project's ruleset (#42955)
     add f8925cc7262 feat(build): reinstate `no-restricted-imports` lint rule for `lodash` (#42940)
     add c09d5bf6a99 fix(helm): add missing task modules to default CeleryConfig imports (#42945)
     add 3539c41dab2 chore(deps): bump cryptography from 49.0.0 to 50.0.0 (#42906)
     add 7cd6c747575 chore(deps-dev): bump @types/lodash from 4.17.24 to 4.17.25 in /superset-frontend (#42974)
     add 4c9bd69eb47 chore(deps): bump antd from 6.5.2 to 6.5.3 in /superset-frontend (#42973)
     add ee5fb095da2 chore(deps-dev): bump baseline-browser-mapping from 2.11.8 to 2.11.11 in /superset-frontend (#42972)
     add 2be726ddad3 chore(deps-dev): bump tsx from 4.23.1 to 4.23.5 in /superset-frontend (#42971)
     add 10cf2e20f9f chore(deps-dev): bump eslint-plugin-jest-dom from 5.7.0 to 5.10.1 in /superset-frontend (#42970)
     add d41032b70ae chore(deps): bump Kesin11/actions-timeline from 3.1.1 to 3.2.0 (#42969)
     add e12818897de chore(deps): bump github/codeql-action/init from 4.37.3 to 4.37.5 (#42967)
     add d7edf610a93 chore(deps-dev): bump @babel/types from 7.29.7 to 7.29.8 in /superset-frontend in the babel group (#42966)
     add 73478c52745 chore(deps): bump baseline-browser-mapping from 2.11.8 to 2.11.11 in /docs (#42964)
     add 346dbd6a98e chore(deps): bump js-yaml from 5.2.2 to 5.2.3 in /docs (#42963)
     add 9719c7de246 chore(deps-dev): bump globals from 17.8.0 to 17.9.0 in /docs (#42962)
     add 6a2e20cdb75 chore(deps): bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 (#42960)
     add 916c50284b8 chore(deps): bump github/codeql-action/analyze from 4.37.3 to 4.37.5 (#42965)
     add f53f634f233 chore(deps): bump antd from 6.5.2 to 6.5.3 in /docs (#42961)
     add db88abe0bbc chore(deps-dev): bump globals from 17.8.0 to 17.9.0 in /superset-websocket (#42958)
     add 9e2cb69a394 feat(database): identify configured database connection errors (#42996)
     add b815640b8fd chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#42968)
     add daf1718b448 fix(embedded): redact database errors in API responses to guest users (#42796)
     add c02dc7780b0 docs(mcp): add update_dashboard to write-tools enumeration (#42943)
     add f60370b6955 docs: document CACHE_REDIS_SOCKET_TIMEOUT/CONNECT_TIMEOUT config keys (#42947)
     add a9eab4a0df1 docs: document color picker for conditional formatting rule colors (#42948)
     add 4b68da82a70 docs: document number format presets, including distance/length units (#42950)
     add 341ca94ba25 docs(security): document the read-only Subject REST API (#42951)
     add 5bcd9cd0780 docs(exploring-data): document CSV/XLSX download in drill modals (#42952)
     add 7dc2afd377b docs(cache): document native filter option cache warm-up strategy (#42953)
     add 4defdbabd28 fix(dashboard): force-render virtualized charts before client-side export (#42561)
     add b98e1571043 fix(sqla): preserve float precision when mixing int/float values in IN filters (#42752)
     add d9ae0ec2fc4 fix(deckgl): hide legend when Legend Position is None (#42402)
     add 651c046e699 fix(deckgl): remove visibility condition in deckgl fill color (#42712)
     add d62a9eeda6c fix(calendar): clean up d3-tip tooltips (#41589)
     add b6504eb1110 fix(sql): resolve schema/catalog-qualified table references in CTE detection (#42717)
     add 9d6832c927c feat(formatting): add network throughput number formats for bits/s and bytes/s (#42437)
     add 50c811280e5 fix(lru-cache): don't evict another entry when overwriting an existing key (#42409)
     add 572f86c3c3a fix(deckgl): normalize legend swatch alpha channel to 0-1 for CSS rgba() (#42942)
     add 776f70bf63c chore(deps): bump ioredis from 5.11.1 to 6.0.0 in /superset-websocket (#42959)
     add 347774f9b82 fix(explore): stop the viz switcher from overflowing the control panel (#42911)
     add 178d9c4cebd fix(explore): stacked Timeseries Bar total excludes the sort-only metric (#42881)
     add 0dedc55f380 fix(dashboard): changing a theme no longer discards unsaved edits or reloads charts
     add bc85f1eacf9 fix(database): resolve default schema when file upload schema is empty (#42603)
     add 2eb1e042836 fix: hydrate JWT user before list API filters (#39946)
     add fdfc49461fa fix(sqllab): wrap process_template() in format_sql to prevent raw UndefinedError leak (#42917)
     add 4d0eeb7d86b docs: document FAB_API_SWAGGER_UI_SUPERSET_APP_ROOT config flag (#43009)
     add e48512568d5 docs(dashboard): document the expand_all_slices metadata flag (#43010)
     add 651f75b1e8c docs(dashboard): document native filters on semantic views (#43011)
     add 0c09cf087d9 fix(reports): translate execute-now success message (#43012)
     add 5f204a9af28 fix(frontend): remove any type and duplicate route in routes.tsx (#43014)
     add 265269018e0 fix(mcp): require issuer-aware resolver for multi-issuer JWT, fix sanitizer input ordering (#42935)
     add bfa1e775c4d fix(theming): guard ensureStaticPrefix against null/undefined input (#43019)
     add d84a00f3c62 feat(dashboard): handle empty chart query context in Excel export (#42284)
     add 7157b752eef fix(pie): apply percentage number format to labels (#42880)
     add 34b2d3a5339 fix(rls): match null-schema datasets in predicate lookup (#41426)
     add 5ee279363ca fix(mcp): reject list values for ne on relationship filters (#42944)
     add 65d808a5fe8 chore(deps): bump markdown-to-jsx from 9.10.1 to 9.10.2 in /superset-frontend (#43052)
     add 579011dea9d chore(deps): bump nanoid from 6.0.0 to 6.0.1 in /superset-frontend (#43050)
     add 590003cbee3 chore(deps): bump baseline-browser-mapping from 2.11.11 to 2.11.12 in /docs (#43043)
     add 156a59a1909 chore(deps): bump swagger-ui-react from 5.32.11 to 5.32.12 in /docs (#43041)
     add a5a6f5a5b11 chore(deps): bump ws from 8.21.1 to 8.21.2 in /superset-websocket (#43036)
     add 497c73e8370 chore(deps): bump github/codeql-action/init from 4.37.5 to 4.37.6 (#43044)
     add 8bbf0cfc200 chore(deps-dev): bump oxlint from 1.76.0 to 1.77.0 in /superset-frontend (#43049)
     add 29e8e396ee2 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43045)
     add 581fb876e46 chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /docs (#43042)
     add 64165fbdae7 chore(deps-dev): bump @typescript-eslint/parser from 8.65.0 to 8.66.0 in /superset-websocket (#43035)
     add 47adbe31d5c chore(deps-dev): bump typescript-eslint from 8.65.0 to 8.66.0 in /superset-websocket (#43034)
     add c4e8a9da909 test(explore): add end-to-end regression test for DatasourcePanel through the real AutoSizer + react-window List pipeline (#43023)
     add 544756a6313 chore(deps): bump github/codeql-action/analyze from 4.37.5 to 4.37.6 (#43040)
     add 553808daa35 fix(reports): make webhook notification request timeout configurable (#43018)
     add e31a894be6a fix(common): remove unsupported cross join mode from left_join_df (#43016)
     add bc436bacad2 chore(security): warn when legacy encryption engine is configured (#42937)
     add 5099b6ffa95 fix(export): derive chart_hashes and zip from a single chart list (#42946)
     add 305638e98c7 chore(deps-dev): bump baseline-browser-mapping from 2.11.11 to 2.11.12 in /superset-frontend (#43048)
     add d6771e96d28 fix(core): let UnsavedChangesModal use Ant Design's automatic z-index stacking (#42548)
     add aade32cad8d chore(deps-dev): bump the typescript-eslint group across 1 directory with 3 updates (#43039)
     add ec6b2d2347f chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /superset-websocket (#43033)
     add 5767c3981da chore(deps): bump the storybook group across 1 directory with 2 updates (#43037)
     add 2feb6c2bb55 refactor(deletion-retention): add declarative purge policies (#42888)
     add 3cd41505398 chore(deps): bump sqlglot from 30.15.0 to 30.16.0 (#43029)
     add 7b32b870e13 chore: Fix/remove hardcode of admin role (#27779)
     add a3d58d12116 fix(ci): use current actions for Docker refresh (#42482)
     add 998c4086867 fix(rls): return a descriptive error for duplicate rule names (#42819)
     add 4c5a3356f33 fix(dashboard): redirect using sanitized slug from save response (#42853)
     add 9086bab2c22 ci(e2e): stop gunicorn worker recycling mid-run; slow-test budget for mixed-chart filter spec (#42867)
     add af258c21d03 fix(mixed-chart): Mixed chart secondary yaxis title position misplaced fix (#42713)
     add 63a81c21256 fix(dashboard): remeasure chart description height after markdown render (#41536)
     add 3ded398a1f3 fix(chart): dataset dropdown sorted by name (#42475)
     add edf30c7019c chore: add logging event for drill to detail (#42563)
     add 0d57c5ab502 fix(dashboard): consistently apply the datasource-access check when serializing member charts and datasets (#42716)
     add f6077eeaa14 fix(dataset): validate stored column and metric expressions at query time (#42087)
     add d91ca50872b perf(charts): reuse datasource in query context (#42476)
     add bdf8ce69abb feat(Reports&Alerts): remove Selenium support, require Playwright (#43028)
     add 52483675870 fix: verify database access before dataset repointing, and tab ownership before tab-state updates (#42936)
     add 0a2cfb9fba4 chore(deps-dev): bump oxfmt from 0.61.0 to 0.62.0 in /superset-frontend (#43046)
     add 8bd25b3feda chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#43038)
     add a0099af88fc fix(deck.gl): dismiss custom tooltips on hover-out (#43075)
     add d570335f677 fix: bind permission-sync task to user id, use per-user RLS cache sentinel on parse failure (#42938)
     add 584466e02b2 fix(sql-lab): improved SQL statement parsing and validation (#42928)
     add 885f00130c0 fix(sqla): drop stale main_dttm_col from dttm_cols when non-temporal (#30510) (#41964)
     add 56573fa2cda feat(mcp): filter asset lists by certification (#42656)
     add 8734a232d8c fix(reports): apply chart number and currency formatting to tables sent as text (#42820)
     add 8e455034d05 chore(codeowners): trim stale ownership blocks, reword maps notice (#43079)
     add b4f3fae2880 fix(sql): guard FORCE_LIMIT against SHOW statements (#36939) (#42588)
     add 8f6587d0e67 fix(caching): sort extra_cache_keys before hashing (#34543) (#42597)
     add 2c10e6260f7 fix(explore): pin and fix clipped segments in horizontal row-contribution stacked bar charts (#42610)
     add 174d35380dd chore(deps-dev): bump tsx from 4.23.5 to 4.23.7 in /superset-frontend (#43083)
     add d840568f3bb chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43082)
     add 4354b37b963 fix(sql-lab): apply SQL_QUERY_MUTATOR to streaming exports (#40465) (#42739)
     add a501fed560e fix(rls): handle same-named CTEs and quoted aliases in the SQL rewrite (#43005)
     add a0d7ec9fafd fix(select): permission label search matches displayed label (#42041) (#42592)
     add cc35056bc96 test(core): pin dashboard save-error toast mapping for non-JSON 403 responses (#42250)
     add aefee482239 fix(GridTable): remove unused rowSelection option to silence AG Grid error #200 (#43078)
     add 4baf1cf648e fix(reports): preserve Slack v1 private-channel text delivery (#42089)
     add ed696b99336 test(sql): pin optimizer hint blocks survive format() round-trip (#38189) (#42733)
     add 0c2f91968e6 fix: commit migration write in get_shared_value to stop recurring md5 deprecation warning (#42916)
     add 01ecefd732e fix(security_manager): stop SupersetAuthView from shadowing AUTH_REMOTE_USER (#42949)
     add eb7d4cba42f fix(explore): hide Superset annotation source for users without annotation access (#43006)
     add 8014f782d3c feat: bump SQLAlchemy to 2.0 and flask-sqlalchemy to 3.1.1 (#42803)
     add 0915a39bcbe fix(dataset): improve dataset, report, and expression validation (#42929)
     add bc1a8e0858b refactor(tags): align ExportTagsCommand with ExportModelsCommand (#42339)
     add 739365979d4 fix: upgrade brace-expansion to 5.0.8 (CVE-2026-14257) (#42435)
     add 685f26b1bf9 fix(cache): warm native dashboard filter defaults (#43073)
     add de2276225af test(playwright): pin drill-to-detail modal table height (#42406)
     add 22caf221b7c fix(echarts): truncate values at Y axis bounds instead of dropping them (#42300)
     add 07accd56f21 chore(deps): bump core-js from 3.49.0 to 3.50.0 in /superset-frontend (#43107)
     add eefb3e38359 chore(deps-dev): bump tsx from 4.23.7 to 4.23.9 in /superset-frontend (#43106)
     add 657a2a4cb2a chore(deps): bump mapbox-gl from 3.27.0 to 3.28.0 in /superset-frontend (#43105)
     add 524d99159a0 chore(deps): bump immer from 11.1.15 to 11.1.16 in /superset-frontend (#43104)
     add 276d6f04f53 chore(deps): bump actions/setup-java from 5.6.0 to 5.7.0 (#43102)
     add 08dfca96313 fix(ci): enforce a single Alembic migration head (#42890)
     add 59361581cdf fix(embedded): restore chart rendering for guest dashboards (#43095)
     add e2bb33b1da1 chore(deps): bump the ag-grid group across 1 directory with 2 updates (#43103)
     add 5554b892ffa fix(mcp): preserve table chart state during updates (#42655)
     add 762fdccfdef fix(oauth2): log database token failures (#42644)
     add e1777737a71 fix(docs): sync live component demos to the docs site's dark mode toggle (#42602)
     add c8305b0ba98 feat(ci): publish Python unit test results as PR check annotations (#42503)
     add fbeba10f750 fix(sqllab): make MenuDotsDropdown trigger focusable for tab rename (#43015)
     add d5ae93c9b8d test(echarts): pin Bar chart X Axis Title flows through untouched (#42560) (#42599)
     add 25c2ca11276 ci: run pre-commit checks via prek (#42500)
     add b8ca729f9fc fix(sql): only force a LIMIT onto query expressions (#43097)
     add d0658bacc89 fix(mcp): give concurrent tool calls isolated db sessions (#42629)
     add ec136f6d8df fix(charts): decode CSV bytes payload before feeding pandas StringIO (#32370) (#42735)
     add c8cb09d4589 fix(dev): stop the webpack dev-proxy from hanging on a mid-stream backend disconnect (#42811)
     add e1468a709c0 fix(sunburst): keep SQL null and literal string "null" as distinct groups (#43013)
     add 117b92a517a fix(mcp): expose table column formatting (#42658)
     add 5b281585194 fix(helm): stop shipping conflicting podDisruptionBudget defaults (#42995)
     add 6211f9936b3 feat(mobile): Add mobile-friendly dashboard consumption mode (#37141)
     add 67bbe0ac173 ci: speed up backend CI with astral-sh/setup-uv and apt package caching (#42498)
     add dc9547554b4 fix(echarts): normalize BigInt metric values before summing/dividing in stacked charts (#36401) (#42594)
     add f7a2f0ec501 feat(table): allow choosing Sum or Average for the "Show summary" totals row (#43027)
     add 3c7633f935f fix(encrypt): stop naive padding from truncating secrets ending in '*' (#43074)
     add 01d0772d4f3 fix(box-plot): distribute across field not marked as required for datasets without a temporal column (#43087)
     add a63483b9b1a fix(sql): rebase Dremio dialect on sqlglot's native dialect (#43099)
     add 3fb58900b9a chore(duckdb): remove cursor.description workaround, no longer reproducible (#43101)
     add 930ba64fdf3 fix(ci): format ErrorMessage tests (#43114)
     add 8f78f9eb9c7 chore: update CODEOWNERS for extension and config files (#43142)
     add 537f0fd2dbe fix(sqllab): use dialect-specific quote chars for autocomplete identifiers (#41492)
     add 6658c302a00 docs(sip): propose system-wide MEDIAN/STDDEV_SAMP/VAR_SAMP metric aggregates [DRAFT/SIP]
     add 34985e61362 feat(metrics): add MEDIAN/STDDEV_SAMP/VAR_SAMP as system-wide aggregates [DRAFT/SIP]
     add 40bd4b9399f docs(sip): reconcile Open questions with what implementation actually decided
     add 078b75c46fc fix(metrics): restrict extended aggregates to verified engines only
     add b6ed8bb6143 docs: clarify UPDATING.md covers engine specs that subclass verified ones
     add 45641c66881 fix: correct MEDIAN/mysql comment and MCP prompt error-message claim

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (3b816cd66a1)
            \
             N -- N -- N   refs/heads/sip/median-stddev-variance-aggregates (45641c66881)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .asf.yaml                                          |     1 +
 .github/CODEOWNERS                                 |    39 +-
 .github/actions/setup-backend/action.yml           |    28 +-
 .github/workflows/bashlib.sh                       |    19 +-
 .github/workflows/bump-python-package.yml          |     5 +-
 .github/workflows/check-python-deps.yml            |     2 +-
 .github/workflows/codeql-analysis.yml              |     4 +-
 .github/workflows/dependency-review.yml            |     2 +-
 .github/workflows/docker.yml                       |     2 +-
 .../workflows/enforce-single-migration-head.yml    |    82 +
 .github/workflows/generate-FOSSA-report.yml        |     2 +-
 .github/workflows/github-action-validator.yml      |     2 +-
 .github/workflows/license-check.yml                |     2 +-
 .github/workflows/pre-commit.yml                   |    33 +-
 .../workflows/scheduled-docker-image-refresh.yml   |    16 +-
 .github/workflows/superset-app-cli.yml             |     2 +-
 .github/workflows/superset-docs-deploy.yml         |    10 +-
 .github/workflows/superset-e2e.yml                 |     2 +-
 .github/workflows/superset-extensions-cli.yml      |     2 +-
 .github/workflows/superset-frontend.yml            |     7 +-
 .github/workflows/superset-helm-lint-test.yml      |     2 +-
 .github/workflows/superset-playwright.yml          |    13 +-
 .../workflows/superset-python-integrationtest.yml  |     2 +-
 .github/workflows/superset-python-presto-hive.yml  |     2 +-
 .../workflows/superset-python-unittest-report.yml  |    70 +
 .github/workflows/superset-python-unittest.yml     |    35 +-
 .github/workflows/superset-translations.yml        |     7 +-
 UPDATING.md                                        |   143 +-
 docker/pythonpath_dev/superset_config.py           |     1 +
 docs/admin_docs/configuration/alerts-reports.mdx   |    64 +
 docs/admin_docs/configuration/cache.mdx            |    62 +
 .../configuration/configuring-superset.mdx         |    16 +
 docs/admin_docs/configuration/sql-templating.mdx   |    70 +
 docs/admin_docs/security/security.mdx              |    45 +
 docs/docs/faq.mdx                                  |    16 +
 .../creating-your-first-dashboard.mdx              |    29 +
 docs/docs/using-superset/embedding.mdx             |     1 +
 docs/docs/using-superset/exploring-data.mdx        |     7 +
 .../using-superset/exporting-dashboard-data.mdx    |    10 +-
 docs/docs/using-superset/mobile-experience.mdx     |    93 +
 docs/docs/using-superset/number-formatting.mdx     |    92 +
 docs/package.json                                  |    22 +-
 docs/src/components/StorybookWrapper.jsx           |    67 +-
 docs/static/feature-flags.json                     |    12 +-
 .../img/screenshots/mobile/mobile_dashboard.jpg    |   Bin 0 -> 68479 bytes
 .../screenshots/mobile/mobile_dashboard_list.jpg   |   Bin 0 -> 82502 bytes
 .../screenshots/mobile/mobile_filter_drawer.jpg    |   Bin 0 -> 58074 bytes
 docs/static/img/screenshots/mobile/mobile_home.jpg |   Bin 0 -> 35338 bytes
 .../img/screenshots/mobile/mobile_nav_drawer.jpg   |   Bin 0 -> 35385 bytes
 .../img/screenshots/mobile/mobile_unsupported.jpg  |   Bin 0 -> 42668 bytes
 docs/static/resources/openapi.json                 |     7 +
 docs/yarn.lock                                     |  1169 +-
 helm/superset/Chart.yaml                           |     2 +-
 helm/superset/README.md                            |    28 +-
 helm/superset/templates/_helpers.tpl               |     1 +
 helm/superset/templates/pdb-beat.yaml              |     2 +-
 helm/superset/templates/pdb-flower.yaml            |     2 +-
 helm/superset/templates/pdb-mcp.yaml               |     2 +-
 helm/superset/templates/pdb-worker.yaml            |     2 +-
 helm/superset/templates/pdb-ws.yaml                |     2 +-
 helm/superset/templates/pdb.yaml                   |     2 +-
 helm/superset/tests/pdb_test.yaml                  |    87 +
 helm/superset/values.yaml                          |    26 +-
 pyproject.toml                                     |    78 +-
 pytest.ini                                         |    20 -
 requirements/base.in                               |     2 +-
 requirements/base.txt                              |    46 +-
 requirements/development.txt                       |    62 +-
 scripts/change_detector.py                         |     1 +
 superset-core/pyproject.toml                       |     2 +-
 superset-frontend/cypress-base/package-lock.json   |    15 +-
 superset-frontend/cypress-base/package.json        |     3 +
 superset-frontend/jest.config.js                   |     2 +-
 superset-frontend/oxlint.json                      |    13 +
 superset-frontend/package-lock.json                |  1178 +-
 superset-frontend/package.json                     |    44 +-
 .../packages/superset-core/package.json            |     3 +-
 .../src/theme/SupersetThemeProvider.test.tsx       |   205 +
 .../superset-core/src/theme/Theme.test.tsx         |    78 +
 .../packages/superset-core/src/theme/Theme.tsx     |   129 +-
 .../src/utils/D3Formatting.ts                      |     5 +
 .../src/utils/getTotalsMetrics.test.ts             |    79 +
 .../src/utils/getTotalsMetrics.ts                  |    43 +
 .../superset-ui-chart-controls/src/utils/index.ts  |     1 +
 .../packages/superset-ui-core/package.json         |     9 +-
 .../src/chart/components/StatefulChart.tsx         |     2 +-
 .../src/chart/components/reactify.tsx              |    47 +-
 .../src/components/AsyncAceEditor/index.tsx        |     3 +
 .../src/components/AsyncAceEditor/types.ts         |     3 +
 .../src/components/Dropdown/Dropdown.test.tsx      |    35 +-
 .../src/components/Dropdown/index.tsx              |    28 +-
 .../src/components/DynamicEditableTitle/index.tsx  |    16 +
 .../src/components/Modal/Modal.stories.tsx         |    72 +
 .../src/components/PageHeaderWithActions/index.tsx |    18 +
 .../src/components/Select/AsyncSelect.test.tsx     |    46 +
 .../src/components/Table/VirtualTable.test.tsx     |   122 +
 .../src/components/Table/VirtualTable.tsx          |   155 +-
 .../UnsavedChangesModal.test.tsx                   |   180 +-
 .../src/components/UnsavedChangesModal/index.tsx   |    93 +-
 ...ryFormatter.ts => createThroughputFormatter.ts} |    78 +-
 .../superset-ui-core/src/number-format/index.ts    |     1 +
 .../superset-ui-core/src/utils/featureFlags.ts     |     1 +
 .../superset-ui-core/src/utils/lruCache.ts         |     7 +-
 .../test/chart/components/reactify.test.tsx        |    38 +-
 .../factories/createThroughputFormatter.test.ts    |   131 +
 .../test/query/getClientErrorObject.test.ts        |    26 +
 .../superset-ui-core/test/utils/lruCache.test.ts   |    21 +
 superset-frontend/playwright.config.ts             |    18 +
 .../generators/docs/mobile-screenshots.spec.ts     |   173 +
 superset-frontend/playwright/pages/EmbeddedPage.ts |    38 +-
 .../tests/dashboard/drill-to-detail.spec.ts        |   162 +
 .../mixed-chart-dashboard-filters.spec.ts          |     6 +
 .../tests/mobile/mobile-dashboard.spec.ts          |   284 +
 .../tests/mobile/mobile-navigation.spec.ts         |   192 +
 superset-frontend/playwright/utils/constants.ts    |     2 +-
 .../plugin-chart-ag-grid-table/src/buildQuery.ts   |    24 +-
 .../src/controlPanel.tsx                           |    27 +-
 .../test/buildQuery.test.ts                        |    68 +
 .../plugins/plugin-chart-calendar/src/Calendar.ts  |    15 +-
 .../plugin-chart-calendar/src/ReactCalendar.tsx    |     9 +-
 .../plugin-chart-calendar/src/tooltip.ts}          |     2 +-
 .../src/vendor/cal-heatmap.ts                      |    13 +-
 .../test/ReactCalendar.test.tsx                    |   585 +
 .../plugin-chart-calendar/test/tooltip.test.ts     |   136 +
 .../src/BoxPlot/controlPanel.ts                    |     5 +-
 .../src/MixedTimeseries/transformProps.ts          |    22 +-
 .../plugin-chart-echarts/src/Pie/transformProps.ts |    11 +-
 .../src/Timeseries/transformProps.ts               |   151 +-
 .../plugin-chart-echarts/src/components/Echart.tsx |     6 +
 .../plugin-chart-echarts/src/utils/series.ts       |    55 +-
 .../plugin-chart-echarts/src/utils/treeBuilder.ts  |   125 +-
 .../test/BoxPlot/controlPanel.test.ts              |    57 +
 .../test/MixedTimeseries/transformProps.test.ts    |    52 +
 .../test/Pie/transformProps.test.ts                |    20 +
 .../test/Timeseries/Bar/transformProps.test.ts     |    90 +
 .../test/Timeseries/transformProps.test.ts         |   386 +
 .../plugin-chart-echarts/test/utils/series.test.ts |   147 +-
 .../test/utils/treeBuilder.test.ts                 |    72 +
 .../plugins/plugin-chart-handlebars/package.json   |     2 +-
 .../plugins/plugin-chart-pivot-table/package.json  |     2 +-
 .../plugin-chart-point-cluster-map/package.json    |     2 +-
 .../plugins/plugin-chart-table/src/buildQuery.ts   |     5 +
 .../plugin-chart-table/src/controlPanel.tsx        |    25 +
 .../plugin-chart-table/test/buildQuery.test.ts     |    65 +
 .../plugins/plugin-chart-word-cloud/package.json   |     2 +-
 .../src/components/Legend.test.tsx                 |    66 +-
 .../preset-chart-deckgl/src/components/Legend.tsx  |    21 +-
 .../src/layers/Geojson/Geojson.test.tsx            |    45 +
 .../src/layers/Geojson/transformProps.test.ts      |    85 +
 .../src/layers/Polygon/Polygon.test.tsx            |    72 +-
 .../preset-chart-deckgl/src/layers/common.test.ts  |    27 +
 .../preset-chart-deckgl/src/layers/common.tsx      |    15 +-
 .../src/utilities/Shared_DeckGL.test.ts            |    55 +-
 .../src/utilities/Shared_DeckGL.tsx                |     6 +-
 .../scripts/oxlint-metrics-uploader.js             |    17 +-
 superset-frontend/scripts/po2json.sh               |     6 +-
 superset-frontend/spec/helpers/mobileTestUtils.ts  |   169 +
 .../components/EditorWrapper/useKeywords.test.ts   |   160 +
 .../SqlLab/components/EditorWrapper/useKeywords.ts |    63 +-
 .../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx |     8 +-
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |    15 +-
 .../TabbedSqlEditors/TabbedSqlEditors.test.tsx     |     6 +-
 .../components/Chart/DrillBy/DrillBySubmenu.tsx    |    68 +-
 .../Chart/DrillDetail/DrillDetailModal.test.tsx    |    35 +
 .../Chart/DrillDetail/DrillDetailModal.tsx         |    20 +-
 .../src/components/CrudThemeProvider.test.tsx      |    63 +
 .../src/components/CrudThemeProvider.tsx           |    92 +-
 .../FoldersEditor/FoldersEditor.test.tsx           |    26 +-
 .../FoldersEditor/VirtualizedTreeItem.tsx          |    54 +-
 .../FoldersEditor/VirtualizedTreeList.tsx          |    47 +-
 .../FoldersEditor/hooks/useAutoScroll.ts           |     8 +-
 .../src/components/DynamicPlugins/index.tsx        |     1 +
 .../ErrorMessage/BasicErrorAlert.test.tsx          |     9 +-
 .../ErrorMessage/DatabaseErrorMessage.test.tsx     |     9 +-
 .../DatasetNotFoundErrorMessage.test.tsx           |     9 +-
 .../DatasourceSecurityAccessErrorMessage.test.tsx  |   135 +
 .../DatasourceSecurityAccessErrorMessage.tsx       |   159 +
 .../ErrorMessageWithStackTrace.test.tsx            |     9 +-
 .../FrontendNetworkErrorMessage.test.tsx           |     9 +-
 .../ErrorMessage/ParameterErrorMessage.test.tsx    |     9 +-
 .../ErrorMessage/TimeoutErrorMessage.test.tsx      |     9 +-
 .../src/components/ErrorMessage/index.tsx          |     1 +
 .../src/components/GridTable/index.tsx             |     1 -
 .../src/components/ListView/CardCollection.tsx     |    13 +
 .../src/components/ListView/ListView.test.tsx      |   224 +
 .../src/components/ListView/ListView.tsx           |   103 +-
 superset-frontend/src/components/ListView/utils.ts |    25 +-
 .../MobileRouteGuard/MobileRouteGuard.test.tsx     |    64 +
 .../src/components/MobileRouteGuard/index.tsx      |    49 +-
 .../src/core/editors/AceEditorProvider.tsx         |    14 +-
 .../src/dashboard/actions/dashboardState.test.ts   |   141 +
 .../src/dashboard/actions/dashboardState.ts        |     9 +-
 .../DashboardBuilder/DashboardBuilder.test.tsx     |    49 +
 .../DashboardBuilder/DashboardBuilder.tsx          |    87 +-
 .../DashboardBuilder/DashboardWrapper.tsx          |    17 +
 .../dashboard/components/DashboardBuilder/state.ts |    15 +-
 .../dashboard/components/Header/Header.test.tsx    |     7 +
 .../src/dashboard/components/Header/index.tsx      |    48 +-
 .../src/dashboard/components/Header/types.ts       |     4 +
 .../Header/useHeaderActionsDropdownMenu.tsx        |    81 +-
 .../src/dashboard/components/SliceAdder.test.tsx   |    56 +-
 .../src/dashboard/components/SliceAdder.tsx        |   131 +-
 .../components/SliceHeader/SliceHeader.test.tsx    |    42 +
 .../src/dashboard/components/SliceHeader/index.tsx |     7 +-
 .../components/gridComponents/Chart/Chart.test.tsx |   180 +-
 .../components/gridComponents/Chart/Chart.tsx      |    34 +-
 .../ChartHolder/ChartHolder.test.tsx               |   147 +-
 .../gridComponents/ChartHolder/ChartHolder.tsx     |    64 +-
 .../components/gridComponents/Row/Row.test.tsx     |    59 +
 .../components/gridComponents/Row/Row.tsx          |    72 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |    55 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |    74 +-
 .../components/nativeFilters/FilterBar/index.tsx   |     1 +
 .../components/nativeFilters/FilterBar/types.ts    |     5 +
 .../components/resizable/ResizableContainer.tsx    |    16 +
 superset-frontend/src/dashboard/constants.ts       |    13 +
 .../src/dashboard/reducers/dashboardState.test.ts  |    49 +
 .../src/dashboard/reducers/dashboardState.ts       |     2 +-
 .../src/dashboard/util/permissionUtils.test.ts     |    54 +
 .../src/dashboard/util/permissionUtils.ts          |     7 +-
 .../components/DatasourcePanel/DatasourceItems.tsx |    32 +-
 .../DatasourcePanel.real-autosizer.test.tsx        |   128 +
 .../DatasourcePanel/DatasourcePanelItem.test.tsx   |    19 +-
 .../DatasourcePanel/DatasourcePanelItem.tsx        |    35 +-
 .../AnnotationLayer.subdirectory.test.tsx          |     1 +
 .../AnnotationLayer.test.tsx                       |   147 +-
 .../AnnotationLayerControl/AnnotationLayer.tsx     |    90 +-
 .../controls/AnnotationLayerControl/index.test.tsx |    52 +
 .../controls/AnnotationLayerControl/index.tsx      |    15 +-
 .../components/controls/SelectControl.test.tsx     |    36 +
 .../explore/components/controls/ViewQueryModal.tsx |     2 +-
 .../components/controls/VizTypeControl/index.tsx   |     2 +-
 .../src/features/dashboards/DashboardCard.tsx      |    12 +-
 .../UploadDataModel/UploadDataModal.test.tsx       |    28 +-
 .../features/databases/UploadDataModel/index.tsx   |    10 +-
 .../src/features/home/ActivityTable.tsx            |    28 +-
 .../src/features/home/EmptyState.test.tsx          |    39 +
 superset-frontend/src/features/home/EmptyState.tsx |    10 +-
 superset-frontend/src/features/home/Menu.tsx       |    75 +-
 .../src/features/home/RightMenu.test.tsx           |   127 +-
 superset-frontend/src/features/home/RightMenu.tsx  |   197 +-
 .../src/features/home/SubMenu.test.tsx             |    32 +
 superset-frontend/src/features/home/SubMenu.tsx    |    66 +-
 superset-frontend/src/features/home/types.ts       |     1 +
 .../src/features/roles/RoleFormItems.test.tsx      |    43 +-
 .../src/features/roles/RoleFormItems.tsx           |    12 +
 superset-frontend/src/hooks/useIsMobile.ts         |    88 +
 superset-frontend/src/logger/LogUtils.ts           |     2 +
 .../src/pages/ChartCreation/ChartCreation.test.tsx |    59 +
 .../src/pages/ChartCreation/index.tsx              |     2 +
 .../src/pages/DashboardList/DashboardList.test.tsx |     7 +
 .../src/pages/DashboardList/index.tsx              |    33 +-
 .../src/pages/Home/Home.mobile.test.tsx            |   183 +
 superset-frontend/src/pages/Home/Home.test.tsx     |     7 +
 superset-frontend/src/pages/Home/index.tsx         |    43 +-
 .../MobileUnsupported/MobileUnsupported.test.tsx   |    95 +
 .../src/pages/MobileUnsupported/index.tsx          |   141 +
 superset-frontend/src/setup/setupErrorMessages.ts  |     9 +
 .../src/setup/setupFormatters.test.ts              |    22 +
 superset-frontend/src/setup/setupFormatters.ts     |     6 +
 superset-frontend/src/utils/assetUrl.test.ts       |    10 +
 superset-frontend/src/utils/assetUrl.ts            |    10 +-
 superset-frontend/src/utils/downloadAsImage.tsx    |    17 +
 superset-frontend/src/utils/downloadAsPdf.ts       |    12 +-
 superset-frontend/src/utils/downloadUtils.test.ts  |   252 +
 superset-frontend/src/utils/downloadUtils.ts       |   197 +
 superset-frontend/src/utils/softDeleteCopy.ts      |     2 +-
 superset-frontend/src/views/App.tsx                |    37 +-
 superset-frontend/src/views/CRUD/utils.tsx         |    12 +
 superset-frontend/src/views/routes.tsx             |    41 +-
 .../tools/webpack.proxy-config.test.js             |   272 +
 superset-frontend/webpack.proxy-config.js          |   102 +-
 superset-websocket/package-lock.json               |   333 +-
 superset-websocket/package.json                    |    12 +-
 superset/charts/client_processing.py               |   484 +-
 superset/charts/data/api.py                        |     8 +-
 superset/cli/export_example.py                     |     2 +-
 superset/commands/chart/export.py                  |    24 +-
 superset/commands/chart/warm_up_cache.py           |     3 +-
 superset/commands/dashboard/export.py              |    17 +-
 superset/commands/database/oauth2.py               |    23 +-
 superset/commands/database/sync_permissions.py     |    19 +-
 superset/commands/database/uploaders/base.py       |    24 +-
 superset/commands/database/validate_sql.py         |    12 +
 superset/commands/dataset/duplicate.py             |     2 +-
 superset/commands/dataset/update.py                |   122 +-
 .../commands/deletion_retention/purge_cascade.py   |   278 +-
 .../commands/deletion_retention/purge_policy.py    |  1213 ++
 superset/commands/export/assets.py                 |     6 +-
 superset/commands/importers/v1/examples.py         |     2 +-
 superset/commands/report/alert.py                  |    31 +
 superset/commands/report/base.py                   |    58 +-
 superset/commands/report/create.py                 |     2 +
 superset/commands/report/exceptions.py             |    32 +
 superset/commands/report/execute.py                |   230 +-
 superset/commands/report/slack_upgrade.py          |   225 +
 superset/commands/report/update.py                 |    13 +
 superset/commands/security/create.py               |    43 +-
 superset/commands/security/update.py               |    57 +-
 superset/commands/sql_lab/estimate.py              |    22 +-
 superset/commands/streaming_export/base.py         |    24 +-
 superset/commands/tag/export.py                    |    86 +-
 superset/common/form_data_query_context.py         |   356 +
 superset/common/query_context_factory.py           |     8 +-
 superset/common/query_object.py                    |    16 +
 superset/common/query_object_factory.py            |     4 +-
 superset/common/utils/dataframe_utils.py           |     7 +-
 superset/config.py                                 |    98 +-
 superset/connectors/sqla/models.py                 |   240 +-
 superset/daos/base.py                              |    19 +-
 superset/daos/dashboard.py                         |     9 +
 superset/daos/dataset.py                           |     2 +-
 superset/daos/security.py                          |    20 +-
 superset/dashboards/api.py                         |    55 +-
 superset/databases/api.py                          |     7 +-
 superset/databases/error_provenance.py             |    51 +
 superset/databases/schemas.py                      |    42 +
 superset/databases/utils.py                        |    43 +-
 superset/db_engine_specs/base.py                   |    45 +-
 superset/db_engine_specs/bigquery.py               |     7 +
 superset/db_engine_specs/clickhouse.py             |    24 +-
 superset/db_engine_specs/couchbase.py              |     6 +-
 superset/db_engine_specs/databend.py               |    24 +-
 superset/db_engine_specs/databricks.py             |    51 +-
 superset/db_engine_specs/duckdb.py                 |    49 +-
 superset/db_engine_specs/hive.py                   |     6 +
 superset/db_engine_specs/mssql.py                  |     5 +
 superset/db_engine_specs/mysql.py                  |     4 +
 superset/db_engine_specs/postgres.py               |     7 +-
 superset/db_engine_specs/snowflake.py              |    28 +-
 superset/db_engine_specs/sybase.py                 |     5 +
 superset/exceptions.py                             |    13 +-
 superset/extensions/__init__.py                    |    14 +-
 superset/initialization/__init__.py                |    86 +-
 superset/jinja_context.py                          |   188 +-
 superset/key_value/shared_entries.py               |     1 +
 superset/mcp_service/PRODUCTION.md                 |     7 +
 superset/mcp_service/SECURITY.md                   |     7 +
 superset/mcp_service/app.py                        |    38 +-
 superset/mcp_service/auth.py                       |    98 +-
 superset/mcp_service/chart/chart_utils.py          |    64 +-
 superset/mcp_service/chart/compile.py              |    28 +-
 superset/mcp_service/chart/plugins/table.py        |    19 +-
 superset/mcp_service/chart/preview_utils.py        |    30 +-
 superset/mcp_service/chart/schemas.py              |    78 +
 superset/mcp_service/chart/tool/list_charts.py     |    14 +-
 superset/mcp_service/chart/tool/update_chart.py    |   212 +-
 .../mcp_service/chart/tool/update_chart_preview.py |     3 +
 superset/mcp_service/chart/validation/pipeline.py  |     2 +-
 superset/mcp_service/dataset/schemas.py            |    14 +
 superset/mcp_service/dataset/tool/list_datasets.py |    13 +-
 superset/mcp_service/mcp_config.py                 |    49 +
 superset/mcp_service/mcp_core.py                   |    38 +-
 superset/mcp_service/screenshot/__init__.py        |    19 +-
 .../mcp_service/screenshot/pooled_screenshot.py    |   492 -
 .../mcp_service/screenshot/webdriver_config.py     |   143 -
 superset/mcp_service/screenshot/webdriver_pool.py  |   437 -
 superset/mcp_service/server.py                     |    10 +
 superset/mcp_service/session_scope.py              |    69 +
 superset/mcp_service/utils/sanitization.py         |    60 +-
 ...8-07-26_11-10_c82ee8a39623_add_implicit_tags.py |    18 +-
 ...-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py |     4 +-
 ...57699a813e_add_tables_relation_to_row_level_.py |     6 +-
 ...828ac4e_add_rls_filter_type_and_grouping_key.py |     2 +-
 ...654_fix_data_access_permissions_for_virtual_.py |     2 +-
 ...b56500de1855_add_uuid_column_to_import_mixin.py |     5 +-
 ...2fdb_add_granularity_to_charts_where_missing.py |     2 +-
 ...8_09-13_c501b7c653a3_add_missing_uuid_column.py |     5 +-
 ...14-38_a9422eeaae74_new_dataset_models_take_2.py |     5 +-
 superset/models/core.py                            |    37 +-
 superset/models/helpers.py                         |   265 +-
 superset/models/sql_types/presto_sql_types.py      |    28 +-
 superset/reports/api.py                            |     6 +-
 superset/reports/notifications/base.py             |     6 +
 superset/reports/notifications/exceptions.py       |     4 +
 superset/reports/notifications/slack.py            |   132 +-
 .../notifications/slack_channel_resolver.py        |    94 +
 superset/reports/notifications/slack_mixin.py      |    21 +
 superset/reports/notifications/slack_transport.py  |   310 +
 superset/reports/notifications/slackv2.py          |   225 +-
 superset/reports/notifications/webhook.py          |    18 +-
 superset/row_level_security/api.py                 |     4 +
 superset/security/api.py                           |     3 +
 superset/security/guest_token.py                   |     1 +
 superset/security/manager.py                       |   185 +-
 superset/sql/dialects/dremio.py                    |    28 +-
 superset/sql/parse.py                              |   433 +-
 superset/sqllab/api.py                             |    20 +
 superset/sqllab/schemas.py                         |    36 +-
 superset/sqllab/sqllab_execution_context.py        |    39 +
 superset/sqllab/utils.py                           |     1 +
 superset/tags/core.py                              |    56 +-
 superset/tasks/async_queries.py                    |     5 +-
 superset/tasks/cache.py                            |    45 +-
 superset/tasks/context.py                          |    14 +-
 superset/tasks/export_dashboard_excel.py           |   183 +-
 superset/tasks/manager.py                          |     7 +-
 superset/tasks/slack.py                            |    16 +-
 superset/templates/superset/spa.html               |     7 +
 superset/translations/fr/LC_MESSAGES/messages.po   |  2357 +--
 superset/translations/it/LC_MESSAGES/messages.po   |  2662 +--
 superset/translations/ta/LC_MESSAGES/messages.po   | 18359 +++++++++++++++++++
 superset/translations/zh/LC_MESSAGES/messages.po   |  5906 +++---
 superset/utils/core.py                             |    28 +-
 superset/utils/decorators.py                       |    25 +-
 superset/utils/encrypt.py                          |    57 +-
 superset/utils/error_sanitization.py               |   177 +
 superset/utils/log.py                              |    60 +-
 superset/utils/machine_auth.py                     |    33 +-
 superset/utils/number_format.py                    |   607 +
 superset/utils/oauth2.py                           |    36 +-
 superset/utils/pandas_postprocessing/utils.py      |     2 +-
 superset/utils/rls.py                              |    66 +-
 superset/utils/screenshots.py                      |    58 +-
 superset/utils/slack.py                            |   597 +-
 superset/utils/sqlalchemy_events.py                |   103 +
 superset/utils/webdriver.py                        |   668 +-
 superset/views/base.py                             |     1 +
 superset/views/base_api.py                         |    75 +-
 superset/views/core.py                             |     5 +
 superset/views/database/validators.py              |    22 +-
 superset/views/datasource/views.py                 |    22 +-
 superset/views/error_handling.py                   |    16 +-
 superset/views/sql_lab/views.py                    |     6 +
 superset/views/utils.py                            |    26 +-
 tests/integration_tests/base_tests.py              |    11 +
 tests/integration_tests/celery_tests.py            |    16 +
 tests/integration_tests/charts/api_tests.py        |    78 +
 tests/integration_tests/dashboards/api_tests.py    |    46 +-
 .../dashboards/soft_delete_tests.py                |     7 +-
 tests/integration_tests/databases/api_tests.py     |    90 +-
 .../databases/commands/upload_test.py              |    17 +-
 tests/integration_tests/datasets/api_tests.py      |    40 +-
 tests/integration_tests/datasource_tests.py        |     3 -
 .../db_engine_specs/hive_tests.py                  |     4 +-
 .../db_engine_specs/presto_tests.py                |     4 +-
 .../deletion_retention/purge_performance_tests.py  |   259 +
 .../deletion_retention/purge_tests.py              |   110 +-
 tests/integration_tests/model_tests.py             |    25 +-
 .../integration_tests/non_additive_totals_tests.py |    42 +
 tests/integration_tests/reports/alert_tests.py     |     5 +
 tests/integration_tests/reports/commands_tests.py  |   549 +-
 tests/integration_tests/security/api_tests.py      |   168 +
 .../security/row_level_security_tests.py           |    53 +
 tests/integration_tests/security_tests.py          |   182 +
 tests/integration_tests/sql_lab/api_tests.py       |    30 +-
 tests/integration_tests/sql_lab/commands_tests.py  |    18 +-
 tests/integration_tests/sqla_models_tests.py       |    16 +-
 tests/integration_tests/superset_test_config.py    |    18 +
 tests/integration_tests/thumbnails_tests.py        |   113 +-
 tests/integration_tests/utils/encrypt_tests.py     |    12 +-
 .../integration_tests/utils/machine_auth_tests.py  |    56 +-
 .../integration_tests/versioning/id_reuse_tests.py |     2 +-
 tests/unit_tests/charts/test_chart_data_api.py     |   107 +
 tests/unit_tests/charts/test_client_processing.py  |   827 +-
 .../chart/streaming_export_command_test.py         |    46 +
 .../commands/chart/warm_up_cache_test.py           |    24 +-
 tests/unit_tests/commands/databases/oauth2_test.py |    42 +
 .../databases/sync_permissions_identity_test.py    |   140 +
 .../commands/databases/sync_permissions_test.py    |    10 +-
 tests/unit_tests/commands/databases/update_test.py |     4 +-
 .../commands/databases/upload_command_test.py      |   136 +-
 .../commands/databases/validate_sql_test.py        |     5 +
 .../unit_tests/commands/dataset/test_duplicate.py  |    18 +-
 tests/unit_tests/commands/dataset/update_test.py   |   200 +
 .../commands/deletion_retention}/__init__.py       |     0
 .../deletion_retention/test_purge_policy.py        |   570 +
 tests/unit_tests/commands/export_test.py           |     4 +-
 .../commands/importers/v1/examples_test.py         |    18 +-
 tests/unit_tests/commands/report/alert_test.py     |     5 +
 tests/unit_tests/commands/report/base_test.py      |    92 +
 tests/unit_tests/commands/report/execute_test.py   |  1333 +-
 tests/unit_tests/commands/report/update_test.py    |     6 +
 tests/unit_tests/commands/security/rls_test.py     |   170 +-
 .../sql_lab/streaming_export_command_test.py       |   120 +
 tests/unit_tests/commands/sql_lab/test_estimate.py |    72 +-
 .../common/test_form_data_query_context.py         |   570 +
 .../common/test_query_context_factory.py           |    22 +
 tests/unit_tests/connectors/sqla/models_test.py    |   578 +-
 .../daos/test_base_relationship_filters.py         |    49 +-
 tests/unit_tests/databases/api_test.py             |    94 +
 .../unit_tests/databases/error_provenance_test.py  |   250 +
 tests/unit_tests/databases/filters_test.py         |     2 +-
 tests/unit_tests/databases/oauth2_api_test.py      |   275 +
 tests/unit_tests/databases/test_schemas.py         |    54 +
 tests/unit_tests/db_engine_specs/test_base.py      |    14 +-
 tests/unit_tests/db_engine_specs/test_bigquery.py  |    12 +
 .../unit_tests/db_engine_specs/test_databricks.py  |    17 +
 tests/unit_tests/db_engine_specs/test_duckdb.py    |    28 +
 tests/unit_tests/db_engine_specs/test_hive.py      |    23 +
 tests/unit_tests/db_engine_specs/test_mssql.py     |    11 +
 tests/unit_tests/db_engine_specs/test_mysql.py     |    11 +
 tests/unit_tests/db_engine_specs/test_postgres.py  |    21 +
 tests/unit_tests/db_engine_specs/test_snowflake.py |    40 +-
 .../unit_tests/db_engine_specs/test_sybase.py      |    21 +-
 tests/unit_tests/db_engine_specs/test_trino.py     |    40 +-
 tests/unit_tests/extensions/test_sqlalchemy.py     |    18 +-
 .../initialization/check_encryption_engine_test.py |    88 +
 tests/unit_tests/jinja_context_test.py             |  1132 ++
 .../key_value/test_shared_entries_migration.py     |    40 +
 .../mcp_service/chart/test_chart_utils.py          |    71 +
 tests/unit_tests/mcp_service/chart/test_compile.py |    40 +
 .../mcp_service/chart/test_new_chart_types.py      |    60 +
 .../mcp_service/chart/test_preview_utils.py        |    12 +
 .../mcp_service/chart/tool/test_get_chart_data.py  |     4 +-
 .../chart/tool/test_get_chart_type_schema.py       |     9 +-
 .../mcp_service/chart/tool/test_list_charts.py     |    65 +
 .../mcp_service/chart/tool/test_update_chart.py    |   474 +
 .../chart/tool/test_update_chart_preview.py        |    12 +-
 .../validation/test_column_name_normalization.py   |    68 +
 .../dashboard/tool/test_dashboard_generation.py    |    19 +
 .../mcp_service/dataset/tool/test_dataset_tools.py |    55 +-
 .../mcp_service/test_auth_user_resolution.py       |    59 +-
 .../test_mcp_multi_issuer_identity_binding.py      |   201 +
 .../mcp_service/test_pooled_screenshot.py          |    22 +-
 tests/unit_tests/mcp_service/test_session_scope.py |   233 +
 .../utils/test_sanitization_unicode_ordering.py    |   192 +
 .../test_add_implicit_tags_mapper_isolation.py}    |    25 +-
 tests/unit_tests/models/core_test.py               |    98 +-
 tests/unit_tests/models/helpers_test.py            |   100 +
 .../unit_tests/models/test_time_filter_timezone.py |   205 +
 .../models/test_virtual_dataset_format.py          |    34 +
 .../unit_tests/pandas_postprocessing/test_pivot.py |     4 +-
 .../pandas_postprocessing/test_resample.py         |     2 +-
 tests/unit_tests/queries/query_object_test.py      |    67 +
 .../reports/notifications/slack_tests.py           |  1665 +-
 .../reports/notifications/webhook_tests.py         |    54 +
 .../scheduled_docker_image_refresh_test.py         |    65 +
 tests/unit_tests/security/manager_test.py          |   110 +
 .../security/test_embedded_guest_chart_access.py   |   185 +
 .../security/test_permission_instructions_link.py  |   181 +
 tests/unit_tests/sql/dialects/dremio_tests.py      |    27 +
 tests/unit_tests/sql/parse_tests.py                |   710 +-
 tests/unit_tests/sql_lab_execution_context.py      |    46 +
 tests/unit_tests/sql_lab_test.py                   |    98 +-
 tests/unit_tests/sqllab/api_test.py                |    46 +
 tests/unit_tests/sqllab/test_schemas.py            |    54 +
 tests/unit_tests/sqllab/test_utils.py              |    52 +
 tests/unit_tests/tasks/test_async_queries.py       |    41 +
 tests/unit_tests/tasks/test_cache.py               |    51 +-
 .../tasks/test_export_dashboard_excel.py           |   442 +-
 tests/unit_tests/tasks/test_slack.py               |    75 +
 tests/unit_tests/utils/encrypt_test.py             |    61 +
 tests/unit_tests/utils/number_format_test.py       |   562 +
 tests/unit_tests/utils/oauth2_tests.py             |   104 +-
 tests/unit_tests/utils/rls_test.py                 |   225 +
 tests/unit_tests/utils/screenshot_test.py          |    81 +-
 tests/unit_tests/utils/slack_test.py               |   793 +-
 tests/unit_tests/utils/test_core.py                |    72 +
 tests/unit_tests/utils/test_decorators.py          |    60 +-
 .../unit_tests/utils/test_encrypt_cbc_iv_reuse.py  |    90 +
 tests/unit_tests/utils/test_error_sanitization.py  |   178 +
 .../utils/test_playwright_migration_working.py     |   199 -
 tests/unit_tests/utils/webdriver_test.py           |   554 +-
 tests/unit_tests/views/datasource/views_test.py    |   184 +
 tests/unit_tests/views/test_error_handling.py      |    78 +-
 .../views/test_sql_lab_tab_state_views.py          |   129 +
 tests/unit_tests/views/test_utils.py               |    85 +-
 558 files changed, 61185 insertions(+), 13978 deletions(-)
 create mode 100644 .github/workflows/enforce-single-migration-head.yml
 create mode 100644 .github/workflows/superset-python-unittest-report.yml
 create mode 100644 docs/docs/using-superset/mobile-experience.mdx
 create mode 100644 docs/docs/using-superset/number-formatting.mdx
 create mode 100644 docs/static/img/screenshots/mobile/mobile_dashboard.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_dashboard_list.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_filter_drawer.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_home.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_nav_drawer.jpg
 create mode 100644 docs/static/img/screenshots/mobile/mobile_unsupported.jpg
 create mode 100644 helm/superset/tests/pdb_test.yaml
 create mode 100644 superset-frontend/packages/superset-core/src/theme/SupersetThemeProvider.test.tsx
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/getTotalsMetrics.test.ts
 create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/getTotalsMetrics.ts
 create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Table/VirtualTable.test.tsx
 copy superset-frontend/packages/superset-ui-core/src/number-format/factories/{createMemoryFormatter.ts => createThroughputFormatter.ts} (51%)
 create mode 100644 superset-frontend/packages/superset-ui-core/test/number-format/factories/createThroughputFormatter.test.ts
 create mode 100644 superset-frontend/playwright/generators/docs/mobile-screenshots.spec.ts
 create mode 100644 superset-frontend/playwright/tests/dashboard/drill-to-detail.spec.ts
 create mode 100644 superset-frontend/playwright/tests/mobile/mobile-dashboard.spec.ts
 create mode 100644 superset-frontend/playwright/tests/mobile/mobile-navigation.spec.ts
 copy superset-frontend/{packages/superset-ui-chart-controls/src/ace-builds.d.ts => plugins/plugin-chart-calendar/src/tooltip.ts} (91%)
 create mode 100644 superset-frontend/plugins/plugin-chart-calendar/test/ReactCalendar.test.tsx
 create mode 100644 superset-frontend/plugins/plugin-chart-calendar/test/tooltip.test.ts
 create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/controlPanel.test.ts
 create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Geojson/transformProps.test.ts
 create mode 100644 superset-frontend/spec/helpers/mobileTestUtils.ts
 create mode 100644 superset-frontend/src/components/ErrorMessage/DatasourceSecurityAccessErrorMessage.test.tsx
 create mode 100644 superset-frontend/src/components/ErrorMessage/DatasourceSecurityAccessErrorMessage.tsx
 create mode 100644 superset-frontend/src/components/MobileRouteGuard/MobileRouteGuard.test.tsx
 copy superset-embedded-sdk/src/withTimeout.ts => superset-frontend/src/components/MobileRouteGuard/index.tsx (50%)
 create mode 100644 superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanel.real-autosizer.test.tsx
 create mode 100644 superset-frontend/src/explore/components/controls/AnnotationLayerControl/index.test.tsx
 create mode 100644 superset-frontend/src/hooks/useIsMobile.ts
 create mode 100644 superset-frontend/src/pages/Home/Home.mobile.test.tsx
 create mode 100644 superset-frontend/src/pages/MobileUnsupported/MobileUnsupported.test.tsx
 create mode 100644 superset-frontend/src/pages/MobileUnsupported/index.tsx
 create mode 100644 superset-frontend/src/utils/downloadUtils.test.ts
 create mode 100644 superset-frontend/src/utils/downloadUtils.ts
 create mode 100644 superset-frontend/tools/webpack.proxy-config.test.js
 create mode 100644 superset/commands/deletion_retention/purge_policy.py
 create mode 100644 superset/commands/report/slack_upgrade.py
 create mode 100644 superset/common/form_data_query_context.py
 create mode 100644 superset/databases/error_provenance.py
 delete mode 100644 superset/mcp_service/screenshot/pooled_screenshot.py
 delete mode 100644 superset/mcp_service/screenshot/webdriver_config.py
 delete mode 100644 superset/mcp_service/screenshot/webdriver_pool.py
 create mode 100644 superset/mcp_service/session_scope.py
 create mode 100644 superset/reports/notifications/slack_channel_resolver.py
 create mode 100644 superset/reports/notifications/slack_transport.py
 create mode 100644 superset/translations/ta/LC_MESSAGES/messages.po
 create mode 100644 superset/utils/error_sanitization.py
 create mode 100644 superset/utils/number_format.py
 create mode 100644 superset/utils/sqlalchemy_events.py
 create mode 100644 tests/integration_tests/deletion_retention/purge_performance_tests.py
 create mode 100644 tests/unit_tests/commands/databases/sync_permissions_identity_test.py
 copy {scripts => tests/unit_tests/commands/deletion_retention}/__init__.py (100%)
 create mode 100644 tests/unit_tests/commands/deletion_retention/test_purge_policy.py
 create mode 100644 tests/unit_tests/common/test_form_data_query_context.py
 create mode 100644 tests/unit_tests/databases/error_provenance_test.py
 create mode 100644 tests/unit_tests/databases/oauth2_api_test.py
 copy superset-frontend/netlify.toml => tests/unit_tests/db_engine_specs/test_sybase.py (60%)
 create mode 100644 tests/unit_tests/initialization/check_encryption_engine_test.py
 create mode 100644 tests/unit_tests/mcp_service/test_mcp_multi_issuer_identity_binding.py
 create mode 100644 tests/unit_tests/mcp_service/test_session_scope.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_sanitization_unicode_ordering.py
 copy tests/unit_tests/{db_engine_specs/test_tdengine.py => migrations/test_add_implicit_tags_mapper_isolation.py} (54%)
 create mode 100644 tests/unit_tests/models/test_time_filter_timezone.py
 create mode 100644 tests/unit_tests/scheduled_docker_image_refresh_test.py
 create mode 100644 tests/unit_tests/security/test_embedded_guest_chart_access.py
 create mode 100644 tests/unit_tests/security/test_permission_instructions_link.py
 create mode 100644 tests/unit_tests/sqllab/test_schemas.py
 create mode 100644 tests/unit_tests/sqllab/test_utils.py
 create mode 100644 tests/unit_tests/tasks/test_slack.py
 create mode 100644 tests/unit_tests/utils/number_format_test.py
 create mode 100644 tests/unit_tests/utils/rls_test.py
 create mode 100644 tests/unit_tests/utils/test_encrypt_cbc_iv_reuse.py
 create mode 100644 tests/unit_tests/utils/test_error_sanitization.py
 delete mode 100644 tests/unit_tests/utils/test_playwright_migration_working.py
 create mode 100644 tests/unit_tests/views/test_sql_lab_tab_state_views.py