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

villebro pushed a change to branch 7.0
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 78611f6c0bc fix(i18n): regenerate messages.pot/.po catalogs to match 
7.0 source
     new 3ecc5df0b9b chore(version-history): use typed app dispatch (#44438)
     new 6cca61331f5 fix(embedded): tighten guest-token scoping for 
annotations, result types, and channels (#43391)
     new fb19f7715d7 fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
     new ea3c037e0d4 fix(security): exempt health blueprint from forced 
password changes (#44504)
     new 6e49486d08c fix(views): return 401 for NoAuthorizationError in 
handle_api_exception (SC-121647) (#44533)
     new df809ba3ba0 fix(mcp): stop data tool responses crashing on binary and 
NaT values (#44495)
     new f08c94bb418 fix(extensions): preserve chat state across display modes 
(#44490)
     new e0e99f6771c fix(dashboard): don't register an active tab for childless 
TABS components (#44345)
     new 2ea4c0d88f0 fix(mongodb): treat the Mongo database as the SQL Lab 
schema so Data Preview returns rows (#44141)
     new e823cc69a70 fix(dashboard): prevent and repair self-nested layout 
components (#44303)
     new 3b226f86fbb fix(export): keep the acting user in streaming CSV exports 
(#44425)
     new bc63a2f41e1 fix(mcp): return a specific error per failure class on 
tool calls (#44387)
     new 23e07c26f09 fix(db2): Use DATE_TRUNC to improve timegrain expressions 
(#43236)
     new a21db18c709 fix(dataset): bump changed_on on column refresh so chart 
cache invalidates (#43921)
     new 06f935c17fd fix(chart): require edit rights for query-context-only 
updates (#44494)
     new ab2f26bbbe9 fix(chart): allow semantic view datasource when saving 
charts (#44169)
     new 5cf6b3b3fb8 fix(i18n): stop f-strings in gettext leaking a bogus msgid 
on Python 3.12 (#44584)
     new 8bf26d29bc0 fix(dashboard): show loading spinner for charts outside an 
in-flight auto-refresh batch (#44272)
     new 42e41375804 fix(export): stamp ZIP entries with the export time 
(#44391)
     new e4a04b14637 fix(logging): record dashboard_id and slice_id for REST 
mutation endpoints (#44553)
     new a8d0975711e fix(dashboard): initialize label colors before mounting 
charts (#44557)
     new 7c8f0b296b1 fix(utils): return None from cast_to_num for non-decimal 
digit strings (#44615)
     new afef2f0a868 fix(mongodb): route dataset FROM clauses through 
quote_table so chart queries return rows (#44583)
     new 3f9b5a9d5ea fix(db_engine_specs): raise 
SupersetGenericDBErrorException instead of bare-reraising JSONDecodeError 
(#44616)
     new f220ad81c2e fix(query_context): raise 422 not 500 on malformed Jinja 
in Query datasource access check (#44011)
     new e0ce90347a4 fix(versioning): clean up history actions and refresh 
after saves (#44613)
     new 8fee803cc5e fix(security): apply global guest RLS rules inside adhoc 
sub-queries (#44645)
     new d52a0fa1b51 fix(mcp): preserve deduplicated chart tool input schemas 
(#44575)
     new 9c68e96f1ce fix(table): resolve auto-detected currency on time 
comparison columns (#44649)
     new c3d9f064af8 fix(dashboard): shrink row height on chart resize and 
unblock resize handles above columns (#44359)
     new bce9fd9a02f fix(database): catch JSONDecodeError in get_oauth2_config 
(#44658)
     new d916c074ba1 fix(import): downgrade expected validation-failure logs 
from error to warning (#44655)
     new f074e322273 fix(mcp): return safe argument validation details (#44591)
     new 54e83796d9d fix(charts): stream large CSV exports without executing 
the query first (#44624)
     new 7d9888d94eb fix(charts): guard Slice.form_data against non-dict params 
JSON (#44731)
     new 52d1911f8b7 fix: guard the isdigit()-then-int() pattern against 
non-decimal digits (#44620)
     new e1309982ac0 fix(bar-chart): show correct value labels per stack group 
with stackDimension (#43238)
     new ae60f5f5e89 fix(embedded): initialize feature flags in embedded 
dashboard entry point (#37367)
     new 27189ed5915 fix(reports): export full paginated table results (#44218)
     new 130edfae673 fix(security): apply global guest RLS rules to sub-queries 
in virtual datasets (#44650)
     new b05d6982799 fix(dashboard): load chart editors and viewers up front 
(#43990)
     new e1e4d5dc487 fix(security): keep guest RLS on sub-queries beside an 
unaliased source (#44768)
     new 98746d88c53 fix(reports): require a Slack channel id in report 
recipients (#42850)
     new fe0a164a675 fix(deps): resolve npm security alerts for fflate, 
image-size, js-yaml and smol-toml (#44740)
     new 8f121469715 fix(mcp): use chart metrics for the preview y axis (#44684)
     new 2ffb86fcad1 fix(dataset): hide Normalize column names for virtual 
datasets (#44579)
     new aa0696ace30 fix(i18n): correct Slovak SQL Lab progress message 
placeholders (#44587)
     new 9cdaabb03fb fix(deps): bump anyio to 4.15.1 (CVE-2026-63374) (#44735)
     new 7dbeef63292 fix(calendar): position Month/Week cells within their own 
month block (#44601)
     new f352599726e fix(ci): retry databend testcontainers bring-up past the 
image's metasrv race (#44729)
     new bdbba191196 fix(chart/data): guard against non-dict chart.params in 
get_data (#44770)
     new 668c072310b fix(databases): surface dataset dependents in the delete 
confirmation (#44392)
     new 06493e2c569 fix(dashboard): refresh version history after cross-filter 
scoping save (#44623)
     new 6ad881424b1 fix(ui): normalize BigInt values in memory formatter 
(#44507)
     new a2feb5c6bbf fix(chart): prevent stacking bars on a logarithmic axis 
(#44556)
     new 25c79777ad3 fix(echarts): reserve grid room for Gantt category names 
(#43189)
     new cdb51bcb149 fix(timeseries): preserve explicit UTC offsets in 
normalizeTimestamp (#43960)
     new fdb769014fd fix(query-context): resolve legacy granularity_sqla for 
stored queries (#44460)
     new cd79eee0ab7 fix(security): vary SQL Lab ad-hoc query cache key by 
effective RLS predicates (#43985)
     new e304b537256 fix(reports): drop the sign of negative numbers that round 
to zero in text reports (#44644)
     new 5eeeef3ccf6 fix(explore): include dataset editors in the Explore 
datasource payload (#44633)
     new 140c6dc857b fix(echarts): stop the zoom controls overlapping the 
legend selector (#44367)
     new 5014175f7ae fix(d1): support SQLAlchemy 2 with sqlalchemy-d1 0.2.0 
(#44505)
     new 5586ff9892a fix(types): preserve shared control registry option types 
(#44559)
     new 61202e307bb fix: DashboardAccessFilter to preserve dashboards with 
empty layouts (#44256)
     new 7b9f607d7c6 fix(excel): keep wall-clock datetimes when exporting 
timezones (#44360)
     new df56e3ef930 fix(mcp): hide internal sanitization warnings from input 
schemas (#44602)
     new 691cc9c1e34 fix(kylin): time grains and labels that work on Calcite 
and Spark pushdown (#44712)
     new cd443c481e8 fix(chart-data): roll back db.session after swallowed 
metadata-DB errors (#44653)
     new d23afc15857 fix: use database rollups for pivot table subtotals in 
Actual Values mode (#44631)
     new e7fc5e594ce fix(sqllab): stringify integer columns that overflow int64 
(#44743)
     new b4ab0479c22 fix(databases): validate schema before listing tables 
(#44683)
     new d1b82c1400d fix(db_engine_specs): restore shared compiler state after 
loading third-party dialects (#44686)
     new 673369624c6 fix(cratedb): recognize reflected timestamp types for 
epoch milliseconds (#44720)
     new 1c1f11d1ba3 fix(db_engine_specs): don't fail DDL/DML when the 
statement has no result set (#44714)
     new 695d5f26443 fix(dynamodb): map NUMBER columns and order charts by 
metric expressions (#44711)
     new 096468cde8b fix(databricks): derive omitted OAuth2 endpoints from the 
workspace host (#44710)
     new 19fc88fd074 fix(clickhouse): rename SELECT aliases that shadow a 
source column (#44715)
     new 82baf015a1c fix(database): mask secrets in create and update responses 
(#44733)
     new 28419ee3571 fix(api): return 4xx from oauth2 callback errors, not 500 
(#44769)
     new 353f94fd257 fix(i18n): clear 1,188 fuzzy translations with broken 
placeholders (#44611)
     new 07930e4aff9 fix(database): coerce LazyString validation messages to 
str in validate_parameters (#44802)
     new 6880c1277d7 fix(dashboard): catch JSONDecodeError on malformed 
default_filters in set_dash_metadata (#44716)
     new d782816193e fix(auth): gate registration UI by auth type, not just the 
flag (#44368)
     new 47eb00f0b2f 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)
     new 23d447ac0de 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)
     new 26a78b1f802 fix(dashboard): forward clearAllTriggers from vertical 
filter bar to FilterControls (#44531)
     new 4920db5f98b fix(echarts-timeseries): convert xAxisLabelInterval string 
'0' to number 0 (#43729)
     new 5f5eb6ba97c fix(echarts): fix sparse sub-daily bar sizing and x-axis 
mislabeling (#44628)
     new 52bcc3ba78d fix(mysql): require TLS when SSL is requested (#44723)
     new 5e11e60013b fix(dynamodb): render time bounds as ISO 8601 so sub-day 
ranges match stored timestamps (#44702)
     new e5fdd0441b0 fix(opensearch): page drill-to-detail samples with the 
OpenSearch SQL response format (#44703)
     new bb382e44a71 fix(gsheets): pass the OAuth2 token and delegation subject 
through connect_args (#44709)
     new 82890f4bea3 fix(databricks): stop the string-type patch writing 
SQLAlchemy's shared colspecs (#44707)
     new 1fc9eea4cc4 fix(oracle): map Oracle NUMBER, BINARY_FLOAT/DOUBLE and 
CLOB column types (#44685)
     new 604fc260112 chore(deps): bump undici from 7.29.0 to 7.30.0 in 
/superset-frontend in the security group across 1 directory (#44809)
     new 7c43324d6e5 fix(datafusion): render temporal SQL that DataFusion 
accepts (#44700)
     new c87b77f77ab fix(db2): set current_schema to the catalog name of the 
selected schema (#44706)
     new aac3300d32e fix(doris): quarter grain, SSL toggle, parameters URI, 
error mapping and column types (#44718)
     new 81d84d913d9 chore(deps): bump the security group across 1 directory 
with 2 updates (#44824)
     new eeb2f40290f fix(mcp): drop TOOL_BUDGETS entries for tools absent on 7.0
     new d83ed5374f4 fix(i18n): regenerate messages.pot/.po catalogs to match 
7.0 source
     new 83f8b26befe fix(tests): import pytest in test_preview_utils for the 
#44684 backport

The 103 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 UPDATING.md                                        | 133 +++-
 .../configuration/configuring-superset.mdx         |  17 +
 docs/admin_docs/configuration/mcp-server.mdx       |  48 +-
 docs/developer_docs/api.mdx                        |  13 +
 .../extensions/extension-points/chat.md            |   4 +
 docs/developer_docs/extensions/mcp.md              |  21 +
 docs/docs/using-superset/exploring-data.mdx        |   8 +
 .../using-superset/exporting-dashboard-data.mdx    |   2 +
 docs/docs/using-superset/version-history.mdx       |   7 +
 docs/src/data/databases.json                       |  14 +-
 docs/static/resources/openapi.json                 |  33 +
 .../databases/supported/apache-doris.mdx           |   8 +
 .../version-6.1.0/databases/supported/mysql.mdx    |  18 +
 pyproject.toml                                     |  18 +-
 requirements/development.txt                       |   4 +-
 superset-embedded-sdk/package-lock.json            |   6 +-
 superset-frontend/cypress-base/package-lock.json   |  16 +-
 superset-frontend/cypress-base/package.json        |   2 +-
 superset-frontend/package-lock.json                |  81 +--
 superset-frontend/package.json                     |  17 +-
 .../src/shared-controls/sharedControls.tsx         |  13 +-
 .../components/DeleteModal/DeleteModal.test.tsx    |  37 +-
 .../src/components/DeleteModal/index.tsx           |  14 +-
 .../src/components/DeleteModal/types.ts            |   2 +
 .../superset-ui-core/src/currency-format/utils.ts  |  22 +
 .../factories/createMemoryFormatter.ts             |  11 +-
 .../src/time-format/utils/normalizeTimestamp.ts    |  18 +
 .../test/currency-format/utils.test.ts             |  33 +
 .../factories/createMemoryFormatter.test.ts        |   7 +
 .../time-format/utils/normalizeTimestamp.test.ts   |  70 +++
 .../components/dashboard/DashboardFilterBar.ts     |   6 +-
 .../tests/dashboard/clear-all-filters.spec.ts      | 112 ++++
 .../src/transformProps.ts                          |  44 +-
 .../test/transformProps.test.ts                    |  45 ++
 .../src/vendor/cal-heatmap.ts                      |  60 +-
 .../plugin-chart-calendar/test/cal-heatmap.test.ts |  40 ++
 .../plugin-chart-echarts/src/Gantt/constants.ts    |   6 +
 .../src/Gantt/transformProps.ts                    |  54 +-
 .../src/MixedTimeseries/transformProps.ts          |  95 ++-
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |  14 +-
 .../src/Timeseries/transformProps.ts               | 171 +++++-
 .../src/Timeseries/transformers.ts                 |  51 +-
 .../plugins/plugin-chart-echarts/src/constants.ts  |  20 +-
 .../plugin-chart-echarts/src/utils/formatters.ts   |   7 +
 .../plugin-chart-echarts/src/utils/series.ts       | 211 +++++--
 .../test/Gantt/transformProps.test.ts              |  58 ++
 .../test/MixedTimeseries/transformProps.test.ts    |  26 +
 .../test/Timeseries/Bar/controlPanel.test.ts       |  62 +-
 .../Bar/sparseSubDailyBarGeometry.test.ts          | 505 +++++++++++++++
 .../test/Timeseries/Bar/transformProps.test.ts     | 101 ++-
 .../test/Timeseries/transformProps.test.ts         | 391 ++++++++++++
 .../test/utils/formatters.test.ts                  |  37 ++
 .../plugin-chart-echarts/test/utils/series.test.ts | 169 ++++-
 .../plugin-chart-table/src/transformProps.ts       |  44 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |  32 +
 .../DatasourceEditor/DatasourceEditor.tsx          |  22 +-
 .../tests/DatasourceEditor.test.tsx                |  31 +
 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         |   7 +
 .../src/dashboard/actions/hydrate.test.ts          |  85 ++-
 superset-frontend/src/dashboard/actions/hydrate.ts |  28 +-
 .../DashboardBuilder/DashboardContainer.test.tsx   | 145 ++++-
 .../DashboardBuilder/DashboardContainer.tsx        |  12 +-
 .../Header/useHeaderAutoRefresh.test.tsx           |  58 +-
 .../components/Header/useHeaderAutoRefresh.ts      |   2 +-
 .../PropertiesModal/PropertiesModal.test.tsx       |   6 +
 .../dashboard/components/PropertiesModal/index.tsx |   6 +-
 .../components/gridComponents/Chart/Chart.test.tsx |  59 ++
 .../components/gridComponents/Chart/Chart.tsx      |   4 +-
 .../components/gridComponents/Row/Row.test.tsx     |  43 +-
 .../components/gridComponents/Row/Row.tsx          | 124 ++--
 .../components/gridComponents/Tabs/Tabs.test.tsx   |  95 +++
 .../components/gridComponents/Tabs/Tabs.tsx        |  22 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |   2 +-
 .../src/dashboard/components/menu/HoverMenu.tsx    |   4 +-
 .../nativeFilters/FilterBar/FilterBar.test.tsx     | 124 +++-
 .../nativeFilters/FilterBar/Vertical.tsx           |   6 +
 .../components/resizable/ResizableContainer.tsx    |   3 +-
 superset-frontend/src/dashboard/constants.ts       |   6 +
 .../dashboard/contexts/AutoRefreshContext.test.tsx |  69 +++
 .../src/dashboard/contexts/AutoRefreshContext.tsx  |  31 +-
 .../src/dashboard/reducers/dashboardInfo.ts        |  10 +
 .../src/dashboard/reducers/dashboardLayout.test.ts |  62 ++
 .../src/dashboard/reducers/dashboardLayout.ts      |  26 +
 .../src/dashboard/reducers/dashboardState.test.ts  |  23 +
 .../src/dashboard/reducers/dashboardState.ts       |   2 +
 .../src/dashboard/util/getDropPosition.test.ts     |  83 +++
 .../src/dashboard/util/getDropPosition.ts          |  13 +
 .../util/removeUnreachableComponents.test.ts       | 283 +++++++++
 .../dashboard/util/removeUnreachableComponents.ts  | 225 +++++++
 .../util/updateComponentParentsList.test.ts        |  17 +
 .../dashboard/util/updateComponentParentsList.ts   |   7 +-
 .../explore/components/ExploreChartPanel/index.tsx |  12 +-
 .../explore/components/PropertiesModal/index.tsx   |   4 +
 .../src/explore/reducers/saveModalReducer.ts       |  15 +-
 .../src/features/versionHistory/ActionRow.tsx      | 110 +---
 .../versionHistory/ChartVersionPreview.tsx         |   5 +-
 .../DashboardVersionHistory.test.tsx               |  89 ++-
 .../versionHistory/DashboardVersionHistory.tsx     |  49 +-
 .../versionHistory/ExploreVersionHistory.test.tsx  | 344 ++++++++++-
 .../versionHistory/ExploreVersionHistory.tsx       |  54 +-
 .../src/features/versionHistory/PreviewBanner.tsx  |   5 +-
 .../features/versionHistory/SaveGroupItem.test.tsx | 100 ++-
 .../src/features/versionHistory/SaveGroupItem.tsx  |   5 -
 .../versionHistory/VersionHistoryPanel.test.tsx    |   3 +-
 .../versionHistory/useDashboardVersionPreview.ts   |   5 +-
 .../versionHistory/useVersionActions.test.tsx      |   6 +-
 .../features/versionHistory/useVersionActions.tsx  |   5 +-
 .../DatabaseList.datasetDependents.test.tsx        | 289 +++++++++
 superset-frontend/src/pages/DatabaseList/index.tsx | 108 +++-
 superset-frontend/src/pages/Login/Login.test.tsx   |  17 +
 superset-frontend/src/pages/Login/index.tsx        |   4 +-
 superset-frontend/src/preamble.test.ts             |  29 +-
 superset-frontend/src/preamble.ts                  |  10 +-
 superset-frontend/src/views/App.test.tsx           | 125 ++++
 superset-frontend/src/views/App.tsx                |  28 +-
 superset/charts/api.py                             |  18 +-
 superset/charts/client_processing.py               |   9 +-
 superset/charts/data/api.py                        |  65 +-
 superset/cli/importexport.py                       |   8 +-
 superset/commands/chart/update.py                  |  11 +-
 superset/commands/dashboard/update.py              |   7 +-
 superset/commands/database/exceptions.py           |   5 +
 superset/commands/database/oauth2.py               |  27 +-
 superset/commands/database/tables.py               |  41 +-
 superset/commands/database/update.py               |  34 +-
 superset/commands/importers/v1/__init__.py         |   6 +-
 superset/commands/importers/v1/utils.py            |   6 +-
 superset/commands/streaming_export/base.py         |  41 +-
 superset/common/query_context_factory.py           |  36 ++
 superset/common/query_context_processor.py         |  17 +-
 superset/common/utils/query_cache_manager.py       |   2 +
 superset/connectors/sqla/models.py                 |  75 ++-
 superset/daos/base.py                              |   2 +-
 superset/daos/dashboard.py                         |  63 +-
 superset/daos/database.py                          |  43 +-
 superset/daos/datasource.py                        |   2 +-
 superset/dashboards/api.py                         |  24 +-
 superset/dashboards/filters.py                     |  22 +-
 superset/dashboards/layout.py                      | 269 ++++++++
 superset/databases/api.py                          |  43 +-
 superset/databases/schemas.py                      |  15 +
 superset/datasets/api.py                           |  11 +-
 superset/db_engine_specs/__init__.py               |  31 +-
 superset/db_engine_specs/base.py                   |  49 +-
 superset/db_engine_specs/clickhouse.py             |   4 +
 superset/db_engine_specs/crate.py                  |  35 +-
 superset/db_engine_specs/d1.py                     | 142 ++++-
 superset/db_engine_specs/databricks.py             |  70 ++-
 superset/db_engine_specs/datafusion.py             |  34 +-
 superset/db_engine_specs/db2.py                    |  39 +-
 superset/db_engine_specs/doris.py                  | 111 +++-
 superset/db_engine_specs/dynamodb.py               |  24 +-
 superset/db_engine_specs/elasticsearch.py          |  38 +-
 superset/db_engine_specs/gsheets.py                |  60 +-
 superset/db_engine_specs/ibmi.py                   |  21 +
 superset/db_engine_specs/impala.py                 |  21 +
 superset/db_engine_specs/kylin.py                  |  50 +-
 superset/db_engine_specs/mongodb.py                |  72 ++-
 superset/db_engine_specs/mssql.py                  |   2 -
 superset/db_engine_specs/mysql.py                  | 201 ++++++
 superset/db_engine_specs/oracle.py                 |  65 +-
 superset/db_engine_specs/pinot.py                  |   4 +
 superset/db_engine_specs/postgres.py               |   6 -
 superset/db_engine_specs/snowflake.py              |   8 +-
 superset/db_engine_specs/starrocks.py              |  12 +-
 superset/embedded/view.py                          |   8 +-
 superset/exceptions.py                             |  23 +
 superset/extensions/metastore_cache.py             |  35 +-
 superset/importexport/api.py                       |   9 +-
 superset/jinja_context.py                          |  12 +-
 superset/mcp_service/chart/chart_helpers.py        |   4 +-
 superset/mcp_service/chart/chart_utils.py          |   2 +-
 superset/mcp_service/chart/compile.py              |  29 +-
 superset/mcp_service/chart/preview_utils.py        |  44 +-
 superset/mcp_service/chart/schemas.py              |  36 +-
 superset/mcp_service/chart/tool/generate_chart.py  |   7 +-
 superset/mcp_service/chart/tool/get_chart_data.py  |  31 +-
 superset/mcp_service/chart/tool/get_chart_sql.py   |   4 +-
 .../mcp_service/chart/tool/update_chart_preview.py |   4 +-
 .../chart/validation/dataset_validator.py          |   2 +-
 superset/mcp_service/constants.py                  |  28 +
 superset/mcp_service/dashboard/schemas.py          |   7 +-
 .../mcp_service/dashboard/tool/delete_dashboard.py |   2 +-
 .../dashboard/tool/generate_dashboard.py           |   3 +-
 superset/mcp_service/dataset/schemas.py            |  13 +-
 .../explore/tool/generate_explore_link.py          |   2 +-
 superset/mcp_service/mcp_config.py                 |  21 +-
 superset/mcp_service/middleware.py                 | 311 +++++++++-
 superset/mcp_service/semantic_layer/schemas.py     |  11 +-
 superset/mcp_service/server.py                     | 131 +---
 superset/mcp_service/sql_lab/schemas.py            |  18 +-
 superset/mcp_service/sql_lab/tool/execute_sql.py   |  19 -
 superset/mcp_service/utils/response_utils.py       |   8 +-
 superset/mcp_service/utils/serialization.py        | 225 +++++++
 superset/mcp_service/utils/validation.py           | 218 +++++++
 superset/models/core.py                            |  62 +-
 superset/models/dashboard.py                       |   3 +
 superset/models/helpers.py                         |  90 ++-
 superset/models/slice.py                           |   7 +-
 superset/models/sql_lab.py                         |  29 +-
 superset/queries/saved_queries/api.py              |   7 +-
 superset/reports/schemas.py                        |  41 ++
 superset/result_set.py                             |   2 +
 superset/security/manager.py                       | 387 ++++++++++--
 superset/security/password_change.py               |  11 +-
 superset/sql/parse.py                              | 132 +++-
 superset/themes/api.py                             |   7 +-
 superset/translations/ar/LC_MESSAGES/messages.po   | 400 ++++++------
 superset/translations/ca/LC_MESSAGES/messages.po   | 334 +++++-----
 superset/translations/cs/LC_MESSAGES/messages.po   | 262 ++++----
 superset/translations/de/LC_MESSAGES/messages.po   |  64 +-
 superset/translations/en/LC_MESSAGES/messages.po   |  64 +-
 superset/translations/es/LC_MESSAGES/messages.po   |  64 +-
 superset/translations/fa/LC_MESSAGES/messages.po   | 398 ++++++------
 superset/translations/fi/LC_MESSAGES/messages.po   | 363 +++++------
 superset/translations/fr/LC_MESSAGES/messages.po   |  64 +-
 superset/translations/it/LC_MESSAGES/messages.po   |  64 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |  63 +-
 superset/translations/ko/LC_MESSAGES/messages.po   | 513 +++++++++-------
 superset/translations/lv/LC_MESSAGES/messages.po   | 277 +++++----
 superset/translations/messages.pot                 |  64 +-
 superset/translations/mi/LC_MESSAGES/messages.po   | 338 +++++-----
 superset/translations/nl/LC_MESSAGES/messages.po   | 407 +++++++------
 superset/translations/pl/LC_MESSAGES/messages.po   | 448 +++++++-------
 superset/translations/pt/LC_MESSAGES/messages.po   |  64 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     | 392 ++++++------
 superset/translations/ro/LC_MESSAGES/messages.po   |  65 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |  65 +-
 superset/translations/sk/LC_MESSAGES/messages.po   | 266 ++++----
 superset/translations/sl/LC_MESSAGES/messages.po   |  66 +-
 superset/translations/sr/LC_MESSAGES/messages.po   |  65 +-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |  65 +-
 superset/translations/ta/LC_MESSAGES/messages.po   | 348 ++++++-----
 superset/translations/th/LC_MESSAGES/messages.po   | 349 +++++------
 superset/translations/tr/LC_MESSAGES/messages.po   |  90 ++-
 superset/translations/uk/LC_MESSAGES/messages.po   | 278 +++++----
 superset/translations/zh/LC_MESSAGES/messages.po   | 115 +++-
 .../translations/zh_TW/LC_MESSAGES/messages.po     | 352 ++++++-----
 superset/utils/core.py                             |  29 +-
 superset/utils/database.py                         |  76 ++-
 superset/utils/date_parser.py                      |   2 +-
 superset/utils/excel.py                            |  83 ++-
 superset/utils/log.py                              | 101 ++-
 superset/utils/number_format.py                    |  10 +-
 superset/utils/rls.py                              | 113 +++-
 superset/views/error_handling.py                   |   6 +-
 tests/integration_tests/base_tests.py              |  14 +-
 tests/integration_tests/charts/api_tests.py        | 120 ++++
 tests/integration_tests/charts/commands_tests.py   | 133 +++-
 tests/integration_tests/dashboards/api_tests.py    |  27 +-
 .../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/embedded/test_view.py      |  23 +
 tests/integration_tests/reports/api_tests.py       |  75 +++
 tests/integration_tests/reports/commands_tests.py  |  65 +-
 .../security/row_level_security_tests.py           | 110 ++++
 .../db_engine_specs/test_databend.py               |  43 +-
 .../unit_tests/charts/data/test_non_dict_params.py | 116 ++++
 tests/unit_tests/charts/test_chart_data_api.py     | 197 ++++++
 tests/unit_tests/charts/test_client_processing.py  |  55 ++
 tests/unit_tests/charts/test_filters.py            |  96 +++
 tests/unit_tests/commands/chart/create_test.py     |  33 +-
 .../chart/streaming_export_command_test.py         |  61 ++
 tests/unit_tests/commands/chart/update_test.py     |  66 +-
 tests/unit_tests/commands/dashboard/update_test.py |  46 ++
 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 ++++
 .../commands/importers/v1/import_models_test.py    |  93 +++
 .../unit_tests/commands/importers/v1/utils_test.py | 100 ++-
 .../common/test_query_context_factory.py           | 201 ++++++
 .../common/test_query_context_processor.py         |  63 ++
 tests/unit_tests/connectors/sqla/models_test.py    | 357 ++++++++++-
 tests/unit_tests/dao/base_dao_test.py              |  29 +-
 tests/unit_tests/dao/dashboard_test.py             | 386 +++++++++++-
 tests/unit_tests/dao/test_query_stop_race.py       |  68 ++-
 tests/unit_tests/dashboards/datasets_test.py       |   1 +
 tests/unit_tests/dashboards/layout_test.py         | 325 ++++++++++
 .../dashboards/semantic_view_access_test.py        |  68 ++-
 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/datasource/dao_tests.py           |  16 +
 tests/unit_tests/db_engine_specs/test_base.py      |  91 ++-
 tests/unit_tests/db_engine_specs/test_crate.py     |  83 ++-
 tests/unit_tests/db_engine_specs/test_d1.py        | 337 ++++++++++
 .../unit_tests/db_engine_specs/test_databricks.py  |  70 +++
 .../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     | 227 ++++++-
 tests/unit_tests/db_engine_specs/test_dynamodb.py  |  88 ++-
 .../db_engine_specs/test_elasticsearch.py          | 144 ++++-
 tests/unit_tests/db_engine_specs/test_gsheets.py   | 210 ++++++-
 tests/unit_tests/db_engine_specs/test_ibmi.py      |  76 +++
 tests/unit_tests/db_engine_specs/test_impala.py    | 109 ++++
 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_mariadb.py   |  83 +++
 tests/unit_tests/db_engine_specs/test_mongodb.py   | 241 +++++++-
 tests/unit_tests/db_engine_specs/test_mysql.py     | 386 ++++++++++++
 tests/unit_tests/db_engine_specs/test_oracle.py    |  64 +-
 tests/unit_tests/db_engine_specs/test_pinot.py     |  41 +-
 tests/unit_tests/db_engine_specs/test_snowflake.py |  47 ++
 tests/unit_tests/db_engine_specs/test_starrocks.py |  73 +--
 .../unit_tests/extensions/metastore_cache_test.py  |  93 +++
 tests/unit_tests/jinja_context_test.py             |  31 +
 .../mcp_service/chart/test_preview_utils.py        | 127 ++++
 .../mcp_service/chart/tool/test_generate_chart.py  |  57 ++
 .../mcp_service/chart/tool/test_get_chart_data.py  |  25 +-
 .../chart/tool/test_update_chart_preview.py        |  31 +
 .../dashboard/tool/test_dashboard_generation.py    |  63 ++
 .../dashboard/tool/test_duplicate_dashboard.py     |  21 +-
 .../explore/tool/test_generate_explore_link.py     |  25 +
 .../mcp_service/sql_lab/tool/test_execute_sql.py   | 104 ++--
 .../mcp_service/test_chart_tool_inventory.py       | 189 ++++++
 .../mcp_service/test_error_classification.py       | 678 +++++++++++++++++++++
 .../test_isdigit_isdecimal_regression.py           | 149 +++++
 tests/unit_tests/mcp_service/test_middleware.py    |   4 +-
 .../mcp_service/test_response_serialization.py     | 289 +++++++++
 .../test_sanitization_warning_inputs.py            |  80 +++
 .../unit_tests/mcp_service/test_tool_inventory.py  | 155 +++++
 .../mcp_service/test_tool_search_transform.py      | 347 ++---------
 .../mcp_service/test_validation_contract.py        | 511 ++++++++++++++++
 .../mcp_service/utils/test_serialization.py        | 294 +++++++++
 tests/unit_tests/models/core_test.py               | 180 +++++-
 tests/unit_tests/models/dashboard_test.py          |  41 +-
 .../unit_tests/models/helpers_rls_rollback_test.py |  80 +++
 .../models/select_alias_shadowing_test.py          | 184 ++++++
 tests/unit_tests/models/slice_test.py              |  28 +
 .../models/test_virtual_dataset_format.py          |  90 ++-
 tests/unit_tests/reports/schemas_test.py           |  83 +++
 tests/unit_tests/result_set_test.py                |  22 +
 tests/unit_tests/security/guest_rls_test.py        | 369 ++++++++++-
 tests/unit_tests/security/manager_test.py          | 334 +++++++++-
 tests/unit_tests/security/test_password_change.py  |  68 ++-
 tests/unit_tests/semantic_layers/models_test.py    | 225 +++++++
 tests/unit_tests/sql/parse_tests.py                | 268 ++++++++
 tests/unit_tests/sql_lab_test.py                   |   4 +-
 tests/unit_tests/subjects/test_raise_for_access.py | 122 ++++
 .../tasks/test_export_dashboard_excel.py           |  42 ++
 .../sk_sql_lab_progress_message_test.py            |  64 ++
 tests/unit_tests/utils/create_zip_tests.py         |  84 +++
 tests/unit_tests/utils/excel_tests.py              |  38 +-
 tests/unit_tests/utils/log_tests.py                | 150 ++++-
 tests/unit_tests/utils/number_format_test.py       |  26 +
 tests/unit_tests/utils/rls_test.py                 |  36 ++
 tests/unit_tests/utils/test_core.py                |  19 +
 tests/unit_tests/utils/test_database.py            | 110 +++-
 tests/unit_tests/views/test_error_handling.py      |  22 +
 355 files changed, 25516 insertions(+), 4560 deletions(-)
 create mode 100644 
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/sparseSubDailyBarGeometry.test.ts
 create mode 100644 
superset-frontend/src/dashboard/actions/dashboardInfo.test.ts
 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/pages/DatabaseList/DatabaseList.datasetDependents.test.tsx
 create mode 100644 superset-frontend/src/views/App.test.tsx
 create mode 100644 superset/dashboards/layout.py
 create mode 100644 superset/mcp_service/utils/serialization.py
 create mode 100644 superset/mcp_service/utils/validation.py
 create mode 100644 tests/unit_tests/charts/data/test_non_dict_params.py
 create mode 100644 tests/unit_tests/commands/importers/v1/import_models_test.py
 create mode 100644 tests/unit_tests/dashboards/layout_test.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_ibmi.py
 create mode 100644 tests/unit_tests/extensions/metastore_cache_test.py
 create mode 100644 tests/unit_tests/mcp_service/test_chart_tool_inventory.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_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_tool_inventory.py
 create mode 100644 tests/unit_tests/mcp_service/test_validation_contract.py
 create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.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/translations/sk_sql_lab_progress_message_test.py
 create mode 100644 tests/unit_tests/utils/create_zip_tests.py

Reply via email to