You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jl...@apache.org on 2026/08/21 22:46:37 UTC
(superset) branch fix-sql-lab-grid-menu-transparent-bg updated (8e51b037702 -> 767b63440aa)
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch fix-sql-lab-grid-menu-transparent-bg
in repository https://gitbox.apache.org/repos/asf/superset.git
from 8e51b037702 fix(sql-lab): fix transparent background in ag-grid native menus and tooltips
add f9cedf84e20 fix: drop post-processing options the operation no longer accepts (#42927)
add 5d4358a1493 chore(deps): bump google-auth-library from 11.0.1 to 11.0.2 in /superset-frontend (#43364)
add 80bba12d0fc chore(deps-dev): bump globals from 17.10.0 to 17.11.0 in /docs (#43363)
add b288db91f95 chore(deps): bump github/codeql-action/init from 4.37.6 to 4.37.7 (#43362)
add 8b67fb4d308 chore(deps-dev): bump globals from 17.10.0 to 17.11.0 in /superset-websocket (#43360)
add fdd3945dded chore(deps): bump github/codeql-action/analyze from 4.37.6 to 4.37.7 (#43361)
add e7dccd44a7c fix(reports): prevent blank/partial report PDFs from virtualized charts (#43348)
add 2ff79bd4950 fix(github): point the issue templates at labels that exist (#43357)
add c0884c0f0cc fix(explore): keep x-axis label when overriding Time Column with time comparison (#42875)
add 1ef12580a7a fix(chart): ignore chart actions for a chart no longer in state (#43228)
add 1ca5e61f544 chore: Unset future flag in engines and sessions. (#43273)
add 83c6ea4e03d fix(explore): show the empty state when Samples returns no result payload (#43115)
add 148ffaff501 fix(plugin-chart-echarts): omit stacked value labels on zero-height segments (#42756)
add b5fe00b407d test(frontend): shrink flaky/misplaced recently-archived e2e coverage to Jest unit tests (#43264)
add bcfb4346f6b fix(mcp): honor use_cache and cache_timeout in get_chart_data (#43349)
add 271564cb0da feat(config): add EXTRA_PANDAS_POSTPROCESSING_OPS extension point (#43337)
add 42ba2a4433f fix(reports): humanize day-of-month + day-of-week crontabs as OR (#43307)
add 7441ce90aea fix(charts): align grain-less time comparisons safely (#43315)
add 01b1d58ac97 fix(plugin-chart-echarts): restore tooltips for metrics labelled like⦠(#43369)
add 18a36d04c72 fix(mcp): preserve user-authored result values (#43202)
add 18fc2c62286 fix(sqllab): stop copying a permalink when opening a saved query (#43147)
add 27ea5de44a0 fix(i18n-es): correct case/number collapse in the semantic-layer labels (#43311)
add 22396d504a5 fix(ux): use title case for button labels (#40048)
add f7d505e1fd0 fix(listview): stop card clicks creating a duplicate history entry (#43310)
add fb53761ec8a chore(deps-dev): bump baseline-browser-mapping from 2.11.13 to 2.11.14 in /superset-frontend (#43381)
add 87743ef3f83 chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /superset-frontend (#43380)
add 14408eb3db9 chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (#43379)
add 132340b6529 chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (#43378)
add 6e22050b509 chore(deps): bump the storybook group in /docs with 2 updates (#43377)
add 65910abf21f fix(sqllab): disable Save dataset until the query runs successfully (#43330)
add e45dd2d3f16 ci: pull CI service images from GHCR mirror (fork-safe) [depends on #40880] (#40882)
add 05842a6350f feat(metrics): add MEDIAN/STDDEV_SAMP/VAR_SAMP as system-wide aggregates (#42895)
add a05a0999877 fix(embedded): block custom SQL injection in guest user chart payloads (#43111)
add d422f5b4b68 fix: last date label hidden on time series x-axis (#39899) (#42299)
add fd7095df9a5 fix(explore): align viz type gallery thumbnails and Featured tag (#43373)
add 03eac279e5f fix(explore): exclude permalink_key from chart URL params (#43354)
add edda9d1bbbc fix(frontend): tighten SQL Lab autorun scoping and HTML-rendering defaults (#43398)
add aee98b527d1 fix(charts): escape untrusted strings before rendering into chart tooltips and popups (#43397)
add 2b6044b624a fix: tighten SSRF validation, executor resolution, and cache scoping across reports/thumbnails (#43395)
add 04017f39568 fix(sqllab): re-validate access against rendered SQL and tighten cache/permalink scoping (#43394)
add 65893113fed fix(import): tighten ownership and validation checks across asset importers (#43393)
add 9781254363f fix(export): escape formula-triggering values consistently and bound post-processing inputs (#43396)
add 5f3e34908cc fix(charts): surface blocking alerts/reports when archiving a chart (#43402)
add 5812c0eab56 fix(mcp): fail closed when MCP_AUTH_FACTORY raises (#43329)
add 09bd8c98de2 feat(chart): enable cross-filter on temporal x-axis (bar/label click) (#42792)
add 767b63440aa Merge branch 'master' into fix-sql-lab-grid-menu-transparent-bg
No new revisions were added by this update.
Summary of changes:
.github/ISSUE_TEMPLATE/bug-report.yml | 2 +-
.github/ISSUE_TEMPLATE/cosmetic.md | 2 +-
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/superset-e2e.yml | 8 +-
.../workflows/superset-python-integrationtest.yml | 12 +-
.github/workflows/superset-python-presto-hive.yml | 10 +-
.github/workflows/superset-python-unittest.yml | 9 +-
UPDATING.md | 40 ++
docs/admin_docs/configuration/mcp-server.mdx | 36 +-
docs/docs/using-superset/recently-archived.mdx | 5 +
docs/package.json | 6 +-
docs/sip/median-stddev-variance-aggregates.md | 236 +++++++
docs/yarn.lock | 44 +-
scripts/benchmark_migration.py | 2 +-
superset-frontend/package-lock.json | 148 ++---
superset-frontend/package.json | 14 +-
.../src/components/MetricOption.tsx | 16 +-
.../test/components/MetricOption.test.tsx | 23 +
.../superset-ui-core/src/query/types/Metric.ts | 5 +-
.../superset-ui-core/src/time-format/index.ts | 1 +
.../superset-ui-core/src/utils/html.test.tsx | 37 ++
.../packages/superset-ui-core/src/utils/html.tsx | 27 +-
.../playwright/components/modals/ConfirmDialog.ts | 6 +-
.../tests/recently-archived/delete-modal.spec.ts | 58 --
.../recently-archived/recently-archived.spec.ts | 57 +-
.../src/renderers/NumericCellRenderer.tsx | 12 +-
.../test/NumericCellRenderer.test.tsx | 59 ++
.../plugins/plugin-chart-calendar/src/utils.ts | 8 +
.../src/vendor/cal-heatmap.ts | 9 +-
.../plugin-chart-calendar/test/cal-heatmap.test.ts | 30 +
.../plugin-chart-calendar/test/utils.test.ts | 25 +-
.../src/util/layerUtil.tsx | 27 +-
.../test/util/layerUtil.test.ts | 47 +-
.../src/MixedTimeseries/transformProps.ts | 19 +-
.../plugin-chart-echarts/src/Radar/utils.ts | 16 +-
.../src/Timeseries/EchartsTimeseries.test.tsx | 736 +++++++++++++++++++--
.../src/Timeseries/EchartsTimeseries.tsx | 205 ++++--
.../src/Timeseries/transformProps.ts | 26 +-
.../src/Timeseries/transformers.ts | 8 +
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../src/utils/eChartOptionsSchema.ts | 43 +-
.../plugin-chart-echarts/src/utils/forecast.ts | 15 +
.../src/utils/safeEChartOptionsParser.test.ts | 70 ++
.../test/MixedTimeseries/transformProps.test.ts | 104 +++
.../plugin-chart-echarts/test/Radar/utils.test.ts | 38 ++
.../test/Timeseries/EchartsTimeseries.test.tsx | 426 +++++++++++-
.../test/Timeseries/transformProps.test.ts | 96 +++
.../test/Timeseries/transformers.test.ts | 78 ++-
.../test/utils/forecast.test.ts | 33 +
.../test/plugin/utilities.test.ts | 19 +
.../plugins/plugin-chart-world-map/src/WorldMap.ts | 25 +-
.../plugin-chart-world-map/test/WorldMap.test.ts | 27 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 12 +-
.../src/SqlLab/components/ResultSet/index.tsx | 4 +-
.../SaveDatasetActionButton.test.tsx | 26 +-
.../components/SaveDatasetActionButton/index.tsx | 9 +-
.../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 1 +
.../src/SqlLab/components/SaveQuery/index.tsx | 3 +
.../SqlLab/components/SqlEditor/SqlEditor.test.tsx | 42 ++
.../src/SqlLab/components/SqlEditor/index.tsx | 10 +-
.../src/components/Chart/chartReducer.ts | 5 +
.../src/components/Chart/chartReducers.test.ts | 16 +
.../DatasourceModal/DatasourceModal.test.tsx | 8 +-
.../Datasource/DatasourceModal/index.tsx | 2 +-
.../DatasourceEditor/DatasourceEditor.tsx | 1 -
.../src/components/FilterableTable/index.tsx | 2 +-
.../src/components/FilterableTable/utils.test.tsx | 29 +
.../src/components/FilterableTable/utils.tsx | 6 +-
.../test/testHelpers.tsx => src/constants.test.ts} | 26 +-
superset-frontend/src/constants.ts | 1 +
.../DataTablesPane/components/SamplesPane.tsx | 15 +-
.../components/useGridResultTable.tsx | 6 +-
.../DataTablesPane/test/SamplesPane.test.tsx | 46 ++
.../AnnotationLayer.test.tsx | 8 +-
.../AnnotationLayerControl/AnnotationLayer.tsx | 2 +-
.../ColorBreakpointOption.test.tsx | 25 +
.../ColorBreakpointOption.tsx | 17 +-
.../DatasourceControl/DatasourceControl.test.tsx | 6 +-
.../controls/MetricControl/AdhocMetric.test.ts | 39 ++
.../controls/MetricControl/AdhocMetric.ts | 13 +
.../MetricControl/AdhocMetricEditPopover/index.tsx | 3 +-
.../VizTypeControl/VizTypeControl.test.tsx | 18 +
.../controls/VizTypeControl/VizTypeGallery.tsx | 60 +-
.../useExploreAdditionalActionsMenu/index.tsx | 43 +-
.../useExploreAdditionalActionsMenu.test.tsx | 40 ++
superset-frontend/src/explore/constants.ts | 13 +-
.../src/features/charts/ChartCard.test.tsx | 108 +++
.../src/features/charts/ChartCard.tsx | 14 +-
.../src/features/dashboards/DashboardCard.test.tsx | 51 +-
.../src/features/dashboards/DashboardCard.tsx | 6 +-
.../src/pages/ArchivedList/ArchivedList.test.tsx | 65 ++
.../src/pages/ChartList/ChartList.test.tsx | 254 +++++++
superset-frontend/src/pages/ChartList/index.tsx | 218 ++++--
.../pages/SavedQueryList/SavedQueryList.test.tsx | 141 +++-
.../src/pages/SavedQueryList/index.tsx | 22 +-
.../src/pages/SqlLab/LocationContext.test.tsx | 66 ++
.../src/pages/SqlLab/LocationContext.tsx | 6 +-
superset-frontend/src/views/CRUD/utils.test.tsx | 60 ++
superset-frontend/src/views/CRUD/utils.tsx | 18 +-
.../components/LeftCell/LeftCell.test.tsx | 55 ++
.../TimeTable/components/LeftCell/LeftCell.tsx | 19 +-
superset-websocket/package-lock.json | 8 +-
superset-websocket/package.json | 2 +-
superset-websocket/spec/index.test.ts | 36 +
superset-websocket/src/index.ts | 14 +-
superset/charts/api.py | 8 +-
superset/charts/data/api.py | 6 +
superset/charts/schemas.py | 54 +-
superset/cli/test_db.py | 3 -
superset/commands/chart/delete.py | 60 +-
.../commands/dashboard/importers/dispatcher.py | 12 +-
superset/commands/database/importers/v1/utils.py | 82 ++-
superset/commands/dataset/importers/dispatcher.py | 12 +-
superset/commands/dataset/importers/v1/utils.py | 34 +-
superset/commands/importers/v1/utils.py | 85 ++-
superset/commands/query/importers/v1/utils.py | 42 +-
superset/commands/report/create.py | 2 +-
superset/commands/sql_lab/execute.py | 26 +
superset/commands/sql_lab/permalink/get.py | 23 +-
superset/commands/streaming_export/base.py | 36 +-
superset/common/query_context_factory.py | 21 +-
superset/common/query_object.py | 116 +++-
superset/config.py | 11 +
superset/connectors/sqla/models.py | 27 +-
superset/daos/report.py | 16 +-
superset/dashboards/api.py | 61 +-
superset/db_engine_specs/base.py | 27 +
superset/db_engine_specs/cockroachdb.py | 9 +-
superset/db_engine_specs/doris.py | 8 +-
superset/db_engine_specs/duckdb.py | 16 +-
superset/db_engine_specs/greenplum.py | 10 +
superset/db_engine_specs/gsheets.py | 1 -
superset/db_engine_specs/hana.py | 8 +-
superset/db_engine_specs/hologres.py | 10 +
superset/db_engine_specs/mysql.py | 18 +
superset/db_engine_specs/netezza.py | 9 +
superset/db_engine_specs/oceanbase.py | 9 +-
superset/db_engine_specs/postgres.py | 21 +
superset/db_engine_specs/redshift.py | 22 +-
superset/db_engine_specs/risingwave.py | 10 +
superset/db_engine_specs/snowflake.py | 8 +-
superset/db_engine_specs/starrocks.py | 9 +-
superset/db_engine_specs/vertica.py | 9 +
superset/db_engine_specs/yugabytedb.py | 10 +
superset/examples/utils.py | 2 +-
superset/initialization/__init__.py | 17 +
superset/jinja_context.py | 68 +-
superset/mcp_service/annotation_layer/schemas.py | 78 +--
superset/mcp_service/app.py | 7 +-
superset/mcp_service/caching.py | 27 +-
superset/mcp_service/chart/chart_helpers.py | 2 +
superset/mcp_service/chart/chart_utils.py | 13 +-
.../chart/prompts/create_chart_guided.py | 4 +-
superset/mcp_service/chart/schemas.py | 177 ++---
superset/mcp_service/chart/tool/delete_chart.py | 12 +-
superset/mcp_service/chart/tool/generate_chart.py | 36 +-
superset/mcp_service/chart/tool/get_chart_data.py | 266 ++++----
superset/mcp_service/chart/tool/get_chart_info.py | 44 +-
.../mcp_service/chart/tool/get_chart_preview.py | 82 +--
superset/mcp_service/chart/tool/get_chart_sql.py | 30 +-
superset/mcp_service/chart/tool/restore_chart.py | 13 +-
superset/mcp_service/chart/tool/update_chart.py | 9 +-
.../chart/validation/dataset_validator.py | 10 +-
.../chart/validation/runtime/format_validator.py | 9 +-
superset/mcp_service/dashboard/schemas.py | 524 ++++-----------
.../mcp_service/dashboard/tool/delete_dashboard.py | 14 +-
.../dashboard/tool/duplicate_dashboard.py | 13 +-
.../dashboard/tool/get_dashboard_info.py | 17 +-
.../dashboard/tool/manage_native_filters.py | 26 +-
.../dashboard/tool/restore_dashboard.py | 15 +-
superset/mcp_service/dataset/schemas.py | 198 ++----
.../dataset/tool/update_dataset_metric.py | 49 +-
superset/mcp_service/mcp_config.py | 2 +
superset/mcp_service/report/schemas.py | 18 +-
superset/mcp_service/role/schemas.py | 19 +-
superset/mcp_service/server.py | 24 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 85 +--
superset/mcp_service/tag/schemas.py | 32 +-
superset/mcp_service/task/schemas.py | 11 +-
superset/mcp_service/theme/schemas.py | 50 +-
superset/mcp_service/theme/tool/create_theme.py | 10 +-
superset/mcp_service/user/schemas.py | 30 +-
superset/mcp_service/utils/__init__.py | 2 -
superset/mcp_service/utils/sanitization.py | 146 ----
superset/migrations/shared/catalogs.py | 4 +-
..._08-54_c3a8f8611885_materializing_permission.py | 2 +-
...d8bc074f7aad_add_new_field_is_restricted_to_.py | 2 +-
...06-27_08-43_27ae655e4247_make_creator_owners.py | 2 +-
...-09-07_23-50_33d996bcc382_update_slice_model.py | 4 +-
...2_11-31_eca4694defa7_sqllab_setting_defaults.py | 2 +-
...4_12-31_db0c65b146bd_update_slice_model_json.py | 2 +-
...7c195a_rewriting_url_from_shortner_with_new_.py | 2 +-
...-08_08-19_67a6ac9b727b_update_spatial_params.py | 2 +-
...2-17_11-06_21e88bc06c02_annotation_migration.py | 4 +-
.../2018-02-13_08-07_e866bd2d4976_smaller_grid.py | 4 +-
...-04-03_08-19_130915240929_is_sqllab_viz_flow.py | 2 +-
...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py | 2 +-
...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py | 4 +-
...6-07_09-52_afb7730f6a9c_remove_empty_filters.py | 2 +-
...13_10-20_4451805bbaa1_remove_double_percents.py | 4 +-
.../2018-06-13_14-54_bddc498dd179_adhoc_filters.py | 4 +-
...4_14-31_80a67c5192fa_single_pie_chart_metric.py | 4 +-
...1c4c6_migrate_num_period_compare_and_period_.py | 4 +-
.../2018-07-19_23-41_c617da68de7d_form_nullable.py | 2 +-
...07-20_15-31_7f2635b51f5d_update_base_columns.py | 2 +-
...07-20_15-57_e9df189e5c7e_update_base_metrics.py | 2 +-
..._bebcf3fed1fe_convert_dashboard_v1_positions.py | 2 +-
.../versions/2018-08-01_11-47_7fcdcde0761c_.py | 2 +-
...08545_migrate_time_range_for_default_filters.py | 2 +-
...2018-12-11_22-03_fb13d49b72f9_better_filters.py | 4 +-
...e1b21cd94a4_change_owner_to_m2m_relation_on_.py | 2 +-
.../2019-03-21_10-22_d94d33dbe938_form_strip.py | 2 +-
...a3f04bc82_add_parent_ids_in_dashboard_layout.py | 4 +-
.../2019-06-28_13-17_ab8c66efdd01_resample.py | 4 +-
...ng_unique_constraint_on_dashboard_slices_tbl.py | 2 +-
...5afa9079866a_serialize_schema_permissions_py.py | 2 +-
...e_form_strip_leading_and_trailing_whitespace.py | 2 +-
.../2019-10-10_13-52_1495eb914ad3_time_range.py | 4 +-
...127d0d1d_reconvert_legacy_filters_into_adhoc.py | 2 +-
..._14-13_3325d4caccc8_dashboard_scoped_filters.py | 2 +-
...10-42_f9a30386bd74_cleanup_time_grainularity.py | 2 +-
...29_09-24_620241d1153f_update_time_grain_sqla.py | 2 +-
...978245563a02_migrate_iframe_to_dash_markdown.py | 2 +-
...654_fix_data_access_permissions_for_virtual_.py | 2 +-
...b56500de1855_add_uuid_column_to_import_mixin.py | 4 +-
...208f_collapse_alerting_models_into_a_single_.py | 4 +-
...6e99fb176a0_add_import_mixing_to_saved_query.py | 4 +-
...e38177dbf641_security_converge_saved_queries.py | 4 +-
...15-25_40f16acf1ba7_security_converge_reports.py | 4 +-
...8ee129739cf9_security_converge_css_templates.py | 4 +-
..._14-13_ccb74baaa89b_security_converge_charts.py | 4 +-
...5-05_45731db65d9c_security_converge_datasets.py | 4 +-
...45_1f6dca87d1a2_security_converge_dashboards.py | 4 +-
...2_c25cb2c78727_security_converge_annotations.py | 4 +-
...-49_42b4c9e01447_security_converge_databases.py | 4 +-
...14_13-40_4b84f97828aa_security_converge_logs.py | 4 +-
...12-15_e37912a26567_security_converge_queries.py | 4 +-
...60bf0649a77_migrate_x_dateunit_in_time_range.py | 2 +-
...2fdb_add_granularity_to_charts_where_missing.py | 2 +-
...-10_12-32_41ce8799acc3_rename_pie_label_type.py | 4 +-
...1412ec1e5a7b_legacy_force_directed_to_echart.py | 4 +-
...8_09-13_c501b7c653a3_add_missing_uuid_column.py | 2 +-
...989bbe479899_rename_filter_configuration_in_.py | 4 +-
...ea61c5e7_remove_dataset_health_check_message.py | 2 +-
...88938_country_map_use_lowercase_country_name.py | 4 +-
...3a3a8ff221_migrate_filter_sets_to_new_format.py | 4 +-
...ed7ec95_migrate_native_filters_to_new_schema.py | 4 +-
...3605f370a_fix_schemas_allowed_for_csv_upload.py | 2 +-
...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 2 +-
..._17-16_f6196627326f_update_chart_permissions.py | 4 +-
...13dd52_change_fetch_values_predicate_to_text.py | 2 +-
...4fbb_add_type_to_native_filter_configuration.py | 4 +-
...453f4e2e_migrate_timeseries_limit_metric_to_.py | 2 +-
...12_11-15_32646df09c64_update_time_grain_sqla.py | 2 +-
...e5f1dacd_rename_to_schemas_allowed_for_file_.py | 4 +-
...aa3ff_add_force_screenshot_to_alerts_reports.py | 2 +-
...5b9441_rename_big_viz_total_form_data_fields.py | 4 +-
...d1d2_move_pivot_table_v2_legacy_order_by_to_.py | 4 +-
...d8e252_fix_query_and_saved_query_null_schema.py | 2 +-
...b0ca7944_change_adhoc_filter_b_from_none_to_.py | 4 +-
...14-38_a9422eeaae74_new_dataset_models_take_2.py | 2 +-
...d0249074e4_deprecate_time_range_endpoints_v2.py | 2 +-
...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py | 2 +-
...-39_cbe71abde154_fix_report_schedule_and_log.py | 2 +-
...8_16-07_e786798587de_delete_none_permissions.py | 2 +-
..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py | 2 +-
...59_7fb8bca906d2_permalink_rename_filterstate.py | 4 +-
...5-48_409c7b420ab0_add_created_by_fk_as_owner.py | 2 +-
..._13-00_c747c78868b6_migrating_legacy_treemap.py | 4 +-
...-07_14-00_06e1e70058c7_migrating_legacy_area.py | 4 +-
...665d_fix_table_chart_conditional_formatting_.py | 2 +-
...1_4ce1d9b25135_remove_filter_bar_orientation.py | 2 +-
...4-46_c0a3ea245b61_remove_show_native_filters.py | 2 +-
...ac08bb5b83_invert_horizontal_bar_chart_order.py | 4 +-
...7_13-24_b5ea9d343307_bar_chart_stack_options.py | 4 +-
...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py | 2 +-
...2a5681ddfd_convert_key_value_entries_to_json.py | 4 +-
...-41_4ea966691069_cross_filter_global_scoping.py | 4 +-
...02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py | 4 +-
...-08_10-22_4c5da39be729_migrate_treemap_chart.py | 4 +-
...e58e1e58e5c_migrate_dual_line_to_mixed_chart.py | 4 +-
...delete_obsolete_druid_nosql_slice_parameters.py | 2 +-
...6f8b1280_cleanup_erroneous_parent_filter_ids.py | 2 +-
...9_17-54_ee179a490af9_deckgl_path_width_units.py | 2 +-
...23_0769ef90fddd_fix_schema_perm_for_datasets.py | 2 +-
...086c2676_add_normalize_columns_to_sqla_model.py | 2 +-
...317970b4400c_added_time_secondary_column_to_.py | 2 +-
...ff00fe8_add_percent_calculation_type_funnel_.py | 4 +-
...18_14-41_a32e0c4d8646_migrate_sunburst_chart.py | 4 +-
...d09c9_migrate_filter_boxes_to_native_filters.py | 2 +-
...d83218_migrate_can_view_and_drill_permission.py | 4 +-
...47_be1b217cd8cd_big_number_kpi_single_metric.py | 4 +-
...8_15-43_5ad7321c2169_mig_new_csv_upload_perm.py | 4 +-
...14-04_d60591c5515f_mig_new_excel_upload_perm.py | 4 +-
...36_4a33124c18ad_mig_new_columnar_upload_perm.py | 4 +-
...9123a_update_charts_with_old_time_comparison.py | 4 +-
...09-34_d482d51c15ca_remove_legacy_plugins_5_0.py | 4 +-
...-34_74ad1125881c_converge_upload_permissions.py | 4 +-
...fdba9f_merge_x_axis_sort_series_with_x_axis_.py | 4 +-
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...8d8526_fix_form_data_string_in_query_context.py | 2 +-
...00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py | 4 +-
...a1b2c3d4e5f6_add_granular_export_permissions.py | 4 +-
...-00_b4a3f2e1d0c9_fix_security_view_menu_case.py | 2 +-
...23_a7d3f1b9c2e4_cleanup_stale_can_import_pvm.py | 4 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 2 +-
...941d5352_restore_pivot_table_percent_display.py | 2 +-
...0-00_c4a1b8e2d739_databend_secure_to_sslmode.py | 2 +-
superset/models/core.py | 2 -
superset/models/helpers.py | 347 ++++++++--
superset/reports/models.py | 4 +-
superset/reports/notifications/webhook.py | 140 +++-
superset/security/manager.py | 290 ++++++++
superset/sql/execution/executor.py | 42 +-
superset/tags/models.py | 2 +-
superset/tasks/cron_util.py | 45 ++
superset/tasks/thumbnails.py | 3 +
superset/tasks/types.py | 7 +-
superset/tasks/utils.py | 95 +--
superset/thumbnails/digest.py | 13 +-
superset/translations/es/LC_MESSAGES/messages.po | 39 +-
superset/utils/core.py | 18 +-
superset/utils/date_parser.py | 24 +-
superset/utils/excel.py | 32 +-
superset/utils/pandas_postprocessing/__init__.py | 17 +
superset/utils/pandas_postprocessing/histogram.py | 21 +
superset/utils/pandas_postprocessing/prophet.py | 15 +
superset/utils/pandas_postprocessing/resample.py | 32 +
superset/utils/pandas_postprocessing/rolling.py | 15 +
superset/utils/pandas_postprocessing/utils.py | 6 +-
superset/utils/screenshot_utils.py | 68 +-
superset/utils/screenshots.py | 51 +-
superset/utils/webdriver.py | 48 +-
tests/integration_tests/charts/api_tests.py | 10 +-
.../integration_tests/charts/soft_delete_tests.py | 5 +-
tests/integration_tests/dao/conftest.py | 3 +-
tests/integration_tests/dashboards/api_tests.py | 123 +++-
tests/integration_tests/datasets/api_tests.py | 35 +-
tests/integration_tests/fixtures/datasource.py | 4 +-
.../composite_pk_association_tables__tests.py | 2 +-
.../migrations/composite_pk_round_trip__tests.py | 4 +-
tests/integration_tests/model_tests.py | 8 +-
tests/integration_tests/query_context_tests.py | 52 ++
tests/integration_tests/reports/alert_tests.py | 6 +-
tests/integration_tests/reports/utils.py | 11 +-
tests/unit_tests/charts/test_filters.py | 2 +-
tests/unit_tests/charts/test_schemas.py | 81 +++
.../commands/chart/delete_message_test.py | 63 ++
.../chart/streaming_export_command_test.py | 36 +
.../importers/v1/import_saved_query_test.py | 126 ++++
.../unit_tests/commands/importers/v1/utils_test.py | 151 +++++
.../commands/sql_lab/permalink_get_test.py | 87 +++
tests/unit_tests/commands/sql_lab/test_execute.py | 161 +++++
.../common/test_query_context_factory.py | 6 +-
.../common/test_time_column_offset_repro.py | 204 ++++++
tests/unit_tests/common/test_time_shifts.py | 354 +++++++++-
tests/unit_tests/conftest.py | 4 +-
tests/unit_tests/connectors/sqla/models_test.py | 10 +-
tests/unit_tests/daos/test_report_dao.py | 57 +-
.../commands/importers/dispatcher_test.py | 25 +-
.../databases/commands/importers/v1/import_test.py | 240 +++++++
.../unit_tests/databases/error_provenance_test.py | 2 +-
tests/unit_tests/databases/filters_test.py | 6 +-
.../datasets/commands/importers/dispatcher_test.py | 18 +-
.../datasets/commands/importers/v1/import_test.py | 64 ++
tests/unit_tests/db_engine_specs/test_aurora.py | 37 ++
tests/unit_tests/db_engine_specs/test_base.py | 19 +
tests/unit_tests/db_engine_specs/test_duckdb.py | 59 ++
.../test_extended_aggregations_unverified.py | 68 ++
tests/unit_tests/db_engine_specs/test_gsheets.py | 2 -
.../unit_tests/db_engine_specs/test_mariadb.py | 32 +-
tests/unit_tests/db_engine_specs/test_mysql.py | 36 +
tests/unit_tests/db_engine_specs/test_postgres.py | 27 +
tests/unit_tests/db_engine_specs/test_redshift.py | 30 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 4 +-
.../unit_tests/db_engine_specs/test_timescaledb.py | 37 ++
.../distributed_lock/distributed_lock_tests.py | 2 +-
tests/unit_tests/examples/utils_test.py | 20 +
tests/unit_tests/extensions/test_sqlalchemy.py | 12 +-
tests/unit_tests/jinja_context_test.py | 84 +++
.../tool/test_annotation_layer_tools.py | 55 +-
.../mcp_service/chart/test_chart_schemas.py | 42 +-
.../mcp_service/chart/test_chart_utils.py | 18 +
.../mcp_service/chart/tool/test_generate_chart.py | 109 ++-
.../mcp_service/chart/tool/test_get_chart_data.py | 175 ++++-
.../mcp_service/chart/tool/test_get_chart_info.py | 70 +-
.../chart/tool/test_get_chart_preview.py | 64 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 21 +-
.../mcp_service/chart/tool/test_update_chart.py | 14 +-
.../dashboard/test_dashboard_schemas.py | 39 +-
.../tool/test_add_chart_to_existing_dashboard.py | 21 +-
.../dashboard/tool/test_dashboard_tools.py | 6 +-
.../dashboard/tool/test_duplicate_dashboard.py | 15 +-
.../dashboard/tool/test_get_dashboard_datasets.py | 6 +-
.../dashboard/tool/test_get_dashboard_layout.py | 6 +-
.../tool/test_manage_dashboard_certification.py | 5 +-
.../dashboard/tool/test_manage_dashboard_owners.py | 18 +-
.../dashboard/tool/test_manage_native_filters.py | 33 +-
.../dashboard/tool/test_update_dashboard.py | 39 ++
.../mcp_service/dataset/tool/test_dataset_tools.py | 36 +-
.../dataset/tool/test_update_dataset_metric.py | 167 ++++-
.../mcp_service/report/tool/test_report_tools.py | 38 +-
.../mcp_service/role/tool/test_role_tools.py | 30 +-
.../sql_lab/tool/test_open_sql_lab_with_context.py | 77 +--
.../sql_lab/tool/test_save_sql_query.py | 19 +-
.../mcp_service/tag/tool/test_tag_tools.py | 13 +-
.../mcp_service/task/tool/test_task_tools.py | 15 +-
tests/unit_tests/mcp_service/test_mcp_caching.py | 24 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 5 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 63 ++
.../mcp_service/test_result_value_contract.py | 211 ++++++
.../mcp_service/theme/tool/test_create_theme.py | 16 +-
.../mcp_service/theme/tool/test_get_theme_info.py | 10 +-
tests/unit_tests/mcp_service/user/test_schemas.py | 12 +-
.../mcp_service/user/tool/test_user_tools.py | 42 +-
.../mcp_service/utils/test_sanitization.py | 335 +---------
.../composite_pk_association_tables_test.py | 2 +-
.../test_add_deleted_at_to_dashboards.py | 2 +-
.../migrations/test_add_deleted_at_to_slices.py | 2 +-
.../migrations/test_add_deleted_at_to_tables.py | 2 +-
.../migrations/test_databend_secure_to_sslmode.py | 16 +-
.../test_enforce_oauth2_token_uniqueness.py | 2 +-
.../test_restore_pivot_table_percent_display.py | 8 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 8 +-
tests/unit_tests/models/core_test.py | 16 +-
tests/unit_tests/models/helpers_test.py | 73 +-
.../models/owner_association_tables_test.py | 2 +-
.../pandas_postprocessing/test_histogram.py | 25 +
.../pandas_postprocessing/test_prophet.py | 18 +
.../pandas_postprocessing/test_resample.py | 39 ++
.../pandas_postprocessing/test_rolling.py | 17 +
.../unit_tests/pandas_postprocessing/test_utils.py | 24 +-
tests/unit_tests/queries/query_object_test.py | 266 ++++++++
.../reports/notifications/webhook_tests.py | 199 ++++++
.../security/exclude_users_filter_test.py | 10 +-
tests/unit_tests/security/manager_test.py | 681 +++++++++++++++++++
tests/unit_tests/sql/execution/test_executor.py | 177 +++++
tests/unit_tests/tasks/test_cron_util.py | 56 +-
tests/unit_tests/tasks/test_utils.py | 97 ++-
tests/unit_tests/thumbnails/test_digest.py | 88 ++-
tests/unit_tests/utils/date_parser_tests.py | 5 +
tests/unit_tests/utils/excel_tests.py | 44 ++
tests/unit_tests/utils/filters_test.py | 10 +-
tests/unit_tests/utils/map_type_tests.py | 15 +
.../utils/pandas_sqlalchemy_compat_test.py | 2 +-
tests/unit_tests/utils/screenshot_test.py | 107 +++
tests/unit_tests/utils/webdriver_test.py | 182 +++++
tests/unit_tests/versioning/test_listener.py | 4 +-
tests/unit_tests/views/test_soft_delete_filter.py | 2 +-
450 files changed, 12362 insertions(+), 3759 deletions(-)
create mode 100644 docs/sip/median-stddev-variance-aggregates.md
delete mode 100644 superset-frontend/playwright/tests/recently-archived/delete-modal.spec.ts
create mode 100644 superset-frontend/plugins/plugin-chart-ag-grid-table/test/NumericCellRenderer.test.tsx
copy superset-frontend/{plugins/plugin-chart-pivot-table/test/testHelpers.tsx => src/constants.test.ts} (60%)
create mode 100644 superset-frontend/src/features/charts/ChartCard.test.tsx
create mode 100644 superset-frontend/src/pages/SqlLab/LocationContext.test.tsx
create mode 100644 tests/unit_tests/commands/chart/delete_message_test.py
create mode 100644 tests/unit_tests/commands/importers/v1/import_saved_query_test.py
create mode 100644 tests/unit_tests/commands/sql_lab/permalink_get_test.py
create mode 100644 tests/unit_tests/commands/sql_lab/test_execute.py
create mode 100755 tests/unit_tests/common/test_time_column_offset_repro.py
copy superset-core/src/superset_core/extensions/constants.py => tests/unit_tests/dashboards/commands/importers/dispatcher_test.py (52%)
copy superset/mcp_service/common/__init__.py => tests/unit_tests/datasets/commands/importers/dispatcher_test.py (54%)
create mode 100644 tests/unit_tests/db_engine_specs/test_extended_aggregations_unverified.py
copy superset/db_engine_specs/mariadb.py => tests/unit_tests/db_engine_specs/test_mariadb.py (52%)
create mode 100644 tests/unit_tests/db_engine_specs/test_timescaledb.py
create mode 100644 tests/unit_tests/mcp_service/test_result_value_contract.py