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