This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch fix-literal-adhoc-column-group-by
in repository https://gitbox.apache.org/repos/asf/superset.git
omit ef2a16b0748 fix(sqla): treat negated numeric literals as constants in
GROUP BY
omit 5597b3eefb9 fix(sqla): keep GROUP BY when every key is constant; treat
TRUE/FALSE as identifiers on SQLite
omit 7a6fefaa5b9 fix(sqla): omit constant expressions from GROUP BY
omit b52e6e5c540 test(sqla): add failing guard for literal Custom SQL
column in GROUP BY
add f8e8cfe6e43 chore(openapi): regenerate the published spec for the
semantic delete 409s (#45262)
add ffee0a843f1 feat(db_engine_specs): enable MEDIAN/STDDEV_SAMP/VAR_SAMP
for Databricks and Snowflake (#44627)
add 0ce9b6ca46c chore(deps): bump urllib3 to 2.8.0 and werkzeug to 3.1.9
(#45255)
add 5cf0b8c6046 test(semantic views): finish selected refreshes before
test teardown (#45282)
add bbc61ac3a78 chore(deps-dev): bump the swc group across 1 directory
with 2 updates (#45290)
add b411454508c chore(deps): bump the babel group across 2 directories
with 5 updates (#45289)
add 37c33788f69 fix(dashboard): bind native filter datasources by type so
semantic views load (#45069)
add fa0999745fb fix(explore): raise a validation error instead of
asserting when an IN filter has no value (SC-124271) (#44986)
add b9709c39576 chore(deps): bump js-yaml from 5.4.2 to 5.4.3 in /docs
(#45291)
add 367b6f5cbf5 chore(deps): bump maplibre-gl from 6.12.0 to 6.13.0 in
/superset-frontend (#45295)
add c969ac425d6 chore(deps): bump actions/download-artifact from 8.0.1 to
8.0.2 (#45284)
add 54d2421ded3 test(bigquery): verify string-literal escaping against a
real GoogleSQL engine (#44546)
add 9e4adb98717 fix(alerts): handle report filter loading states and
errors (#45142)
add 96e22f4eaba fix(contour): preserve undefined unused fields (#44967)
add 9659a13ae8e docs(config): document AFTER_ASSET_CREATE hook (#44126)
add 564b85aa395 build: group Dependabot PRs for GHA refs from `actions`
org (#45296)
add 8db419ce1ab feat(build): migrate custom lint rule to Oxlint (#44201)
add 6a7cfd5ba12 chore(deps): bump actions/setup-node from 7.0.0 to 7.1.0
(#45285)
add 9bd8cd9f33f chore(deps): bump actions/upload-artifact from 7.0.1 to
7.0.2 (#45286)
add 1aeb8642447 chore(deps-dev): bump baseline-browser-mapping from
2.11.26 to 2.11.27 in /superset-frontend (#45299)
add 0dc57e9a9de fix(semantic-views): stop debounced refreshes after the
modal unmounts (#45281)
add e6b1d766183 feat(auth): add self-service forgot-password recovery for
AUTH_DB (sip-201) (#45277)
add 4c546edbd8f perf(security): resolve user_view_menu_names via role
semi-join (#45303)
add f7ad2aba62f chore(deps): bump the codeql group across 1 directory with
3 updates (#45326)
add f808b982a59 fix(charts): reject query_context missing
datasource/queries on save (#44549)
add 72bfc4134f2 fix(semantic-layer): classify provider errors in value
suggestions (#45147)
add fed77adfee5 fix(mcp): preserve embedded guest identity during
permalink lookup (#45346)
add e0e728ef764 chore(deps): bump geolib from 3.3.14 to 4.0.0 in
/superset-frontend (#45328)
add 6132c019432 fix(extensions-cli): fix scaffold template dep mismatches
vs. host (#45244)
add d548e8dce9c fix(filters): use manual semantic-view range bounds
(#44999)
add 4b9856bfefd fix(rls): apply Public role RLS rules to anonymous users
(#45333)
add 3841bc9e0ec chore(deps): bump immer from 11.1.18 to 11.1.21 in
/superset-frontend (#45330)
add 81e558a6a80 chore(deps-dev): bump sqlalchemy-bigquery from 1.17.2 to
1.17.3 (#45319)
add d176d68451b chore(deps-dev): bump elasticsearch-dbapi from 0.2.13 to
0.3.0 (#45318)
add 13bd0cd9326 fix(sql): keep stop and finish outcomes consistent when
they race (#45283)
add f33b030d710 fix(explore): correct HOLIDAY tooltip wording (#45276)
add d9bc4ea8580 fix(plugin-chart-pivot-table): sticky-position row labels
and corner header cells (#43917)
add 2020fea4acb feat(storybook/build): generate Playwright-runnable tests
from Storybook stories (#44964)
add e835d670d2e chore(deps-dev): bump prophet from 1.4.0 to 1.5.0 (#45324)
add 1aaabd8e435 fix(websocket): support Sentinel and full TLS options for
Redis/Valkey (#45355)
add 3d82e3dfbcb chore(deps): bump cachetools from 7.2.0 to 7.2.1 (#45323)
add 5c5061b1c8e chore(deps-dev): bump clickhouse-connect from 1.9.0 to
1.10.0 (#45321)
add a23199762c5 fix(mypy): make UUIDMixin.uuid's nullable type resolve
deterministically (#44817)
add e734cd00d43 chore(deps): bump react-syntax-highlighter from 16.1.1 to
16.1.2 in /superset-frontend (#45370)
add f2b71475ce2 chore(deps): bump @googleapis/sheets from 18.1.0 to 18.1.1
in /superset-frontend (#45369)
add 3dfb42a2937 chore(deps): bump astral-sh/setup-uv from 10.2.0 to 10.3.0
(#45368)
add 576cc9e0952 chore(deps): bump helm/chart-testing-action from 2.8.0 to
2.9.0 (#45367)
add 50d34f8aaa2 chore(deps-dev): bump syntaqlite from 0.9.0 to 0.12.1
(#45320)
add ad63b3eb7ab fix(impala): stop SQL Lab queries through the live cursor
only (#45232)
add 86e186b5f60 fix(tests): stop the unit suite from retaining one
Superset app per module (#45364)
add 19bb09461dc fix(examples): rewrite chart datasource references on
import (#45378)
add 9c7ca9ba107 fix(docs): improve Kapa AI widget dark mode compatibility
(#39102)
add 61d27b4aebe fix(sql): handle trailing comments after empty statements
(#45274)
add 58b1de82815 fix(datasets): don't call physical datasets "virtual" in
sync columns toast (#45376)
add 853f207c668 fix(dashboard): apply temporal x-axis cross-filters to
target charts (#45310)
add c650cbd3c61 fix(import): return 422 instead of 500 for corrupt ZIP
uploads (#45380)
add a9a7a35c4b4 fix(dashboard): show an access error for charts the viewer
cannot read (#45398)
add 44eac5b37b2 fix(soft-delete): align dashboard card dialogs and archive
permission hints (#45302)
add 21fad62645a fix(semantic-layer): resolve grain variants
deterministically (#44454)
add a13af92ff34 fix(semantic-layer): return 400 for mapper validation
refusals (#45292)
add a5d29a9d27d test(e2e): add a stub semantic-layer provider for
Playwright (#45103)
add 84be38cfc90 chore(deps): update pygithub requirement from >=2.1.1 to
>=2.10.0 (#45413)
add 31ee5719f77 fix(semantic layers): reject unknown compatibility
selections (#45359)
add e336cd04c3c fix(mcp): keep refusal and rejection categories in
get_chart_data (#45360)
add 5e1962e9a1d test(mcp): correct Dublin fold timestamp expectations
(#45358)
add ae71281c519 fix(dashboard): resolve to a fixed point when un-clipping
scrollable chart content (#44102)
add 4569608fc44 fix(pivot-table): keep MIN/MAX of non-numeric columns off
the additive fast-path (#45408)
add dfd13baab0e fix(versioning): don't record dataset column and metric
extra rewrites as edits (#45349)
add 4f49d24151d test(i18n): run the babel_update.sh msgcat tests on CI
(#45247)
add e837c37bc29 fix(semantic-layer): raise typed rejections from the E2E
stub provider (#45401)
add 4ccd337b932 chore(deps-dev): bump oracledb from 4.0.2 to 26.0.0
(#44443)
add 297449d68e7 fix(semantic layers): return 400 for ambiguous variants in
compatibility name check (#45426)
add 663d691c311 fix(embedded): apply the chart-data guest redaction to
samples and the legacy query endpoint (#45273)
add acdd2d27667 chore(deps-dev): bump oxlint-tsgolint in /docs (#45450)
add b8a4a5e20ad chore(deps): bump the swc group across 2 directories with
1 update (#45449)
add c812be8019f chore(deps): bump EnricoMi/publish-unit-test-result-action
from 2.24.0 to 2.25.0 (#45448)
add 22654af3337 chore(deps): bump express from 5.2.1 to 5.3.0 in
/superset-websocket/utils/client-ws-app (#45447)
add 118acbcde35 chore(deps): bump pydantic from 2.13.5 to 2.14.0 (#45417)
add 56ff8920385 fix(security): don't let dataset editorship substitute for
data access (#45266)
add 99ecfe5801c chore(deps): bump sqlalchemy-utils from 0.42.1 to 0.43.0
(#45416)
add f0cfaff7881 fix(sql): decode async SQLExecutor results from the
results backend (#45348)
add 8e6e91e4dc0 feat(semantic-layers): add the provider execution context
contract (#45251)
add 53f14e7b7b1 fix(semantic-layer): refuse a chart's own filter on a
column the semantic view lacks (#45294)
add 98d5fa50b4c fix(semantic-layer): validate views before creation
(#45287)
add d36febc96ec fix(versioning): don't record save-path defaults as user
changes (#45352)
add 5a1831000a9 fix: add dblink and pg_* state-mutating functions to SQL
denylist (#45089)
add 88e92663b8f fix(semantic-layers): restore mocking compatibility after
implementation became a plain property (#45501)
add 152e1e9de9a fix(dataset): convert timezone-aware values with the
dataset timezone (#45344)
add 25e94d00d37 fix(pivot-table): stop the grand-total corner from
silently picking one metric (#44657)
add d285a1abae8 fix(dashboards): prevent horizontal filter bar from
vanishing on cross-filter (#45050) (#45051)
add 15f55686ea9 fix(dashboard): respect DASHBOARD_AUTO_REFRESH_INTERVALS
configuration in refresh dropdown (#45039)
add 1e18d01d76d feat(mcp): add caller-scoped PNG chart previews (#44558)
add 9c287d989a8 feat(build): migrate to Typescript 6 (#44726)
add 7b23ddea9f6 chore(build): migrate from external `copy-webpack-plugin`
to Webpack-native `output.copy` (#44965)
add 0a17a75f9a8 chore(deps): bump the storybook group across 2 directories
with 4 updates (#45513)
add d5bccecf581 chore(deps): bump chromaui/action from 18.11.0 to 18.12.1
(#45512)
add 77b0fd62ea7 docs: add Plum to In the Wild (#45518)
add 3cf94c87aef chore(deps-dev): bump @types/node from 26.6.4 to 26.6.5 in
/superset-embedded-sdk (#45514)
add 1df897b3bba fix(pivot-table): blank mixed-metric totals in exports and
reports (#45311)
add 38353434467 fix(cache): honor disabled datasource suggestion caches
(#45288)
add ad30c898f86 fix(dashboard): copy a layout that omits the source's
current charts (#45472)
add 3988a771f37 fix(dataset): warn immediately when normalize_columns is
toggled on (#44617)
add 3c42a68d439 test(mcp): refresh native tool inventory for PNG chart
previews (#45511)
add 1811fe5167f fix(dashboard): stop Edit Properties hanging on dashboards
with many charts (#45354)
add 65cfc1ed18c fix(deck.gl): set maplibre-gl 6's worker URL so vector
basemaps load (#45396)
add 973ac9b8efb fix(export): honor CSV_EXPORT encoding in streaming CSV
exports (#45351)
add a708a08cdb0 feat(semantic-layers): declare provider obligations and
add a registration test fixture (#45393)
add 488a3c53b45 fix(soft-delete): show Recently Archived in the menu to
everyone who can open it (#45523)
add 82a7ec91d6e feat(semantic-layers): apply a default chronological order
for time-series queries (#45389)
add fe79ab48e93 fix(tags): make owner-tag creation safe under concurrent
creates (#45498)
add e315ed365e8 test(reports): cover scheduled reports on semantic-view
charts (#45526)
add 036d1dafe2c fix(semantic-layers): report async chart query validation
errors as failures (#45525)
add d73c9b93398 fix(alerts): don't flag "Every minute" schedule as invalid
in cron picker (#45468)
add 63c6d273616 chore(plugin-chart-ag-grid-table): remove unused
useTableTheme hook (#45469)
add aa3df7caf77 fix(explore): hide empty Actual range for comparison
header (#44996)
add f0b43df751a fix(dashboard): remap native filter scopes when
duplicating charts on save as (#45038)
add b1fe28b5791 fix(ci): narrow nullable filters in metric_filter_test and
resync oxfmt formatting (#45239)
add 875dcbb1bb0 feat(action-log): open JSON payloads in a tree modal
(#45337)
add c01e784fc64 fix(ci): restore the full-repo mypy check on two
semantic-layer and sqla test files (#45315)
add 293f159deaf fix(sqllab): keep the results grid header opaque when rows
scroll under it (#45480)
add 25186586572 fix(chart): keep the chart on screen during a dashboard
auto-refresh (#45234)
add fcff5931594 fix(sqllab): ignore a Run/Stop click whose gesture started
on the other action (#45336)
add 87dc979e986 fix(table-chart): show the record count in the search box
(#45497)
add ec40973ae81 fix(semantic-layer): reject SQL extras in direct mapper
calls (#45534)
add ddbf152ac92 fix(dashboard): keep archived charts' membership when
restoring a version (#45482)
add 208438b18b6 test(tasks): cover the embedded-guest error text on task
show and list (#45533)
add 2d0203e3699 fix(plugin-chart-echarts): merge a series object in
ECharts Options into every series (#45421)
add 77ded19ba5c fix(sqllab): commit the recomputed row limit before async
dispatch (#45178)
add a1fd5b1f81e fix(sqllab): resolve query datasources when opening SQL
Lab (#45374)
add c06005afb1e fix(dashboard): load the saved description into dashboard
info (#45298)
add 2978799419e fix(models): keep NULL rows in !=, NOT LIKE and NOT ILIKE
filters (#45317)
add 33687492472 test(explore): cover chart header actions, chart pills,
and view container wiring (#44848)
add 304f5a38b58 test(playwright): add Featured Charts render smoke and
Explore image download (#44844)
add 6842e2f76b3 test(explore): cover cartodiagram and primitive explore
controls (#44850)
add c807ee7f909 fix(native-filters): keep pending removal timers when
another filter is removed (#44837)
add 7ff5709882f fix(candlestick): give OHLC labels their own translatable
strings (#45458)
add 0f376ba9f97 fix(semantic-layers): show per-view errors when adding
semantic views (#45524)
add 190873e9832 fix(version-history): preview banner, history panel
layout, scope labels and current-version marking (#45471)
add 6dc0641c91a fix(reports): keep the first column header in XLSX exports
of semantic-view tables (#45527)
add 4e7e2b7390d fix(tests): narrow Optional StatementResult.data in async
result tests (#45517)
add 836c0f3f95d fix(table): reset default margins on the pagination list
(#45365)
add 8d3ade7e0a8 test(trino): close db_engine_spec test gaps (#45361)
add 3d902d9eb3a chore(deps): bump the security group across 2 directories
with 2 updates (#45542)
add 527021d5819 chore(deps): bump react-virtualized-auto-sizer from 1.0.26
to 2.0.3 in /superset-frontend (#45197)
add c11f993af37 fix(auth): close forced-password-change redirect loop and
sweep stale legacy password perms from all roles (#44857)
add 7d0e1c939ee fix(frontend): retry a failed lazy import before surfacing
ChunkLoadError (#43215)
add abc1b50f65d fix(mcp): clean up nits from PNG chart preview review
(#45509)
add b6ef0bf48d8 chore(tags): stop auto-generating
type:/editor:/favorited_by: tags (#43471)
add cb04282f501 chore(deps): bump swagger-ui-react from 5.33.1 to 5.33.2
in /docs (#45567)
add f1d8161777c chore(deps): bump chromaui/action from 18.12.1 to 18.12.2
(#45564)
add f9aec7515b4 chore(deps): bump actions/setup-java from 6.0.1 to 6.1.0
in the gh-actions group (#45563)
add 75be8f981a6 feat(improvements): let deployments withhold assets from
list queries and commands (#45451)
add f9a0d8af493 chore(deps-dev): bump oxlint from 1.87.0 to 1.88.0 in
/docs (#45566)
add fa8a035fcf6 fix(mcp): stop rejecting titles that contain "data:" in
prose (#45485)
add e8824351f19 fix(mcp): isolate dashboard copies and clarify chart
evidence (#45504)
add cdc9430597c fix(db_engine_specs): patch oceanbase_py's dialect for
SQLAlchemy 2.0 (#45507)
add 00688c7871b chore(deps-dev): update pinotdb requirement from
<10.0.0,>=8.0.0 to >=9.2.2,<10.0.0 (#45414)
add 73737afbfbb chore(deps): bump pyarrow from 25.0.1 to 26.0.0 (#45412)
add 067d536e216 chore(deps-dev): bump fastmcp from 3.4.7 to 4.1.0 (#45415)
add b7bfbd365e6 chore(deps-dev): bump oxfmt in /docs (#45565)
add 2b1046959d2 chore: bump pillow, certifi and geopy pins, tidy two small
code nits (#45578)
add 54aaf3ad7d7 fix(mcp): surface missing query_context warning in
get_chart_data result (#45250)
add fdb22260e25 fix(number-format): make the adaptive formatters follow
D3_FORMAT (#45241)
add c3279f01921 ci: skip jobs that cannot complete on forks and private
mirrors (#45035)
add 385844237e6 fix(explore): preserve zero thresholds in contour controls
(#44966)
add 3de22376c5c fix(dashboards): update last modified timestamp when
adding chart to dashboard (#44305) (#44358)
add 77ebc0e55f3 fix(chart): keep dataset_uuid in exports when the dataset
is deleted (#44347)
add 452dea81f23 chore(deps-dev): bump @playwright/test from 1.62.1 to
1.64.0 in /superset-frontend (#45371)
add bc83e3e6fdb fix(mcp): propose a matching value when a dashboard filter
value is rejected (#45547)
add b129d6a4c12 fix(semantic-layer): narrow Filter|OrFilter unions in test
helpers for mypy (#45268)
add ff214bdfb14 fix(sqllab): clip multi-line result values to their row
(#45487)
add 62d22e0697c fix(semantic-layer): type the E2E stub filters for the
full filter union (#45419)
add 5eaad449f5c fix(import): return 422 instead of 500 for unsafe ZIP
import bundles (#45440)
add 676af61b1c9 fix(jinja): keep filters with 0 or false values in
get_filters and fi… (#45437)
add 47358be13c1 fix(import): return 422 instead of 500 for non-UTF-8
members in import bundles (#45424)
add b4f8ca407a3 chore(deps-dev): bump vite from 8.3.1 to 8.3.5 in
/superset-websocket in the security group across 1 directory (#45590)
add 7ff7f9048bf fix(semantic-layer): handle absent fetch-values predicate
(#45539)
add 9ce458594fe fix(connection): encode next in the unauthorized login
redirect (#45477)
add 2304d1b80f2 fix(datasets): re-check statement count after query
mutation (#45453)
add 4bfd874c4cb fix(postprocessing): handle Decimal comparisons with zero
baselines (#45467)
add 4e5d0ef8f13 fix(models): keep NULL rows in NOT IN filters without a
NULL value (#45305)
add a0ebed9ff1a docs(auth): add Keycloak PKCE, logout and group-mapping
example (#38092)
add b3471a1369c fix(a11y): WCAG 1.4.1 — add non-color visual cues to
status indicators (#39233)
add 3297c39d94c docs(installation): describe the default image instead of
lean in Docker Compose responsibilities (#45582)
add 47300cf4c2f fix(mcp): pass time_grain as a string and keep annotation
DB error classification (#45484)
add 030f36a00c3 docs(extensions): move Semantic Layers into its own
extension point page (#45630)
add 578d43fef9b fix(listview): prevent table column layout shift on
content change (#37299)
add 97a536f37d9 feat(echarts): allow configuring minInterval on bar and
line chart axes (#43515)
add dfd84bf3d9e fix(mcp): only serve the browser hello page on the MCP
endpoint (#45391)
add 7fceb05c1ce docs(docker): drop redundant packages from custom image
example, bump version numbers (#44240)
add aabddf5b3f5 fix(semantic-layers): cap and time-bound bulk semantic
view creation (#45532)
add 2c275ed0a5b fix(echarts): restore series color markers in sanitized
tooltips (#45505)
add 98fac9104fb fix(datasets): validate metric d3format (#45633)
add 2d85883c194 test(sqla): add failing guard for literal Custom SQL
column in GROUP BY
add e9317d71a4f fix(sqla): omit constant expressions from GROUP BY
add 632ffea1f42 fix(sqla): keep GROUP BY when every key is constant; treat
TRUE/FALSE as identifiers on SQLite
add 0e34933ce5d fix(sqla): treat negated numeric literals as constants in
GROUP BY
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 (ef2a16b0748)
\
N -- N -- N refs/heads/fix-literal-adhoc-column-group-by
(0e34933ce5d)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 5 +-
.github/workflows/bashlib.sh | 13 +
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/chromatic.yml | 2 +-
.github/workflows/codeql-analysis.yml | 23 +-
.github/workflows/docker.yml | 27 +-
.github/workflows/embedded-sdk-release.yml | 2 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/frontend-bundle-size-nightly.yml | 3 +
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 16 +-
.github/workflows/license-check.yml | 2 +-
.github/workflows/pre-commit.yml | 16 +-
.github/workflows/python-nightly-canary.yml | 9 +
.github/workflows/release.yml | 2 +-
.../scripts/check-code-scanning-available.sh | 64 +
.../scripts/check-code-scanning-available.test.sh | 118 +
.github/workflows/showtime-cleanup.yml | 3 +
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 9 +-
.github/workflows/superset-e2e.yml | 22 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 24 +-
.github/workflows/superset-helm-lint-test.yml | 2 +-
.../workflows/superset-python-integrationtest.yml | 2 +-
.../workflows/superset-python-unittest-report.yml | 6 +-
.github/workflows/superset-python-unittest.yml | 17 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 13 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/tag-release.yml | 4 +-
.github/workflows/tech-debt.yml | 2 +-
.github/workflows/testcontainers.yml | 10 +-
.gitignore | 2 +
.pre-commit-config.yaml | 39 +-
RELEASING/requirements.txt | 2 +-
RESOURCES/INTHEWILD.yaml | 5 +
UPDATING.md | 314 +-
docs/admin_docs/configuration/cache.mdx | 18 +-
.../configuration/configuring-superset.mdx | 81 +
docs/admin_docs/configuration/mcp-server.mdx | 82 +-
docs/admin_docs/installation/docker-builds.mdx | 43 +-
.../installation/installation-methods.mdx | 4 +-
docs/admin_docs/security/oauth.mdx | 318 +
docs/admin_docs/security/security.mdx | 63 +
.../extensions/contribution-types.md | 259 +-
docs/developer_docs/extensions/development.md | 37 +
.../semantic-layers.md} | 463 +-
docs/developer_docs/extensions/semantic-filters.md | 79 -
docs/developer_docs/semantic-layer-cache-clear.md | 17 +-
docs/developer_docs/semantic-query-errors.md | 50 +-
docs/developer_docs/sidebars.js | 1 +
.../creating-your-first-dashboard.mdx | 43 +-
docs/docs/using-superset/exploring-data.mdx | 57 +
docs/docs/using-superset/recently-archived.mdx | 4 +
.../using-superset/semantic-layer-connections.mdx | 17 +
.../using-superset/semantic-member-selections.mdx | 12 +-
.../docs/using-superset/using-ai-with-superset.mdx | 20 +
docs/docs/using-superset/version-history.mdx | 8 +-
docs/docusaurus.config.ts | 53 +-
docs/package.json | 16 +-
docs/scripts/generate-database-docs.mjs | 84 +
docs/sidebarTutorials.js | 2 +-
docs/sip/pivot-table-aggregation-parity.md | 112 +
docs/src/components/databases/DatabasePage.tsx | 27 +
docs/src/components/databases/types.ts | 6 +
docs/src/data/databases.json | 35 +-
docs/static/img/logos/plum.svg | Bin 0 -> 4215 bytes
docs/static/resources/openapi.json | 315 +-
docs/yarn.lock | 788 +-
pyproject.toml | 28 +-
requirements/base.in | 8 +-
requirements/base.txt | 24 +-
requirements/development.in | 9 +-
requirements/development.txt | 74 +-
scripts/change_detector.py | 1 +
scripts/eslint.sh | 30 -
superset-core/pyproject.toml | 5 +-
.../src/superset_core/semantic_layers/context.py | 62 +
.../src/superset_core/semantic_layers/layer.py | 45 +-
.../src/superset_core/semantic_layers/testing.py | 61 +
.../src/superset_core/semantic_layers/types.py | 42 +-
.../src/superset_core/semantic_layers/view.py | 33 +-
.../tests/semantic_layers/example_provider.py | 167 +
.../semantic_layers/test_execution_context.py | 71 +
.../tests/semantic_layers/test_registration.py | 153 +
superset-embedded-sdk/package-lock.json | 178 +-
superset-embedded-sdk/package.json | 8 +-
.../src/superset_extensions_cli/cli.py | 7 +-
.../templates/frontend/package.json.j2 | 9 +-
superset-extensions-cli/tests/test_cli_build.py | 4 +-
superset-frontend/.storybook/main.mjs | 10 +-
.../playwright.storybook-ci.config.ts} | 24 +-
superset-frontend/.storybook/setup-stories.test.ts | 156 +
superset-frontend/.storybook/setup-stories.ts | 179 +
.../external.d.ts => .storybook/stories.spec.ts} | 14 +-
.../i18n-strings/index.js} | 116 +-
.../i18n-strings}/no-eager-t-in-config.test.ts | 13 +-
.../i18n-strings}/no-template-vars.test.ts | 12 +-
.../i18n-strings}/package.json | 9 +-
.../index.ts => custom-lint-rules/icons/index.js} | 61 +-
.../icons}/no-fontawesome.test.ts | 13 +-
.../icons}/package.json | 9 +-
.../theme-colors/colors.js} | 7 +-
.../theme-colors/index.js} | 111 +-
.../theme-colors/no-literal-colors.test.ts | 81 +
.../theme-colors}/package.json | 12 +-
superset-frontend/eslint.config.minimal.js | 130 -
superset-frontend/jest.config.js | 3 +-
superset-frontend/oxlint.custom-lint-rules.mts | 121 +
superset-frontend/oxlint.json | 20 +-
superset-frontend/package-lock.json | 31386 ++++++++-----------
superset-frontend/package.json | 80 +-
.../packages/superset-core/package.json | 2 +-
.../packages/superset-core/tsconfig.json | 18 +-
.../src/operators/utils/extractExtraMetrics.ts | 4 +-
.../components/RadioButtonControl.tsx | 9 +-
.../src/utils/getTemporalColumns.ts | 4 +-
.../src/utils/metricColumnFilter.ts | 4 +-
.../superset-ui-chart-controls/tsconfig.json | 18 +-
.../packages/superset-ui-core/package.json | 6 +-
.../src/components/CronPicker/CronPicker.test.tsx | 28 +-
.../src/components/CronPicker/index.tsx | 6 +-
.../DropdownContainer/DropdownContainer.test.tsx | 28 +
.../src/components/DropdownContainer/types.ts | 4 +-
.../src/components/Loading/Loading.stories.tsx | 5 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 2 +-
.../src/components/TableCollection/utils.tsx | 3 +-
.../src/components/Typography/index.tsx | 3 +-
.../src/connection/SupersetClientClass.ts | 4 +-
.../src/number-format/NumberFormatterRegistry.ts | 28 +-
.../factories/createSmartNumberFormatter.ts | 56 +-
.../packages/superset-ui-core/src/utils/tooltip.ts | 31 +
.../test/connection/SupersetClientClass.test.ts | 5 +-
.../number-format/NumberFormatterRegistry.test.ts | 18 +
.../factories/createSmartNumberFormatter.test.ts | 14 +
.../superset-ui-core/test/utils/tooltip.test.ts | 34 +
.../packages/superset-ui-core/tsconfig.json | 18 +-
.../packages/superset-ui-switchboard/tsconfig.json | 18 +-
.../playwright/helpers/api/assertions.ts | 16 +-
.../playwright/helpers/api/dashboard.ts | 28 +
.../playwright/helpers/api/semanticLayer.test.ts | 65 +
.../playwright/helpers/api/semanticLayer.ts | 136 +
.../playwright/helpers/fixtures/testAssets.ts | 25 +-
superset-frontend/playwright/pages/ExplorePage.ts | 23 +-
.../playwright/tests/chart/chart-list.spec.ts | 4 +-
.../tests/dashboard/dashboard-list.spec.ts | 4 +-
.../tests/dashboard/dashboard-test-helpers.ts | 20 +-
.../tests/dashboard/featured-charts-render.spec.ts | 234 +
.../dashboard/version-history-placement.spec.ts | 39 +-
.../playwright/tests/dataset/dataset-list.spec.ts | 4 +-
.../tests/explore/explore-download-image.spec.ts | 65 +
.../semantic-view/semantic-view-dashboard.spec.ts | 204 +
.../tests/version-history/activity-log.spec.ts | 14 +-
.../src/utils/useTableTheme.ts | 42 -
.../plugin-chart-ag-grid-table/tsconfig.json | 18 +-
.../plugins/plugin-chart-calendar/tsconfig.json | 18 +-
.../src/components/OlChartMap.tsx | 18 +-
.../test/components/OlChartMap.test.tsx | 108 +
.../plugin-chart-cartodiagram/tsconfig.json | 18 +-
.../plugin-chart-cartodiagram/types/external.d.ts | 2 +
.../plugins/plugin-chart-chord/tsconfig.json | 18 +-
.../plugins/plugin-chart-country-map/tsconfig.json | 18 +-
.../src/Candlestick/constants.ts | 12 +-
.../src/Candlestick/controlPanel.tsx | 8 +-
.../src/Histogram/transformProps.ts | 8 +-
.../src/Timeseries/EchartsTimeseries.tsx | 4 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 28 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 19 +
.../src/Timeseries/transformProps.ts | 77 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 2 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 30 +
.../plugins/plugin-chart-echarts/src/types.ts | 2 -
.../plugin-chart-echarts/src/utils/forecast.ts | 20 +-
.../src/utils/mergeCustomEChartOptions.test.ts | 67 +
.../src/utils/mergeCustomEChartOptions.ts | 17 +
.../test/Candlestick/controlPanel.test.ts | 10 +
.../test/Candlestick/transformProps.test.ts | 17 +
.../test/Histogram/transformProps.test.ts | 11 +
.../test/MixedTimeseries/transformProps.test.ts | 8 +-
.../test/Rose/buildQuery.test.ts | 12 +-
.../test/Timeseries/Bar/controlPanel.test.ts | 28 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 6 +
.../test/Timeseries/Line/controlPanel.test.ts | 42 +
.../test/Timeseries/helpers.ts | 1 +
.../test/Timeseries/transformProps.test.ts | 142 +-
.../test/utils/forecast.test.ts | 63 +-
.../plugins/plugin-chart-echarts/tsconfig.json | 18 +-
.../plugins/plugin-chart-handlebars/tsconfig.json | 18 +-
.../plugins/plugin-chart-horizon/tsconfig.json | 18 +-
.../plugin-chart-paired-t-test/tsconfig.json | 18 +-
.../tsconfig.json | 18 +-
.../plugins/plugin-chart-partition/tsconfig.json | 18 +-
.../src/PivotTableChart.tsx | 2 +
.../src/plugin/buildQuery.ts | 35 +-
.../src/plugin/controlPanel.tsx | 54 +-
.../src/plugin/resultAggregation.ts | 121 +
.../src/plugin/transformProps.ts | 37 +-
.../src/plugin/utilities.ts | 42 +-
.../src/react-pivottable/Styles.ts | 98 +-
.../src/react-pivottable/TableRenderers.tsx | 106 +-
.../src/react-pivottable/utilities.ts | 739 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 1 +
.../test/PivotTableChart.test.tsx | 22 +
.../test/plugin/buildQuery.test.ts | 21 +
.../test/plugin/transformProps.test.ts | 82 +-
.../test/plugin/utilities.test.ts | 49 +-
.../test/react-pivottable/Styles.test.tsx | 328 +
.../test/react-pivottable/tableRenders.test.tsx | 90 +-
.../test/react-pivottable/utilities.test.ts | 890 +-
.../plugin-chart-pivot-table/test/testData.ts | 68 +
.../plugins/plugin-chart-pivot-table/tsconfig.json | 18 +-
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/MapLibre.tsx | 35 +-
.../test/MapLibre.test.tsx | 69 +-
.../plugin-chart-point-cluster-map/tsconfig.json | 16 +-
.../types/external.d.ts | 2 +
.../plugins/plugin-chart-table/src/Styles.tsx | 4 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 7 +-
.../plugin-chart-table/test/TableChart.test.tsx | 129 +-
.../plugins/plugin-chart-table/tsconfig.json | 18 +-
.../plugins/plugin-chart-word-cloud/tsconfig.json | 18 +-
.../plugins/plugin-chart-world-map/tsconfig.json | 18 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/CategoricalDeckGLContainer.test.tsx | 213 +-
.../src/CategoricalDeckGLContainer.tsx | 73 +-
.../src/DeckGLContainer.test.tsx | 28 +
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 11 +
.../preset-chart-deckgl/src/Multi/Multi.tsx | 25 +-
.../preset-chart-deckgl/src/Multi/MultiV1.test.tsx | 66 +-
.../plugins/preset-chart-deckgl/src/Multi/index.ts | 2 +-
.../src/Multi/transformProps.test.ts | 43 +
.../external.d.ts => src/Multi/transformProps.ts} | 22 +-
.../preset-chart-deckgl/src/factory.test.tsx | 117 +
.../plugins/preset-chart-deckgl/src/factory.tsx | 25 +
.../preset-chart-deckgl/src/layers/Arc/Arc.test.ts | 6 +
.../src/layers/Contour/Contour.test.ts | 56 +
.../src/layers/Contour/Contour.tsx | 2 +-
.../src/layers/Polygon/Polygon.test.tsx | 100 +
.../src/layers/Polygon/Polygon.tsx | 22 +
.../plugins/preset-chart-deckgl/tsconfig.json | 16 +-
.../preset-chart-deckgl/types/external.d.ts | 2 +
.../types/global.d.ts} | 13 +-
superset-frontend/scripts/check-custom-rules.js | 6 +-
.../scripts/internal/oxlint-metrics-uploader.js | 174 +-
.../fixtures/mockSemanticDashboardDatasources.ts | 177 +
superset-frontend/spec/helpers/runStopButton.ts | 55 +
.../spec/scripts/oxlint-metrics-uploader.test.ts | 327 +-
.../src/SqlLab/actions/sqlLab.test.ts | 308 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 68 +-
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 13 +-
.../src/SqlLab/components/ResultSet/index.tsx | 10 +-
.../RunQueryActionButton.test.tsx | 545 +-
.../components/RunQueryActionButton/index.tsx | 37 +-
.../SqlLab/components/SqlEditor/SqlEditor.test.tsx | 17 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 10 +-
.../TableExploreTree/TableExploreTree.test.tsx | 13 +-
.../SqlLab/components/TableExploreTree/index.tsx | 10 +-
.../components/TablePreview/TablePreview.test.tsx | 13 +-
.../src/SqlLab/components/TablePreview/index.tsx | 8 +-
.../src/components/Chart/Chart.test.tsx | 38 +
superset-frontend/src/components/Chart/Chart.tsx | 8 +
.../components/Chart/ChartErrorMessage.test.tsx | 2 +-
.../src/components/Chart/ChartErrorMessage.tsx | 3 +-
.../Chart/ChartRenderer.refresh.test.tsx | 302 +
.../src/components/Chart/ChartRenderer.test.tsx | 19 +
.../src/components/Chart/ChartRenderer.tsx | 90 +-
.../src/components/Chart/chartAction.ts | 34 +
.../src/components/Chart/chartActions.test.ts | 62 +
.../FoldersEditor/FoldersEditor.test.tsx | 17 +-
.../components/Datasource/FoldersEditor/index.tsx | 12 +-
.../DatasourceEditor/DatasourceEditor.tsx | 45 +-
...atasourceEditorNormalizeColumnsWarning.test.tsx | 146 +
.../src/components/Datasource/utils/index.ts | 12 +-
.../src/components/Datasource/utils/utils.test.tsx | 28 +-
.../components/ErrorMessage/ErrorAlert.test.tsx | 41 +
.../src/components/GridTable/GridTable.test.tsx | 46 +-
.../src/components/GridTable/index.tsx | 19 +-
.../src/components/JsonModal/JsonModal.test.tsx | 18 +
.../src/components/JsonModal/utils.ts | 10 +-
.../src/dashboard/actions/hydrate.test.ts | 43 +
superset-frontend/src/dashboard/actions/hydrate.ts | 32 +-
.../components/AnchorLink/AnchorLink.test.tsx | 2 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 137 +-
.../DashboardBuilder/DashboardBuilder.tsx | 155 +-
.../DashboardBuilder/DashboardWrapper.tsx | 2 +-
.../src/dashboard/components/Header/index.tsx | 4 +-
.../PropertiesModal.manyCharts.test.tsx | 107 +
.../dashboard/components/PropertiesModal/index.tsx | 9 +-
.../PropertiesModal/sections/AccessSection.tsx | 2 +-
.../RefreshFrequencySelect.test.tsx | 99 +-
.../RefreshFrequency/RefreshFrequencySelect.tsx | 43 +-
.../src/dashboard/components/SliceAdder.test.tsx | 2 +-
.../src/dashboard/components/SliceAdder.tsx | 8 +-
.../components/gridComponents/Header/Header.tsx | 2 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 4 +-
.../FilterControls.overflow.test.tsx | 269 +
.../FilterBar/FilterControls/FilterControls.tsx | 4 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 73 +
.../FilterBar/FilterControls/FilterValue.tsx | 28 +-
.../ColumnSelect.requestLifetime.test.tsx | 155 +
.../FiltersConfigForm/ColumnSelect.tsx | 38 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 338 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 19 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 3 +-
.../FiltersConfigForm/utils.test.ts | 120 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 48 +-
.../FiltersConfigModal.semanticDefault.test.tsx | 1173 +
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 72 +-
.../hooks/useFilterOperations.test.ts | 145 +-
.../hooks/useItemStateManager.ts | 28 +-
.../nativeFilters/FiltersConfigModal/types.ts | 4 +
.../src/dashboard/containers/DashboardPage.tsx | 5 +-
superset-frontend/src/dashboard/types.ts | 2 +-
.../util/charts/getFormDataWithExtraFilters.ts | 7 +-
.../util/getFormDataWithExtraFilters.test.ts | 49 +
superset-frontend/src/embedded/index.tsx | 5 +-
.../src/explore/actions/saveModalActions.test.ts | 212 +
.../src/explore/actions/saveModalActions.ts | 14 +
.../components/ChartPills.behavior.test.tsx | 158 +
.../DatasourcePanel.real-autosizer.test.tsx | 7 +-
.../DatasourcePanel/DatasourcePanel.test.tsx | 13 +-
.../explore/components/DatasourcePanel/index.tsx | 10 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 289 +
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 28 +-
.../explore/components/ExploreChartPanel/index.tsx | 6 +
.../ExploreViewContainer.test.tsx | 276 +-
.../components/ExploreViewContainer/index.tsx | 6 +-
.../components/LegacyAggregationAlert.test.tsx | 302 +
.../explore/components/LegacyAggregationAlert.tsx | 115 +
.../RunQueryButton/RunQueryButton.test.tsx | 361 +-
.../explore/components/RunQueryButton/index.tsx | 6 +-
.../ColorSchemeControl/ColorSchemeLabel.test.tsx | 14 +
.../ColorSchemeControl/ColorSchemeLabel.tsx | 3 +
.../controls/ComparisonRangeLabel.test.tsx | 38 +-
.../components/controls/ComparisonRangeLabel.tsx | 24 +-
.../ConditionalFormattingControl.test.tsx | 112 +-
.../ConditionalFormattingControl.tsx | 12 +-
.../ContourControl/ContourControl.test.tsx | 128 +
.../controls/ContourControl/ContourOption.tsx | 8 +-
.../ContourPopoverControl-unused-fields.test.tsx | 60 +
.../ContourControl/ContourPopoverControl.tsx | 21 +-
.../controls/CustomListItem/index.test.tsx | 48 +
.../DatasourceControl/DatasourceControl.test.tsx | 2 +-
.../components/DateFunctionTooltip.tsx | 2 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 69 +-
.../index.tsx | 38 +-
.../controls/FixedOrMetricControl/index.tsx | 2 +-
.../components/controls/JSEditorControl.test.tsx | 9 +-
.../components/controls/JSEditorControl.tsx | 10 +-
.../LayerConfigsControl.test.tsx | 271 +
.../MapViewControl/MapViewControl.test.tsx | 134 +
.../MapViewControl/MapViewPopoverContent.test.tsx | 78 +
.../components/controls/SliderControl.test.tsx | 71 +
.../components/controls/SwitchControl.test.tsx | 57 +
.../controls/TimeRangeControl/index.test.tsx | 55 +
.../controls/VerticalRadioControl.test.tsx | 83 +
.../controls/ViewQueryModalFooter.test.tsx | 142 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 24 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 195 +-
.../ZoomConfigControl/ZoomConfigsChart.test.tsx | 178 +
superset-frontend/src/explore/constants.ts | 10 +
.../exploreUtils/legacyAggregationTag.test.ts | 137 +
.../explore/exploreUtils/legacyAggregationTag.ts | 93 +
superset-frontend/src/explore/types.ts | 2 +
.../src/features/alerts/AlertReportModal.test.tsx | 1128 +
.../src/features/alerts/AlertReportModal.tsx | 338 +-
.../alerts/components/AlertStatusIcon.test.tsx | 14 +
.../features/alerts/components/AlertStatusIcon.tsx | 1 +
.../src/features/charts/ChartCard.test.tsx | 32 +
.../src/features/charts/ChartCard.tsx | 10 +-
.../src/features/dashboards/DashboardCard.test.tsx | 47 +-
.../src/features/dashboards/DashboardCard.tsx | 14 +-
.../src/features/home/DashboardTable.test.tsx | 58 +-
.../src/features/home/DashboardTable.tsx | 31 +-
.../src/features/home/RightMenu.test.tsx | 76 +
superset-frontend/src/features/home/RightMenu.tsx | 16 +
.../semanticViews/AddSemanticViewModal.test.tsx | 422 +-
.../semanticViews/AddSemanticViewModal.tsx | 142 +-
.../src/features/semanticViews/creationResult.ts | 90 +
superset-frontend/src/features/tags/tags.ts | 2 +-
.../src/features/versionHistory/ActionRow.tsx | 5 +-
.../versionHistory/CurrentVersionSection.tsx | 12 +-
.../DashboardVersionHistory.test.tsx | 4 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 27 +
.../features/versionHistory/RelatedUpdateRow.tsx | 5 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 88 +-
.../src/features/versionHistory/SaveGroupItem.tsx | 66 +-
.../versionHistory/VersionHistoryPanel.test.tsx | 139 +-
.../versionHistory/VersionHistoryPanel.tsx | 54 +-
.../src/features/versionHistory/display.test.ts | 75 +
.../src/features/versionHistory/display.ts | 61 +-
.../versionHistory/useVersionActivity.test.ts | 4 +-
.../filters/components/Range/RangeChart.test.tsx | 115 +
.../components/Range/RangeFilterPlugin.test.tsx | 475 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 195 +-
.../filters/components/Range/buildQuery.test.ts | 50 +
.../src/filters/components/Range/buildQuery.ts | 4 +
.../src/filters/components/Range/index.ts | 2 +
.../filters/components/Range/isSemanticRange.ts} | 22 +-
.../src/filters/components/Range/transformProps.ts | 2 +-
.../src/hooks/apiResources/dashboards.test.ts | 48 +
.../src/hooks/apiResources/dashboards.ts | 1 +
superset-frontend/src/hooks/useRunStopButton.ts | 181 +
.../src/pages/ActionLog/ActionLog.test.tsx | 76 +
superset-frontend/src/pages/ActionLog/index.tsx | 67 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 27 +-
superset-frontend/src/pages/ChartList/index.tsx | 19 +-
.../DashboardList/DashboardList.cardview.test.tsx | 77 +-
.../DashboardList.permissions.test.tsx | 34 +-
.../src/pages/DashboardList/index.tsx | 34 +-
.../DatasetList/DatasetList.permissions.test.tsx | 30 +
superset-frontend/src/pages/DatasetList/index.tsx | 28 +-
.../pages/ForgotPassword/ForgotPassword.test.tsx | 157 +
.../src/pages/ForgotPassword/index.tsx | 168 +
superset-frontend/src/pages/Login/Login.test.tsx | 39 +
superset-frontend/src/pages/Login/index.tsx | 39 +-
.../test-runner.ts => src/pages/Login/styles.ts} | 40 +-
.../src/pages/ResetPassword/ResetPassword.test.tsx | 301 +
.../src/pages/ResetPassword/index.tsx | 285 +
superset-frontend/src/types/Dashboard.ts | 1 +
superset-frontend/src/types/bootstrapTypes.ts | 1 +
superset-frontend/src/utils/lazyWithRetry.test.tsx | 140 +
superset-frontend/src/utils/lazyWithRetry.ts | 135 +
.../src/utils/semanticViewStructure.test.ts | 50 +
.../src/utils/semanticViewStructure.ts | 2 +-
superset-frontend/src/views/routePaths.ts | 2 +
superset-frontend/src/views/routes.test.tsx | 10 +
superset-frontend/src/views/routes.tsx | 100 +-
superset-frontend/tsconfig.json | 20 +-
superset-frontend/webpack.config.js | 36 +-
superset-websocket/README.md | 25 +
superset-websocket/config.example.json | 10 +-
superset-websocket/package-lock.json | 550 +-
superset-websocket/package.json | 8 +-
superset-websocket/spec/config.test.ts | 42 +
superset-websocket/spec/index.test.ts | 161 +-
superset-websocket/src/config.ts | 75 +
superset-websocket/src/index.ts | 93 +-
.../utils/client-ws-app/package-lock.json | 147 +-
.../utils/client-ws-app/package.json | 2 +-
superset/app.py | 36 +-
superset/charts/api.py | 7 +-
superset/charts/client_processing.py | 302 +-
superset/charts/data/api.py | 48 +-
superset/charts/data/dashboard_filter_context.py | 22 +
superset/charts/filters.py | 8 +
superset/charts/schemas.py | 4 +-
superset/cli/update.py | 17 -
superset/commands/chart/create.py | 4 +
superset/commands/chart/data/get_data_command.py | 37 +-
superset/commands/chart/exceptions.py | 4 +
superset/commands/chart/export.py | 34 +-
superset/commands/chart/update.py | 19 +
superset/commands/chart/utils.py | 39 +
superset/commands/dashboard/export.py | 51 +-
superset/commands/dataset/create.py | 69 +-
superset/commands/dataset/duplicate.py | 48 +-
superset/commands/dataset/exceptions.py | 46 +
superset/commands/dataset/importers/v1/utils.py | 194 +-
superset/commands/dataset/update.py | 127 +-
superset/commands/export/assets.py | 75 +-
superset/commands/export/models.py | 18 +-
superset/commands/importers/v1/examples.py | 8 +-
superset/commands/importers/v1/utils.py | 73 +-
superset/commands/report/base.py | 73 +
superset/commands/security/exceptions.py | 15 +
superset/commands/security/password_recovery.py | 315 +
superset/commands/semantic_layer/create.py | 55 +-
superset/commands/semantic_layer/utils.py | 2 +-
superset/commands/sql_lab/execute.py | 12 +
superset/commands/streaming_export/base.py | 34 +-
superset/common/db_query_status.py | 6 +
superset/common/form_data_query_context.py | 30 +
superset/common/query_context_factory.py | 20 +-
superset/common/query_context_processor.py | 26 +-
superset/common/query_object_factory.py | 31 +-
superset/common/tags.py | 496 -
superset/common/utils/time_range_utils.py | 32 +-
superset/config.py | 86 +
superset/connectors/sqla/utils.py | 49 +-
superset/constants.py | 1 +
superset/daos/dashboard.py | 158 +-
superset/daos/key_value.py | 29 +-
superset/daos/query.py | 26 +-
superset/dashboards/api.py | 11 +-
superset/dashboards/filters.py | 7 +
superset/dashboards/schemas.py | 3 +
superset/databases/api.py | 7 +-
superset/datasets/api.py | 7 +-
superset/datasets/schemas.py | 17 +-
superset/datasource/api.py | 165 +-
superset/db_engine_specs/README.md | 2 +
superset/db_engine_specs/base.py | 3 +
superset/db_engine_specs/databricks.py | 19 +
superset/db_engine_specs/impala.py | 48 +-
superset/db_engine_specs/lib.py | 11 +
superset/db_engine_specs/oceanbase.py | 86 +
superset/db_engine_specs/snowflake.py | 18 +-
superset/db_engine_specs/trino.py | 35 +-
superset/errors.py | 1 +
superset/exceptions.py | 27 +
superset/extensions/metadb.py | 3 +-
superset/importexport/api.py | 7 +-
superset/initialization/__init__.py | 29 +-
superset/jinja_context.py | 21 +-
superset/key_value/types.py | 7 +
superset/mcp_service/README.md | 41 +
superset/mcp_service/app.py | 4 +-
superset/mcp_service/chart/chart_helpers.py | 30 +
superset/mcp_service/chart/chart_utils.py | 16 +-
superset/mcp_service/chart/compile.py | 176 +-
.../chart/prompts/create_chart_guided.py | 4 +-
.../mcp_service/chart/resources/chart_configs.py | 14 +-
superset/mcp_service/chart/schemas.py | 133 +-
superset/mcp_service/chart/tool/get_chart_data.py | 183 +-
.../mcp_service/chart/tool/get_chart_preview.py | 145 +-
superset/mcp_service/constants.py | 1 +
superset/mcp_service/dashboard/layout_placement.py | 21 +-
superset/mcp_service/dashboard/permalink.py | 6 +-
superset/mcp_service/dashboard/schemas.py | 139 +-
.../dashboard/tool/apply_dashboard_filters.py | 34 +-
.../dashboard/tool/duplicate_dashboard.py | 14 +-
.../dashboard/tool/get_dashboard_data.py | 96 +-
superset/mcp_service/dashboard_scope_sql.py | 25 +-
superset/mcp_service/database/schemas.py | 8 +-
superset/mcp_service/dataset/schemas.py | 30 +-
.../dataset/tool/update_dataset_metric.py | 2 +-
superset/mcp_service/jwt_verifier.py | 28 +-
superset/mcp_service/mcp_config.py | 3 +
superset/mcp_service/middleware.py | 54 +
superset/mcp_service/report/schemas.py | 4 +
superset/mcp_service/tag/tool/get_tag_info.py | 6 +-
superset/mcp_service/tag/tool/list_tags.py | 6 +-
superset/mcp_service/utils/response_size_utils.py | 4 +
superset/mcp_service/utils/sanitization.py | 114 +-
superset/mcp_service/utils/schema_utils.py | 19 +
superset/mcp_service/utils/validation.py | 89 +-
...141b8ada7731_tag_pivot_tables_with_restored_.py | 334 +
...ep_legacy_password_view_perms_from_all_roles.py | 120 +
superset/models/core.py | 5 +-
superset/models/dashboard.py | 13 +
superset/models/helpers.py | 210 +-
superset/models/slice.py | 23 +-
superset/queries/api.py | 15 +-
superset/queries/saved_queries/api.py | 7 +-
superset/reports/api.py | 15 +-
superset/reports/filters.py | 37 +
superset/result_set.py | 5 +
superset/security/api.py | 214 +-
superset/security/manager.py | 108 +-
superset/security/password_change.py | 110 +-
superset/security/password_recovery.py | 316 +
superset/semantic_layers/api.py | 71 +-
superset/semantic_layers/cache_host.py | 19 +-
superset/semantic_layers/cache_policy.py | 14 +-
superset/semantic_layers/cache_repository.py | 14 +-
superset/semantic_layers/cache_transform.py | 17 +-
superset/semantic_layers/dimension_resolution.py | 117 +
superset/semantic_layers/exceptions.py | 11 +-
superset/semantic_layers/execution.py | 286 +
superset/semantic_layers/mapper.py | 341 +-
superset/semantic_layers/models.py | 241 +-
superset/semantic_layers/ordering.py | 59 +
superset/sql/execution/celery_task.py | 541 +-
superset/sql/execution/executor.py | 252 +-
superset/sql/execution/serialization.py | 130 +
superset/sql/execution/utils.py | 260 +
superset/sql/parse.py | 54 +-
superset/sql_lab.py | 366 +-
superset/sqllab/api.py | 4 +-
superset/subjects/utils.py | 19 +-
superset/tags/core.py | 98 +-
superset/tags/models.py | 311 +-
superset/tasks/async_queries.py | 34 +-
superset/tasks/schemas.py | 9 +
superset/themes/api.py | 7 +-
superset/translations/ar/LC_MESSAGES/messages.po | 374 +-
superset/translations/ca/LC_MESSAGES/messages.po | 348 +-
superset/translations/cs/LC_MESSAGES/messages.po | 356 +-
superset/translations/de/LC_MESSAGES/messages.po | 348 +-
superset/translations/en/LC_MESSAGES/messages.po | 330 +-
superset/translations/es/LC_MESSAGES/messages.po | 348 +-
superset/translations/fa/LC_MESSAGES/messages.po | 342 +-
superset/translations/fi/LC_MESSAGES/messages.po | 364 +-
superset/translations/fr/LC_MESSAGES/messages.po | 350 +-
superset/translations/it/LC_MESSAGES/messages.po | 370 +-
superset/translations/ja/LC_MESSAGES/messages.po | 344 +-
superset/translations/ko/LC_MESSAGES/messages.po | 357 +-
superset/translations/lv/LC_MESSAGES/messages.po | 356 +-
superset/translations/messages.pot | 335 +-
superset/translations/mi/LC_MESSAGES/messages.po | 348 +-
superset/translations/nl/LC_MESSAGES/messages.po | 342 +-
superset/translations/pl/LC_MESSAGES/messages.po | 345 +-
superset/translations/pt/LC_MESSAGES/messages.po | 370 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 342 +-
superset/translations/ro/LC_MESSAGES/messages.po | 359 +-
superset/translations/ru/LC_MESSAGES/messages.po | 357 +-
superset/translations/sk/LC_MESSAGES/messages.po | 356 +-
superset/translations/sl/LC_MESSAGES/messages.po | 364 +-
superset/translations/sr/LC_MESSAGES/messages.po | 378 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 378 +-
superset/translations/ta/LC_MESSAGES/messages.po | 348 +-
superset/translations/th/LC_MESSAGES/messages.po | 356 +-
superset/translations/tr/LC_MESSAGES/messages.po | 343 +-
superset/translations/uk/LC_MESSAGES/messages.po | 364 +-
superset/translations/zh/LC_MESSAGES/messages.po | 334 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 334 +-
superset/utils/core.py | 11 +-
superset/utils/date_parser.py | 7 +-
superset/utils/error_sanitization.py | 38 +
superset/utils/excel.py | 7 +-
superset/utils/filters.py | 111 +-
superset/utils/number_format.py | 94 +
superset/utils/pandas_postprocessing/compare.py | 14 +-
superset/utils/schema.py | 60 +
superset/utils/screenshot_utils.py | 34 +-
superset/utils/webdriver.py | 4 +-
superset/versioning/changes/shadow_queries.py | 9 +-
superset/versioning/diff.py | 124 +-
superset/versioning/restore.py | 41 +-
superset/views/api.py | 5 +
superset/views/archived_assets.py | 18 +-
superset/views/auth.py | 22 +-
superset/views/base.py | 6 +
superset/views/datasource/views.py | 80 +-
.../src/superset_e2e_semantic_stub/__init__.py | 294 +
.../semantic_stub/dist/manifest.json | 10 +
tests/integration_tests/charts/api_tests.py | 8 +-
tests/integration_tests/dashboards/api_tests.py | 119 +-
.../dashboards/version_restore_tests.py | 358 +
tests/integration_tests/datasets/api_tests.py | 45 +
tests/integration_tests/datasource/api_tests.py | 237 +-
tests/integration_tests/queries/api_tests.py | 29 +-
.../security/row_level_security_tests.py | 69 +
tests/integration_tests/security_tests.py | 121 +-
tests/integration_tests/sqllab_tests.py | 29 +-
.../superset_test_config_semantic.py | 35 +-
tests/integration_tests/tagging_tests.py | 294 -
tests/integration_tests/tags/dao_tests.py | 94 +-
tests/integration_tests/tags/race_tests.py | 94 +
tests/integration_tests/tasks/api_tests.py | 78 +-
.../mypy_fixtures/__init__.py | 13 +-
tests/mypy_fixtures/uuid_mixin_nullable.py | 44 +
.../db_engine_specs/_bigquery_container.py | 79 +
.../db_engine_specs/test_bigquery.py | 183 +
tests/testcontainers/db_engine_specs/test_mysql.py | 113 +
.../db_engine_specs/test_oceanbase.py | 94 +-
.../db_engine_specs/test_postgres.py | 690 +
.../charts/commands/data/test_get_data_command.py | 63 +-
.../charts/commands/importers/v1/import_test.py | 46 +
.../charts/data/streaming_filename_test.py | 18 +-
tests/unit_tests/charts/test_client_processing.py | 822 +-
tests/unit_tests/charts/test_filters.py | 110 +
tests/unit_tests/charts/test_schemas.py | 51 +-
tests/unit_tests/commands/chart/create_test.py | 252 +-
tests/unit_tests/commands/chart/export_test.py | 576 +
tests/unit_tests/commands/chart/update_test.py | 266 +-
tests/unit_tests/commands/dashboard/export_test.py | 8 +-
tests/unit_tests/commands/dataset/test_create.py | 268 +-
.../unit_tests/commands/dataset/test_duplicate.py | 136 +-
tests/unit_tests/commands/dataset/update_test.py | 475 +-
.../commands/importers/v1/examples_test.py | 51 +
.../unit_tests/commands/importers/v1/utils_test.py | 233 +
tests/unit_tests/commands/report/base_test.py | 239 +
.../unit_tests/commands/report/conftest.py | 10 +-
.../commands/report/semantic_view_report_test.py | 232 +
.../commands/semantic_layer/create_test.py | 193 +-
.../commands/semantic_layer/update_test.py | 12 +-
tests/unit_tests/commands/sql_lab/test_estimate.py | 27 +
tests/unit_tests/commands/sql_lab/test_execute.py | 92 +
.../commands/streaming_export}/__init__.py | 0
.../commands/streaming_export/base_test.py | 51 +
.../common/test_query_context_factory.py | 35 +
.../common/test_query_context_processor.py | 76 +-
tests/unit_tests/common/test_time_range_utils.py | 27 +
tests/unit_tests/conftest.py | 53 +-
tests/unit_tests/connectors/sqla/utils_test.py | 26 +
tests/unit_tests/dao/dashboard_test.py | 581 +
tests/unit_tests/dao/queries_test.py | 30 +-
tests/unit_tests/dao/query_stop_isolation_test.py | 126 +
.../dao/test_copy_dashboard_legacy_ids.py | 81 +-
tests/unit_tests/dao/test_query_stop_race.py | 73 +-
tests/unit_tests/daos/test_query_dao.py | 619 +
tests/unit_tests/dashboards/datasets_test.py | 86 +
.../dashboards/semantic_view_access_test.py | 141 +-
tests/unit_tests/databases/api_test.py | 47 +-
.../datasets/commands/importers/v1/import_test.py | 608 +-
tests/unit_tests/datasets/schema_tests.py | 80 +
tests/unit_tests/datasource/test_compatible_api.py | 98 +
.../unit_tests/db_engine_specs/test_databricks.py | 47 +
.../test_extended_aggregations_unverified.py | 8 +-
.../db_engine_specs/test_impala_pending.py | 132 +-
tests/unit_tests/db_engine_specs/test_lib.py | 31 +-
tests/unit_tests/db_engine_specs/test_oceanbase.py | 228 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 25 +
tests/unit_tests/db_engine_specs/test_trino.py | 1104 +-
tests/unit_tests/exceptions_test.py | 46 +
tests/unit_tests/importexport/api_test.py | 111 +-
tests/unit_tests/initialization_test.py | 9 +-
tests/unit_tests/jinja_context_test.py | 74 +
.../mcp_service/chart/test_bullet_chart.py | 18 +-
.../mcp_service/chart/test_bullet_tool_paths.py | 24 +-
.../mcp_service/chart/test_chart_examples.py | 48 +
.../mcp_service/chart/test_chart_helpers.py | 67 +
.../mcp_service/chart/test_chart_schemas.py | 21 +
tests/unit_tests/mcp_service/chart/test_compile.py | 464 +
.../chart/test_native_chart_regressions.py | 24 +
.../mcp_service/chart/test_new_chart_types.py | 26 +-
.../test_review_query_and_preview_regressions.py | 7 +-
.../chart/test_time_grain_generic_axes.py | 171 +
.../mcp_service/chart/tool/test_get_chart_data.py | 693 +-
.../chart/tool/test_get_chart_preview.py | 453 +
.../common/test_list_scope_validation.py | 105 +
.../dashboard/test_dashboard_schemas.py | 39 +
.../mcp_service/dashboard/test_permalink.py | 40 +-
.../dashboard/tool/test_apply_dashboard_filters.py | 67 +-
.../dashboard/tool/test_duplicate_dashboard.py | 86 +-
.../dashboard/tool/test_get_dashboard_data.py | 507 +
.../dashboard/tool/test_list_dashboards.py | 85 +
.../mcp_service/dataset/tool/test_query_dataset.py | 44 +-
.../mcp_service/native_tool_inventory.json | 112 +-
.../test_compatibility_selection_validation.py | 9 +-
.../semantic_layer/tool/test_get_table.py | 27 +-
.../semantic_layer/tool/test_list_metrics.py | 25 +-
.../mcp_service/test_browser_hello_middleware.py | 126 +
.../mcp_service/test_dashboard_scope_sql.py | 75 +
tests/unit_tests/mcp_service/test_mcp_config.py | 9 +
.../mcp_service/test_mcp_tool_registration.py | 23 +
tests/unit_tests/mcp_service/test_middleware.py | 5 +-
.../mcp_service/test_native_tool_surface.py | 10 +-
.../test_sanitization_warning_inputs.py | 450 +-
.../unit_tests/mcp_service/test_tool_inventory.py | 21 +-
.../mcp_service/test_validation_contract.py | 42 +-
.../mcp_service/utils/test_sanitization.py | 163 +
.../test_sweep_legacy_password_view_perms.py | 190 +
...t_tag_pivot_tables_with_restored_aggregation.py | 461 +
tests/unit_tests/models/helpers_test.py | 925 +-
tests/unit_tests/models/slice_test.py | 87 +
tests/unit_tests/models/template_params_test.py | 68 +
tests/unit_tests/models/test_multivalue_filter.py | 138 +
.../pandas_postprocessing/test_compare.py | 109 +
tests/unit_tests/reports/filters_test.py | 53 +
tests/unit_tests/scripts/change_detector_test.py | 13 +
.../scripts/translations/babel_update_test.py | 105 +-
tests/unit_tests/security/manager_test.py | 308 +-
tests/unit_tests/security/test_password_change.py | 63 +
.../unit_tests/security/test_password_recovery.py | 1073 +
.../security/test_password_recovery_rate_limit.py | 71 +
tests/unit_tests/semantic_layers/api_test.py | 379 +-
.../unit_tests/semantic_layers/cache_host_test.py | 6 +
.../semantic_layers/cache_policy_test.py | 3 +-
.../semantic_layers/cache_transform_test.py | 8 +-
tests/unit_tests/semantic_layers/conftest.py | 171 +
.../semantic_layers/default_order_test.py | 376 +
.../semantic_layers/dimension_resolution_test.py | 161 +
.../semantic_layers/e2e_stub_extension_test.py | 246 +
.../semantic_layers/execution_context_test.py | 1141 +
.../semantic_layers/grain_validation_test.py | 6 +-
.../semantic_layers/import_export_test.py | 6 +-
.../semantic_layers/integer_precision_test.py | 14 +-
tests/unit_tests/semantic_layers/mapper_test.py | 989 +-
.../semantic_layers/metadata_contract_test.py | 92 +-
.../semantic_layers/metric_filter_test.py | 209 +-
tests/unit_tests/semantic_layers/models_test.py | 407 +-
.../semantic_layers/query_errors_test.py | 373 +-
.../semantic_layers/simple_cache_clear_test.py | 106 +-
.../semantic_layers/values_endpoint_test.py | 292 +
tests/unit_tests/sql/execution/conftest.py | 6 +-
.../unit_tests/sql/execution/test_async_results.py | 1500 +
tests/unit_tests/sql/execution/test_celery_task.py | 2351 +-
tests/unit_tests/sql/execution/test_executor.py | 42 +-
tests/unit_tests/sql/execution/test_utils.py | 207 +
tests/unit_tests/sql/parse_tests.py | 110 +
tests/unit_tests/sql_lab_test.py | 1714 +
tests/unit_tests/sqllab/api_test.py | 24 +-
tests/unit_tests/tags/models_test.py | 6 +-
tests/unit_tests/tags/race_test.py | 84 +
tests/unit_tests/tasks/test_async_queries.py | 139 +-
tests/unit_tests/tasks/test_schemas.py | 62 +
tests/unit_tests/test_app_reinitialization.py | 114 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 17 +-
tests/unit_tests/themes/api_test.py | 33 +
tests/unit_tests/utils/excel_tests.py | 13 +
tests/unit_tests/utils/filters_test.py | 260 +-
tests/unit_tests/utils/number_format_test.py | 31 +
tests/unit_tests/utils/test_core.py | 20 +
tests/unit_tests/utils/test_error_sanitization.py | 94 +
tests/unit_tests/utils/test_schema.py | 138 +
tests/unit_tests/utils/test_screenshot_utils.py | 134 +
.../versioning/test_dataset_child_extra.py | 148 +
.../versioning/test_diff_save_defaults.py | 264 +
tests/unit_tests/versioning/test_shadow_queries.py | 79 +
tests/unit_tests/views/datasource/views_test.py | 440 +-
tests/unit_tests/views/test_archived_assets.py | 86 +
tests/unit_tests/views/test_base.py | 72 +
796 files changed, 87936 insertions(+), 26862 deletions(-)
create mode 100755 .github/workflows/scripts/check-code-scanning-available.sh
create mode 100755
.github/workflows/scripts/check-code-scanning-available.test.sh
create mode 100644 docs/admin_docs/security/oauth.mdx
copy docs/developer_docs/extensions/{contribution-types.md =>
extension-points/semantic-layers.md} (52%)
delete mode 100644 docs/developer_docs/extensions/semantic-filters.md
create mode 100644 docs/sip/pivot-table-aggregation-parity.md
create mode 100644 docs/static/img/logos/plum.svg
delete mode 100755 scripts/eslint.sh
create mode 100644 superset-core/src/superset_core/semantic_layers/context.py
create mode 100644 superset-core/src/superset_core/semantic_layers/testing.py
create mode 100644 superset-core/tests/semantic_layers/example_provider.py
create mode 100644
superset-core/tests/semantic_layers/test_execution_context.py
create mode 100644 superset-core/tests/semantic_layers/test_registration.py
copy
superset-frontend/{plugins/plugin-chart-point-cluster-map/types/external.d.ts
=> .storybook/playwright.storybook-ci.config.ts} (64%)
create mode 100644 superset-frontend/.storybook/setup-stories.test.ts
create mode 100644 superset-frontend/.storybook/setup-stories.ts
copy superset-frontend/{plugins/preset-chart-deckgl/types/external.d.ts =>
.storybook/stories.spec.ts} (77%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings/index.ts =>
custom-lint-rules/i18n-strings/index.js} (69%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/no-eager-t-in-config.test.ts (92%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/no-template-vars.test.ts (88%)
rename superset-frontend/{eslint-rules/eslint-plugin-i18n-strings =>
custom-lint-rules/i18n-strings}/package.json (64%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons/index.ts =>
custom-lint-rules/icons/index.js} (66%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons =>
custom-lint-rules/icons}/no-fontawesome.test.ts (88%)
rename superset-frontend/{eslint-rules/eslint-plugin-icons =>
custom-lint-rules/icons}/package.json (66%)
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/colors.ts =>
custom-lint-rules/theme-colors/colors.js} (97%)
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors/index.ts =>
custom-lint-rules/theme-colors/index.js} (67%)
create mode 100644
superset-frontend/custom-lint-rules/theme-colors/no-literal-colors.test.ts
rename superset-frontend/{eslint-rules/eslint-plugin-theme-colors =>
custom-lint-rules/theme-colors}/package.json (54%)
delete mode 100644 superset-frontend/eslint.config.minimal.js
create mode 100644 superset-frontend/oxlint.custom-lint-rules.mts
create mode 100644
superset-frontend/playwright/helpers/api/semanticLayer.test.ts
create mode 100644 superset-frontend/playwright/helpers/api/semanticLayer.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/featured-charts-render.spec.ts
create mode 100644
superset-frontend/playwright/tests/explore/explore-download-image.spec.ts
create mode 100644
superset-frontend/playwright/tests/semantic-view/semantic-view-dashboard.spec.ts
delete mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/useTableTheme.ts
create mode 100644
superset-frontend/plugins/plugin-chart-cartodiagram/test/components/OlChartMap.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/resultAggregation.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/Styles.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/Multi/transformProps.test.ts
copy superset-frontend/plugins/preset-chart-deckgl/{types/external.d.ts =>
src/Multi/transformProps.ts} (62%)
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/factory.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/layers/Contour/Contour.test.ts
copy
superset-frontend/plugins/{plugin-chart-point-cluster-map/types/external.d.ts
=> preset-chart-deckgl/types/global.d.ts} (74%)
create mode 100644
superset-frontend/spec/fixtures/mockSemanticDashboardDatasources.ts
create mode 100644 superset-frontend/spec/helpers/runStopButton.ts
create mode 100644
superset-frontend/src/components/Chart/ChartRenderer.refresh.test.tsx
create mode 100644
superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditorNormalizeColumnsWarning.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.manyCharts.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.requestLifetime.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.semanticDefault.test.tsx
create mode 100644
superset-frontend/src/explore/components/ChartPills.behavior.test.tsx
create mode 100644
superset-frontend/src/explore/components/LegacyAggregationAlert.test.tsx
create mode 100644
superset-frontend/src/explore/components/LegacyAggregationAlert.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl-unused-fields.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/CustomListItem/index.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/LayerConfigsControl/LayerConfigsControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MapViewControl/MapViewControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/MapViewControl/MapViewPopoverContent.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SliderControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/SwitchControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/TimeRangeControl/index.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/VerticalRadioControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigsChart.test.tsx
create mode 100644
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.test.ts
create mode 100644
superset-frontend/src/explore/exploreUtils/legacyAggregationTag.ts
create mode 100644
superset-frontend/src/features/semanticViews/creationResult.ts
create mode 100644
superset-frontend/src/filters/components/Range/RangeChart.test.tsx
create mode 100644
superset-frontend/src/filters/components/Range/buildQuery.test.ts
copy
superset-frontend/{plugins/plugin-chart-point-cluster-map/types/external.d.ts
=> src/filters/components/Range/isSemanticRange.ts} (64%)
create mode 100644 superset-frontend/src/hooks/useRunStopButton.ts
create mode 100644
superset-frontend/src/pages/ForgotPassword/ForgotPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/index.tsx
rename superset-frontend/{.storybook/test-runner.ts =>
src/pages/Login/styles.ts} (54%)
create mode 100644
superset-frontend/src/pages/ResetPassword/ResetPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ResetPassword/index.tsx
create mode 100644 superset-frontend/src/utils/lazyWithRetry.test.tsx
create mode 100644 superset-frontend/src/utils/lazyWithRetry.ts
create mode 100644 superset/commands/security/password_recovery.py
delete mode 100644 superset/common/tags.py
create mode 100644
superset/migrations/versions/2026-09-25_00-00_141b8ada7731_tag_pivot_tables_with_restored_.py
create mode 100644
superset/migrations/versions/2026-09-30_00-00_d623a0cb6bb0_sweep_legacy_password_view_perms_from_all_roles.py
create mode 100644 superset/security/password_recovery.py
create mode 100644 superset/semantic_layers/dimension_resolution.py
create mode 100644 superset/semantic_layers/execution.py
create mode 100644 superset/semantic_layers/ordering.py
create mode 100644 superset/sql/execution/serialization.py
create mode 100644 superset/sql/execution/utils.py
create mode 100644
tests/e2e_extensions/semantic_stub/dist/backend/src/superset_e2e_semantic_stub/__init__.py
create mode 100644 tests/e2e_extensions/semantic_stub/dist/manifest.json
copy superset/commands/security/exceptions.py =>
tests/integration_tests/superset_test_config_semantic.py (50%)
delete mode 100644 tests/integration_tests/tagging_tests.py
create mode 100644 tests/integration_tests/tags/race_tests.py
copy RELEASING/requirements.txt => tests/mypy_fixtures/__init__.py (65%)
create mode 100644 tests/mypy_fixtures/uuid_mixin_nullable.py
create mode 100644 tests/testcontainers/db_engine_specs/_bigquery_container.py
create mode 100644 tests/testcontainers/db_engine_specs/test_bigquery.py
create mode 100644 tests/unit_tests/commands/chart/export_test.py
copy RELEASING/requirements.txt =>
tests/unit_tests/commands/report/conftest.py (82%)
create mode 100644
tests/unit_tests/commands/report/semantic_view_report_test.py
copy {scripts => tests/unit_tests/commands/streaming_export}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/streaming_export/base_test.py
create mode 100644 tests/unit_tests/dao/query_stop_isolation_test.py
create mode 100644 tests/unit_tests/daos/test_query_dao.py
create mode 100644 tests/unit_tests/datasource/test_compatible_api.py
create mode 100644 tests/unit_tests/exceptions_test.py
create mode 100644
tests/unit_tests/mcp_service/common/test_list_scope_validation.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_list_dashboards.py
create mode 100644
tests/unit_tests/mcp_service/test_browser_hello_middleware.py
create mode 100644
tests/unit_tests/migrations/test_sweep_legacy_password_view_perms.py
create mode 100644
tests/unit_tests/migrations/test_tag_pivot_tables_with_restored_aggregation.py
create mode 100644 tests/unit_tests/models/template_params_test.py
create mode 100644 tests/unit_tests/security/test_password_recovery.py
create mode 100644
tests/unit_tests/security/test_password_recovery_rate_limit.py
create mode 100644 tests/unit_tests/semantic_layers/default_order_test.py
create mode 100644
tests/unit_tests/semantic_layers/dimension_resolution_test.py
create mode 100644 tests/unit_tests/semantic_layers/e2e_stub_extension_test.py
create mode 100644 tests/unit_tests/semantic_layers/execution_context_test.py
create mode 100644 tests/unit_tests/sql/execution/test_async_results.py
create mode 100644 tests/unit_tests/sql/execution/test_utils.py
create mode 100644 tests/unit_tests/tags/race_test.py
create mode 100644 tests/unit_tests/test_app_reinitialization.py
create mode 100644 tests/unit_tests/utils/test_schema.py
create mode 100644 tests/unit_tests/versioning/test_dataset_child_extra.py
create mode 100644 tests/unit_tests/versioning/test_diff_save_defaults.py
create mode 100644 tests/unit_tests/views/test_archived_assets.py