You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2026/10/16 05:04:41 UTC
(superset) branch databricks-stop-query updated (324c50c7958 -> 86fba0a75f1)
This is an automated email from the ASF dual-hosted git repository.
eschutho pushed a change to branch databricks-stop-query
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 324c50c7958 test(databricks): stub databricks driver module in cancel_query tests
omit 88552ab9e07 fix(databricks): support cancelling SQL Lab queries on SEA connections
add 9413294b2bd docs(pivot-table): document the "Show values as" percentage display option (#44127)
add 48795f9a2d4 docs(explore): document show_download param for standalone chart embeds (#43906)
add 7dd70eaf2d6 fix: tighten object-level and destination checks across four unrelated endpoints (#44036)
add add97e5d190 fix(embedded): tighten guest-token scoping for annotations, result types, and channels (#43391)
add ca7cdfcd0ff fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
add 0f229fda75f fix(security): exempt health blueprint from forced password changes (#44504)
add 269b9f99fef fix(views): return 401 for NoAuthorizationError in handle_api_exception (SC-121647) (#44533)
add 50bbcedf13b docs(mcp): document restore_chart and restore_dashboard tools (#44207)
add ea1ffcf0adb fix: fixed inverseSelection (#40970)
add 350dd0d60ec fix(security): delete deprecated permissions left over after upgrades (#44142)
add 7a9fe06762b fix(mcp): stop data tool responses crashing on binary and NaT values (#44495)
add 9612437a9c8 fix(extensions): preserve chat state across display modes (#44490)
add 61fffbe0c08 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in /superset-frontend (#44525)
add c14ac29f477 fix(mcp): complete Treemap round-trip and previews (#44152)
add 3b4e5f5d0c6 chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in /superset-frontend (#44570)
add 7fe03a536b6 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-frontend (#44569)
add 6403e16fe56 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in /superset-embedded-sdk (#44568)
add d1f395914f1 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-embedded-sdk (#44567)
add 6c9138a6b7c chore(deps-dev): bump baseline-browser-mapping from 2.11.23 to 2.11.24 in /superset-frontend (#44566)
add 4b180bddad7 chore(deps): bump baseline-browser-mapping from 2.11.23 to 2.11.24 in /docs (#44565)
add 4290d94d6c9 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in /superset-websocket (#44564)
add 3e80a53e14f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in /superset-websocket (#44563)
add f8f293d2666 chore(deps): bump benchmark-action/github-action-benchmark from 1.22.1 to 1.22.2 (#44520)
add 689ab4a77af fix(translations): regenerate messages.pot after the connection-move reword (#44574)
add 02dbfd2ab5b fix(dashboard): don't register an active tab for childless TABS components (#44345)
add 838376dbc28 fix(mongodb): treat the Mongo database as the SQL Lab schema so Data Preview returns rows (#44141)
add 6323b37f50a fix(dashboard): prevent and repair self-nested layout components (#44303)
add 7c7b3adf745 fix(export): keep the acting user in streaming CSV exports (#44425)
add c0c688d3e4b fix(mcp): return a specific error per failure class on tool calls (#44387)
add a071d23b41f fix(dashboard): guest sessions, pluggable storage, and streamed downloads for the Excel export (#43805)
add d7a918b814c fix(ci): make check_pot_drift extract from an isolated git snapshot (#44578)
add 775f7c5a1fd fix(db2): Use DATE_TRUNC to improve timegrain expressions (#43236)
add 298aa2f0ba4 fix(dataset): bump changed_on on column refresh so chart cache invalidates (#43921)
add 082961ba168 fix(chart): require edit rights for query-context-only updates (#44494)
add 3b355b6a854 fix(chart): allow semantic view datasource when saving charts (#44169)
add 390bf299ff9 fix(i18n): stop f-strings in gettext leaking a bogus msgid on Python 3.12 (#44584)
add 8141d666d6d fix(dashboard): show loading spinner for charts outside an in-flight auto-refresh batch (#44272)
add d4370cd46eb chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#44593)
add 0ad50dc77e7 chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in /superset-frontend (#44596)
add b4cc82b7662 chore(deps-dev): bump jsdom from 30.0.1 to 30.1.0 in /superset-embedded-sdk (#44592)
add 687dcbc63eb chore(deps): bump swagger-ui-react from 5.32.15 to 5.33.0 in /docs (#44594)
add ad7fcac11f9 fix(export): stamp ZIP entries with the export time (#44391)
add 92a3b7d7e33 chore(deps): bump google-auth-library from 11.0.2 to 11.1.0 in /superset-frontend (#44599)
add 45d76f6abaf chore(deps): bump react-draggable from 4.7.1 to 4.7.2 in /superset-frontend (#44597)
add 2ac6e2468d5 chore(deps-dev): bump webpack-bundle-analyzer from 5.3.3 to 5.4.0 in /superset-frontend (#44598)
add 613033b294b chore(build): replace external file-related deps with native Node modules (#42939)
add 25cb6fc02d2 chore(deps): bump the ag-grid group in /superset-frontend with 2 updates (#44595)
add 732248e4755 fix(logging): record dashboard_id and slice_id for REST mutation endpoints (#44553)
add 9ad6917600d chore(cypress): remove dead dashboard drill-to-detail Cypress suite (#44537)
add f5d663c480d fix(versioning): narrow nullable uuid/description reads flagged by mypy in versioning tests (#44424)
add e357014559b fix(dashboard): initialize label colors before mounting charts (#44557)
add e04d38a85f2 fix(mypy): resolve the dataset-scope and datasource-perm errors from the full-repo lint (#44610)
add 1c7d1f049bc fix(utils): return None from cast_to_num for non-decimal digit strings (#44615)
add defcd639107 fix(mongodb): route dataset FROM clauses through quote_table so chart queries return rows (#44583)
add f5487f04a36 fix(db_engine_specs): raise SupersetGenericDBErrorException instead of bare-reraising JSONDecodeError (#44616)
add 855ca2228cb fix(query_context): raise 422 not 500 on malformed Jinja in Query datasource access check (#44011)
add 7b716b1838c fix(versioning): clean up history actions and refresh after saves (#44613)
add 96d31ee3e35 docs(mcp): document deleted_state trash listing for list_charts/list_dashboards (#44128)
add 599026a0e5a feat(standalone): granular Explore standalone modes and iframe-safe dashboard fullscreen (#44165)
add 3bd6e103c14 fix(security): apply global guest RLS rules inside adhoc sub-queries (#44645)
add 1e08d61204f fix(mcp): preserve deduplicated chart tool input schemas (#44575)
add 02cb1f1a28a fix(table): resolve auto-detected currency on time comparison columns (#44649)
add 83731ce7b3a test(reports): freeze the clock in the stale retry boundary test (#44651)
add a9342fa02ab chore(deps-dev): bump oxlint-tsgolint from 7.0.2001 to 7.0.2002 in /superset-websocket (#44634)
add d65e9fba9c4 chore(deps-dev): bump oxlint-tsgolint from 7.0.2001 to 7.0.2002 in /docs (#44635)
add d1f903c66ff chore(deps): bump github/codeql-action/analyze from 4.38.0 to 4.38.1 (#44636)
add a44ab4d9281 chore(deps-dev): bump baseline-browser-mapping from 2.11.24 to 2.11.25 in /superset-frontend (#44641)
add 5085570fb48 chore(deps): bump apache/infrastructure-actions/allowlist-check from 1.0.3 to 1.0.4 (#44637)
add 5be35992c56 chore(deps): bump github/codeql-action/upload-sarif from 4.38.0 to 4.38.1 (#44640)
add 0034601c062 chore(deps): bump github/codeql-action/init from 4.38.0 to 4.38.1 (#44639)
add 5e8bbc0eb4a chore(deps): bump baseline-browser-mapping from 2.11.24 to 2.11.25 in /docs (#44638)
add 241d1210152 chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs in the security group across 1 directory (#44619)
add be0631858c9 chore(deps): bump mapbox-gl from 3.30.0 to 3.31.0 in /superset-frontend (#44643)
add 4bce27f12f4 fix(dashboard): shrink row height on chart resize and unblock resize handles above columns (#44359)
add 5aec4342bb5 fix(database): catch JSONDecodeError in get_oauth2_config (#44658)
add 10ca640e97e fix(import): downgrade expected validation-failure logs from error to warning (#44655)
add 181422fc604 fix(mcp): return safe argument validation details (#44591)
add 05017968378 chore(ci): collapse Playwright experimental workflow into E2E playwright-tests (#44659)
add a33154a4c49 chore(deps-dev): bump hdbcli from 2.29.27 to 2.30.27 (#44687)
add 60a0b45b06f chore(deps-dev): bump mysqlclient from 2.2.8 to 2.3.0 (#44689)
add 1aaa1e6ad1a chore(deps): bump greenlet from 3.5.5 to 3.5.6 (#44691)
add 1a65f0ec9be chore(deps-dev): bump google-cloud-bigquery from 3.45.0 to 3.45.2 (#44692)
add b4db7baaff5 chore(deps-dev): bump python-ldap from 3.4.7 to 3.4.8 (#44690)
add 6e2e7c6c84f chore(deps-dev): update playwright requirement from <2,>=1.62.0 to >=1.63.0,<2 (#44688)
add 5b9733fd60f fix(versioning): resolve nightly pre-commit (next) failures — mypy UUID-annotation regression and oxfmt version-drift formatting (#44648)
add eb2ffa28ccf chore(docker): quiet scanner self-match noise, keep OS packages current (#44124)
add 2e13cfa3e48 fix(charts): stream large CSV exports without executing the query first (#44624)
add 25e63b54fd8 feat(mcp): add create_dataset_metric and delete_dataset_metric tools (#44580)
add c54a3315e86 feat(plugin-chart-echarts): add Candlestick Chart (#43863)
add 891c2ede0b6 feat(dashboard): download the Excel export directly when no export storage is configured (#44082)
add 35e58506061 fix(charts): guard Slice.form_data against non-dict params JSON (#44731)
add 8a3b86dccd3 fix: guard the isdigit()-then-int() pattern against non-decimal digits (#44620)
add 1436035b091 fix(bar-chart): show correct value labels per stack group with stackDimension (#43238)
add ad24cb86342 fix(embedded): initialize feature flags in embedded dashboard entry point (#37367)
add 8c4b5ae2085 chore(deps): bump codecov/codecov-action from 7.1.0 to 7.1.1 (#44571)
add b6be1dd5548 build(dev-deps): use `@hainenber/po2json` as modernized `po2json` fork (#44457)
add ffe9a00fc42 fix(reports): export full paginated table results (#44218)
add f3e3c3fefdd fix(security): apply global guest RLS rules to sub-queries in virtual datasets (#44650)
add 049c9777f03 fix(dashboard): load chart editors and viewers up front (#43990)
add 5ba3b8d4fc7 fix(security): keep guest RLS on sub-queries beside an unaliased source (#44768)
add d1307422f17 fix(reports): require a Slack channel id in report recipients (#42850)
add 4977a2a5347 chore(deps-dev): bump the babel group in /superset-embedded-sdk with 3 updates (#44747)
add ba6268bddf6 chore(deps-dev): bump jest-environment-jsdom from 30.5.1 to 30.5.2 in /superset-frontend (#44764)
add a5ae32d3911 chore(deps-dev): bump tsx from 4.23.13 to 4.23.15 in /superset-frontend (#44757)
add d9df1b3b83d chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 (#44750)
add 1ad6c118003 chore(deps-dev): bump minimizer-webpack-plugin from 5.10.1 to 5.11.0 in /superset-frontend (#44755)
add ca6fc26fa4a fix(deps): resolve npm security alerts for fflate, image-size, js-yaml and smol-toml (#44740)
add f6d9b7b94cd fix(mcp): use chart metrics for the preview y axis (#44684)
add b2d54504537 chore(deps): bump antd from 6.6.4 to 6.6.5 in /superset-frontend (#44766)
add c217fe4d1e7 chore(deps-dev): bump jest from 30.5.1 to 30.5.2 in /superset-frontend (#44763)
add 0085640384d chore(deps-dev): bump babel-jest from 30.5.1 to 30.5.2 in /superset-frontend (#44762)
add e8539f9aff8 chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-frontend (#44761)
add 7c1979ec542 chore(deps): bump react-error-boundary from 6.1.5 to 6.1.6 in /superset-frontend (#44760)
add 21ed6880d5e chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /superset-frontend (#44756)
add 6ae6e7b2874 chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /docs (#44753)
add 6de85946c40 chore(deps-dev): bump @babel/eslint-parser from 7.29.7 to 7.29.9 in /superset-frontend in the babel group (#44752)
add 565f49d9343 chore(deps): bump antd from 6.6.4 to 6.6.5 in /docs (#44751)
add 1c2e7c2988f chore(deps-dev): bump webpack from 5.111.0 to 5.111.1 in /superset-embedded-sdk (#44749)
add feb4c4f6227 chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-embedded-sdk (#44748)
add 60fc9966025 chore(deps-dev): bump @types/node from 26.6.1 to 26.6.2 in /superset-websocket (#44745)
add 68ccc99e950 fix(dataset): hide Normalize column names for virtual datasets (#44579)
add 766f46b6e99 fix(deps): pin qs 6.16.0 in docs to resolve Dependabot alerts (#44741)
add 5af034ff6f8 fix(translations): capture stderr and harden check_pot_drift.py follow-ups from #44578 (#44582)
add c9455b2c4cc fix(i18n): correct Slovak SQL Lab progress message placeholders (#44587)
add a629c91929d test(explore): migrate remaining explore e2e coverage to Playwright (#44621)
add 891dbc424b1 fix(deps): bump anyio to 4.15.1 (CVE-2026-63374) (#44735)
add 74d9d94aed1 test(dashboard): cover native filter dependency cycles and config modal save gating (#44669)
add 169514aebd7 test(dashboard): cover dashboard load modes and URL param hydration (#44672)
add 3667f5bcaa6 test(dashboard): cover color scheme precedence and label color map helpers (#44677)
add 89bf40ee04e fix(calendar): position Month/Week cells within their own month block (#44601)
add 0e688a534b6 fix(ci): retry databend testcontainers bring-up past the image's metasrv race (#44729)
add ff55a99ab73 test(dashboard): cover filter plugin data masks and horizontal overflow (#44676)
add 78fdd0dafa9 test(dashboard): cover native filter bar key persistence and state hooks (#44675)
add e5100cd9986 test(dashboard): cover tab switching visibility and hidden chart updates (#44674)
add 3ae8e2f9bc4 test(dashboard): cover save and refresh interval modals (#44671)
add 98c74d8d8bf test(dashboard): cover drill to detail payloads and page reset (#44673)
add 6cad838c823 chore(dev-deps): drop po2json entirely, build .po->Jed JSON on gettext-parser (#44742)
add 77295721ff9 feat(versioning): gate history APIs and runtime capture (#44514)
add 6f6e52ba8b1 fix(chart/data): guard against non-dict chart.params in get_data (#44770)
add 593080e1a2c feat(mcp): add update_dataset, delete_dataset and restore_dataset tools (#44337)
add 8bd92b7073e fix(databases): surface dataset dependents in the delete confirmation (#44392)
add 211339b9a78 chore: add @geido and @msyavuz as code owners (#44771)
add 1e167aedbc0 fix(dashboard): refresh version history after cross-filter scoping save (#44623)
add 9593bc42c64 fix(ui): normalize BigInt values in memory formatter (#44507)
add b65d5482b2c feat(dataset): support epoch_us python_date_format (#44500)
add 697b056909c fix(chart): prevent stacking bars on a logarithmic axis (#44556)
add a374f847d61 fix(echarts): reserve grid room for Gantt category names (#43189)
add 95db7730256 fix(timeseries): preserve explicit UTC offsets in normalizeTimestamp (#43960)
add 506716f2f88 fix(query-context): resolve legacy granularity_sqla for stored queries (#44460)
add c7821516e39 fix(security): vary SQL Lab ad-hoc query cache key by effective RLS predicates (#43985)
add 4679a471015 test(dashboard): cover header refresh controls while charts load (#44670)
add ae11708faab test(dashboard): cover edit-mode drag-and-drop drop rules (#44678)
add 0fbad0de99d feat(db_engine_specs): add metadata blocks to all remaining incomplete engine specs (#43566)
add 7cb19e2b50d fix(embedded-sdk): re-authenticate the iframe after a navigation internal to the dashboard (#44470)
add c67c88fbf1e fix(reports): drop the sign of negative numbers that round to zero in text reports (#44644)
add 1fdb9171b7b fix(explore): include dataset editors in the Explore datasource payload (#44633)
add d3f57264890 fix(echarts): stop the zoom controls overlapping the legend selector (#44367)
add 0e5a3b21215 feat(motherduck): set session_name on user impersonation (#42705)
add 33d24f496c9 fix(ci): fall back to the lean Dockerfile target when publishing a pre-#44100 release (#44248)
add b4f79f94f82 fix(d1): support SQLAlchemy 2 with sqlalchemy-d1 0.2.0 (#44505)
add cfeceedb605 fix(types): preserve shared control registry option types (#44559)
add 1e91b933774 refactor(dashboard): simplify cross-filter scope resolution (#38762)
add db87cd2a2b2 fix(dataframe): normalize trusted nonfinite scalars (#44219)
add e86af4ee954 fix: DashboardAccessFilter to preserve dashboards with empty layouts (#44256)
add 49e71752e48 fix(excel): keep wall-clock datetimes when exporting timezones (#44360)
add 19ea6b231c7 fix(mcp): hide internal sanitization warnings from input schemas (#44602)
add c40eba410b7 fix(kylin): time grains and labels that work on Calcite and Spark pushdown (#44712)
add ca3d3560895 feat(oracle): support cancelling running queries in SQL Lab (#44704)
add e7275f15ae0 feat(echarts): double-click chart legend to isolate a series (#44562)
add 4a51382f819 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /superset-frontend (#44785)
add 983d00165a7 chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in /superset-frontend (#44784)
add f837f839708 chore(deps): bump react-window from 2.3.1 to 2.3.2 in /superset-frontend (#44782)
add 5150266456a chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /docs (#44781)
add b8e40175053 chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#44779)
add 4422cf38776 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /superset-websocket (#44778)
add ce86ac9aefc chore(deps-dev): bump jsdom from 30.1.0 to 30.1.1 in /superset-embedded-sdk (#44777)
add ef99eeac8ee chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /superset-frontend (#44783)
add 72c8969ce38 chore(deps-dev): bump oxfmt from 0.68.0 to 0.70.0 in /docs (#44780)
add 3d436f579c9 chore(deps-dev): bump oxlint from 1.83.0 to 1.85.0 in /superset-websocket (#44776)
add e65de1fc0f0 fix(chart-data): roll back db.session after swallowed metadata-DB errors (#44653)
add 45f4dd80092 fix: use database rollups for pivot table subtotals in Actual Values mode (#44631)
add c51f192be6b fix(sqllab): stringify integer columns that overflow int64 (#44743)
add 2eb620e7372 fix(databases): validate schema before listing tables (#44683)
add 27c6f5a8d90 fix(db_engine_specs): restore shared compiler state after loading third-party dialects (#44686)
add 732e6551e0a fix(cratedb): recognize reflected timestamp types for epoch milliseconds (#44720)
add 03227878ba3 fix(db_engine_specs): don't fail DDL/DML when the statement has no result set (#44714)
add 3e9bd8b45b4 fix(dynamodb): map NUMBER columns and order charts by metric expressions (#44711)
add 2b050596c0b fix(databricks): derive omitted OAuth2 endpoints from the workspace host (#44710)
add 041f84c6f31 fix(clickhouse): rename SELECT aliases that shadow a source column (#44715)
add f6a7802c81d fix(database): mask secrets in create and update responses (#44733)
add f639b22c6c8 fix(api): return 4xx from oauth2 callback errors, not 500 (#44769)
add cba2574241e fix(i18n): clear 1,188 fuzzy translations with broken placeholders (#44611)
add afe8b14d794 fix(database): coerce LazyString validation messages to str in validate_parameters (#44802)
add c6e7bd47a4a fix(dashboard): catch JSONDecodeError on malformed default_filters in set_dash_metadata (#44716)
add 9a5faa8af5b refactor(db_engine_specs): derive epoch method dispatch from EPOCH_FORMATS (#44772)
add 63c004fe66c feat(mcp): add a permission-filtered asset catalog tool (#44694)
add 6b2d3b15116 fix(auth): gate registration UI by auth type, not just the flag (#44368)
add e1daa2f7e10 chore(deps-dev): bump ip-address from 10.4.0 to 10.7.2 in /superset-frontend in the security group across 1 directory (#44774)
add 8bd268f9cef docs(versioning): screenshots, retention, and permission guidance for version history and archives (#44190)
add 14b87366bc7 chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 in /superset-embedded-sdk in the security group across 1 directory (#44812)
add 1dbb7aaace6 chore(deps): bump fast-uri from 3.1.7 to 3.1.8 in /docs in the security group across 1 directory (#44814)
add 6d1bfaa4cd4 fix(dashboard): forward clearAllTriggers from vertical filter bar to FilterControls (#44531)
add df450dc2a24 fix(mypy): narrow nullable uuid before RestoreVersionCommand calls (#44789)
add 92b0cf82ca9 fix(echarts-timeseries): convert xAxisLabelInterval string '0' to number 0 (#43729)
add 517e94d1062 fix(echarts): fix sparse sub-daily bar sizing and x-axis mislabeling (#44628)
add 48a3b02d129 fix(mysql): require TLS when SSL is requested (#44723)
add 773f976b6de fix(dynamodb): render time bounds as ISO 8601 so sub-day ranges match stored timestamps (#44702)
add 005eadcacd8 fix(opensearch): page drill-to-detail samples with the OpenSearch SQL response format (#44703)
add 542e4661837 fix(gsheets): pass the OAuth2 token and delegation subject through connect_args (#44709)
add 16271bbfbb7 fix(databricks): stop the string-type patch writing SQLAlchemy's shared colspecs (#44707)
add 7154f2790a9 fix(oracle): map Oracle NUMBER, BINARY_FLOAT/DOUBLE and CLOB column types (#44685)
add 3e8cec55c4b chore(deps): bump undici from 7.29.0 to 7.30.0 in /superset-frontend in the security group across 1 directory (#44809)
add 89759eba5d9 chore(deps): bump react-window from 2.3.2 to 2.3.3 in /superset-frontend (#44820)
add 3e36b242a61 fix(datafusion): render temporal SQL that DataFusion accepts (#44700)
add 8c3b985c22c fix(db2): set current_schema to the catalog name of the selected schema (#44706)
add ba62c867258 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in /superset-frontend/cypress-base (#44813)
add 3f8a23622c7 perf(security): memoise the user subject lookup within a request (#44017)
add 3f408238baa refactor(mcp): one plugin lifecycle contract and compact chart config schemas (#44746)
add 5668faf18e6 fix(doris): quarter grain, SSL toggle, parameters URI, error mapping and column types (#44718)
add 929c44097f8 chore(deps): bump the security group across 1 directory with 2 updates (#44824)
add e93f8ce638c test(semantic-views): wait for views refetches to settle before selecting a view (#44792)
add 21d46d52dfd chore(build): remove unused dependencies in `docs` and `superset-frontend` (#44697)
add af794f8c93a chore(deps): bump the security group across 1 directory with 2 updates (#44831)
add 8a7be3b327b fix: avoid provider calls when rendering datasource access denials (#44432)
add 3b06cadca4c fix(csv-import): add primary key when MySQL requires one (#44411)
add 88efac09c67 fix(mcp): align histogram and waterfall query contracts (#44744)
add 65a6012843b ci(python): run the Python-next canary nightly, bump to 3.13 (#44767)
add e90b9fb751e chore(deps): bump dompurify from 3.4.15 to 3.4.16 in /superset-frontend in the security group across 1 directory (#44830)
add 51378f529d8 fix(matrixify): fan metrics-axis selection into multi-query fields (#44629)
add 883e43ee2da fix(sqllab): ignore non-object template_params in format_sql instead of 500 (#44826)
add bbf0fa5f42f fix(core): stop discarding API errors that quote an HTML tag (#42489)
add d80fcfc02a2 fix(i18n): make babel_update.sh .pot normalization actually run (#44395)
add f02f53df234 fix(sql): reject client-side file-transfer statements in query execution (#44496)
add fd524f4b217 fix(sqllab): preserve exact decimals in results and exports (#44739)
add d2101c8dba2 fix(exasol): classify common server errors (#44721)
add dc0e306a24c fix(elasticsearch): classify byte, short, half_float, scaled_float and unsigned_long columns (#44713)
add 8baa9c1f2e3 fix(db2): accept sqlglot's parse_mod in the DB2 term parser (#44708)
add 5cf8213354c fix(databricks): keep the user's OAuth2 token and extra connect_args; re-auth on HTTP 401 (#44705)
add 855bb4e21c8 fix(gsheets): align service-account validation and serialize upload dates (#44695)
add bbf00956d46 fix(mcp): prioritize exact tool names in BM25 search (#44682)
add 90fc4735835 test(embedded-sdk): cross-document test rig for the navigation fix (#44608)
add e91ce19a606 fix(auth): drain flash messages on the login page (#44605)
add 924343e3ee6 fix(gantt): prevent y-axis category labels from being clipped (#44321)
add d2fb52ac83e fix(auth): remove the legacy FAB password reset views and move password resets into the SPA (#44626)
add 4cdd680f399 fix: increase dataset edit modal size (#38215) (#39257)
add 4911dbe00b0 fix(doris): offer the connection form by matching the installed driver (#44736)
add 3109cfaf6d6 chore(deps): bump @googleapis/sheets from 18.0.0 to 18.0.1 in /superset-frontend (#44862)
add 4f9c22db6dc chore(deps): bump github/codeql-action/analyze from 4.38.1 to 4.38.2 (#44861)
add 6418473be14 chore(deps): bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2 (#44859)
add 8b643519ca0 chore: add sadpandajoe as a codeowner for .asf.yaml (#44855)
add b98e19f6eb2 chore: drop cypress-matrix-required from required status checks (#44854)
add 74d885233de chore(deps): bump github/codeql-action/init from 4.38.1 to 4.38.2 (#44860)
add 8ab7a85a3d7 chore(e2e): remove Cypress infrastructure (#44829)
add ee39954adb6 fix(oauth2): refresh a token rejected when a connection opens (#44765)
add e5ec22ab3e9 feat(table): add multi-level column header groups (#43938)
add a12d1b8e127 fix(mcp): enforce tool deadlines without blocking the server (#44581)
add 0a0a1974c50 test(playwright): select existing dashboards without creating duplicates (#44856)
add 33292f249da feat(mcp): support tab-scoped dashboard layouts (#44797)
add 4ae8fe71225 fix: size 'Drill to detail' table header correctly (#44807)
add 2c72d4d4fee fix(mcp): use DEFAULT_PAGE_SIZE constant in list_charts test (#44786)
add 446853004a4 fix(mcp): keep a bubble chart's colors and row limit across updates (#44618)
add 217e4c0223f fix(frontend): use html2canvas for chart image export on Safari (#44529)
add c82f97b69d6 chore(deps): bump deck.gl and luma.gl from 9.2.5 to 9.4.0 in /superset-frontend (#42608)
add abdf2e6c702 fix(home): redirect users without an ID before rendering (#44456)
add 3f6d4cd6896 chore(deps-dev): update google-cloud-storage requirement from >=1.37 to >=3.14.1 (#44693)
add 6a832cb2102 fix(mcp): enforce dashboard filter scope on dataset, SQL and chart tool calls (#44800)
add e7702020344 fix(postprocessing): preserve NULL index values through pivot() (#43547) (#43693)
add f7badeb095b fix(mcp): execute_sql request limit caps, never raises, an explicit SQL LIMIT (#44604)
add db56168a861 ci: require babel-extract to pass before merging master (#44543)
add 342a8f1e4e0 fix(mcp): report a chart's live dataset id and name (#44681)
add 21b937b59d7 fix(retention): skip models without purge policies before scanning (#44874)
add 6d97cde59a6 fix(semantic-layers): export/import semantic-view charts by typed reference (#44396)
add b94f88ffbb4 fix(semantic-layer): require explicit member identity reselection (#44370)
add 9c7c96fe057 fix(logging): register LogRestApi only once (#44732)
add edc91b86e5c chore(deps-dev): bump baseline-browser-mapping from 2.11.25 to 2.11.26 in /superset-frontend (#44890)
add 338e640df93 chore(deps): bump dompurify from 3.4.15 to 3.4.16 in /superset-frontend (#44889)
add 4a199486599 chore(deps): bump dom-to-image-more from 3.10.2 to 3.11.0 in /superset-frontend (#44888)
add 6559b483f28 chore(deps): bump maplibre-gl from 6.8.0 to 6.11.2 in /superset-frontend (#44887)
add dfccc2e1e9c chore(deps-dev): bump minimizer-webpack-plugin from 5.11.0 to 5.12.0 in /superset-frontend (#44886)
add c43770e12da chore(deps-dev): bump webpack-sources from 3.5.1 to 3.5.3 in /superset-frontend (#44885)
add 95faf3a6a04 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to 7.0.2003 in /docs (#44883)
add 27c9213cca2 chore(deps-dev): bump oxlint-tsgolint from 7.0.2002 to 7.0.2003 in /superset-websocket (#44882)
add 25956d6c448 chore(superset-ui-chart-controls): forward-compat fixes for TypeScript 6.0 (#44877)
add ba3500e0e9a feat(export/import): add annotation layer export/import support for charts and dashboards (#43232)
add 1b0a37cf223 fix(users): stop update_me setting self-referential changed_by_fk (#44866)
add 7bb29649416 chore(deps): bump dawidd6/action-download-artifact from 24 to 25 (#44884)
add 005edd74234 chore(build): de-vendor `helm/chart-testing-action` GHA (#44722)
add 10d06859b83 fix(ci): floor pyfakefs at 5.7.4 to fix Python 3.13 pytest-cov crash (#44853)
add 0fdfd6660e0 docs(databases): add ClickHouse Managed Postgres (#44870)
add e0483898728 test(explore): cover time range frames, comparison labels, and metric popover state (#44847)
add c1bb129c218 fix(change-detector): classify changed files by language, not directory (#44895)
add e606cadff7c chore(mcp): fix malformed tool and prompt docstrings (#44572)
add ef64bacbaa0 feat(chart): cross-filter by x-axis label on charts with dimensions (#44869)
add b0ac9ef61f6 test(explore): cover color scheme selection, BigNumber subheader/trendline, and WorldMap bubbles (#44846)
add 8d25777b995 test(plugin-chart-table): cover server-side sort, query mode controls, and sort ordering (#44845)
add 8849542bda1 test(explore): cover viz switch and control dependency logic (#44842)
add 03b61cc2d89 test(explore): add fetchTopNValues unit tests (#44841)
add e32493c9d93 test(explore): add saveModalReducer unit tests (#44839)
add f6155b9e9ea fix(dashboard): show the configured refresh warning alongside the limit error (#44836)
add 240a4267f85 test(explore): add datasourcesReducer unit tests (#44840)
add bc3698b5d64 test(explore): port remaining deleted Cypress explore specs to RTL (#44838)
add 2872d16ee65 test(frontend): await the userEvent calls that needed restructuring (#44799)
add 7fea33761b8 fix(chart): wrap raw pandas TypeError/DataError from post-processing as QueryObjectValidationError (#44463)
add 3f7d01aaafc fix(reports): catch TypeError when validating non-string extra.dashboard.anchor (#44404)
add ece8b8bd7b2 fix(import): avoid UnboundLocalError when load_yaml fails during load_configs (SC-121288) (#44390)
add 47ba8fc8014 fix(api): return 401 not 500 for auth errors in CurrentUserRestApi (SC-120417) (#44213)
add ef2c05c0900 fix(security): guard is_guest_user against NoAuthorizationError on unauthenticated error paths (#43826)
add f9d67e1a118 fix: downgrade deprecated query_object field warnings to info (#43520)
add 396030d87e0 docs: remove stale Selenium references after Playwright-only switch (#44243)
add 3fa06db85b6 fix(mcp): include feature_availability in instance://metadata resource (#44891)
add 52d8b405c99 fix(echarts): recognize Date and ISO-string temporal x-axis values in getXAxisDomain (#44818)
add 15bde2a3016 fix(native-filters): keep cascade dependency gate in sync with live filter type (#44366)
add 11bdbc91f37 feat(ci): add Chromatic visual regression testing for Storybook (#44103)
add 8d026b4a568 fix(mcp): skip dashboard live updates when websockets are disabled or realtime access is missing (#44796)
add 7260916b905 test(dashboard): cover "View as table" end-to-end for a view-as-table-only role (#44881)
add 646de3a46b5 test(clickhouse): cover GROUP BY ALL against a real instance (#40482) (#44879)
add ba453d3cb43 fix(sec): sanitize HTML text before shown as impact item's label (#43825)
add 2220f53d9db fix(chart): accept quarter and day in end-of time ranges (#43204)
add 62ab4cae23d fix(sql-lab): avoid duplicate generated result column names (#44189)
add 743a27f7ed3 fix(chart): sort Heatmap Y-axis by default when unset (#44588)
add 87bb752814a fix(select): remove Space wrapper from optionRender to fix option label truncation (#44357)
add d6689283942 fix(sql-lab): use function valueGetter for GridTable row numbers (#41574)
add 10356c30edb fix(mcp): stop partial-update tools from advertising null defaults (#44573)
add 6966c1f6ccb fix(cartodiagram): share Pie colors across locations in Explore (#44794)
add 81466987cbb fix(mcp): use create_proxy in simple_proxy for fastmcp 4 compatibility (#44787)
add ea79c63e878 fix(post-processing): stop treating gaps as zero for cumprod, cummin and cummax (#44828)
add f1ae8909d85 fix(import): remove duplicate config redefinition in load_configs (#44932)
add afa98f3391a perf(deletion-retention): one window pass for repeat predicate (#44349)
add 3a9becd5cba chore(deps): bump markdown from 3.10.3 to 3.11 (#44941)
add a65fe06c513 chore(deps-dev): update google-cloud-storage requirement from >=3.14.1 to >=3.15.0 (#44940)
add 3960407334b chore(deps): bump cachetools from 7.1.8 to 7.2.0 (#44939)
add dbd3e28aa3e chore(deps-dev): update databricks-sql-connector requirement from <4.6.0,>=4.5.0 to >=4.6.0,<4.7.0 (#44937)
add 8ba26679671 chore(deps): bump holidays from 0.104 to 0.105 (#44936)
add 291d098917b chore(deps): bump sqlglot from 30.18.0 to 30.19.0 (#44935)
add 98be2d17dad chore(deps-dev): bump clickhouse-connect from 1.8.0 to 1.9.0 (#44934)
add 549508b340b fix(mcp): preserve calling constraints in compact tool discovery (#44656)
add f2ff458acde feat: Add GUI for label_colors in Dashboard Properties Modal (#39434)
add 3fccf299469 test(opensearch): cover pagination and Content-Type regression against a real instance (#44924)
add acdd390b354 fix(frontend): finish migrating off direct antd imports, enforce it in custom rules (#44927)
add e72d63b20d8 test(mysql): cover require_mysql_tls fail-closed and verified-TLS paths (#44910)
add e3bdb3894c0 test(oracle): cover cancel-query against a real running statement (#44908)
add 5d158e7e795 test(cratedb): cover epoch-ms timestamp decoding against a real instance (#44904)
add cdafffeacf5 fix(deps): restore dompurify 3.4.16 in frontend lockfile (#44960)
add ccae7784982 fix(mypy): ignore false-positive union-attr on Slice.uuid.in_() (#44944)
add 68f19947a80 docs(mcp): document semantic-layer MCP tools (#44130)
add b5b8a9f3bd0 fix(dataset-editor): preserve edits across sort and sync external SQL changes (#44858)
add 7a2913e2dbe fix(sqlite): write midnight as a bare date for DATE columns in time filters (#44805)
add 46b9ba9587e chore(deps): bump dawidd6/action-download-artifact from 25 to 26 (#44977)
add 3ac856ceb1a chore(deps): bump chromaui/action from 18.7.3 to 18.10.1 (#44973)
add 7a62b3a6535 chore(deps-dev): bump postcss-styled-syntax from 0.7.2 to 0.7.3 in /superset-frontend (#44980)
add bc69daa2328 chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-frontend (#44979)
add fee8e1b9e52 chore(deps-dev): bump webpack-sources from 3.5.3 to 3.6.0 in /superset-frontend (#44978)
add 343dcb09353 chore(deps): bump chalk from 6.0.0 to 6.0.1 in /superset-frontend (#44976)
add d62fc92273b chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-embedded-sdk (#44974)
add c00f6a7aabc chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-embedded-sdk (#44972)
add 303a68b8e2c chore(deps-dev): bump @types/node from 26.6.2 to 26.6.3 in /superset-websocket (#44971)
add 83ea1d9e6f5 chore(deps-dev): bump vitest from 5.0.1 to 5.0.2 in /superset-websocket (#44970)
add 31d2d06bba3 chore(deps): bump ws from 8.21.3 to 8.22.0 in /superset-websocket (#44969)
add 7fecceb6901 chore: remove unused INCLUDE_FIREFOX build arg and dead screenshot config (#44245)
add 09015bb4bff fix(explore): preserve pending column configuration edits (#44931)
add 48ac1bf8c69 fix(mcp): return actionable authorized column suggestions (#44603)
add 0616ba68afe chore(deps-dev): bump the swc group in /superset-frontend with 2 updates (#44975)
add 13861568aaa chore(build): remove unused `polyline` Python dep (#44961)
add 895bc203601 fix: full CSV download in AgGrid (#41696)
add 3e50c2c1287 feat(mcp): support filter_range and filter_timegrain filters (#44893)
add 0c6373cd9f0 fix(models): silence pandas silent-downcasting FutureWarning in normalize_df (#44897)
add 2fdf756cf1a fix(mcp): avoid duplicate SQL execution results (#44949)
add ce39d221aac fix(charts): return 404 when chart export hits an inaccessible dataset (#44900)
add 13493a3e47f fix(mcp): allow bounding dashboard dataset columns (#44951)
add 05a3d4b880f feat(mcp): return the Big Number headline from chart and dashboard data (#44948)
add 8ff884059fd fix(logging): stop logging tracebacks for client-side HTTP errors (#44666)
add 31e3c9a1944 fix(ag-grid-table): refresh totals when summary aggregation changes (#44612)
add 71ee07e2e2b feat(ci): conditionally run CodeQL analysis workflows only when there are detected JS/Python file changes (#44699)
add c30ae9fd12d fix(embedded): refuse guest row-level security on semantic views (#44987)
add 9a345ad0112 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-websocket (#45005)
add 7b463ddee08 feat(ag-grid-table): expand JSON values in table cells (#44907)
add e0ff1074879 chore(i18n): update pt/pt_BR translations and rebuild translation index (#43022)
add 6aebcd2452d fix(dashboards): close CSS validation gaps in dashboard import and edits (#43666)
add 7b3ce2cf368 fix(themes): overwrite-import guard, missing index, dedupe extra_editors (follow-up to #42404) (#44362)
add bc1abf498d4 feat(bignumber): add an alignment control (#44554)
add 518bfbc5115 fix(reports): propagate force flag to dashboard-tab permalink report URLs (#44775)
add 4578ab31ade refactor(list-view): eliminate any usage in ListView.tsx and TableCollection (#44208)
add 7b3e3ad6f7f fix(dashboard,explore): wire addWarningToast into download callers (#44154)
add f9e9ece86f5 chore(deps): bump the rjsf group in /superset-frontend with 3 updates (#45004)
add 9e18d415d92 chore(deps-dev): bump @swc/core from 1.16.2 to 1.16.12 in /superset-frontend in the swc group (#45012)
add 9d348facce9 chore(deps): bump @swc/core from 1.16.2 to 1.16.12 in /docs (#45008)
add 457007b2f82 chore(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in /superset-websocket in the security group across 1 directory (#45028)
add a5ffac58f44 feat: add global async query playwright tests (#43004)
add 854d3d59e4d fix(table): omit dormant grains from semantic aggregate requests (#44455)
add 000297a6f07 fix(semantic-layers): offer valid table ordering choices (#44806)
add d6c871a57fb fix(semantic-layers): remove child view permissions when a layer is deleted (#44905)
add 3413a50af05 chore(deps): bump proxy-addr from 2.0.7 to 2.0.8 in /superset-websocket/utils/client-ws-app in the security group across 1 directory (#45027)
add 3cfc7458670 chore(deps): bump dawidd6/action-download-artifact from 26 to 27 (#45011)
add 7330ca4c373 chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /superset-embedded-sdk in the security group across 1 directory (#45024)
add fcee985241b fix(pivot-table): respect per-metric formatters in result aggregation (#44815)
add 1473d481345 fix(query-context): match an adhoc granularity_sqla by its expression (#44773)
add 17f4c215b37 feat(mcp): allow default values on filter_select native filters (#44985)
add 5a2f4c8e80c feat(mcp): add structured dashboard text component management (#44560)
add 55e39fc5f76 fix(explore): avoid mutating ZoomConfigControl configs (#44957)
add 794b243c543 test(frontend): await remaining userEvent calls and lint for un-awaited ones (#44947)
add 715dc017df1 fix(explore): open SQL Lab in a new tab on Ctrl+click in View query modal (#44933)
add ac3fc943dd3 chore(deps): bump the security group across 1 directory with 9 updates (#45026)
add f88b2ef2595 chore(deps): bump the security group across 1 directory with 6 updates (#45025)
add fc1eeb066af chore(deps-dev): bump wait-on from 9.1.0 to 9.4.0 in /superset-frontend (#45015)
add fc754d0e814 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /superset-frontend (#45014)
add ee7b7fdc908 chore(deps-dev): bump oxlint from 1.85.0 to 1.86.0 in /docs (#45009)
add 27d5c3655de chore(deps-dev): bump the typescript-eslint group in /superset-frontend with 2 updates (#45007)
add f3da949f61c chore(deps-dev): bump oxfmt from 0.70.0 to 0.71.0 in /superset-websocket (#45006)
add a0f0cb8ae3d feat(mcp): support filter-bar dividers in manage_native_filters (#45021)
add ec1688facd7 fix(mcp): state that dataset tools are SQL-only and point to semantic tools (#44994)
add 388a10efdb1 fix(dashboards): return 404 when dashboard export hits an inaccessible chart or dataset (#44929)
add d526ee4bd1f feat(semantic): add optional metadata refresh SDK contract (#44834)
add 90b0a1a9160 fix(semantic): map layer views as a collection (#44902)
add 6f6be95995e feat(retention): let a host install purge policies for its own soft-delete roots (#44892)
add fca6bdad57b fix(semantic): reject SQL clauses on semantic views (#44899)
add 888795b90f9 fix(security): bind contextual access checks to the datasource type and id (#45002)
add ae297e910e7 fix(permalink): handle concurrent creation of identical dashboard permalinks (#45059)
add 86a6d1dcf34 chore(deps-dev): bump @types/ws from 8.18.1 to 8.18.2 in /superset-websocket (#45045)
add 9b7797f7b21 chore(deps): bump the storybook group in /docs with 2 updates (#45046)
add 735365e2d18 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#45047)
add 11a22e5ceba fix(post-processing): stop duplicating columns in _append_columns (#45018)
add 001cb574e39 feat(plugin-chart-echarts): add a value axis label control (#43660)
add c4bc0b1e0cc fix(layout): restore growable app shell so injected content above #app doesn't clip it (#45056)
add 1cf9569807c feat(pivot-table): collapse row groups by default (#45030)
add 0cb498d08f2 fix(versioning): refuse a chart restore whose datasource no longer exists (#44925)
add c1908747b16 fix(semantic): hide and ignore series limits that have no series columns (#44909)
add 908d688171d fix(async): show the real error for a failed async chart query (#45054)
add dbd546908a8 feat(semantic-layer): show provider queries from chart results (#44206)
add 100f51240bd perf(security): batch dashboard fallback datasource resolution (#44993)
add d27b7344087 fix(mcp): refuse changes to externally managed dashboards in all dashboard tools (#45062)
add a8a828202f7 fix(versioning): preserve history across savepoint rollback (#45033)
add 9c4ad2497df fix(cache): evict rejected cached GET requests (#45055)
add bdbddb76dc7 fix(semantic): return a client error for unsupported time grains (#45053)
add 0754a86b3e4 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in /superset-websocket (#45072)
add f4c16eb3a4f docs: add DouroECI logo and contributor to In the Wild (#45096)
add 34b3d65cc20 fix(charts): clear perms of charts whose datasource no longer exists (#44926)
add 72ee1fd60df fix(date_parser): use pyparsing snake_case API to silence PyparsingDeprecationWarning (#45094)
add b3d8fdb6061 fix(mcp): don't page MCP_ERROR_HOOK for user-class errors in the last-resort catch (SC-125493) (#45093)
add 1ebfea28efc feat: SIP-209 Improved Alerts & Reports (#44992)
add b2bafd64fa2 chore(ci): configure more grouped dep upgrades across npm subprojects (#44696)
add b327d57165c fix(explore): skip Ctrl/Cmd+Enter query while controls have errors or chart is loading (#44963)
add c45391c1689 fix(explore): show 0 zoom, latitude and longitude in the map view extent tag (#44962)
add 6d090bec82e fix(explore): honor a controlled ControlPopover open prop (#44959)
add b22144a76d4 fix(native-filters): show a clear error instead of "Network error" when filter values fail to load (#44585)
add e10e268e992 fix(explore): dispatch datasource metadata fetch (#44958)
add 489a02e3ea3 fix(semantic-layer): fail incomplete or unverified semantic query results (#44832)
add e9862fb4ab2 fix(dashboard): refresh semantic metadata across edits (#45052)
add 2ec20003ed5 chore: Update CODEOWNERS to include @sadpandajoe (#45120)
add e5c5e918359 feat(mcp): add typed Sunburst chart support (#43771)
add 4ca736d81c5 fix(semantic-layer): require write access for configuration schema enrichment (#45107)
add 6efc896e5b9 test(dashboard): wait for async submenu and debounced validation in flaky tests (#45106)
add 3bc9e9e479f fix(datasets): accept certification fields on dataset column and metric PUT (#45091)
add cd34cc1019f chore(deps): bump chromaui/action from 18.10.1 to 18.10.2 (#45134)
add 1b35374fecb fix(semantic-layer): honor provider preferred time dimension (#44997)
add ffc81d92a2c feat(dashboard): add column allowlist to Group By native filter (#43736)
add 3fc078abe6b fix(soft-delete): preserve a shared datasource permission on purge (#45034)
add a4a0899e92c perf(versioning): defer capture policy until versioned work (#44928)
add 99899bd392f fix(date-parser): reject malformed time ranges instead of scanning everything (#45098)
add 13c5ff8c87f chore(deps-dev): bump wait-on from 9.4.0 to 9.5.1 in /superset-frontend (#45048)
add 61df1692584 chore(deps): bump mapbox-gl from 3.31.0 to 3.32.0 in /superset-frontend (#45049)
add 035ae052525 chore(deps-dev): bump vitest from 5.0.2 to 5.0.3 in /superset-embedded-sdk (#45074)
add 9635e7f1f91 chore(deps): bump the swc group across 2 directories with 1 update (#45118)
add 9e7a05e6ed1 chore(deps-dev): bump @types/node in /superset-embedded-sdk (#45121)
add cda7a1e8189 chore(deps): bump swagger-ui-react from 5.33.0 to 5.33.1 in /docs (#45122)
add cfb0ed61eb8 chore(deps): bump yargs from 18.1.0 to 18.2.0 in /superset-frontend (#45129)
add a8fc576cfe3 chore(deps-dev): bump oxfmt in /docs (#45119)
add cb8ff2885a6 fix(permalink): use a shared lock when re-reading a concurrently created permalink (#45102)
add ab2c69f29cd fix(column-config): allow commas in D3 number formats (#45145)
add e538ebfa2c9 feat(mcp): opt-in compact native tools/list and trimmed tool guidance (#45084)
add 64b02eebed4 fix(mcp): add sort_by option to XYChartConfig (#42627) (#44464)
add 1267bd1acee test(semantic-layer): pin layer list scoping to accessible layers (#45101)
add 8aeb2850914 fix(mcp): keep isError through call_tool and test native tool surface parity (#45081)
add d3c47f6212e chore(deps): bump slack-sdk from 3.44.1 to 3.45.0 (#45116)
add 0edbccc71a8 chore(deps-dev): bump trino from 0.339.0 to 0.340.0 (#45117)
add 5e6156a820c chore(deps-dev): bump gevent from 26.8.0 to 26.9.0 (#45115)
add 461cf9e49af chore(deps): bump sqlalchemy-continuum from 1.7.0 to 1.8.0 (#45114)
add 97ce269b962 chore(deps): bump cryptography from 50.0.1 to 50.0.2 (#45112)
add 2918a7b94d1 feat(i18n): extract translator context comments from source (#44397)
add 82223373a3a chore(deps-dev): update teradatasql requirement from >=20.0.0.68 to >=20.0.0.69 (#45162)
add d48b8486851 chore(deps): bump msgpack from 1.2.2 to 1.2.3 (#45161)
add 7e6aa124e1a chore(deps): bump pyjwt from 2.14.0 to 2.15.1 (#45159)
add 8318398da46 chore(deps): bump the security group across 1 directory with 4 updates (#45143)
add 5faa58e7d2b chore(deps-dev): bump pymssql from 2.4.1 to 2.4.2 (#45156)
add b9e8188ad60 chore(deps): bump simplejson from 4.1.2 to 4.2.0 (#45158)
add d7717743b1f test(utils): add unit test for scalar_to_sequence (#45144)
add f9f2eb283d3 test(sql): pin Druid JSON_VALUE RETURNING parsing (#45131)
add a55b236a5be fix(semantic-layer): fetch view metadata once per query (#45104)
add 76b62d34fba fix(semantic-layer): preserve nullable integer precision in chart data (#45126)
add 38ad1150ecf feat(retention): cap soft-delete purge and version-history prune per run (#45029)
add 04db66b0f66 feat(semantic-layer): invalidate metadata caches on configuration save (#45100)
add fd2740bec1e fix(charts): avoid loading semantic provider metadata before denying chart data access (#45060)
add e229ea4a543 fix(mcp): resolve saved semantic-view chart sources by type (#45067)
add af7978ae74d docs(mcp): document dashboard owner/role/certification governance tools (#43900)
add bae6d10cebc chore(deps): bump react-resize-detector from 7.1.2 to 12.3.0 in /superset-frontend (#45124)
add db7557a7a58 feat(mcp): add typed geographic chart generation (#44148)
add 0e50b64263f fix(bigquery): filter __NULL__ and __UNPARTITIONED__ from max partition query (#44156)
add aef1f70cdfd chore(deps): bump pyparsing from 3.3.2 to 3.3.3 (#45157)
add 0ad650c507e chore(deps): bump mako from 1.4.1 to 1.4.3 (#45188)
add 4dc7ba70ef3 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in /superset-embedded-sdk (#45194)
add 1c116342642 chore(deps-dev): bump jsdom from 30.1.1 to 30.1.2 in /superset-frontend (#45201)
add 713c41e0ba5 chore(deps-dev): bump stylelint from 17.15.0 to 17.16.0 in /superset-frontend (#45200)
add 0c201b4dd2c chore(deps-dev): bump minimizer-webpack-plugin from 5.12.0 to 5.13.0 in /superset-frontend (#45196)
add ea235f25b9e chore(deps-dev): bump google-cloud-bigquery from 3.45.2 to 3.46.1 (#45190)
add 3579cbc6c68 chore(deps-dev): bump @storybook/test-runner from 0.24.5 to 0.26.0 in /superset-frontend in the storybook group (#45073)
add 5e9e6beb4ac chore(deps): bump flask-compress from 1.24 to 1.25 (#45193)
add e2dd50ab340 chore(deps-dev): bump grpcio from 1.83.1 to 1.84.0 (#45192)
add 6d39864102a chore(deps): bump @googleapis/sheets from 18.0.1 to 18.1.0 in /superset-frontend (#45195)
add bc98688d5ff docs: Improve README clarity and consistency (#38957)
add 2c8665f9cbc fix(histogram): normalize before accumulating a cumulative histogram (#44652)
add 726c1ef67c9 fix(impala): cancel pending SQL Lab operations through the live cursor (#44737)
add 90dc7ac3289 fix(databricks): enable equality operators for boolean filters (#36765) (#44355)
add c58db3b704d chore(deps): bump maplibre-gl from 6.11.2 to 6.12.0 in /superset-frontend (#45199)
add 42bbfa49079 chore(deps-dev): update thrift requirement from <1.0.0,>=0.24.0 to >=0.25.0,<1.0.0 (#45191)
add f4fe4e13c47 fix(mcp): support custom user models during dashboard and chart operations (#45036)
add 88a14e9be56 docs(i18n): add a translation guide with shared principles (#45181)
add a4cf0ff09e7 chore(ci): correct download-artifact version comment to v8.0.1 (#45212)
add 209bdafc124 fix(tests): narrow nullable uuid before passing it to KeyValueDAO.get_entry (#45171)
add 2747094d4c2 feat(mcp): add typed Bullet chart support (#43770)
add 02304af9a99 fix(mypy): narrow nullable uuid/perm reads in chart restore version tests (#45080)
add cd526f9e97d chore(deps-dev): bump fastmcp from 3.4.7 to 4.0.3 (#44200)
add ea0687222a5 fix(dashboard): honour DASHBOARD_AUTO_REFRESH_INTERVALS in the refresh dropdown (#44982)
add 11b6997a488 fix(dashboard): drop missing semantic-view controls on restore (#45130)
add f923be702a1 fix(semantic-layer): report incompatible dashboard filters on semantic views instead of dropping them (#45105)
add f774479c990 fix(mcp): allow chart filtering by dataset ID (#44950)
add 60c66fe8d50 fix(explore): honor chart edit permissions for titles (#45146)
add 59404f47cd3 feat(mcp): target semantic views in chart tools (#44393)
add 945d8bbd632 fix(mcp): promote tools whose full names appear in a search query (#45149)
add 63a7a6e4eca chore(deps): bump chrono-node from 2.10.1 to 2.10.2 in /superset-frontend (#45227)
add dd1312b3c2b chore(deps-dev): bump the typescript-eslint group across 1 directory with 2 updates (#45224)
add aa321aab31d chore(deps): bump chromaui/action from 18.10.2 to 18.11.0 (#45222)
add a26c984279c chore(deps-dev): bump oxlint from 1.86.0 to 1.87.0 in /docs (#45226)
add 962272b6f20 feat(semantic-layer): allow toggling SEMANTIC_LAYERS at runtime (#45061)
add f154d23a954 fix(dashboard): reconcile position_json against membership on save (#44028)
add b39e1e0db71 chore(ci): correct upload-artifact version comment to v7.0.1 (#45229)
add 8f13b2b2e69 chore(ci): correct upload-artifact version comment in translations workflow (#45213)
add 9c70fa40159 chore(deps-dev): bump oxfmt from 0.71.0 to 0.72.0 in /docs (#45225)
add 1cedab01e9e chore(deps): bump geostyler-openlayers-parser from 5.7.1 to 5.8.0 in /superset-frontend (#45077)
add 0f875cadbe0 fix(network): refine address classification (#45230)
add 1578b8cbc11 fix(semantic-layer): restore value suggestions for semantic view filters (#45109)
add 6d974e19c51 fix(mcp): keep the saved chart variant when update_chart omits it (#45221)
add f18c034a689 fix(connection): let SupersetClient.postForm accept an absolute url (#45204)
add 1caea41f425 docs: give bare relative links an explicit extension (#43170)
add e7ca70c784e fix(datasource): apply target-table access check on same-database repoint (#44080)
add 1b10345f3bf docs(semantic-layer): write down member identity, grain, NULL and ordering rules in the SDK (#45108)
add 61a0fd28ec6 fix(semantic-layer): improve credential entry and connection feedback (#45173)
add 7aadf35e7d7 feat(mcp): accept a callable for MCP_DATASET_ROLE_ALLOWLIST (#45231)
add 139a06eee15 chore(ci): correct upload-artifact version comment to v7.0.1 (#45211)
add 4da3ab9277b refactor(db_engine_specs): dedupe boolean-coercion logic for Databricks/Spark (#45202)
add 952ff3b22f4 perf(filters): use useDeferredValue in SelectFilterPlugin (#44880)
add 488810d8395 fix(db-engine): make cachetools import optional in aws_iam (#38269)
add 8503b6b0b5a fix: clamp table pagination index when filtered data shrinks (#31403) (#39661)
add fb99e4b530a fix(embedded): fail closed when the guest-user check can't resolve a principal (#43896)
add bffb5638015 fix(post-processing): raise when a rename would duplicate a column label (#45043)
add 0cd13e92c1d fix(post-processing): keep the caller's index when parsing geography columns (#45086)
add 6d4dc0d3363 fix(bigquery): expose STRUCT fields as columns on virtual datasets (#45150)
add 333b6be7d71 fix(country-map): keep South Africa's islands in frame and fix hover … (#45000)
add 85aa56420a8 fix(explore): XAxisSortControl follows the value prop (#44956)
add fe46e76c510 fix(dashboard): remove duplicate spacing above out-of-scope filters section (#44954)
add 8ace079d8de feat(semantic-layers): add safe containment result cache (#42760)
add c0b713746b1 fix(mcp): make authlib.jose deprecation filter survive authlib's own simplefilter (#45219)
add 963031c209f fix(graph): distinguish null categories from literal labels (#44790)
add 1c4aba2453d docs(databases): refresh ClickHouse guide and support dark-theme logos (#44901)
add 718572cf29a chore(deps-dev): bump sqlalchemy-hana from 3.0.3 to 5.0.0 (#45189)
add d6c7ac23183 fix(mypy): silence superset-core mirror-case union-attr/assignment errors (#45138)
add f7a1c8f33bd docs: fix broken anchor links in intro, README and tasks guide (#45206)
add 8796ba16ae7 fix(clickhouse): bump Altinity.Cloud's documented clickhouse-connect floor (#45249)
add 6ded7caa0a9 fix(mcp): refuse an update that would drop a SQL trendline column (#45236)
add b840a4cef38 feat(plugin-chart-echarts): add cross-filtering to the Bubble chart (#45223)
add 48eb96aa843 fix(releasing): various release tooling improvements (#45253)
add f19a71be433 fix(semantic-layer): narrow ValidatedQueryObject.metrics to list[str] (#45185)
add 3cbdff6b6b7 fix(mcp): reject unknown semantic compatibility selections (#45153)
add 1fced034d37 fix(semantic-layer): return 4xx for provider validation errors in chart data (#45110)
add 114d32b12d1 feat(semantic-layer): gate Table pagination on row offset support (#44452)
add 55cb2eb0df5 fix(mcp): only flag get_catalog pages truncated when entries are held back (#45148)
add f5404f7eae3 fix(semantic-layer): preserve NULL selections in chart filters (#45133)
add 8175e0ecc7b fix(semantic-views): hide stale dependent options while they refresh (#44995)
add d970d634f71 fix(mcp): reject apply_dashboard_filters select values missing from the data (#45242)
add bf0a9cc3271 fix(semantic-layer): require data access for semantic view edits (#45154)
add 81d4137b98b fix(semantic-layer): block deletion of sources with dependent assets (#45071)
add 7f1bfaba4b2 fix(reports): apply the server-pagination row limit to embedded chart data (#45099)
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 54b2aac54b1 fix(databricks): support cancelling SQL Lab queries on SEA connections
add 86fba0a75f1 test(databricks): stub databricks driver module in cancel_query tests
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 (324c50c7958)
\
N -- N -- N refs/heads/databricks-stop-query (86fba0a75f1)
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 | 2 +-
.cursor/rules/dev-standard.mdc | 4 +-
.dockerignore | 1 -
.envrc.example | 1 -
.github/CODEOWNERS | 22 +-
.github/actions/change-detector/action.yml | 8 +
.github/actions/chart-testing-action | 1 -
.github/actions/setup-backend/action.yml | 5 +-
.github/dependabot.yml | 96 +-
.github/labeler.yml | 2 -
.github/workflows/asf-allowlist-check.yml | 2 +-
.github/workflows/bashlib.sh | 281 +-
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/caches.js | 6 -
.github/workflows/chromatic.yml | 134 +
.github/workflows/codeql-analysis.yml | 15 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/embedded-sdk-release.yml | 2 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/frontend-bundle-size-nightly.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/pre-commit.yml | 2 +-
.github/workflows/python-nightly-canary.yml | 94 +
.github/workflows/release.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 6 +-
.github/workflows/superset-docs-verify.yml | 6 +-
.github/workflows/superset-e2e.yml | 254 +-
.github/workflows/superset-extensions-cli.yml | 4 +-
.github/workflows/superset-frontend.yml | 25 +-
.github/workflows/superset-helm-lint-test.yml | 19 +-
.github/workflows/superset-playwright.yml | 222 -
.../workflows/superset-python-integrationtest.yml | 58 +-
.github/workflows/superset-python-presto-hive.yml | 4 +-
.../workflows/superset-python-unittest-report.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 13 +-
.../workflows/superset-translations-comment.yml | 2 +-
.github/workflows/superset-translations.yml | 6 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/tag-release.yml | 35 +-
.github/workflows/tech-debt.yml | 2 +-
.github/workflows/testcontainers.yml | 4 +-
.gitmodules | 3 -
.grype.yaml | 39 +
.pre-commit-config.yaml | 3 +-
AGENTS.md | 10 +-
Dockerfile | 8 +-
Makefile | 8 -
README.md | 13 +-
RELEASING/Dockerfile.from_local_tarball | 13 +-
RELEASING/Dockerfile.from_svn_tarball | 13 +-
RELEASING/README.md | 23 +-
RELEASING/changelog.py | 220 +-
RELEASING/requirements.txt | 2 +
RESOURCES/INTHEWILD.yaml | 3 +-
RESOURCES/STANDARD_ROLES.md | 6 -
UPDATING.md | 862 +-
docker-compose-light.yml | 1 -
docker-compose.yml | 3 -
docker/.env | 3 -
docker/.env-local.example | 1 -
docker/apt-install.sh | 8 +
docker/docker-bootstrap.sh | 7 -
docker/docker-init.sh | 31 +-
docker/pythonpath_dev/superset_config.py | 13 -
docs/admin_docs/configuration/alerts-reports.mdx | 190 +-
.../configuration/async-queries-celery.mdx | 7 +
docs/admin_docs/configuration/cache.mdx | 73 +-
.../configuration/configuring-superset.mdx | 96 +
.../configuration/dashboard-performance.mdx | 4 +-
docs/admin_docs/configuration/feature-flags.mdx | 29 +
docs/admin_docs/configuration/google-sheets.mdx | 49 +
.../importing-exporting-datasources.mdx | 54 +
docs/admin_docs/configuration/mcp-server.mdx | 1128 +-
docs/admin_docs/installation/docker-builds.mdx | 1 -
docs/developer_docs/api.mdx | 18 +
.../contributing/development-setup.md | 11 +-
docs/developer_docs/contributing/howtos.md | 135 +-
.../contributing/translation-guide.md | 104 +
.../extensions/contribution-types.md | 189 +-
.../extensions/extension-points/chat.md | 4 +
docs/developer_docs/extensions/mcp.md | 121 +
docs/developer_docs/extensions/overview.md | 22 +-
docs/developer_docs/extensions/semantic-filters.md | 79 +
docs/developer_docs/extensions/tasks.md | 2 +-
.../guidelines/frontend-style-guidelines.md | 2 +-
docs/developer_docs/semantic-layer-cache-clear.md | 106 +
docs/developer_docs/semantic-query-errors.md | 80 +
.../developer_docs/semantic-result-completeness.md | 70 +
docs/developer_docs/testing/backend-testing.md | 3 +-
docs/developer_docs/testing/e2e-testing.md | 28 +-
docs/developer_docs/testing/overview.md | 2 +-
docs/developer_docs/testing/testing-guidelines.md | 31 +-
docs/docs/index.mdx | 4 +-
docs/docs/quickstart.mdx | 3 +
.../creating-your-first-dashboard.mdx | 84 +
docs/docs/using-superset/embedding.mdx | 24 +-
docs/docs/using-superset/exploring-data.mdx | 91 +
.../using-superset/exporting-dashboard-data.mdx | 178 +-
docs/docs/using-superset/number-formatting.mdx | 18 +-
docs/docs/using-superset/recently-archived.mdx | 293 +-
.../using-superset/semantic-layer-connections.mdx | 63 +
.../using-superset/semantic-member-selections.mdx | 114 +
.../docs/using-superset/using-ai-with-superset.mdx | 157 +
docs/docs/using-superset/version-history.mdx | 237 +-
docs/docusaurus.config.ts | 1 -
docs/package.json | 33 +-
docs/scripts/generate-database-docs.mjs | 84 +
docs/sidebarTutorials.js | 2 +
docs/sip/pivot-table-aggregation-parity.md | 112 +
docs/src/components/databases/DatabaseLogo.tsx | 62 +
docs/src/components/databases/DatabaseLogoWall.tsx | 9 +-
docs/src/components/databases/DatabasePage.tsx | 59 +-
docs/src/components/databases/types.ts | 8 +
docs/src/data/databases.json | 120 +-
docs/src/pages/index.tsx | 11 +-
docs/static/feature-flags.json | 17 +-
docs/static/img/databases/clickhouse-dark.svg | Bin 0 -> 4480 bytes
docs/static/img/databases/clickhouse-mark-dark.svg | Bin 0 -> 960 bytes
docs/static/img/databases/clickhouse-mark.svg | Bin 0 -> 963 bytes
docs/static/img/databases/clickhouse.svg | Bin 0 -> 4483 bytes
docs/static/img/logos/douroeci.png | Bin 0 -> 22657 bytes
.../img/version-history/recently-archived.jpg | Bin 0 -> 23897 bytes
.../img/version-history/version-history-panel.jpg | Bin 0 -> 19792 bytes
.../version-history/version-history-preview.jpg | Bin 0 -> 64287 bytes
docs/static/resources/openapi.json | 2142 +-
.../databases/supported/apache-doris.mdx | 8 +
.../version-6.1.0/databases/supported/mysql.mdx | 18 +
docs/yarn.lock | 1581 +-
pyproject.toml | 148 +-
requirements/base.in | 10 +-
requirements/base.txt | 34 +-
requirements/development.in | 18 +-
requirements/development.txt | 83 +-
scripts/change_detector.py | 83 +
scripts/cypress_run.py | 167 -
scripts/docker-compose-up.sh | 4 -
scripts/docker_release_target.py | 129 +
scripts/eslint.sh | 30 -
scripts/translations/babel_update.sh | 22 +-
scripts/translations/backfill_po.py | 79 +-
scripts/translations/check_pot_drift.py | 176 +-
superset-core/src/superset_core/queries/types.py | 3 +
.../src/superset_core/semantic_layers/errors.py | 76 +
.../src/superset_core/semantic_layers/layer.py | 79 +-
.../src/superset_core/semantic_layers/types.py | 174 +-
.../src/superset_core/semantic_layers/view.py | 96 +-
superset-core/tests/semantic_layers/test_errors.py | 66 +
superset-core/tests/semantic_layers/test_view.py | 96 +
superset-embedded-sdk/package-lock.json | 709 +-
superset-embedded-sdk/package.json | 16 +-
superset-embedded-sdk/src/index.test.ts | 349 +-
superset-embedded-sdk/src/index.ts | 374 +-
superset-embedded-sdk/testrig/README.md | 89 +
superset-embedded-sdk/testrig/drive.mjs | 655 +
superset-embedded-sdk/testrig/embedded.html | 127 +
superset-embedded-sdk/testrig/host.html | 239 +
superset-embedded-sdk/testrig/server.mjs | 199 +
.../src/superset_extensions_cli/cli.py | 7 +-
.../templates/frontend/package.json.j2 | 8 +-
superset-extensions-cli/tests/test_cli_build.py | 4 +-
superset-frontend/.gitignore | 2 -
.../playwright.storybook-ci.config.ts} | 22 +-
superset-frontend/.storybook/setup-stories.test.ts | 156 +
superset-frontend/.storybook/setup-stories.ts | 179 +
.../types.ts => .storybook/stories.spec.ts} | 10 +-
superset-frontend/.storybook/test-runner.ts | 38 -
superset-frontend/babel.config.js | 2 +-
.../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/cypress-base/.gitignore | 4 -
superset-frontend/cypress-base/cypress.config.ts | 84 -
.../cypress/e2e/dashboard/drilltodetail.test.ts | 614 -
.../e2e/dashboard/shared_dashboard_functions.ts | 201 -
.../cypress-base/cypress/e2e/dashboard/utils.ts | 559 -
.../cypress-base/cypress/e2e/explore/chart.test.js | 157 -
.../cypress-base/cypress/e2e/explore/utils.ts | 76 -
.../e2e/explore/visualizations/shared.helper.js | 139 -
.../cypress-base/cypress/fixtures/charts.json | 38 -
.../cypress-base/cypress/fixtures/dashboards.json | 46 -
.../cypress-base/cypress/support/directories.ts | 678 -
.../cypress-base/cypress/support/e2e.ts | 455 -
.../cypress-base/cypress/support/index.d.ts | 92 -
.../cypress-base/cypress/utils/index.ts | 121 -
.../cypress-base/cypress/utils/parsePostForm.ts | 60 -
.../cypress-base/cypress/utils/vizPlugins.ts | 104 -
superset-frontend/cypress-base/package-lock.json | 15006 ---------
superset-frontend/cypress-base/package.json | 57 -
superset-frontend/cypress-base/tsconfig.json | 16 -
superset-frontend/cypress_build.sh | 46 -
superset-frontend/eslint.config.minimal.js | 131 -
superset-frontend/jest.config.js | 19 +-
superset-frontend/oxlint.custom-lint-rules.mts | 121 +
superset-frontend/oxlint.json | 21 +-
superset-frontend/package-lock.json | 31469 ++++++++-----------
superset-frontend/package.json | 216 +-
.../packages/generator-superset/package.json | 7 +-
.../generator-superset/test/plugin-chart.test.ts | 6 +-
.../packages/superset-core/package.json | 2 -
.../superset-core/src/theme/GlobalStyles.test.tsx | 67 +
.../superset-core/src/theme/GlobalStyles.tsx | 9 +-
.../src/sections/sections.tsx | 7 +
.../src/shared-controls/dndControls.tsx | 1 +
.../src/shared-controls/matrixifyControls.tsx | 1 +
.../src/shared-controls/sharedControls.tsx | 34 +-
.../superset-ui-chart-controls/src/types.ts | 2 +
.../src/utils/D3Formatting.ts | 1 +
.../src/utils/getColorFormatters.ts | 84 +-
.../src/utils/headerGroups.test.ts | 1065 +
.../src/utils/headerGroups.ts | 903 +
.../superset-ui-chart-controls/src/utils/index.ts | 2 +
.../src/utils/isServerPaginationUnsupported.ts | 70 +
.../packages/superset-ui-core/package.json | 20 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 63 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 34 +-
.../src/chart/models/ChartProps.ts | 10 +
.../superset-ui-core/src/chart/types/VizType.ts | 1 +
.../components/CachedLabel/TooltipContent.test.tsx | 25 +
.../src/components/CachedLabel/TooltipContent.tsx | 21 +-
.../src/components/CachedLabel/index.tsx | 14 +-
.../src/components/CachedLabel/types.ts | 3 +
.../components/DeleteModal/DeleteModal.test.tsx | 37 +-
.../src/components/DeleteModal/index.tsx | 14 +-
.../src/components/DeleteModal/types.ts | 4 +-
.../src/components/Loading/Loading.stories.tsx | 5 +-
.../components/MetadataBar/MetadataBar.test.tsx | 40 +-
.../src/components/MetadataBar/MetadataBar.tsx | 6 +-
.../src/components/Select/AsyncSelect.test.tsx | 8 +
.../src/components/Select/AsyncSelect.tsx | 3 +-
.../src/components/Select/Select.test.tsx | 9 +
.../src/components/Select/Select.tsx | 3 +-
.../src/components/Table/VirtualTable.test.tsx | 81 +
.../src/components/Table/VirtualTable.tsx | 24 +-
.../TableCollection/TableCollection.stories.tsx | 22 +-
.../TableCollection/TableCollection.test.tsx | 63 +
.../src/components/TableCollection/index.tsx | 7 +-
.../src/components/TableCollection/utils.tsx | 93 +-
.../superset-ui-core/src/components/Tag/index.tsx | 1 +
.../superset-ui-core/src/components/index.ts | 6 +-
.../src/connection/SupersetClientClass.ts | 31 +-
.../superset-ui-core/src/currency-format/utils.ts | 22 +
.../factories/createMemoryFormatter.ts | 11 +-
.../src/query/buildQueryContext.ts | 15 +-
.../superset-ui-core/src/query/buildQueryObject.ts | 10 +-
.../superset-ui-core/src/query/extractExtras.ts | 22 +
.../src/query/extractQueryFields.ts | 4 +
.../src/query/getClientErrorObject.ts | 29 +-
.../packages/superset-ui-core/src/query/index.ts | 2 +
.../superset-ui-core/src/query/processFilters.ts | 3 +
.../src/query/semanticSelection.ts | 42 +
.../superset-ui-core/src/query/types/Dashboard.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 1 +
.../src/query/types/QueryFormData.ts | 12 +-
.../src/query/types/QueryResponse.ts | 8 +
.../src/time-format/utils/normalizeTimestamp.ts | 18 +
.../superset-ui-core/src/utils/featureFlags.ts | 1 +
.../test/chart/models/ChartProps.test.ts | 22 +-
.../test/connection/SupersetClientClass.test.ts | 27 +
.../test/currency-format/utils.test.ts | 33 +
.../factories/createMemoryFormatter.test.ts | 7 +
.../test/query/buildQueryContext.test.ts | 41 +
.../test/query/buildQueryObject.test.ts | 76 +-
.../test/query/extractExtras.test.ts | 62 +
.../test/query/extractQueryFields.test.ts | 12 +
.../test/query/getClientErrorObject.test.ts | 66 +
.../time-format/utils/normalizeTimestamp.test.ts | 70 +
.../superset-ui-core/types/react-table-config.d.ts | 149 -
.../superset-ui-core}/types/react-table.d.ts | 54 +-
superset-frontend/playwright.config.ts | 46 +-
.../playwright/components/core/Menu.ts | 7 +
.../playwright/components/core/Radio.ts | 69 +
.../playwright/components/core/Select.ts | 36 +-
.../playwright/components/core/index.ts | 1 +
.../components/dashboard/DashboardFilterBar.ts | 6 +-
.../components/modals/EditDatasetModal.ts | 7 +-
.../playwright/components/modals/SaveChartModal.ts | 130 +
.../playwright/components/modals/index.ts | 1 +
superset-frontend/playwright/helpers/api/chart.ts | 44 +
.../playwright/helpers/api/dashboard.ts | 37 +
superset-frontend/playwright/pages/ExplorePage.ts | 95 +
.../playwright/tests/chart/chart-test-helpers.ts | 24 +-
.../tests/chart/handlebars-format-date.spec.ts | 2 +-
.../tests/dashboard/clear-all-filters.spec.ts | 112 +
.../dashboard/dashboard-drill-to-detail.spec.ts | 3 -
.../tests/dashboard/dashboard-test-helpers.ts | 464 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 2 +-
.../global-async-query-resilience.spec.ts | 600 +
.../tests/dashboard/global-async-query.spec.ts | 462 +
.../mixed-chart-dashboard-filters.spec.ts | 2 +-
.../tests/embedded/pivot-collapse-state.spec.ts | 2 +-
.../playwright/tests/experimental/README.md | 123 -
.../explore/cross-referenced-dashboards.spec.ts | 194 +
.../tests/explore/explore-no-results.spec.ts | 59 +
.../playwright/tests/explore/explore-save.spec.ts | 135 +
.../tests/explore/explore-test-helpers.ts | 50 +
.../explore/results-tab-reuse.spec.ts | 16 +-
.../tests/mobile/mobile-dashboard.spec.ts | 65 +-
.../tests/sqllab/global-async-query-sqllab.spec.ts | 78 +
superset-frontend/playwright/utils/constants.ts | 18 +
.../src/AgGridTable/components/CustomHeader.tsx | 3 +-
.../src/AgGridTable/index.tsx | 120 +-
.../src/AgGridTableChart.tsx | 44 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 97 +-
.../src/renderers/JsonCellRenderer.tsx | 600 +
.../src/renderers/TextCellRenderer.tsx | 59 +-
.../src/renderers/jsonCellRowHeight.ts | 61 +
.../src/renderers/parseJsonCellValue.ts | 234 +
.../src/styles/index.tsx | 35 +
.../src/transformProps.ts | 72 +-
.../plugin-chart-ag-grid-table/src/types.ts | 8 +
.../src/utils/externalAPIs.ts | 2 +
.../src/utils/formatValue.ts | 3 +-
.../src/utils/getCellStyle.ts | 8 +-
.../src/utils/isJsonCellActionTarget.ts | 56 +
.../src/utils/mainComparison.ts} | 39 +-
.../src/utils/useColDefs.ts | 27 +-
.../test/AgGridTableChart.test.tsx | 328 +-
.../test/JsonCellRenderer.test.tsx | 674 +
.../test/buildQuery.test.ts | 23 +
.../test/cellSelectionWiring.test.tsx | 88 +
.../test/controlPanel.test.ts | 115 +-
.../test/controlPanel.test.tsx | 396 +-
.../test/transformProps.test.ts | 268 +-
.../test/utils/getCellStyle.test.ts | 15 +
.../test/utils/mainComparison.test.ts | 43 +
.../test/utils/useColDefs.test.ts | 40 +
.../src/vendor/cal-heatmap.ts | 60 +-
.../plugin-chart-calendar/test/cal-heatmap.test.ts | 40 +
.../src/util/transformPropsUtil.ts | 8 +
.../test/util/pieColors.test.ts | 203 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 227629 -> 228908 bytes
.../plugin-chart-country-map/src/CountryMap.ts | 37 +-
.../src/ReactCountryMap.tsx | 5 +-
.../plugin-chart-country-map/src/controlPanel.ts | 23 +
.../src/countries/south_africa.geojson | Bin 57043 -> 57075 bytes
.../src/countries/uk.geojson | Bin 477503 -> 477503 bytes
.../src/normalizeRegions.ts | 129 +
.../plugin-chart-country-map/src/regions.ts | 383 +
.../plugin-chart-country-map/src/transformProps.ts | 53 +-
.../test/CountryMap.test.tsx | 109 +
.../test/controlPanel.test.ts} | 35 +-
.../test/geographicRendering.test.tsx | 296 +
.../test/normalizeRegions.test.ts | 251 +
.../test/south_africa.geojson.test.ts | 57 +
.../test/transformProps.test.ts | 125 +
.../BigNumber/BigNumberTotal/controlPanel.test.ts | 10 +
.../src/BigNumber/BigNumberTotal/controlPanel.ts | 2 +
.../BigNumberTotal/transformProps.test.ts | 2 +
.../src/BigNumber/BigNumberTotal/transformProps.ts | 2 +
.../src/BigNumber/BigNumberViz.test.tsx | 338 +-
.../src/BigNumber/BigNumberViz.tsx | 23 +-
.../BigNumberWithTrendline/controlPanel.tsx | 2 +
.../BigNumberWithTrendline/transformProps.test.ts | 74 +
.../BigNumberWithTrendline/transformProps.ts | 2 +
.../src/BigNumber/sharedControls.ts | 19 +
.../plugin-chart-echarts/src/BigNumber/types.ts | 4 +
.../src/Bubble/EchartsBubble.tsx | 151 +-
.../plugin-chart-echarts/src/Bubble/constants.ts | 3 +-
.../plugin-chart-echarts/src/Bubble/crossFilter.ts | 226 +
.../plugin-chart-echarts/src/Bubble/index.ts | 8 +-
.../src/Bubble/transformProps.ts | 70 +-
.../plugin-chart-echarts/src/Bubble/types.ts | 9 +-
.../src/Butterfly/Butterfly.tsx | 16 +-
.../src/Butterfly/transformProps.ts | 11 +-
.../src/Candlestick/EchartsCandlestick.tsx | 174 +
.../src/Candlestick/buildQuery.ts} | 49 +-
.../src/Candlestick/constants.ts | 61 +
.../src/Candlestick/controlPanel.tsx | 417 +
.../src/Candlestick/images/example1-dark.png | Bin 0 -> 55933 bytes
.../src/Candlestick/images/example1.png | Bin 0 -> 56139 bytes
.../src/Candlestick/images/thumbnail-dark.png | Bin 0 -> 31389 bytes
.../src/Candlestick/images/thumbnail.png | Bin 0 -> 31318 bytes
.../src/{Bubble => Candlestick}/index.ts | 53 +-
.../src/Candlestick/transformProps.ts | 770 +
.../plugin-chart-echarts/src/Candlestick/types.ts | 84 +
.../plugin-chart-echarts/src/Candlestick/utils.ts | 91 +
.../src/Funnel/EchartsFunnel.tsx | 19 +-
.../src/Funnel/transformProps.ts | 15 +-
.../src/Gantt/EchartsGantt.tsx | 23 +-
.../plugin-chart-echarts/src/Gantt/constants.ts | 9 +
.../src/Gantt/transformProps.ts | 63 +-
.../src/Graph/EchartsGraph.tsx | 8 +
.../src/Graph/transformProps.ts | 62 +-
.../src/Heatmap/controlPanel.tsx | 12 +-
.../src/Heatmap/transformProps.ts | 17 +-
.../plugin-chart-echarts/src/Heatmap/types.ts | 6 +
.../src/Histogram/Histogram.tsx | 17 +-
.../src/Histogram/transformProps.ts | 10 +-
.../src/MixedTimeseries/EchartsMixedTimeseries.tsx | 9 +
.../src/MixedTimeseries/controlPanel.tsx | 2 +
.../src/MixedTimeseries/transformProps.ts | 110 +-
.../src/MixedTimeseries/types.ts | 2 +
.../plugin-chart-echarts/src/Pie/EchartsPie.tsx | 19 +-
.../plugin-chart-echarts/src/Pie/transformProps.ts | 19 +-
.../src/Radar/EchartsRadar.tsx | 19 +-
.../src/Radar/transformProps.ts | 15 +-
.../src/Timeseries/Area/controlPanel.tsx | 2 +
.../src/Timeseries/EchartsTimeseries.test.tsx | 117 +-
.../src/Timeseries/EchartsTimeseries.tsx | 48 +-
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 16 +-
.../src/Timeseries/Regular/Line/controlPanel.tsx | 2 +
.../Timeseries/Regular/Scatter/controlPanel.tsx | 2 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 2 +
.../src/Timeseries/Step/controlPanel.tsx | 2 +
.../src/Timeseries/constants.ts | 1 +
.../src/Timeseries/transformProps.ts | 191 +-
.../src/Timeseries/transformers.ts | 57 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../src/Waterfall/EchartsWaterfall.tsx | 16 +-
.../src/components/Echart.test.tsx | 4 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 7 +-
.../plugins/plugin-chart-echarts/src/constants.ts | 24 +-
.../plugins/plugin-chart-echarts/src/controls.tsx | 11 +
.../plugins/plugin-chart-echarts/src/index.ts | 2 +
.../plugin-chart-echarts/src/utils/formatters.ts | 47 +-
.../src/utils/legendEventHandlers.test.ts | 275 +
.../src/utils/legendEventHandlers.ts | 131 +
.../plugin-chart-echarts/src/utils/series.ts | 317 +-
.../test/BoxPlot/buildQuery.test.ts | 20 +
.../test/Bubble/EchartsBubble.test.tsx | 335 +
.../test/Bubble/crossFilter.test.ts | 129 +
.../test/Bubble/transformProps.test.ts | 134 +
.../test/Bullet/buildQuery.test.ts | 15 +
.../test/Bullet/transformProps.test.ts | 172 +-
.../test/Butterfly/Butterfly.test.tsx | 32 +-
.../test/Candlestick/EchartsCandlestick.test.tsx | 325 +
.../test/Candlestick/buildQuery.test.ts | 57 +
.../test/Candlestick/controlPanel.test.ts | 257 +
.../test/Candlestick/transformProps.test.ts | 1271 +
.../test/Candlestick/utils.test.ts | 53 +
.../test/Gantt/transformProps.test.ts | 261 +
.../test/Graph/categoryIdentity.test.ts | 398 +
.../test/Graph/transformProps.test.ts | 38 +
.../test/Heatmap/transformProps.test.ts | 67 +-
.../test/MixedTimeseries/transformProps.test.ts | 41 +
.../test/Rose/buildQuery.test.ts | 12 +
.../test/Timeseries/Bar/controlPanel.test.ts | 62 +-
.../Bar/sparseSubDailyBarGeometry.test.ts | 505 +
.../test/Timeseries/Bar/transformProps.test.ts | 101 +-
.../test/Timeseries/EchartsTimeseries.test.tsx | 13 +-
.../test/Timeseries/transformProps.test.ts | 482 +
.../test/Timeseries/transformers.test.ts | 17 +
.../test/Treemap/EchartsTreemap.test.tsx | 123 +
.../test/utils/eventHandlers.test.ts | 74 +
.../test/utils/formatters.test.ts | 155 +
.../plugin-chart-echarts/test/utils/series.test.ts | 351 +-
.../plugins/plugin-chart-handlebars/package.json | 4 +-
.../plugin-chart-horizon/test/buildQuery.test.ts | 11 +
.../plugin-chart-partition/test/buildQuery.test.ts | 13 +
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/PivotTableChart.tsx | 3 +
.../src/plugin/controlPanel.tsx | 28 +-
.../src/plugin/transformProps.ts | 2 +
.../src/react-pivottable/Styles.ts | 98 +-
.../src/react-pivottable/TableRenderers.tsx | 206 +-
.../src/react-pivottable/utilities.ts | 46 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 5 +
.../test/plugin/buildQuery.test.ts | 49 +
.../test/react-pivottable/Styles.test.tsx | 328 +
.../test/react-pivottable/tableRenders.test.tsx | 468 +
.../test/react-pivottable/utilities.test.ts | 217 +-
.../plugin-chart-pivot-table/test/testData.ts | 68 +
.../plugin-chart-point-cluster-map/package.json | 4 +-
.../src/MapLibre.tsx | 62 +-
.../test/MapLibre.test.tsx | 31 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 20 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 5 +
.../plugins/plugin-chart-table/src/TableChart.tsx | 210 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 85 +-
.../plugin-chart-table/src/controlPanel.tsx | 146 +-
.../plugin-chart-table/src/transformProps.ts | 85 +-
.../plugins/plugin-chart-table/src/types.ts | 5 +
.../plugin-chart-table/src/utils/headerGroups.ts} | 19 +-
.../test/DataTable/DataTable.test.tsx | 95 +-
.../plugin-chart-table/test/TableChart.test.tsx | 446 +
.../plugin-chart-table/test/buildQuery.test.ts | 407 +
.../plugin-chart-table/test/controlPanel.test.ts | 243 +-
.../plugin-chart-table/test/controlPanel.test.tsx | 634 +-
.../plugin-chart-table/test/headerGroups.test.ts | 301 +
.../plugins/plugin-chart-world-map/src/WorldMap.ts | 13 +-
.../plugin-chart-world-map/src/controlPanel.ts | 2 +
.../plugin-chart-world-map/src/countries.ts | 36 +-
.../plugin-chart-world-map/src/transformData.ts | 49 +-
.../plugin-chart-world-map/src/transformProps.ts | 20 +-
.../plugin-chart-world-map/src/worldGeometry.ts | 198 +
.../plugin-chart-world-map/test/WorldMap.test.ts | 92 +
.../test/controlPanel.test.ts} | 35 +-
.../test/transformData.test.ts | 169 +
.../test/transformProps.test.ts | 52 +
.../plugins/preset-chart-deckgl/package.json | 29 +-
.../src/DeckGLContainer.test.tsx | 95 +-
.../preset-chart-deckgl/src/DeckGLContainer.tsx | 17 +-
.../src/components/DeckGLOverlayMapLibre.test.tsx | 80 +
.../src/components/DeckGLOverlayMapLibre.tsx | 8 +-
.../src/layers/Contour/Contour.tsx | 2 +-
.../src/layers/Geojson/Geojson.test.tsx | 22 +
.../src/layers/Scatter/buildQuery.test.ts | 24 +
.../src/layers/Scatter/buildQuery.ts | 7 +-
.../src/layers/Scatter/controlPanel.test.ts} | 35 +-
.../src/layers/Scatter/controlPanel.ts | 2 +
.../src/layers/Scatter/transformProps.test.ts | 324 +-
.../src/layers/Scatter/transformProps.ts | 102 +-
.../preset-chart-deckgl/src/layers/spatialUtils.ts | 7 +-
.../src/layers/utils/metricUtils.ts | 17 +
superset-frontend/scripts/build.js | 21 +-
superset-frontend/scripts/check-custom-rules.js | 213 +-
superset-frontend/scripts/copyAssets.js | 56 -
.../scripts/internal/oxlint-metrics-uploader.js | 174 +-
.../TooltipContent.tsx => scripts/po2json-cli.js} | 41 +-
superset-frontend/scripts/po2json.js | 96 +
superset-frontend/scripts/po2json.sh | 6 +-
.../fixtures/mockSemanticDashboardDatasources.ts | 177 +
.../spec/helpers/geographicControlPanel.ts | 75 +
.../spec/helpers/sourceTreeScanner.ts | 1 -
.../spec/scripts/oxlint-metrics-uploader.test.ts | 327 +-
superset-frontend/spec/scripts/po2json.test.ts | 130 +
.../src/SqlLab/actions/sqlLab.test.ts | 57 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 32 +-
.../ExploreCtasResultsButton.test.tsx | 11 +-
.../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 28 +-
.../DynamicGroupBy/DynamicGroupByPlugin.test.tsx | 56 +
.../DynamicGroupBy/DynamicGroupByPlugin.tsx | 52 +-
.../DynamicGroupBy/columnAllowlist.test.ts | 67 +
.../components/DynamicGroupBy/columnAllowlist.ts | 105 +
.../components/DynamicGroupBy/types.ts | 5 +
.../src/components/Chart/Chart.test.tsx | 26 +
.../ChartContextMenu/ChartContextMenu.test.tsx | 2 +-
.../src/components/Chart/ChartRenderer.test.tsx | 52 +-
.../src/components/Chart/ChartRenderer.tsx | 23 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 2 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 74 +-
.../components/Chart/MenuItemWithTruncation.tsx | 5 +-
.../useDrillDetailMenuItems.test.tsx | 26 +
.../Datasource/ChangeDatasourceModal/index.tsx | 2 +-
.../Datasource/DatasourceModal/index.tsx | 19 +-
.../CollectionTable/CollectionTable.test.tsx | 236 +-
.../components/CollectionTable/index.tsx | 75 +-
.../DatasourceEditor/DatasourceEditor.tsx | 139 +-
.../tests/DatasourceEditor.test.tsx | 31 +
.../FilterableTable/exactDecimals.test.tsx | 92 +
.../src/components/FilterableTable/index.tsx | 41 +-
.../components/FilterableTable/sortResults.test.ts | 238 +
.../src/components/FilterableTable/sortResults.ts | 180 +
.../src/components/GridTable/index.tsx | 10 +-
.../src/components/ListView/CardCollection.tsx | 22 +-
.../src/components/ListView/ListView.test.tsx | 2 -
.../src/components/ListView/ListView.tsx | 27 +-
superset-frontend/src/components/ListView/utils.ts | 8 +-
.../RowCountLabel/RowCountLabel.test.tsx | 16 +-
superset-frontend/src/components/Tag/index.tsx | 8 +-
superset-frontend/src/core/chat/ChatHost.tsx | 20 +-
.../actions/chartCustomizationActions.test.ts | 20 +-
.../dashboard/actions/chartCustomizationActions.ts | 4 +-
.../src/dashboard/actions/dashboardInfo.test.ts | 71 +
.../src/dashboard/actions/dashboardInfo.ts | 105 +-
.../src/dashboard/actions/dashboardState.test.ts | 146 +
.../src/dashboard/actions/dashboardState.ts | 63 +-
.../src/dashboard/actions/datasources.test.ts | 114 +
.../src/dashboard/actions/datasources.ts | 41 +-
.../src/dashboard/actions/hydrate.test.ts | 222 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 28 +-
.../src/dashboard/components/Dashboard.test.tsx | 13 +
.../DashboardBuilder/DashboardContainer.test.tsx | 145 +-
.../DashboardBuilder/DashboardContainer.tsx | 19 +-
.../DetailsPanel/DetailsPanel.test.tsx | 19 +
.../components/FiltersBadge/DetailsPanel/index.tsx | 22 +
.../components/FiltersBadge/FiltersBadge.test.tsx | 40 +
.../dashboard/components/FiltersBadge/index.tsx | 20 +-
.../dashboard/components/Header/Header.test.tsx | 219 +-
.../Header/useHeaderActionsDropdownMenu.tsx | 10 +-
.../Header/useHeaderAutoRefresh.test.tsx | 58 +-
.../components/Header/useHeaderAutoRefresh.ts | 2 +-
.../PropertiesModal/PropertiesModal.test.tsx | 6 +
.../dashboard/components/PropertiesModal/index.tsx | 8 +-
.../PropertiesModal/sections/AdvancedSection.tsx | 60 +-
.../sections/LabelColorMapping.test.tsx | 111 +
.../PropertiesModal/sections/LabelColorMapping.tsx | 494 +
.../sections/StylingSection.test.tsx | 141 +-
.../PropertiesModal/sections/StylingSection.tsx | 11 +
.../RefreshFrequencySelect.test.tsx | 261 +
.../RefreshFrequency/RefreshFrequencySelect.tsx | 147 +-
.../dashboard/components/RefreshFrequency/index.ts | 3 +
.../components/RefreshIntervalModal.test.tsx | 194 +
.../dashboard/components/RefreshIntervalModal.tsx | 2 +-
.../src/dashboard/components/SaveModal.test.tsx | 178 +
.../src/dashboard/components/SliceHeader/index.tsx | 2 +
.../SliceHeaderControls.test.tsx | 114 +
.../ViewAsTableRendering.test.tsx | 309 +
.../components/SliceHeaderControls/index.tsx | 9 +-
.../components/SliceHeaderControls/types.ts | 1 +
.../components/dnd/dragDroppableConfig.test.ts | 270 +
.../dashboard/components/dnd/handleDrop.test.ts | 346 +
.../components/gridComponents/Chart/Chart.test.tsx | 387 +-
.../components/gridComponents/Chart/Chart.tsx | 99 +-
.../components/gridComponents/Row/Row.test.tsx | 43 +-
.../components/gridComponents/Row/Row.tsx | 124 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 147 +
.../components/gridComponents/Tabs/Tabs.tsx | 22 +-
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 2 +-
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 880 +-
.../components/menu/DownloadMenuItems/index.tsx | 341 +-
.../src/dashboard/components/menu/HoverMenu.tsx | 4 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 293 +-
.../FilterControls.overflow.test.tsx | 93 +-
.../FilterControls/FilterControls.test.tsx | 65 +
.../FilterBar/FilterControls/FilterControls.tsx | 12 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 187 +-
.../FilterBar/FilterControls/FilterValue.tsx | 109 +-
.../FilterControls/GroupByFilterCard.test.tsx | 183 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 41 +-
.../nativeFilters/FilterBar/Vertical.tsx | 6 +
.../nativeFilters/FilterBar/keyValue.test.ts | 147 +
.../nativeFilters/FilterBar/state.test.ts | 220 +
.../ColumnSelect.requestLifetime.test.tsx | 155 +
.../FiltersConfigForm/ColumnSelect.test.tsx | 39 +
.../FiltersConfigForm/ColumnSelect.tsx | 113 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 582 +-
.../GroupByColumnAllowlist.test.tsx | 429 +
.../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 | 219 +-
.../hooks/useFilterOperations.test.ts | 233 +-
.../hooks/useFilterOperations.ts | 10 +-
.../hooks/useModalSaveLogic.test.ts | 118 +
.../transformers/buildTarget.test.ts | 44 +-
.../FiltersConfigModal/transformers/buildTarget.ts | 37 +-
.../transformers/customizationTransformer.test.ts | 109 +
.../transformers/customizationTransformer.ts | 67 +-
.../transformers/filterTransformer.ts | 10 +-
.../nativeFilters/FiltersConfigModal/types.ts | 10 +
.../nativeFilters/FiltersConfigModal/utils.test.ts | 42 +
.../components/nativeFilters/selectors.test.ts | 71 +
.../components/nativeFilters/selectors.ts | 8 +-
.../useDisplayControlDatasource.test.ts | 22 +-
.../nativeFilters/useDisplayControlDatasource.ts | 25 +-
.../components/nativeFilters/utils.test.ts | 27 +
.../dashboard/components/nativeFilters/utils.ts | 13 +
.../components/resizable/ResizableContainer.tsx | 3 +-
superset-frontend/src/dashboard/constants.ts | 6 +
.../dashboard/containers/DashboardPage.test.tsx | 153 +-
.../src/dashboard/containers/DashboardPage.tsx | 79 +-
.../dashboard/contexts/AutoRefreshContext.test.tsx | 69 +
.../src/dashboard/contexts/AutoRefreshContext.tsx | 31 +-
.../contexts/DashboardDatasetsContext.ts} | 14 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 327 +
.../src/dashboard/reducers/dashboardInfo.ts | 170 +
.../src/dashboard/reducers/dashboardLayout.test.ts | 62 +
.../src/dashboard/reducers/dashboardLayout.ts | 26 +
.../src/dashboard/reducers/dashboardState.test.ts | 23 +
.../src/dashboard/reducers/dashboardState.ts | 2 +
superset-frontend/src/dashboard/types.ts | 13 +
.../util/charts/getFormDataWithExtraFilters.ts | 163 +-
.../src/dashboard/util/crossFilters.test.ts | 75 +
.../src/dashboard/util/crossFilters.ts | 23 +-
.../src/dashboard/util/getDropPosition.test.ts | 83 +
.../src/dashboard/util/getDropPosition.ts | 13 +
.../util/getFormDataWithExtraFilters.test.ts | 412 +-
.../src/dashboard/util/getRelatedCharts.ts | 32 +-
.../util/removeUnreachableComponents.test.ts | 283 +
.../dashboard/util/removeUnreachableComponents.ts | 225 +
.../util/updateComponentParentsList.test.ts | 17 +
.../dashboard/util/updateComponentParentsList.ts | 7 +-
superset-frontend/src/dataMask/reducer.test.ts | 58 +
superset-frontend/src/dataMask/reducer.ts | 18 +
.../src/explore/actions/exploreActions.ts | 10 +
.../src/explore/components/ChartPills.test.tsx | 134 +
.../src/explore/components/ChartPills.tsx | 36 +-
.../src/explore/components/Control.test.tsx | 56 +-
.../src/explore/components/Control.tsx | 3 +-
.../src/explore/components/ControlHeader.test.tsx | 92 +-
.../src/explore/components/ControlHeader.tsx | 37 +-
.../components/ControlPanelsContainer.test.tsx | 477 +-
.../explore/components/ControlPanelsContainer.tsx | 112 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 160 +
.../components/ExploreChartHeader/index.tsx | 37 +-
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 11 +-
.../explore/components/ExploreChartPanel/index.tsx | 17 +-
.../ExploreViewContainer.test.tsx | 230 +-
.../components/ExploreViewContainer/index.tsx | 60 +-
.../explore/components/PropertiesModal/index.tsx | 4 +
.../src/explore/components/SaveModal.test.tsx | 55 +
.../src/explore/components/SaveModal.tsx | 15 +-
.../controls/AnnotationLayerControl/index.test.tsx | 84 +-
.../components/controls/CheckboxControl.test.tsx | 146 +-
.../components/controls/CheckboxControl.tsx | 73 +-
.../CollectionControl/CollectionControl.test.tsx | 14 +-
.../components/controls/ColorPickerControl.tsx | 2 +-
.../ColorSchemeControl/ColorSchemeControl.test.tsx | 76 +
.../ColumnConfigConstants.test.tsx | 25 +-
.../ColumnConfigControl.test.tsx | 86 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 24 +-
.../ControlForm/ControlForm.debounce.test.tsx | 124 +
.../ColumnConfigControl/ControlForm/index.tsx | 50 +-
.../controls/ColumnConfigControl/constants.tsx | 5 +-
.../controls/ComparisonRangeLabel.test.tsx | 252 +
.../ContourPopoverControl-unused-fields.test.tsx | 60 +
.../ContourControl/ContourPopoverControl.tsx | 4 +-
.../ControlPopover/ControlPopover.test.tsx | 66 +
.../controls/ControlPopover/ControlPopover.tsx | 39 +-
.../components/DateFunctionTooltip.tsx | 2 +-
.../DateFilterControl/tests/CommonFrame.test.tsx | 72 +
.../tests/DateFilterLabel.test.tsx | 193 +
.../DateFilterControl/tests/DateLabel.test.tsx | 73 +
.../ColumnSelectPopover.test.tsx | 38 +-
.../DndAdhocFilterOption.tsx | 3 +
.../DndColumnSelect.test.tsx | 20 +-
.../DndFilterSelect.test.tsx | 76 +-
.../DndColumnSelectControl/DndFilterSelect.tsx | 6 +
.../DndMetricSelect.test.tsx | 90 +
.../AdhocFilterControl/AdhocFilterControl.test.tsx | 102 +-
.../FilterControl/AdhocFilterControl/index.tsx | 15 +-
.../AdhocFilterEditPopover.test.tsx | 55 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 3 +
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 196 +-
.../index.tsx | 71 +-
.../FilterControl/AdhocFilterOption/index.tsx | 3 +
.../AdhocFilterPopoverTrigger/index.tsx | 3 +
.../HeaderGroupsControl/HeaderGroupEditor.tsx | 567 +
.../HeaderGroupsControl.test.tsx | 906 +
.../HeaderGroupsControl/HeaderGroupsControl.tsx | 289 +
.../controls/HeaderGroupsControl}/index.ts | 15 +-
.../types.ts | 45 +-
.../controls/HeaderGroupsControl/utils.test.ts | 388 +
.../controls/HeaderGroupsControl/utils.ts | 215 +
.../controls/MapViewControl/ExtentTag.test.tsx | 68 +
.../controls/MapViewControl/ExtentTag.tsx | 13 +-
.../components/controls/MapViewControl/types.ts | 6 +-
.../MatrixifyControl/utils/fetchTopNValues.test.ts | 165 +
.../controls/MatrixifyDimensionControl.test.tsx | 209 +-
.../controls/MatrixifyDimensionControl.tsx | 51 +-
.../AdhocMetricEditPopover.test.tsx | 4 +-
.../AdhocMetricPopoverTrigger.test.tsx | 278 +
.../components/controls/SelectControl.test.tsx | 55 +
.../controls/SemanticRequestView.test.tsx | 111 +
.../components/controls/SemanticRequestView.tsx | 71 +
.../components/controls/TextAreaControl.test.tsx | 103 +
.../components/controls/TextAreaControl.tsx | 169 +-
.../components/controls/ViewQueryModal.test.tsx | 300 +-
.../explore/components/controls/ViewQueryModal.tsx | 98 +-
.../controls/ViewQueryModalFooter.test.tsx | 95 +
.../components/controls/ViewQueryModalFooter.tsx | 7 +-
.../components/controls/XAxisSortControl.test.tsx | 80 +
.../components/controls/XAxisSortControl.tsx | 10 +-
.../ZoomConfigControl/ZoomConfigControl.test.tsx | 115 +
.../ZoomConfigControl/ZoomConfigControl.tsx | 36 +-
.../src/explore/components/controls/index.ts | 2 +
.../useExploreAdditionalActionsMenu/index.tsx | 40 +-
.../useExploreAdditionalActionsMenu.test.tsx | 71 +-
superset-frontend/src/explore/constants.ts | 6 +
.../src/explore/controlPanels/sections.tsx | 7 +
.../controlUtils/getSectionsToRender.test.ts | 179 +
.../controlUtils/standardizedFormData.test.ts | 29 +
.../explore/controlUtils/standardizedFormData.ts | 4 +
superset-frontend/src/explore/controls.tsx | 8 +-
.../src/explore/exploreUtils/exploreUtils.test.tsx | 57 +
.../src/explore/exploreUtils/index.ts | 15 +-
.../explore/reducers/datasourcesReducer.test.ts | 171 +
.../src/explore/reducers/exploreReducer.test.ts | 365 +-
.../src/explore/reducers/exploreReducer.ts | 71 +-
.../src/explore/reducers/saveModalReducer.test.ts | 184 +
.../src/explore/reducers/saveModalReducer.ts | 15 +-
superset-frontend/src/explore/types.ts | 5 +-
.../src/features/alerts/AlertReportModal.test.tsx | 1914 +-
.../src/features/alerts/AlertReportModal.tsx | 1350 +-
.../alerts/ReportConfigurationModal.test.tsx | 409 +
.../features/alerts/ReportConfigurationModal.tsx | 488 +
.../alerts/hooks/useReportConfiguration.ts | 64 +
superset-frontend/src/features/alerts/types.ts | 34 +-
.../DatabaseConnectionForm/CommonParameters.tsx | 2 +
.../datasets/AddDataset/Footer/Footer.test.tsx | 5 +-
superset-frontend/src/features/home/Menu.test.tsx | 19 +
.../reports/ReportModal/ReportModal.test.tsx | 279 +-
.../src/features/reports/ReportModal/index.tsx | 83 +-
superset-frontend/src/features/reports/types.ts | 2 +
.../semanticLayers/MultiEnumControl.test.tsx | 36 +
.../semanticLayers/SemanticLayerModal.test.tsx | 540 +-
.../features/semanticLayers/SemanticLayerModal.tsx | 172 +-
.../semanticLayers/jsonFormsAntdRenderers.test.tsx | 269 +
.../features/semanticLayers/jsonFormsHelpers.tsx | 139 +-
.../semanticViews/AddSemanticViewModal.test.tsx | 975 +-
.../semanticViews/AddSemanticViewModal.tsx | 290 +-
.../src/features/userInfo/UserInfoModal.test.tsx | 62 +-
.../src/features/userInfo/UserInfoModal.tsx | 26 +-
.../src/features/users/UserListModal.test.tsx | 178 +
.../src/features/users/UserListModal.tsx | 108 +-
superset-frontend/src/features/users/utils.ts | 8 +-
.../src/features/versionHistory/ActionRow.tsx | 110 +-
.../DashboardVersionHistory.test.tsx | 89 +-
.../versionHistory/DashboardVersionHistory.tsx | 46 +-
.../versionHistory/ExploreVersionHistory.test.tsx | 344 +-
.../versionHistory/ExploreVersionHistory.tsx | 53 +-
.../features/versionHistory/SaveGroupItem.test.tsx | 92 +-
.../src/features/versionHistory/SaveGroupItem.tsx | 5 -
.../versionHistory/VersionHistoryPanel.test.tsx | 3 +-
.../versionHistory/VersionHistoryPanel.tsx | 16 +-
.../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} | 21 +-
.../src/filters/components/Range/transformProps.ts | 2 +-
.../components/Select/SelectFilterPlugin.test.tsx | 387 +-
.../components/Select/SelectFilterPlugin.tsx | 200 +-
.../components/Time/TimeFilterPlugin.test.tsx | 40 +-
.../TimeColumnFilterPlugin.test.tsx} | 67 +-
.../src/hooks/apiResources/dashboards.test.ts | 14 +
.../src/hooks/apiResources/dashboards.ts | 28 +-
.../src/hooks/apiResources/datasets.cache.test.ts | 48 +
.../src/hooks/apiResources/datasets.test.ts | 36 +-
.../src/hooks/apiResources/datasets.ts | 6 +-
.../src/middleware/asyncEvent.test.ts | 370 +-
superset-frontend/src/middleware/asyncEvent.ts | 90 +-
.../src/middleware/asyncQueryError.ts | 118 +
.../src/pages/ActionLog/ActionLog.test.tsx | 90 +
superset-frontend/src/pages/ActionLog/index.tsx | 3 +
.../pages/AlertReportList/AlertReportList.test.tsx | 43 +
.../src/pages/AlertReportList/index.tsx | 22 +
.../ArchivedList/ArchivedDatasetPurgeModal.tsx | 3 +-
.../DatabaseList.datasetDependents.test.tsx | 289 +
.../DatabaseList.semanticLayerDelete.test.tsx | 51 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 110 +-
.../DatasetList/DatasetList.behavior.test.tsx | 101 +
superset-frontend/src/pages/DatasetList/index.tsx | 38 +-
.../pages/ForgotPassword/ForgotPassword.test.tsx | 157 +
.../src/pages/ForgotPassword/index.tsx | 168 +
superset-frontend/src/pages/Home/Home.test.tsx | 47 +-
superset-frontend/src/pages/Home/index.tsx | 20 +-
superset-frontend/src/pages/Login/Login.test.tsx | 191 +-
superset-frontend/src/pages/Login/index.tsx | 84 +-
.../.eslintrc => src/pages/Login/styles.ts} | 45 +-
.../src/pages/ResetPassword/ResetPassword.test.tsx | 301 +
.../src/pages/ResetPassword/index.tsx | 285 +
superset-frontend/src/preamble.test.ts | 29 +-
superset-frontend/src/preamble.ts | 10 +-
superset-frontend/src/setup/setupApp.ts | 16 +-
superset-frontend/src/types/Chart.ts | 1 +
superset-frontend/src/types/bootstrapTypes.ts | 1 +
superset-frontend/src/types/react-table.d.ts | 16 +
superset-frontend/src/utils/cacheWrapper.test.ts | 54 +
superset-frontend/src/utils/cacheWrapper.ts | 6 +
.../src/utils/cachedSupersetGet.test.ts | 20 +
superset-frontend/src/utils/colorScheme.test.ts | 230 +
.../src/utils/downloadAsImage.test.ts | 572 +-
superset-frontend/src/utils/downloadAsImage.tsx | 149 +-
superset-frontend/src/utils/downloadAsPdf.test.ts | 128 +
superset-frontend/src/utils/downloadAsPdf.ts | 30 +-
superset-frontend/src/utils/downloadUtils.test.ts | 76 +-
superset-frontend/src/utils/downloadUtils.ts | 35 +-
.../utils/getChartRequiredFieldsMissingMessage.ts | 1 +
.../src/utils/semanticViewStructure.test.ts | 69 +-
.../src/utils/semanticViewStructure.ts | 33 +-
superset-frontend/src/utils/softDeleteCopy.test.ts | 11 +
superset-frontend/src/utils/softDeleteCopy.ts | 14 +
superset-frontend/src/utils/urlUtils.test.ts | 23 +
superset-frontend/src/utils/urlUtils.ts | 17 +
superset-frontend/src/views/App.test.tsx | 135 +
superset-frontend/src/views/App.tsx | 39 +-
superset-frontend/src/views/routePaths.ts | 2 +
superset-frontend/src/views/routes.test.tsx | 10 +
superset-frontend/src/views/routes.tsx | 21 +
.../TimeTable/components/LeftCell/LeftCell.tsx | 18 +-
.../TimeTable/config/buildQuery.test.ts | 14 +
.../src/visualizations/presets/MainPreset.ts | 4 +
superset-frontend/tsconfig.json | 2 +-
superset-frontend/webpack.config.js | 1 -
superset-websocket/README.md | 25 +
superset-websocket/config.example.json | 10 +-
superset-websocket/package-lock.json | 644 +-
superset-websocket/package.json | 14 +-
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 | 17 +-
superset/annotation_layers/schemas.py | 21 +
superset/charts/api.py | 56 +-
superset/charts/client_processing.py | 9 +-
superset/charts/data/api.py | 105 +-
superset/charts/data/form_data.py | 2 +-
superset/charts/filters.py | 10 +-
superset/charts/schemas.py | 37 +-
superset/cli/deletion_retention.py | 20 +-
superset/cli/importexport.py | 8 +-
superset/commands/annotation_layer/exceptions.py | 5 +
superset/commands/annotation_layer/export.py | 109 +
.../annotation_layer/importers}/__init__.py | 0
.../annotation_layer/importers/dispatcher.py | 74 +
.../annotation_layer/importers/v1/__init__.py | 54 +
.../annotation_layer/importers/v1/utils.py | 73 +
superset/commands/chart/export.py | 251 +-
superset/commands/chart/importers/v1/__init__.py | 104 +-
superset/commands/chart/importers/v1/utils.py | 381 +-
superset/commands/chart/restore_version.py | 17 +
superset/commands/chart/update.py | 21 +-
superset/commands/chart/utils.py | 9 +
superset/commands/chart/warm_up_cache.py | 26 +-
superset/commands/dashboard/exceptions.py | 4 +
superset/commands/dashboard/export.py | 8 +-
superset/commands/dashboard/export_example.py | 31 +
.../commands/dashboard/importers/v1/__init__.py | 89 +-
superset/commands/dashboard/permalink/create.py | 43 +-
superset/commands/dashboard/restore.py | 132 +
superset/commands/dashboard/update.py | 71 +-
superset/commands/database/exceptions.py | 14 +-
superset/commands/database/oauth2.py | 27 +-
superset/commands/database/tables.py | 41 +-
superset/commands/database/update.py | 54 +-
superset/commands/database/utils.py | 47 +
superset/commands/dataset/refresh.py | 5 +
superset/commands/dataset/update.py | 19 +-
.../commands/deletion_retention/force_purge.py | 7 +-
.../commands/deletion_retention/prune_audit.py | 76 +-
.../commands/deletion_retention/purge_cascade.py | 5 +-
.../commands/deletion_retention/purge_policy.py | 1191 +-
superset/commands/deletion_retention/window.py | 77 +-
superset/commands/distributed_lock/acquire.py | 9 +-
superset/commands/distributed_lock/release.py | 3 +-
superset/commands/export/assets.py | 10 +-
superset/commands/importers/v1/__init__.py | 16 +-
superset/commands/importers/v1/assets.py | 74 +-
superset/commands/importers/v1/examples.py | 19 +
superset/commands/importers/v1/utils.py | 13 +-
superset/commands/report/alert.py | 64 +-
superset/commands/report/base.py | 175 +-
superset/commands/report/create.py | 46 +
superset/commands/report/exceptions.py | 155 +-
superset/commands/report/execute.py | 289 +-
superset/commands/report/update.py | 324 +-
superset/commands/report/update_config.py | 145 +
superset/commands/restore.py | 7 +-
superset/commands/security/exceptions.py | 15 +
superset/commands/security/password_recovery.py | 315 +
superset/commands/security/reset.py | 23 +-
superset/commands/semantic_layer/delete.py | 243 +
superset/commands/semantic_layer/exceptions.py | 28 +-
superset/commands/semantic_layer/update.py | 117 +-
superset/commands/sql_lab/estimate.py | 10 +-
superset/commands/sql_lab/export.py | 14 +
superset/commands/streaming_export/base.py | 52 +-
superset/commands/theme/import_themes.py | 57 +-
superset/commands/version_restore.py | 14 +-
superset/common/form_data_query_context.py | 1599 +-
superset/common/query_actions.py | 1 +
superset/common/query_context_factory.py | 87 +-
superset/common/query_context_processor.py | 136 +-
superset/common/query_object.py | 92 +-
superset/common/tabular_query.py | 15 +-
superset/common/utils/dataframe_utils.py | 8 +-
superset/common/utils/query_cache_manager.py | 11 +-
superset/config.py | 385 +-
superset/connectors/sqla/models.py | 104 +-
superset/connectors/sqla/utils.py | 2 +-
superset/constants.py | 49 +
superset/coordination/cache_backend.py | 72 +
superset/core/mcp/core_mcp_injection.py | 24 +-
superset/daos/base.py | 9 +-
superset/daos/chart.py | 7 +-
superset/daos/dashboard.py | 365 +-
superset/daos/database.py | 43 +-
superset/daos/dataset.py | 31 +-
superset/daos/datasource.py | 36 +-
superset/daos/key_value.py | 43 +-
superset/daos/query.py | 26 +-
superset/daos/report.py | 212 +-
superset/dashboards/api.py | 546 +-
superset/dashboards/excel_export/download_link.py | 160 +
superset/dashboards/excel_export/email.py | 46 +-
superset/dashboards/excel_export/storage.py | 81 +
superset/dashboards/excel_export/sync_budget.py | 272 +
superset/dashboards/excel_export/workbook.py | 333 +
superset/dashboards/filters.py | 22 +-
superset/dashboards/layout.py | 269 +
superset/dashboards/schemas.py | 17 +-
superset/databases/api.py | 43 +-
superset/databases/schemas.py | 15 +
superset/dataframe.py | 137 +-
superset/datasets/api.py | 16 +-
superset/datasets/schemas.py | 42 +-
superset/datasource/api.py | 259 +-
superset/datasource/schemas.py | 9 +
superset/db_engine_specs/README.md | 3 +
superset/db_engine_specs/__init__.py | 31 +-
superset/db_engine_specs/aurora.py | 79 +
superset/db_engine_specs/aws_iam.py | 42 +-
superset/db_engine_specs/base.py | 215 +-
superset/db_engine_specs/bigquery.py | 122 +-
superset/db_engine_specs/clickhouse.py | 100 +-
superset/db_engine_specs/crate.py | 35 +-
superset/db_engine_specs/d1.py | 122 +-
superset/db_engine_specs/databend.py | 2 +-
superset/db_engine_specs/databricks.py | 259 +-
superset/db_engine_specs/datafusion.py | 34 +-
superset/db_engine_specs/db2.py | 39 +-
superset/db_engine_specs/doris.py | 132 +-
superset/db_engine_specs/duckdb.py | 39 +
superset/db_engine_specs/dynamodb.py | 24 +-
superset/db_engine_specs/elasticsearch.py | 84 +-
superset/db_engine_specs/exasol.py | 76 +
superset/db_engine_specs/gsheets.py | 165 +-
superset/db_engine_specs/hive.py | 18 +-
superset/db_engine_specs/ibmi.py | 45 +
superset/db_engine_specs/impala.py | 138 +-
superset/db_engine_specs/kusto.py | 35 +
superset/db_engine_specs/kylin.py | 50 +-
superset/db_engine_specs/lib.py | 11 +
superset/db_engine_specs/mongodb.py | 72 +-
superset/db_engine_specs/mssql.py | 2 -
superset/db_engine_specs/mysql.py | 349 +
superset/db_engine_specs/oracle.py | 118 +-
superset/db_engine_specs/pinot.py | 11 +
superset/db_engine_specs/postgres.py | 49 +-
superset/db_engine_specs/shillelagh.py | 20 +-
superset/db_engine_specs/snowflake.py | 31 +-
superset/db_engine_specs/spark.py | 6 +-
superset/db_engine_specs/sqlite.py | 16 +-
superset/db_engine_specs/starrocks.py | 12 +-
superset/db_engine_specs/trino.py | 20 +-
superset/embedded/view.py | 8 +-
superset/exceptions.py | 67 +
superset/explore/api.py | 5 +
superset/explore/form_data/api.py | 9 +-
superset/explore/permalink/api.py | 5 +-
superset/explore/utils.py | 6 +
superset/extensions/__init__.py | 6 +-
superset/extensions/metastore_cache.py | 35 +-
superset/importexport/api.py | 9 +-
superset/initialization/__init__.py | 116 +-
superset/jinja_context.py | 12 +-
superset/key_value/types.py | 42 +-
superset/mcp_service/CLAUDE.md | 7 +-
superset/mcp_service/SECURITY.md | 2 +-
superset/mcp_service/__init__.py | 10 +
superset/mcp_service/app.py | 44 +-
superset/mcp_service/auth.py | 153 +-
superset/mcp_service/caching.py | 67 +-
.../mcp_service/catalog}/__init__.py | 0
superset/mcp_service/catalog/schemas.py | 137 +
.../mcp_service/catalog/tool/__init__.py | 7 +-
superset/mcp_service/catalog/tool/get_catalog.py | 453 +
superset/mcp_service/chart/big_number_headline.py | 388 +
superset/mcp_service/chart/chart_helpers.py | 800 +-
superset/mcp_service/chart/chart_utils.py | 2521 +-
superset/mcp_service/chart/compile.py | 514 +-
superset/mcp_service/chart/datasource_resolver.py | 412 +
superset/mcp_service/chart/plugin.py | 482 +-
superset/mcp_service/chart/plugins/__init__.py | 18 +
superset/mcp_service/chart/plugins/big_number.py | 114 +-
superset/mcp_service/chart/plugins/bubble.py | 33 +-
superset/mcp_service/chart/plugins/bullet.py | 596 +
superset/mcp_service/chart/plugins/gantt.py | 112 +-
superset/mcp_service/chart/plugins/gauge.py | 101 +-
superset/mcp_service/chart/plugins/geographic.py | 836 +
superset/mcp_service/chart/plugins/handlebars.py | 4 +
superset/mcp_service/chart/plugins/histogram.py | 109 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 82 +-
superset/mcp_service/chart/plugins/pivot_table.py | 4 +
superset/mcp_service/chart/plugins/sunburst.py | 288 +
superset/mcp_service/chart/plugins/table.py | 46 +
superset/mcp_service/chart/plugins/treemap.py | 152 +-
superset/mcp_service/chart/plugins/waterfall.py | 52 +
superset/mcp_service/chart/plugins/xy.py | 240 +-
superset/mcp_service/chart/preview_utils.py | 1733 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/query_result.py | 2078 +-
superset/mcp_service/chart/registry.py | 67 +-
.../mcp_service/chart/resources/chart_configs.py | 120 +-
superset/mcp_service/chart/response_preflight.py | 204 +
superset/mcp_service/chart/schemas.py | 4619 ++-
superset/mcp_service/chart/sunburst.py | 436 +
superset/mcp_service/chart/tool/generate_chart.py | 407 +-
superset/mcp_service/chart/tool/get_chart_data.py | 806 +-
superset/mcp_service/chart/tool/get_chart_info.py | 46 +-
.../mcp_service/chart/tool/get_chart_preview.py | 348 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 204 +-
.../chart/tool/get_chart_type_schema.py | 103 +-
superset/mcp_service/chart/tool/list_charts.py | 134 +-
superset/mcp_service/chart/tool/update_chart.py | 1015 +-
.../mcp_service/chart/tool/update_chart_preview.py | 463 +-
superset/mcp_service/chart/treemap_preview.py | 297 +
.../chart/validation/dataset_validator.py | 713 +-
superset/mcp_service/chart/validation/pipeline.py | 73 +-
.../validation/runtime/chart_type_suggester.py | 13 +-
superset/mcp_service/common/pagination_schemas.py | 3 +-
superset/mcp_service/common/schema_discovery.py | 2 +-
.../mcp_service/common/time_range_validation.py | 81 +-
superset/mcp_service/composite_token_verifier.py | 26 +-
superset/mcp_service/constants.py | 28 +
superset/mcp_service/dashboard/constants.py | 4 +
superset/mcp_service/dashboard/layout_placement.py | 309 +
.../mcp_service/dashboard/layout_validation.py | 11 +-
superset/mcp_service/dashboard/permalink.py | 6 +-
superset/mcp_service/dashboard/schemas.py | 902 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 234 +-
.../dashboard/tool/apply_dashboard_filters.py | 646 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 68 +-
.../dashboard/tool/duplicate_dashboard.py | 16 +-
.../dashboard/tool/generate_dashboard.py | 21 +-
.../dashboard/tool/get_dashboard_data.py | 9 +
.../dashboard/tool/get_dashboard_datasets.py | 13 +-
.../dashboard/tool/get_dashboard_info.py | 21 +-
.../dashboard/tool/get_dashboard_layout.py | 161 +-
.../mcp_service/dashboard/tool/governance_utils.py | 15 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 18 +-
.../tool/manage_dashboard_certification.py | 10 +-
.../dashboard/tool/manage_dashboard_markdown.py | 512 +
.../dashboard/tool/manage_dashboard_owners.py | 12 +-
.../dashboard/tool/manage_dashboard_roles.py | 32 +-
.../dashboard/tool/manage_native_filters.py | 535 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 73 +-
.../dashboard/tool/restore_dashboard.py | 61 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 10 +
superset/mcp_service/dashboard_scope.py | 1366 +
superset/mcp_service/dashboard_scope_sql.py | 516 +
superset/mcp_service/dataset/dataset_utils.py | 5 +
superset/mcp_service/dataset/schemas.py | 426 +-
superset/mcp_service/dataset/tool/__init__.py | 10 +
.../mcp_service/dataset/tool/create_dataset.py | 11 +-
.../dataset/tool/create_dataset_metric.py | 172 +
.../dataset/tool/create_virtual_dataset.py | 16 +-
.../mcp_service/dataset/tool/delete_dataset.py | 217 +
.../dataset/tool/delete_dataset_metric.py | 246 +
.../mcp_service/dataset/tool/get_dataset_info.py | 7 +-
superset/mcp_service/dataset/tool/list_datasets.py | 34 +-
superset/mcp_service/dataset/tool/query_dataset.py | 165 +-
.../mcp_service/dataset/tool/restore_dataset.py | 258 +
.../mcp_service/dataset/tool/update_dataset.py | 350 +
superset/mcp_service/dataset_scope.py | 152 +-
.../explore/tool/generate_explore_link.py | 161 +-
superset/mcp_service/mcp_config.py | 118 +-
superset/mcp_service/middleware.py | 584 +-
superset/mcp_service/privacy.py | 1 +
superset/mcp_service/semantic_layer/schemas.py | 28 +-
.../tool/get_compatible_dimensions.py | 50 +-
.../semantic_layer/tool/get_compatible_metrics.py | 53 +-
.../mcp_service/semantic_layer/tool/get_table.py | 189 +-
.../semantic_layer/tool/list_metrics.py | 16 +-
superset/mcp_service/server.py | 416 +-
superset/mcp_service/simple_proxy.py | 6 +-
superset/mcp_service/sql_lab/schemas.py | 64 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 34 +-
superset/mcp_service/system/prompts/quickstart.py | 4 +-
.../system/resources/instance_metadata.py | 37 +-
superset/mcp_service/system/system_utils.py | 33 +-
.../mcp_service/system/tool/get_instance_info.py | 38 +-
superset/mcp_service/system/tool/get_schema.py | 7 +-
superset/mcp_service/system/tool/health_check.py | 5 +-
superset/mcp_service/utils/cache_utils.py | 32 +-
superset/mcp_service/utils/error_builder.py | 115 +-
superset/mcp_service/utils/query_utils.py | 18 +-
superset/mcp_service/utils/response_size_utils.py | 221 +-
superset/mcp_service/utils/response_utils.py | 292 +-
superset/mcp_service/utils/schema_utils.py | 27 +-
superset/mcp_service/utils/serialization.py | 256 +
superset/mcp_service/utils/validation.py | 218 +
superset/mcp_service/worker.py | 897 +
.../migrations/shared/migrate_viz/processors.py | 6 +-
superset/migrations/shared/security_converge.py | 34 +
superset/migrations/shared/utils.py | 2 +-
..._add_uuid_to_annotation_layer_and_annotation.py | 144 +
...4fb8bfc1_delete_deprecated_permissions_33272.py | 153 +
...a4572f8a_rename_deprecated_permissions_33272.py | 193 +
...0fab727cd0a_add_theme_editors_theme_id_index.py | 64 +
...ae6_merge_deprecated_permissions_with_master.py | 27 +-
...merge_deprecated_permissions_with_master_v2.py} | 19 +-
...merge_deprecated_permissions_with_master_v3.py} | 19 +-
...00_e4a7c2b9d1f3_add_run_as_and_report_config.py | 178 +
...79af013f48_add_semantic_layer_cache_version.py} | 32 +-
superset/models/annotations.py | 19 +-
superset/models/core.py | 282 +-
superset/models/dashboard.py | 91 +-
superset/models/helpers.py | 183 +-
superset/models/slice.py | 103 +-
superset/models/sql_lab.py | 29 +-
superset/queries/api.py | 15 +-
superset/queries/saved_queries/api.py | 7 +-
superset/reports/api.py | 181 +-
superset/reports/models.py | 45 +
superset/reports/notifications/email.py | 14 +-
superset/reports/notifications/slack_mixin.py | 4 +-
superset/reports/schemas.py | 266 +-
superset/reports/types.py | 20 +-
superset/reports/utils.py | 183 +
superset/result_set.py | 18 +
superset/security/api.py | 227 +-
superset/security/manager.py | 999 +-
superset/security/password_change.py | 77 +-
superset/security/password_recovery.py | 316 +
superset/semantic_layers/access.py | 50 +
superset/semantic_layers/api.py | 207 +-
.../bundle_schemas.py} | 28 +-
superset/semantic_layers/cache.py | 496 +
superset/semantic_layers/cache_coordination.py | 240 +
superset/semantic_layers/cache_host.py | 248 +
superset/semantic_layers/cache_identity.py | 336 +
superset/semantic_layers/cache_policy.py | 417 +
superset/semantic_layers/cache_repository.py | 453 +
superset/semantic_layers/cache_transform.py | 268 +
superset/semantic_layers/cache_types.py | 133 +
superset/semantic_layers/completeness.py | 44 +
superset/semantic_layers/exceptions.py | 127 +
superset/semantic_layers/import_export.py | 240 +
superset/semantic_layers/labels.py | 7 +-
superset/semantic_layers/mapper.py | 468 +-
superset/semantic_layers/members.py | 52 +
superset/semantic_layers/models.py | 315 +-
superset/sql/dialects/db2.py | 81 +-
superset/sql/execution/cancellation.py | 170 +
superset/sql/execution/celery_task.py | 469 +-
superset/sql/execution/executor.py | 166 +-
superset/sql/execution/utils.py | 260 +
superset/sql/parse.py | 580 +-
superset/sql_lab.py | 363 +-
superset/sqllab/api.py | 7 +
superset/subjects/utils.py | 59 +-
superset/superset_typing.py | 21 +-
superset/tasks/api.py | 23 +-
superset/tasks/async_queries.py | 17 +-
superset/tasks/deletion_retention.py | 487 +-
superset/tasks/export_dashboard_excel.py | 564 +-
superset/tasks/query_cancel.py | 9 +-
.../constants.py => tasks/retention_cap.py} | 28 +-
superset/tasks/schemas.py | 3 +
superset/tasks/version_history_retention.py | 315 +-
superset/themes/api.py | 27 +-
superset/translations/ar/LC_MESSAGES/messages.po | 1142 +-
superset/translations/ca/LC_MESSAGES/messages.po | 1079 +-
superset/translations/cs/LC_MESSAGES/messages.po | 1010 +-
superset/translations/de/LC_MESSAGES/messages.po | 804 +-
superset/translations/en/LC_MESSAGES/messages.po | 782 +-
superset/translations/es/LC_MESSAGES/messages.po | 810 +-
superset/translations/fa/LC_MESSAGES/messages.po | 1136 +-
superset/translations/fi/LC_MESSAGES/messages.po | 1113 +-
superset/translations/fr/LC_MESSAGES/messages.po | 810 +-
superset/translations/it/LC_MESSAGES/messages.po | 818 +-
superset/translations/ja/LC_MESSAGES/messages.po | 787 +-
superset/translations/ko/LC_MESSAGES/messages.po | 1241 +-
superset/translations/lv/LC_MESSAGES/messages.po | 1024 +-
superset/translations/messages.pot | 3302 +-
superset/translations/mi/LC_MESSAGES/messages.po | 1072 +-
superset/translations/nl/LC_MESSAGES/messages.po | 1158 +-
superset/translations/pl/LC_MESSAGES/messages.po | 1194 +-
superset/translations/pt/LC_MESSAGES/messages.po | 8441 ++---
.../translations/pt_BR/LC_MESSAGES/messages.po | 4799 +--
superset/translations/ro/LC_MESSAGES/messages.po | 813 +-
superset/translations/ru/LC_MESSAGES/messages.po | 806 +-
superset/translations/sk/LC_MESSAGES/messages.po | 1012 +-
superset/translations/sl/LC_MESSAGES/messages.po | 811 +-
superset/translations/sr/LC_MESSAGES/messages.po | 812 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 812 +-
superset/translations/ta/LC_MESSAGES/messages.po | 1096 +-
superset/translations/th/LC_MESSAGES/messages.po | 1087 +-
superset/translations/tr/LC_MESSAGES/messages.po | 829 +-
superset/translations/uk/LC_MESSAGES/messages.po | 1026 +-
superset/translations/zh/LC_MESSAGES/messages.po | 838 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 1079 +-
superset/utils/cache_manager.py | 17 +
superset/utils/core.py | 84 +-
superset/utils/csv.py | 24 +-
superset/utils/database.py | 76 +-
superset/utils/date_parser.py | 63 +-
superset/utils/dict_import_export.py | 7 +
superset/utils/error_sanitization.py | 109 +-
superset/utils/excel.py | 83 +-
superset/utils/export_storage.py | 76 +
superset/utils/gcs.py | 101 +
superset/utils/geographic.py | 105 +
superset/utils/geographic_regions.py | 385 +
superset/utils/geographic_world.py | 205 +
superset/utils/log.py | 101 +-
superset/utils/network.py | 138 +-
superset/utils/number_format.py | 10 +-
superset/utils/oauth2.py | 136 +-
.../utils/pandas_postprocessing/contribution.py | 24 +-
superset/utils/pandas_postprocessing/cum.py | 7 +-
superset/utils/pandas_postprocessing/geography.py | 8 +-
superset/utils/pandas_postprocessing/histogram.py | 8 +-
superset/utils/pandas_postprocessing/pivot.py | 51 +-
superset/utils/pandas_postprocessing/rename.py | 11 +-
superset/utils/pandas_postprocessing/utils.py | 25 +-
superset/utils/rls.py | 117 +-
superset/utils/s3.py | 124 +-
superset/utils/schema.py | 60 +
superset/utils/screenshots.py | 9 +-
superset/utils/webdriver.py | 8 +-
superset/versioning/api_helpers.py | 44 +-
superset/versioning/baseline/listener.py | 5 +-
superset/versioning/changes/listener.py | 20 +-
superset/versioning/metrics.py | 6 +-
superset/versioning/queries.py | 4 +-
superset/versioning/restore.py | 371 +-
superset/versioning/savepoints.py | 149 +
superset/versioning/snapshot.py | 275 +
superset/versioning/unit_of_work.py | 159 +
superset/versioning/utils.py | 40 +-
superset/views/api.py | 4 +-
superset/views/auth.py | 29 +-
superset/views/base.py | 10 +-
superset/views/core.py | 2 +-
superset/views/dashboard/mixin.py | 1 +
superset/views/datasource/views.py | 176 +-
superset/views/error_handling.py | 29 +-
superset/views/filters.py | 5 +-
superset/views/users/api.py | 29 +-
superset/views/users/schemas.py | 39 +-
superset/views/utils.py | 14 +-
tests/common/assert_utils.py | 2 +-
.../annotation_layers/commands_tests.py | 750 +
tests/integration_tests/base_tests.py | 14 +-
tests/integration_tests/charts/api_tests.py | 122 +
tests/integration_tests/charts/commands_tests.py | 1648 +-
.../charts/semantic_metadata_authz_tests.py | 647 +
.../charts/semantic_save_tests.py | 128 +-
tests/integration_tests/commands_test.py | 58 +
tests/integration_tests/core_tests.py | 30 +-
tests/integration_tests/dashboards/api_tests.py | 1444 +-
.../integration_tests/dashboards/commands_tests.py | 585 +
tests/integration_tests/dashboards/dao_tests.py | 120 +-
.../dashboards/soft_delete_tests.py | 7 +
tests/integration_tests/databases/api_tests.py | 108 +-
.../integration_tests/databases/commands_tests.py | 19 +-
tests/integration_tests/datasets/api_tests.py | 15 +-
tests/integration_tests/datasource/api_tests.py | 36 +-
.../deletion_retention/force_purge_tests.py | 11 +-
.../deletion_retention/prune_audit_tests.py | 88 +
.../deletion_retention/purge_tests.py | 210 +-
tests/integration_tests/embedded/test_view.py | 23 +
tests/integration_tests/fixtures/importexport.py | 104 +
tests/integration_tests/queries/api_tests.py | 29 +-
tests/integration_tests/reports/alert_tests.py | 40 +-
tests/integration_tests/reports/api_tests.py | 417 +-
.../commands/execute_dashboard_report_tests.py | 11 +-
tests/integration_tests/reports/commands_tests.py | 126 +-
tests/integration_tests/reports/config_tests.py | 104 +
tests/integration_tests/security/api_tests.py | 28 +
.../security/row_level_security_tests.py | 179 +
tests/integration_tests/security_tests.py | 16 +
.../semantic_layers/api_flag_test.py | 423 +
.../semantic_layers/cache_coordination_tests.py | 200 +
tests/integration_tests/sqllab_tests.py | 29 +-
.../integration_tests/superset_test_config_gaq.py | 59 +
tests/integration_tests/tasks/api_tests.py | 128 +-
.../versioning/activity_write_after_read_tests.py | 4 +-
.../versioning/conditional_token_lock_tests.py | 22 +-
.../versioning/creation_row_tests.py | 34 +-
.../versioning/restore_fails_closed_tests.py | 27 +-
.../versioning/retention_prune_tests.py | 67 +-
.../versioning/versions_api_tests.py | 108 +-
.../db_engine_specs/_bigquery_container.py | 79 +
.../db_engine_specs/test_bigquery.py | 183 +
.../db_engine_specs/test_clickhouse.py | 43 +
tests/testcontainers/db_engine_specs/test_crate.py | 44 +
.../db_engine_specs/test_databend.py | 43 +-
tests/testcontainers/db_engine_specs/test_mysql.py | 279 +-
.../db_engine_specs/test_opensearch.py | 155 +
.../testcontainers/db_engine_specs/test_oracle.py | 107 +
.../db_engine_specs/test_postgres.py | 690 +
.../charts/commands/importers/v1/import_test.py | 32 +-
.../charts/commands/importers/v1/utils_test.py | 28 +-
.../unit_tests/charts/data/test_non_dict_params.py | 116 +
.../charts/data/test_time_range_validation.py | 48 +
.../charts/semantic_view_chart_filter_test.py | 23 +-
tests/unit_tests/charts/test_chart_data_api.py | 284 +-
tests/unit_tests/charts/test_client_processing.py | 55 +
tests/unit_tests/charts/test_export_api.py | 44 +
tests/unit_tests/charts/test_filters.py | 96 +
tests/unit_tests/charts/test_schemas.py | 51 +-
tests/unit_tests/cli/deletion_retention_test.py | 30 +-
tests/unit_tests/commands/chart/create_test.py | 35 +-
.../commands/chart/semantic_export_test.py | 127 +
.../chart/streaming_export_command_test.py | 61 +
.../commands/chart/test_warm_up_cache.py | 135 +
tests/unit_tests/commands/chart/update_test.py | 68 +-
.../dashboard/export_example_semantic_test.py | 175 +
.../commands/dashboard/permalink_create_test.py | 131 +
.../dashboard/restore_semantic_filters_test.py | 363 +
.../unit_tests/commands/dashboard/restore_test.py | 3 +
tests/unit_tests/commands/dashboard/update_test.py | 133 +
tests/unit_tests/commands/databases/oauth2_test.py | 73 +-
tests/unit_tests/commands/databases/tables_test.py | 165 +
tests/unit_tests/commands/databases/update_test.py | 114 +
tests/unit_tests/commands/databases/utils_test.py | 58 +
tests/unit_tests/commands/dataset/refresh_test.py | 27 +-
.../deletion_retention/test_prune_audit.py | 33 +-
.../deletion_retention/test_purge_chart_detach.py | 301 +
.../deletion_retention/test_purge_policy.py | 1632 +-
tests/unit_tests/commands/export_test.py | 51 +
.../commands/importers/v1/assets_test.py | 4 +-
.../commands/importers/v1/import_models_test.py | 93 +
.../unit_tests/commands/importers/v1/utils_test.py | 134 +-
tests/unit_tests/commands/report/alert_test.py | 58 +-
tests/unit_tests/commands/report/create_test.py | 37 +
tests/unit_tests/commands/report/execute_test.py | 374 +-
.../commands/report/execution_claim_test.py | 5 +-
tests/unit_tests/commands/report/executor_test.py | 621 +
tests/unit_tests/commands/report/run_as_test.py | 1340 +
.../commands/report/update_config_test.py | 223 +
tests/unit_tests/commands/report/update_test.py | 45 +
tests/unit_tests/commands/security/reset_test.py | 62 +
.../commands/semantic_layer/delete_test.py | 634 +-
.../commands/semantic_layer/update_test.py | 96 +
.../semantic_layer/view_data_access_test.py | 148 +
tests/unit_tests/commands/sql_lab/export_test.py | 113 +
.../sql_lab/streaming_export_command_test.py | 74 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 30 +
.../commands/theme/test_import_themes.py | 89 +
.../common/test_form_data_query_context.py | 296 +-
tests/unit_tests/common/test_query_actions.py | 31 +-
.../unit_tests/common/test_query_cache_manager.py | 18 +
.../common/test_query_context_factory.py | 241 +
.../common/test_query_context_processor.py | 397 +-
.../common/test_query_context_processor_timing.py | 79 +
tests/unit_tests/config_test.py | 292 +-
tests/unit_tests/conftest.py | 30 +-
tests/unit_tests/connectors/sqla/models_test.py | 442 +-
tests/unit_tests/connectors/sqla/utils_test.py | 72 +
.../unit_tests/coordination/test_cache_backend.py | 189 +
tests/unit_tests/dao/base_dao_test.py | 29 +-
tests/unit_tests/dao/dashboard_test.py | 937 +-
tests/unit_tests/dao/key_value_test.py | 43 +
tests/unit_tests/dao/queries_test.py | 30 +-
.../dao/test_copy_dashboard_legacy_ids.py | 213 +
tests/unit_tests/dao/test_query_stop_race.py | 141 +-
tests/unit_tests/daos/test_chart_dao.py | 59 +
.../unit_tests/daos/test_dataset_dao.py | 26 +-
tests/unit_tests/daos/test_query_dao.py | 608 +
tests/unit_tests/dashboards/api_test.py | 116 +
tests/unit_tests/dashboards/datasets_test.py | 3 +
tests/unit_tests/dashboards/layout_test.py | 325 +
tests/unit_tests/dashboards/schema_tests.py | 37 +-
.../dashboards/semantic_view_access_test.py | 254 +-
.../dashboards/test_excel_export_download_link.py | 65 +
.../dashboards/test_excel_export_email.py | 19 +
.../dashboards/test_excel_export_storage.py | 178 +
.../dashboards/test_excel_export_sync_budget.py | 610 +
.../dashboards/test_excel_export_workbook.py | 146 +
tests/unit_tests/dashboards/test_export_api.py | 55 +
tests/unit_tests/databases/api_test.py | 218 +-
.../databases/dao/related_objects_test.py | 122 +
tests/unit_tests/databases/oauth2_api_test.py | 32 +-
tests/unit_tests/dataframe_test.py | 344 +-
tests/unit_tests/datasets/dao/dao_tests.py | 65 +
tests/unit_tests/datasets/schema_tests.py | 53 +
tests/unit_tests/datasource/dao_tests.py | 16 +
tests/unit_tests/db_engine_specs/test_aws_iam.py | 61 +
tests/unit_tests/db_engine_specs/test_base.py | 422 +-
tests/unit_tests/db_engine_specs/test_bigquery.py | 398 +-
tests/unit_tests/db_engine_specs/test_crate.py | 83 +-
tests/unit_tests/db_engine_specs/test_d1.py | 291 +
.../unit_tests/db_engine_specs/test_databricks.py | 480 +-
.../db_engine_specs/test_databricks_multi_cloud.py | 4 +
.../unit_tests/db_engine_specs/test_datafusion.py | 32 +-
tests/unit_tests/db_engine_specs/test_db2.py | 87 +-
tests/unit_tests/db_engine_specs/test_doris.py | 381 +-
tests/unit_tests/db_engine_specs/test_duckdb.py | 145 +
tests/unit_tests/db_engine_specs/test_dynamodb.py | 88 +-
.../db_engine_specs/test_elasticsearch.py | 185 +-
tests/unit_tests/db_engine_specs/test_exasol.py | 191 +
.../test_extended_aggregations_unverified.py | 8 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 496 +-
tests/unit_tests/db_engine_specs/test_ibmi.py | 76 +
tests/unit_tests/db_engine_specs/test_impala.py | 109 +
.../db_engine_specs/test_impala_pending.py | 304 +
tests/unit_tests/db_engine_specs/test_init.py | 143 +
tests/unit_tests/db_engine_specs/test_kylin.py | 50 +
tests/unit_tests/db_engine_specs/test_lib.py | 31 +-
tests/unit_tests/db_engine_specs/test_mariadb.py | 83 +
tests/unit_tests/db_engine_specs/test_mongodb.py | 241 +-
tests/unit_tests/db_engine_specs/test_mysql.py | 741 +
tests/unit_tests/db_engine_specs/test_oracle.py | 111 +-
tests/unit_tests/db_engine_specs/test_pinot.py | 41 +-
tests/unit_tests/db_engine_specs/test_postgres.py | 16 +-
.../unit_tests/db_engine_specs/test_shillelagh.py | 13 +
tests/unit_tests/db_engine_specs/test_snowflake.py | 79 +-
tests/unit_tests/db_engine_specs/test_sqlite.py | 83 +
tests/unit_tests/db_engine_specs/test_starrocks.py | 73 +-
tests/unit_tests/db_engine_specs/test_trino.py | 24 +-
.../distributed_lock/distributed_lock_tests.py | 28 +-
tests/unit_tests/explore/utils_test.py | 2 +
.../unit_tests/extensions/metastore_cache_test.py | 93 +
tests/unit_tests/extensions/test_sqlalchemy.py | 89 +
tests/unit_tests/initialization/init_views_test.py | 113 +
tests/unit_tests/initialization_test.py | 73 +
tests/unit_tests/jinja_context_test.py | 31 +
.../unit_tests/mcp_service/catalog}/__init__.py | 0
.../mcp_service/catalog/tool}/__init__.py | 0
.../mcp_service/catalog/tool/test_get_catalog.py | 1168 +
.../mcp_service/chart/query_result_fixtures.py | 165 +
...test_axis_offset_and_spatial_query_contracts.py | 474 +
.../mcp_service/chart/test_big_number_headline.py | 665 +
.../mcp_service/chart/test_bubble_chart.py | 10 +-
.../mcp_service/chart/test_bullet_chart.py | 5308 ++++
.../mcp_service/chart/test_bullet_tool_paths.py | 2337 ++
.../mcp_service/chart/test_chart_examples.py | 3 +-
.../mcp_service/chart/test_chart_helpers.py | 941 +-
.../chart/test_chart_plugin_contract.py | 1005 +
.../mcp_service/chart/test_chart_schemas.py | 244 +
.../mcp_service/chart/test_chart_target_schemas.py | 213 +
.../mcp_service/chart/test_chart_utils.py | 982 +
tests/unit_tests/mcp_service/chart/test_compile.py | 593 +-
.../chart/test_dashboard_time_binding.py | 90 +
.../mcp_service/chart/test_datasource_resolver.py | 622 +
.../mcp_service/chart/test_gantt_chart.py | 91 +-
.../mcp_service/chart/test_gauge_chart.py | 101 +-
.../mcp_service/chart/test_geographic_chart.py | 2199 ++
.../chart/test_histogram_boxplot_charts.py | 64 +-
.../chart/test_live_chart_datasource.py | 711 +
..._metric_aggregation_and_comparison_contracts.py | 379 +
.../chart/test_native_chart_regressions.py | 351 +
...ative_form_data_and_dataset_rebind_contracts.py | 1328 +
.../mcp_service/chart/test_new_chart_types.py | 4 +-
.../mcp_service/chart/test_preview_utils.py | 522 +-
.../mcp_service/chart/test_query_result.py | 2027 +-
.../unit_tests/mcp_service/chart/test_registry.py | 89 +-
.../mcp_service/chart/test_registry_filters.py | 9 +
.../mcp_service/chart/test_response_preflight.py | 488 +
.../test_review_query_and_preview_regressions.py | 530 +
.../mcp_service/chart/test_sunburst_chart.py | 5584 ++++
.../mcp_service/chart/test_treemap_completeness.py | 1459 +
.../chart/tool/test_column_suggestions.py | 617 +
.../mcp_service/chart/tool/test_generate_chart.py | 152 +
.../tool/test_generate_chart_semantic_view.py | 412 +
.../mcp_service/chart/tool/test_get_chart_data.py | 2738 +-
.../chart/tool/test_get_chart_preview.py | 461 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 338 +-
.../chart/tool/test_get_chart_type_schema.py | 36 +
.../mcp_service/chart/tool/test_list_charts.py | 152 +-
.../chart/tool/test_saved_chart_datasource.py | 432 +
.../mcp_service/chart/tool/test_update_chart.py | 1446 +-
.../chart/tool/test_update_chart_preview.py | 437 +-
.../chart/tool/test_update_chart_rebind.py | 1006 +
.../validation/test_column_name_normalization.py | 26 +
.../chart/validation/test_dataset_validator.py | 421 +-
.../common/test_time_range_validation.py | 82 +-
.../dashboard/test_dashboard_schemas.py | 138 +
.../mcp_service/dashboard/test_layout_placement.py | 101 +
.../mcp_service/dashboard/test_permalink.py | 40 +-
.../dashboard/tool/test_apply_dashboard_filters.py | 2435 +-
.../dashboard/tool/test_dashboard_generation.py | 142 +-
.../dashboard/tool/test_delete_dashboard.py | 1 +
.../dashboard/tool/test_duplicate_dashboard.py | 80 +-
.../dashboard/tool/test_get_dashboard_data.py | 44 +
.../dashboard/tool/test_get_dashboard_datasets.py | 235 +-
.../dashboard/tool/test_get_dashboard_layout.py | 744 +-
.../tool/test_manage_dashboard_markdown.py | 1279 +
.../dashboard/tool/test_manage_dashboard_owners.py | 1 +
.../dashboard/tool/test_manage_dashboard_roles.py | 2 +
.../dashboard/tool/test_manage_native_filters.py | 2025 +-
.../tool/test_managed_dashboard_refusal.py | 353 +
.../dashboard/tool/test_restore_dashboard.py | 4 +
.../dataset/tool/test_create_dataset.py | 1 +
.../dataset/tool/test_dataset_metric_mutations.py | 542 +
.../mcp_service/dataset/tool/test_dataset_tools.py | 18 +-
.../dataset/tool/test_delete_dataset.py | 340 +
.../tool/test_list_datasets_deleted_state.py | 206 +
.../mcp_service/dataset/tool/test_query_dataset.py | 966 +-
.../tool/test_restore_dataset.py} | 275 +-
.../dataset/tool/test_sql_dataset_guidance.py | 181 +
.../dataset/tool/test_update_dataset.py | 574 +
.../dataset/tool/test_update_dataset_metric.py | 13 +
.../explore/tool/test_generate_explore_link.py | 550 +-
.../test_generate_explore_link_semantic_view.py | 245 +
.../mcp_service/native_tool_inventory.json | 1289 +
.../mcp_service/semantic_layer/test_flag_off.py | 203 +
.../test_compatibility_selection_validation.py | 139 +
.../tool/test_get_compatible_dimensions.py | 12 +
.../tool/test_get_compatible_metrics.py | 25 +-
.../semantic_layer/tool/test_get_table.py | 1349 +-
.../semantic_layer/tool/test_list_metrics.py | 17 +-
.../mcp_service/sql_lab/tool/test_execute_sql.py | 153 +-
.../sql_lab/tool/test_execute_sql_response.py | 127 +
.../system/resources/test_instance_metadata.py | 144 +
.../system/resources/test_schema_discovery.py | 2 +-
.../system/tool/test_get_current_user.py | 6 +-
.../mcp_service/system/tool/test_get_schema.py | 11 +
.../mcp_service/test_auth_user_resolution.py | 48 +-
.../mcp_service/test_chart_tool_inventory.py | 361 +
.../mcp_service/test_composite_token_verifier.py | 105 +-
.../unit_tests/mcp_service/test_dashboard_scope.py | 1511 +
.../mcp_service/test_dashboard_scope_sql.py | 674 +
tests/unit_tests/mcp_service/test_dataset_scope.py | 247 +-
.../mcp_service/test_error_classification.py | 678 +
.../test_isdigit_isdecimal_regression.py | 149 +
tests/unit_tests/mcp_service/test_mcp_caching.py | 67 +-
.../unit_tests/mcp_service/test_mcp_docstrings.py | 128 +
tests/unit_tests/mcp_service/test_mcp_server.py | 97 +
.../mcp_service/test_mcp_tool_registration.py | 123 +
tests/unit_tests/mcp_service/test_middleware.py | 253 +-
.../mcp_service/test_middleware_logging.py | 140 +-
.../mcp_service/test_native_tool_surface.py | 1144 +
.../mcp_service/test_rbac_tool_enforcement.py | 30 +
.../mcp_service/test_response_serialization.py | 321 +
.../test_sanitization_warning_inputs.py | 80 +
tests/unit_tests/mcp_service/test_simple_proxy.py | 47 +
.../test_tool_description_constraints.py | 700 +
.../unit_tests/mcp_service/test_tool_inventory.py | 261 +
.../mcp_service/test_tool_search_transform.py | 1070 +-
.../mcp_service/test_validation_contract.py | 559 +
tests/unit_tests/mcp_service/test_worker.py | 878 +
.../mcp_service/test_worker_metadata_pool.py | 1004 +
.../mcp_service/utils/test_cache_utils.py | 32 +-
.../mcp_service/utils/test_response_size_utils.py | 85 +
.../mcp_service/utils/test_response_utils.py | 246 +
.../mcp_service/utils/test_serialization.py | 362 +
.../migrations/shared/security_converge_test.py | 218 +
.../test_add_run_as_and_report_config.py | 274 +
.../test_add_theme_editors_theme_id_index.py | 90 +
.../test_deprecated_permissions_33272.py | 420 +
.../unit_tests/migrations/viz/table_v1_v2_test.py | 42 +
tests/unit_tests/models/core_test.py | 600 +-
tests/unit_tests/models/dashboard_test.py | 232 +-
.../unit_tests/models/helpers_rls_rollback_test.py | 80 +
tests/unit_tests/models/helpers_test.py | 308 +-
.../models/select_alias_shadowing_test.py | 184 +
tests/unit_tests/models/slice_test.py | 181 +
.../unit_tests/models/test_certification_mixin.py | 76 +
.../models/test_virtual_dataset_format.py | 90 +-
tests/unit_tests/pandas_postprocessing/test_cum.py | 74 +
.../pandas_postprocessing/test_geography.py | 122 +
.../pandas_postprocessing/test_histogram.py | 32 +-
.../unit_tests/pandas_postprocessing/test_pivot.py | 339 +
.../pandas_postprocessing/test_rename.py | 96 +
.../unit_tests/pandas_postprocessing/test_utils.py | 88 +
tests/unit_tests/queries/query_object_test.py | 51 +-
tests/unit_tests/reports/api_test.py | 33 +
tests/unit_tests/reports/config_api_test.py | 135 +
tests/unit_tests/reports/config_dao_test.py | 359 +
.../reports/notifications/email_tests.py | 9 +-
.../reports/notifications/slack_tests.py | 20 +-
tests/unit_tests/reports/schemas_test.py | 169 +
tests/unit_tests/reports/utils_test.py | 222 +
tests/unit_tests/result_set_test.py | 135 +-
tests/unit_tests/scripts/change_detector_test.py | 114 +
.../scripts/docker_release_target_test.py | 177 +
.../scripts/translations/babel_update_test.py | 355 +
.../scripts/translations/backfill_po_test.py | 226 +-
.../scripts/translations/check_pot_drift_test.py | 297 +-
tests/unit_tests/security/guest_rls_test.py | 369 +-
tests/unit_tests/security/manager_test.py | 1434 +-
.../unit_tests/security/semantic_guest_rls_test.py | 401 +
.../security/test_guest_token_dataset_allowlist.py | 6 +-
tests/unit_tests/security/test_password_change.py | 166 +-
.../unit_tests/security/test_password_recovery.py | 1067 +
.../security/test_password_recovery_rate_limit.py | 71 +
.../security/test_permission_instructions_link.py | 4 +-
.../test_superset_user_api_subject_sync.py | 23 +
.../security/typed_datasource_access_test.py | 381 +
tests/unit_tests/semantic_layers/api_test.py | 171 +-
.../semantic_layers/cache_coordination_test.py | 525 +
.../unit_tests/semantic_layers/cache_host_test.py | 369 +
.../semantic_layers/cache_identity_test.py | 285 +
.../semantic_layers/cache_integration_test.py | 998 +
.../semantic_layers/cache_or_filters_test.py | 220 +
.../semantic_layers/cache_policy_test.py | 963 +
.../semantic_layers/cache_repository_test.py | 929 +
tests/unit_tests/semantic_layers/cache_test.py | 956 +
.../semantic_layers/cache_transform_test.py | 223 +
tests/unit_tests/semantic_layers/conftest.py | 92 +
.../semantic_layers/grain_validation_test.py | 127 +
.../semantic_layers/import_export_test.py | 943 +
.../semantic_layers/integer_precision_test.py | 366 +
tests/unit_tests/semantic_layers/labels_test.py | 13 +
.../semantic_layers/layer_list_scope_test.py | 215 +
tests/unit_tests/semantic_layers/layer_test.py | 91 +
tests/unit_tests/semantic_layers/mapper_test.py | 509 +-
tests/unit_tests/semantic_layers/members_test.py | 83 +
.../semantic_layers/metadata_contract_test.py | 174 +
.../semantic_layers/metric_filter_test.py | 288 +
tests/unit_tests/semantic_layers/models_test.py | 1046 +-
.../semantic_layers/null_filters_test.py | 339 +
.../semantic_layers/query_errors_test.py | 567 +
.../semantic_layers/result_completeness_test.py | 86 +
.../semantic_layers/selection_identity_test.py | 293 +
.../semantic_layers/simple_cache_clear_test.py | 657 +
tests/unit_tests/semantic_layers/test_access.py | 42 +
.../semantic_layers/test_runtime_flag.py | 216 +
.../semantic_layers/values_endpoint_test.py | 458 +-
.../soft_delete/test_restore_purge_hoist.py | 13 +
tests/unit_tests/sql/dialects/db2_tests.py | 20 +
tests/unit_tests/sql/execution/conftest.py | 4 +
.../unit_tests/sql/execution/test_cancellation.py | 165 +
tests/unit_tests/sql/execution/test_celery_task.py | 2261 +-
tests/unit_tests/sql/execution/test_executor.py | 904 +-
tests/unit_tests/sql/execution/test_utils.py | 207 +
tests/unit_tests/sql/parse_tests.py | 617 +
tests/unit_tests/sql_lab_test.py | 1806 +-
tests/unit_tests/sqllab/api_test.py | 45 +
.../subjects/test_creator_group_call_sites.py | 22 +-
tests/unit_tests/subjects/test_raise_for_access.py | 134 +-
tests/unit_tests/subjects/test_security.py | 21 +
tests/unit_tests/subjects/test_utils.py | 80 +
tests/unit_tests/tasks/test_async_queries.py | 68 +-
tests/unit_tests/tasks/test_deletion_retention.py | 1268 +-
.../tasks/test_export_dashboard_excel.py | 797 +-
.../tasks/test_version_history_retention.py | 860 +-
tests/unit_tests/test_mcp_simple_proxy.py | 45 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 17 +-
.../sk_sql_lab_progress_message_test.py | 64 +
tests/unit_tests/utils/core_override_user_test.py | 71 +
tests/unit_tests/utils/create_zip_tests.py | 84 +
tests/unit_tests/utils/date_parser_tests.py | 111 +
tests/unit_tests/utils/excel_tests.py | 38 +-
tests/unit_tests/utils/gcs_tests.py | 120 +
.../unit_tests/utils/geographic_world_test.py | 35 +-
tests/unit_tests/utils/log_tests.py | 150 +-
tests/unit_tests/utils/number_format_test.py | 26 +
tests/unit_tests/utils/oauth2_tests.py | 190 +
tests/unit_tests/utils/rls_test.py | 36 +
tests/unit_tests/utils/s3_tests.py | 102 +-
tests/unit_tests/utils/screenshot_test.py | 57 +
tests/unit_tests/utils/test_cache_manager.py | 33 +
tests/unit_tests/utils/test_core.py | 65 +-
tests/unit_tests/utils/test_database.py | 110 +-
tests/unit_tests/utils/test_error_sanitization.py | 132 +-
tests/unit_tests/utils/test_network.py | 110 +-
tests/unit_tests/utils/test_schema.py | 138 +
.../unit_tests/versioning/test_api_feature_flag.py | 167 +
.../versioning/test_capture_gap_restore.py | 809 +
tests/unit_tests/versioning/test_listener.py | 122 +-
tests/unit_tests/versioning/test_restore.py | 132 +-
.../versioning/test_restore_datasource_race.py | 189 +
.../versioning/test_restore_missing_datasource.py | 305 +
.../unit_tests/versioning/test_runtime_capture.py | 776 +
tests/unit_tests/views/datasource/views_test.py | 559 +-
tests/unit_tests/views/test_auth_login.py | 77 +
tests/unit_tests/views/test_bootstrap_auth.py | 20 +
tests/unit_tests/views/test_current_user_api.py | 126 +-
.../views/test_current_user_auth_errors.py | 122 +
tests/unit_tests/views/test_error_handling.py | 263 +-
tests/unit_tests/views/test_utils.py | 69 +-
1744 files changed, 310299 insertions(+), 66716 deletions(-)
delete mode 160000 .github/actions/chart-testing-action
create mode 100644 .github/workflows/chromatic.yml
create mode 100644 .github/workflows/python-nightly-canary.yml
delete mode 100644 .github/workflows/superset-playwright.yml
create mode 100644 .grype.yaml
create mode 100644 docs/admin_docs/configuration/google-sheets.mdx
create mode 100644 docs/developer_docs/contributing/translation-guide.md
create mode 100644 docs/developer_docs/extensions/semantic-filters.md
create mode 100644 docs/developer_docs/semantic-layer-cache-clear.md
create mode 100644 docs/developer_docs/semantic-query-errors.md
create mode 100644 docs/developer_docs/semantic-result-completeness.md
create mode 100644 docs/docs/using-superset/semantic-layer-connections.mdx
create mode 100644 docs/docs/using-superset/semantic-member-selections.mdx
create mode 100644 docs/sip/pivot-table-aggregation-parity.md
create mode 100644 docs/src/components/databases/DatabaseLogo.tsx
create mode 100644 docs/static/img/databases/clickhouse-dark.svg
create mode 100644 docs/static/img/databases/clickhouse-mark-dark.svg
create mode 100644 docs/static/img/databases/clickhouse-mark.svg
create mode 100644 docs/static/img/databases/clickhouse.svg
create mode 100644 docs/static/img/logos/douroeci.png
create mode 100644 docs/static/img/version-history/recently-archived.jpg
create mode 100644 docs/static/img/version-history/version-history-panel.jpg
create mode 100644 docs/static/img/version-history/version-history-preview.jpg
delete mode 100644 scripts/cypress_run.py
create mode 100644 scripts/docker_release_target.py
delete mode 100755 scripts/eslint.sh
create mode 100644 superset-core/src/superset_core/semantic_layers/errors.py
create mode 100644 superset-core/tests/semantic_layers/test_errors.py
create mode 100644 superset-core/tests/semantic_layers/test_view.py
create mode 100644 superset-embedded-sdk/testrig/README.md
create mode 100644 superset-embedded-sdk/testrig/drive.mjs
create mode 100644 superset-embedded-sdk/testrig/embedded.html
create mode 100644 superset-embedded-sdk/testrig/host.html
create mode 100644 superset-embedded-sdk/testrig/server.mjs
rename superset-frontend/{cypress-base/cypress/utils/urls.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/{packages/superset-ui-core/src/components/CachedLabel/types.ts => .storybook/stories.spec.ts} (77%)
delete mode 100644 superset-frontend/.storybook/test-runner.ts
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/cypress-base/.gitignore
delete mode 100644 superset-frontend/cypress-base/cypress.config.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/shared_dashboard_functions.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/chart.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/shared.helper.js
delete mode 100644 superset-frontend/cypress-base/cypress/fixtures/charts.json
delete mode 100644 superset-frontend/cypress-base/cypress/fixtures/dashboards.json
delete mode 100644 superset-frontend/cypress-base/cypress/support/directories.ts
delete mode 100644 superset-frontend/cypress-base/cypress/support/e2e.ts
delete mode 100644 superset-frontend/cypress-base/cypress/support/index.d.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/index.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/parsePostForm.ts
delete mode 100644 superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
delete mode 100644 superset-frontend/cypress-base/package-lock.json
delete mode 100644 superset-frontend/cypress-base/package.json
delete mode 100644 superset-frontend/cypress-base/tsconfig.json
delete mode 100755 superset-frontend/cypress_build.sh
delete mode 100644 superset-frontend/eslint.config.minimal.js
create mode 100644 superset-frontend/oxlint.custom-lint-rules.mts
create mode 100644 superset-frontend/packages/superset-core/src/theme/GlobalStyles.test.tsx
create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.test.ts
create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/headerGroups.ts
create mode 100644 superset-frontend/packages/superset-ui-chart-controls/src/utils/isServerPaginationUnsupported.ts
create mode 100644 superset-frontend/packages/superset-ui-core/src/query/semanticSelection.ts
delete mode 100644 superset-frontend/packages/superset-ui-core/types/react-table-config.d.ts
copy superset-frontend/{src => packages/superset-ui-core}/types/react-table.d.ts (52%)
create mode 100644 superset-frontend/playwright/components/core/Radio.ts
create mode 100644 superset-frontend/playwright/components/modals/SaveChartModal.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/global-async-query-resilience.spec.ts
create mode 100644 superset-frontend/playwright/tests/dashboard/global-async-query.spec.ts
delete mode 100644 superset-frontend/playwright/tests/experimental/README.md
create mode 100644 superset-frontend/playwright/tests/explore/cross-referenced-dashboards.spec.ts
create mode 100644 superset-frontend/playwright/tests/explore/explore-no-results.spec.ts
create mode 100644 superset-frontend/playwright/tests/explore/explore-save.spec.ts
create mode 100644 superset-frontend/playwright/tests/explore/explore-test-helpers.ts
rename superset-frontend/playwright/tests/{experimental => }/explore/results-tab-reuse.spec.ts (87%)
create mode 100644 superset-frontend/playwright/tests/sqllab/global-async-query-sqllab.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/JsonCellRenderer.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/jsonCellRowHeight.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/renderers/parseJsonCellValue.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/isJsonCellActionTarget.ts
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.tsx => plugins/plugin-chart-ag-grid-table/src/utils/mainComparison.ts} (56%)
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/JsonCellRenderer.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/mainComparison.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-cartodiagram/test/util/pieColors.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/src/normalizeRegions.ts
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/src/regions.ts
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx => plugins/plugin-chart-country-map/test/controlPanel.test.ts} (52%)
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/test/geographicRendering.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/test/normalizeRegions.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-country-map/test/south_africa.geojson.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Bubble/crossFilter.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/EchartsCandlestick.tsx
copy superset-frontend/{src/dashboard/components/RefreshFrequency/RefreshFrequencySelect.test.tsx => plugins/plugin-chart-echarts/src/Candlestick/buildQuery.ts} (51%)
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/constants.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/controlPanel.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/images/example1-dark.png
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/images/example1.png
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/images/thumbnail-dark.png
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/images/thumbnail.png
copy superset-frontend/plugins/plugin-chart-echarts/src/{Bubble => Candlestick}/index.ts (56%)
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/transformProps.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/types.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/Candlestick/utils.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/legendEventHandlers.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/src/utils/legendEventHandlers.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Bubble/EchartsBubble.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Bubble/crossFilter.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Candlestick/EchartsCandlestick.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Candlestick/buildQuery.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Candlestick/controlPanel.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Candlestick/transformProps.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Candlestick/utils.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Graph/categoryIdentity.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/sparseSubDailyBarGeometry.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-echarts/test/Treemap/EchartsTreemap.test.tsx
create mode 100644 superset-frontend/plugins/plugin-chart-pivot-table/test/react-pivottable/Styles.test.tsx
copy superset-frontend/{src/dashboard/components/RefreshFrequency/index.ts => plugins/plugin-chart-table/src/utils/headerGroups.ts} (70%)
create mode 100644 superset-frontend/plugins/plugin-chart-table/test/headerGroups.test.ts
create mode 100644 superset-frontend/plugins/plugin-chart-world-map/src/worldGeometry.ts
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx => plugins/plugin-chart-world-map/test/controlPanel.test.ts} (52%)
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/components/DeckGLOverlayMapLibre.test.tsx
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.test.tsx => plugins/preset-chart-deckgl/src/layers/Scatter/controlPanel.test.ts} (52%)
delete mode 100644 superset-frontend/scripts/copyAssets.js
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/TooltipContent.tsx => scripts/po2json-cli.js} (55%)
create mode 100644 superset-frontend/scripts/po2json.js
create mode 100644 superset-frontend/spec/fixtures/mockSemanticDashboardDatasources.ts
create mode 100644 superset-frontend/spec/helpers/geographicControlPanel.ts
create mode 100644 superset-frontend/spec/scripts/po2json.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/columnAllowlist.ts
create mode 100644 superset-frontend/src/components/FilterableTable/exactDecimals.test.tsx
create mode 100644 superset-frontend/src/components/FilterableTable/sortResults.test.ts
create mode 100644 superset-frontend/src/components/FilterableTable/sortResults.ts
create mode 100644 superset-frontend/src/dashboard/actions/dashboardInfo.test.ts
create mode 100644 superset-frontend/src/dashboard/actions/datasources.test.ts
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
create mode 100644 superset-frontend/src/dashboard/components/RefreshIntervalModal.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/SaveModal.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/SliceHeaderControls/ViewAsTableRendering.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/dnd/dragDroppableConfig.test.ts
create mode 100644 superset-frontend/src/dashboard/components/dnd/handleDrop.test.ts
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/keyValue.test.ts
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/state.test.ts
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/FiltersConfigForm/GroupByColumnAllowlist.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.semanticDefault.test.tsx
create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/hooks/useModalSaveLogic.test.ts
copy superset-frontend/{packages/superset-ui-core/src/components/CachedLabel/types.ts => src/dashboard/contexts/DashboardDatasetsContext.ts} (71%)
create mode 100644 superset-frontend/src/dashboard/util/removeUnreachableComponents.test.ts
create mode 100644 superset-frontend/src/dashboard/util/removeUnreachableComponents.ts
create mode 100644 superset-frontend/src/explore/components/ChartPills.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.debounce.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ComparisonRangeLabel.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/DateFilterControl/tests/CommonFrame.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/DateFilterControl/tests/DateLabel.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupEditor.tsx
create mode 100644 superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/HeaderGroupsControl/HeaderGroupsControl.tsx
copy superset-frontend/src/{dashboard/components/RefreshFrequency => explore/components/controls/HeaderGroupsControl}/index.ts (79%)
copy superset-frontend/src/explore/components/controls/{MapViewControl => HeaderGroupsControl}/types.ts (53%)
create mode 100644 superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.test.ts
create mode 100644 superset-frontend/src/explore/components/controls/HeaderGroupsControl/utils.ts
create mode 100644 superset-frontend/src/explore/components/controls/MapViewControl/ExtentTag.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/MatrixifyControl/utils/fetchTopNValues.test.ts
create mode 100644 superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/SemanticRequestView.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/SemanticRequestView.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ViewQueryModalFooter.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/XAxisSortControl.test.tsx
create mode 100644 superset-frontend/src/explore/components/controls/ZoomConfigControl/ZoomConfigControl.test.tsx
create mode 100644 superset-frontend/src/explore/controlUtils/getSectionsToRender.test.ts
create mode 100644 superset-frontend/src/explore/reducers/datasourcesReducer.test.ts
create mode 100644 superset-frontend/src/explore/reducers/saveModalReducer.test.ts
create mode 100644 superset-frontend/src/features/alerts/ReportConfigurationModal.test.tsx
create mode 100644 superset-frontend/src/features/alerts/ReportConfigurationModal.tsx
create mode 100644 superset-frontend/src/features/alerts/hooks/useReportConfiguration.ts
create mode 100644 superset-frontend/src/features/users/UserListModal.test.tsx
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-echarts/src/Bubble/EchartsBubble.tsx => src/filters/components/Range/isSemanticRange.ts} (65%)
copy superset-frontend/src/filters/components/{Time/TimeFilterPlugin.test.tsx => TimeColumn/TimeColumnFilterPlugin.test.tsx} (56%)
create mode 100644 superset-frontend/src/hooks/apiResources/datasets.cache.test.ts
create mode 100644 superset-frontend/src/middleware/asyncQueryError.ts
create mode 100644 superset-frontend/src/pages/ActionLog/ActionLog.test.tsx
create mode 100644 superset-frontend/src/pages/DatabaseList/DatabaseList.datasetDependents.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/ForgotPassword.test.tsx
create mode 100644 superset-frontend/src/pages/ForgotPassword/index.tsx
rename superset-frontend/{cypress-base/.eslintrc => src/pages/Login/styles.ts} (55%)
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/colorScheme.test.ts
create mode 100644 superset-frontend/src/utils/downloadAsPdf.test.ts
create mode 100644 superset-frontend/src/views/App.test.tsx
create mode 100644 superset/commands/annotation_layer/export.py
copy {scripts => superset/commands/annotation_layer/importers}/__init__.py (100%)
create mode 100644 superset/commands/annotation_layer/importers/dispatcher.py
create mode 100644 superset/commands/annotation_layer/importers/v1/__init__.py
create mode 100644 superset/commands/annotation_layer/importers/v1/utils.py
create mode 100644 superset/commands/report/update_config.py
create mode 100644 superset/commands/security/password_recovery.py
create mode 100644 superset/dashboards/excel_export/download_link.py
create mode 100644 superset/dashboards/excel_export/storage.py
create mode 100644 superset/dashboards/excel_export/sync_budget.py
create mode 100644 superset/dashboards/excel_export/workbook.py
create mode 100644 superset/dashboards/layout.py
copy {scripts => superset/mcp_service/catalog}/__init__.py (100%)
create mode 100644 superset/mcp_service/catalog/schemas.py
copy RELEASING/requirements.txt => superset/mcp_service/catalog/tool/__init__.py (91%)
create mode 100644 superset/mcp_service/catalog/tool/get_catalog.py
create mode 100644 superset/mcp_service/chart/big_number_headline.py
create mode 100644 superset/mcp_service/chart/datasource_resolver.py
create mode 100644 superset/mcp_service/chart/plugins/bullet.py
create mode 100644 superset/mcp_service/chart/plugins/geographic.py
create mode 100644 superset/mcp_service/chart/plugins/sunburst.py
create mode 100644 superset/mcp_service/chart/response_preflight.py
create mode 100644 superset/mcp_service/chart/sunburst.py
create mode 100644 superset/mcp_service/chart/treemap_preview.py
create mode 100644 superset/mcp_service/dashboard/layout_placement.py
create mode 100644 superset/mcp_service/dashboard/tool/manage_dashboard_markdown.py
create mode 100644 superset/mcp_service/dashboard_scope.py
create mode 100644 superset/mcp_service/dashboard_scope_sql.py
create mode 100644 superset/mcp_service/dataset/tool/create_dataset_metric.py
create mode 100644 superset/mcp_service/dataset/tool/delete_dataset.py
create mode 100644 superset/mcp_service/dataset/tool/delete_dataset_metric.py
create mode 100644 superset/mcp_service/dataset/tool/restore_dataset.py
create mode 100644 superset/mcp_service/dataset/tool/update_dataset.py
create mode 100644 superset/mcp_service/utils/serialization.py
create mode 100644 superset/mcp_service/utils/validation.py
create mode 100644 superset/mcp_service/worker.py
create mode 100644 superset/migrations/versions/2026-08-17_18-38_884a2115ebd3_add_uuid_to_annotation_layer_and_annotation.py
create mode 100644 superset/migrations/versions/2026-09-10_00-00_1f5f4fb8bfc1_delete_deprecated_permissions_33272.py
create mode 100644 superset/migrations/versions/2026-09-10_00-01_3ce9a4572f8a_rename_deprecated_permissions_33272.py
create mode 100644 superset/migrations/versions/2026-09-16_00-01_00fab727cd0a_add_theme_editors_theme_id_index.py
copy docker/docker-entrypoint-initdb.d/cypress-init.sh => superset/migrations/versions/2026-09-16_00-01_2ce579e91ae6_merge_deprecated_permissions_with_master.py (65%)
mode change 100755 => 100644
copy superset/{mcp_service/utils/query_utils.py => migrations/versions/2026-09-17_00-00_53a7abc31422_merge_deprecated_permissions_with_master_v2.py} (68%)
copy superset/{mcp_service/utils/query_utils.py => migrations/versions/2026-09-23_00-00_95d8a99c822e_merge_deprecated_permissions_with_master_v3.py} (68%)
create mode 100644 superset/migrations/versions/2026-10-05_12-00_e4a7c2b9d1f3_add_run_as_and_report_config.py
copy superset/{mcp_service/dashboard/constants.py => migrations/versions/2026-10-08_00-00_c179af013f48_add_semantic_layer_cache_version.py} (55%)
create mode 100644 superset/reports/utils.py
create mode 100644 superset/security/password_recovery.py
create mode 100644 superset/semantic_layers/access.py
copy superset/{mcp_service/dashboard/constants.py => semantic_layers/bundle_schemas.py} (54%)
create mode 100644 superset/semantic_layers/cache.py
create mode 100644 superset/semantic_layers/cache_coordination.py
create mode 100644 superset/semantic_layers/cache_host.py
create mode 100644 superset/semantic_layers/cache_identity.py
create mode 100644 superset/semantic_layers/cache_policy.py
create mode 100644 superset/semantic_layers/cache_repository.py
create mode 100644 superset/semantic_layers/cache_transform.py
create mode 100644 superset/semantic_layers/cache_types.py
create mode 100644 superset/semantic_layers/completeness.py
create mode 100644 superset/semantic_layers/exceptions.py
create mode 100644 superset/semantic_layers/import_export.py
create mode 100644 superset/semantic_layers/members.py
create mode 100644 superset/sql/execution/cancellation.py
create mode 100644 superset/sql/execution/utils.py
copy superset/{mcp_service/dashboard/constants.py => tasks/retention_cap.py} (57%)
create mode 100644 superset/utils/export_storage.py
create mode 100644 superset/utils/gcs.py
create mode 100644 superset/utils/geographic.py
create mode 100644 superset/utils/geographic_regions.py
create mode 100644 superset/utils/geographic_world.py
create mode 100644 superset/versioning/savepoints.py
create mode 100644 superset/versioning/snapshot.py
create mode 100644 superset/versioning/unit_of_work.py
create mode 100644 tests/integration_tests/annotation_layers/commands_tests.py
create mode 100644 tests/integration_tests/charts/semantic_metadata_authz_tests.py
create mode 100644 tests/integration_tests/reports/config_tests.py
create mode 100644 tests/integration_tests/semantic_layers/api_flag_test.py
create mode 100644 tests/integration_tests/semantic_layers/cache_coordination_tests.py
create mode 100644 tests/integration_tests/superset_test_config_gaq.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/testcontainers/db_engine_specs/test_opensearch.py
create mode 100644 tests/unit_tests/charts/data/test_non_dict_params.py
create mode 100644 tests/unit_tests/charts/data/test_time_range_validation.py
create mode 100644 tests/unit_tests/charts/test_export_api.py
create mode 100644 tests/unit_tests/commands/chart/semantic_export_test.py
create mode 100644 tests/unit_tests/commands/chart/test_warm_up_cache.py
create mode 100644 tests/unit_tests/commands/dashboard/export_example_semantic_test.py
create mode 100644 tests/unit_tests/commands/dashboard/permalink_create_test.py
create mode 100644 tests/unit_tests/commands/dashboard/restore_semantic_filters_test.py
create mode 100644 tests/unit_tests/commands/deletion_retention/test_purge_chart_detach.py
create mode 100644 tests/unit_tests/commands/importers/v1/import_models_test.py
create mode 100644 tests/unit_tests/commands/report/executor_test.py
create mode 100644 tests/unit_tests/commands/report/run_as_test.py
create mode 100644 tests/unit_tests/commands/report/update_config_test.py
create mode 100644 tests/unit_tests/commands/security/reset_test.py
create mode 100644 tests/unit_tests/commands/semantic_layer/view_data_access_test.py
create mode 100644 tests/unit_tests/commands/sql_lab/export_test.py
create mode 100644 tests/unit_tests/dao/test_copy_dashboard_legacy_ids.py
create mode 100644 tests/unit_tests/daos/test_chart_dao.py
rename docker/docker-entrypoint-initdb.d/cypress-init.sh => tests/unit_tests/daos/test_dataset_dao.py (63%)
mode change 100755 => 100644
create mode 100644 tests/unit_tests/daos/test_query_dao.py
create mode 100644 tests/unit_tests/dashboards/layout_test.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_download_link.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_storage.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_sync_budget.py
create mode 100644 tests/unit_tests/dashboards/test_excel_export_workbook.py
create mode 100644 tests/unit_tests/dashboards/test_export_api.py
create mode 100644 tests/unit_tests/databases/dao/related_objects_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_d1.py
create mode 100644 tests/unit_tests/db_engine_specs/test_exasol.py
create mode 100644 tests/unit_tests/db_engine_specs/test_ibmi.py
create mode 100644 tests/unit_tests/db_engine_specs/test_impala_pending.py
create mode 100644 tests/unit_tests/extensions/metastore_cache_test.py
create mode 100644 tests/unit_tests/initialization/init_views_test.py
copy {scripts => tests/unit_tests/mcp_service/catalog}/__init__.py (100%)
copy {scripts => tests/unit_tests/mcp_service/catalog/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/catalog/tool/test_get_catalog.py
create mode 100644 tests/unit_tests/mcp_service/chart/query_result_fixtures.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_axis_offset_and_spatial_query_contracts.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_big_number_headline.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bullet_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_bullet_tool_paths.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_plugin_contract.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_chart_target_schemas.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_datasource_resolver.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_geographic_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_live_chart_datasource.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_metric_aggregation_and_comparison_contracts.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_native_chart_regressions.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_native_form_data_and_dataset_rebind_contracts.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_response_preflight.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_review_query_and_preview_regressions.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_sunburst_chart.py
create mode 100644 tests/unit_tests/mcp_service/chart/test_treemap_completeness.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_column_suggestions.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_generate_chart_semantic_view.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_saved_chart_datasource.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_update_chart_rebind.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/test_layout_placement.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_manage_dashboard_markdown.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_managed_dashboard_refusal.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_dataset_metric_mutations.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_delete_dataset.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_list_datasets_deleted_state.py
copy tests/unit_tests/mcp_service/{dashboard/tool/test_restore_dashboard.py => dataset/tool/test_restore_dataset.py} (51%)
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_sql_dataset_guidance.py
create mode 100644 tests/unit_tests/mcp_service/dataset/tool/test_update_dataset.py
create mode 100644 tests/unit_tests/mcp_service/explore/tool/test_generate_explore_link_semantic_view.py
create mode 100644 tests/unit_tests/mcp_service/native_tool_inventory.json
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/test_flag_off.py
create mode 100644 tests/unit_tests/mcp_service/semantic_layer/tool/test_compatibility_selection_validation.py
create mode 100644 tests/unit_tests/mcp_service/sql_lab/tool/test_execute_sql_response.py
create mode 100644 tests/unit_tests/mcp_service/system/resources/test_instance_metadata.py
create mode 100644 tests/unit_tests/mcp_service/test_chart_tool_inventory.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_dashboard_scope_sql.py
create mode 100644 tests/unit_tests/mcp_service/test_error_classification.py
create mode 100644 tests/unit_tests/mcp_service/test_isdigit_isdecimal_regression.py
create mode 100644 tests/unit_tests/mcp_service/test_mcp_docstrings.py
create mode 100644 tests/unit_tests/mcp_service/test_native_tool_surface.py
create mode 100644 tests/unit_tests/mcp_service/test_response_serialization.py
create mode 100644 tests/unit_tests/mcp_service/test_sanitization_warning_inputs.py
create mode 100644 tests/unit_tests/mcp_service/test_simple_proxy.py
create mode 100644 tests/unit_tests/mcp_service/test_tool_description_constraints.py
create mode 100644 tests/unit_tests/mcp_service/test_tool_inventory.py
create mode 100644 tests/unit_tests/mcp_service/test_validation_contract.py
create mode 100644 tests/unit_tests/mcp_service/test_worker.py
create mode 100644 tests/unit_tests/mcp_service/test_worker_metadata_pool.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.py
create mode 100644 tests/unit_tests/migrations/shared/security_converge_test.py
create mode 100644 tests/unit_tests/migrations/test_add_run_as_and_report_config.py
create mode 100644 tests/unit_tests/migrations/test_add_theme_editors_theme_id_index.py
create mode 100644 tests/unit_tests/migrations/test_deprecated_permissions_33272.py
create mode 100644 tests/unit_tests/models/helpers_rls_rollback_test.py
create mode 100644 tests/unit_tests/models/select_alias_shadowing_test.py
create mode 100644 tests/unit_tests/models/test_certification_mixin.py
create mode 100644 tests/unit_tests/reports/config_api_test.py
create mode 100644 tests/unit_tests/reports/config_dao_test.py
create mode 100644 tests/unit_tests/reports/utils_test.py
create mode 100644 tests/unit_tests/scripts/docker_release_target_test.py
create mode 100644 tests/unit_tests/scripts/translations/babel_update_test.py
create mode 100644 tests/unit_tests/security/semantic_guest_rls_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/security/typed_datasource_access_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_coordination_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_host_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_identity_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_integration_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_or_filters_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_policy_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_repository_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_test.py
create mode 100644 tests/unit_tests/semantic_layers/cache_transform_test.py
create mode 100644 tests/unit_tests/semantic_layers/conftest.py
create mode 100644 tests/unit_tests/semantic_layers/grain_validation_test.py
create mode 100644 tests/unit_tests/semantic_layers/import_export_test.py
create mode 100644 tests/unit_tests/semantic_layers/integer_precision_test.py
create mode 100644 tests/unit_tests/semantic_layers/layer_list_scope_test.py
create mode 100644 tests/unit_tests/semantic_layers/layer_test.py
create mode 100644 tests/unit_tests/semantic_layers/members_test.py
create mode 100644 tests/unit_tests/semantic_layers/metadata_contract_test.py
create mode 100644 tests/unit_tests/semantic_layers/metric_filter_test.py
create mode 100644 tests/unit_tests/semantic_layers/null_filters_test.py
create mode 100644 tests/unit_tests/semantic_layers/query_errors_test.py
create mode 100644 tests/unit_tests/semantic_layers/result_completeness_test.py
create mode 100644 tests/unit_tests/semantic_layers/selection_identity_test.py
create mode 100644 tests/unit_tests/semantic_layers/simple_cache_clear_test.py
create mode 100644 tests/unit_tests/semantic_layers/test_access.py
create mode 100644 tests/unit_tests/semantic_layers/test_runtime_flag.py
create mode 100644 tests/unit_tests/sql/execution/test_cancellation.py
create mode 100644 tests/unit_tests/sql/execution/test_utils.py
create mode 100644 tests/unit_tests/test_mcp_simple_proxy.py
create mode 100644 tests/unit_tests/translations/sk_sql_lab_progress_message_test.py
create mode 100644 tests/unit_tests/utils/core_override_user_test.py
create mode 100644 tests/unit_tests/utils/create_zip_tests.py
create mode 100644 tests/unit_tests/utils/gcs_tests.py
copy superset/mcp_service/dashboard/constants.py => tests/unit_tests/utils/geographic_world_test.py (53%)
create mode 100644 tests/unit_tests/utils/test_schema.py
create mode 100644 tests/unit_tests/versioning/test_api_feature_flag.py
create mode 100644 tests/unit_tests/versioning/test_capture_gap_restore.py
create mode 100644 tests/unit_tests/versioning/test_restore_datasource_race.py
create mode 100644 tests/unit_tests/versioning/test_restore_missing_datasource.py
create mode 100644 tests/unit_tests/versioning/test_runtime_capture.py
create mode 100644 tests/unit_tests/views/test_auth_login.py
create mode 100644 tests/unit_tests/views/test_current_user_auth_errors.py