You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/15 04:07:50 UTC

(superset) branch chore/enable-click-events-have-key-events updated (1ee6d6e4a9b -> 97dfa6c2427)

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

rusackas pushed a change to branch chore/enable-click-events-have-key-events
in repository https://gitbox.apache.org/repos/asf/superset.git


    from 1ee6d6e4a9b fix: apply prettier formatting to DrillByModal.tsx
     add 62ccdfacc2f fix(mcp): make list-item truncation cap configurable in get_dashboard_info (#41698)
     add 18f1dd394bb test(security): prove Drill By access does not require can_explore (#27900) (#41967)
     add d4a31d1d78a fix: add subdirectory deployment support for brandSpinnerUrl (#37523)
     add 8262aa7d6b4 fix(explore): restore drag-and-drop reordering broken by @dnd-kit migration (#41637)
     add 9818da445ab fix(a11y): add aria-label to cross-filter search icon (#41619)
     add 3e957b63d47 fix(a11y): make CopyToClipboard keyboard-operable for custom copyNode elements (#41958)
     add ce8219672ec fix(a11y): add accessible labels to EmbedCodeContent height/width inputs (#41995)
     add 25ce83cc58c fix(dashboard): apply auto-refresh interval in standalone mode (#41740)
     add 3c648ca2645 fix(swagger): support URL prefix via APPLICATION_ROOT in OpenAPI and Swagger UI (#40908)
     add 2857b29ab97 test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
     add 836dce9b058 fix(i18n): reset embedded start guard and align menu error handling (#41491)
     add a2a71760ede fix(e2e): repair master Playwright smoke tests (#42013)
     add 993a43396ae fix: restore all-files pre-commit checks (#42014)
     add e420812eb74 test(filters): guard BIGINT filter value precision (#27510) (#41963)
     add 8afad27c848 chore: convert warning to error if parameters not passed as collection (#41977)
     add e165762bb7c refactor: begin transaction to automatically commit (#41979)
     add 42523f8cc4c fix(async-queries): back off polling when async event requests keep failing (#42012)
     add ccfccdf237e chore(deps-dev): bump oxlint from 1.72.0 to 1.73.0 in /superset-frontend (#42031)
     add 115ce12ff7f chore(deps-dev): bump @typescript-eslint/parser from 8.62.1 to 8.63.0 in /superset-frontend (#42030)
     add 35d05cc2787 chore(deps-dev): bump @swc/plugin-emotion from 14.14.1 to 14.15.0 in /superset-frontend (#42029)
     add e86dcf7b82e chore(deps): bump actions/setup-java from 5.4.0 to 5.5.0 (#42028)
     add 41efdb3082f chore(deps-dev): bump webpack-sources from 3.5.0 to 3.5.1 in /superset-frontend (#42027)
     add 68881a60ca2 chore(deps): bump caniuse-lite from 1.0.30001802 to 1.0.30001803 in /docs (#42026)
     add d49365757c0 chore(deps-dev): bump @typescript-eslint/parser from 8.61.0 to 8.63.0 in /docs (#42025)
     add 258f4c035b9 chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /superset-websocket (#42022)
     add cc32d16e0cc chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.63.0 in /superset-websocket (#42021)
     add d5e75c48135 fix(ci): correct setup-node version comment in tag-release.yml (#42039)
     add 7075e9f253c fix(event-log): match embedded routes without trailing slash in logger middleware (#42005)
     add 24959d1656d fix(ci): correct setup-node version comment in tech-debt.yml (#42037)
     add 4e10a962531 chore(ci): correct actions/setup-node version comment to v6.4.0 (#42038)
     add 0dcf67fa27d chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.63.0 in /docs (#42024)
     add c4bee525eaa fix(ci): correct mismatched version comment on actions/setup-node pin (#42036)
     add 1f41899deb7 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.1 to 8.63.0 in /superset-frontend (#42023)
     add 76bb5f8e698 fix(dashboard): prevent native filter loss when saving chart customizations (#42032)
     add ef3a9e925ec chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.63.0 in /superset-websocket (#42020)
     add 4b07d43050a fix(sqllab): collapse left sidebar shows compact db selector in top bar (#41898)
     add 256cc71c877 refactor: import from sqlalchemy.orm (#41981)
     add e3a0d0e41ec fix(versioning): isolate action metadata writes (#41943)
     add c04a0295ef6 fix(chart): keep query-context updates bound to the chart's datasource (#40955)
     add 4446967d0fe chore(lint): convert Storybook stories and shared helpers to function components (#39451)
     add bd9ba242662 fix(mcp): add AliasChoices to chart/dashboard/dataset request schemas (#41597)
     add 0a3c263606e fix(migration): strip metricSqlExpressions from ag_grid_table params (#41591)
     add d68e84e7315 fix(databricks): classify insufficient-permissions errors as 4xx (#41945)
     add be768efc0f4 fix(ci): make pre-commit fail closed instead of silently passing on an empty file list (#42044)
     add 13121fcd587 fix(ci): skip unsupported React 19 Dependabot updates (#42047)
     add 9db88203e16 fix(migration): use sqlalchemy.orm.declarative_base to avoid MovedIn20Warning (#42056)
     add ad8f2cf2680 chore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0 (#42069)
     add 6dcd95e14ab chore(deps-dev): bump syntaqlite from 0.6.0 to 0.7.0 (#42067)
     add b4373f60b3e chore(deps-dev): bump fastmcp from 3.4.2 to 3.4.3 (#42065)
     add abafe195bf9 chore(deps): bump click from 8.4.1 to 8.4.2 (#42064)
     add 97dfa6c2427 Merge branch 'master' into chore/enable-click-events-have-key-events

No new revisions were added by this update.

Summary of changes:
 .github/actions/file-changes-action                |   1 -
 .github/dependabot.yml                             |  10 +-
 .github/workflows/codeql-analysis.yml              |   2 +-
 .github/workflows/embedded-sdk-release.yml         |   2 +-
 .github/workflows/embedded-sdk-test.yml            |   2 +-
 .github/workflows/generate-FOSSA-report.yml        |   2 +-
 .github/workflows/license-check.yml                |   2 +-
 .github/workflows/pre-commit.yml                   |  83 +++++-
 .github/workflows/release.yml                      |   2 +-
 .../workflows/scheduled-docker-image-refresh.yml   |   2 +-
 .github/workflows/superset-docs-deploy.yml         |   4 +-
 .github/workflows/superset-docs-verify.yml         |   4 +-
 .github/workflows/superset-e2e.yml                 |   4 +-
 .github/workflows/superset-playwright.yml          |   2 +-
 .github/workflows/superset-translations.yml        |   2 +-
 .github/workflows/tag-release.yml                  |   4 +-
 .github/workflows/tech-debt.yml                    |   2 +-
 .gitmodules                                        |   3 -
 docs/admin_docs/configuration/mcp-server.mdx       |   2 +
 docs/package.json                                  |   6 +-
 docs/yarn.lock                                     | 164 ++++++-----
 pyproject.toml                                     |   8 +-
 pytest.ini                                         |   4 +-
 requirements/base.txt                              |   2 +-
 requirements/development.txt                       |   8 +-
 superset-frontend/.storybook/shared/Expandable.tsx |  57 ++--
 superset-frontend/.storybook/shared/VerifyCORS.tsx | 113 ++++---
 superset-frontend/package-lock.json                | 324 +++++++++++----------
 superset-frontend/package.json                     |  10 +-
 .../number-format/stories/NumberFormat.stories.tsx | 198 ++++++-------
 .../src/time-format/stories/TimeFormat.stories.tsx | 175 +++++------
 .../components/modals/NativeFiltersConfigModal.ts  |  86 ++++++
 .../playwright/components/modals/index.ts          |   1 +
 .../playwright/pages/DashboardPage.ts              |  52 +++-
 .../SaveDatasetModal.ts => pages/HomePage.ts}      |  36 ++-
 .../tests/dashboard/clear-all-filters.spec.ts      |  22 +-
 .../tests/dashboard/delete-display-control.spec.ts |  68 ++---
 .../playwright/tests/home/welcome.spec.ts          |   7 +-
 .../src/SqlLab/actions/sqlLab.test.ts              |  52 ++++
 superset-frontend/src/SqlLab/actions/sqlLab.ts     |  24 +-
 .../SqlLab/components/AppLayout/AppLayout.test.tsx |  41 +++
 .../src/SqlLab/components/AppLayout/index.tsx      |   5 +-
 .../src/SqlLab/components/SqlEditor/index.tsx      |  64 ++--
 .../SqlLab/components/SqlEditorLeftBar/index.tsx   |  57 ++--
 .../SqlLab/components/SqlEditorTabHeader/index.tsx |   2 -
 .../SqlLab/components/SqlEditorTopBar/index.tsx    |   3 +
 .../src/SqlLab/reducers/sqlLab.test.ts             |  39 +++
 superset-frontend/src/SqlLab/reducers/sqlLab.ts    |   2 +-
 .../CopyToClipboard/CopyToClipboard.test.tsx       |  13 +
 .../src/components/CopyToClipboard/index.tsx       |  10 +-
 .../src/components/DatabaseSelector/index.tsx      |   6 +-
 .../src/components/DatabaseSelector/types.ts       |   1 +
 .../ResizableSidebar/useStoredSidebarWidth.ts      |   2 +-
 .../dashboard/actions/chartCustomizationActions.ts |   1 +
 .../src/dashboard/actions/nativeFilters.ts         |   2 +
 .../DashboardBuilder/DashboardBuilder.test.tsx     |  52 ++++
 .../DashboardBuilder/DashboardBuilder.tsx          |   5 +
 .../components/Header/HeadlessAutoRefresh.test.tsx | 100 +++++++
 .../components/Header/HeadlessAutoRefresh.tsx      |  91 ++++++
 .../CrossFilters/CrossFilterTitle.test.tsx         |   9 +
 .../FilterBar/CrossFilters/CrossFilterTitle.tsx    |   1 +
 .../src/dashboard/reducers/nativeFilters.test.ts   |  54 +++-
 .../src/dashboard/reducers/nativeFilters.ts        |  19 +-
 .../src/dashboard/util/getRelatedCharts.test.ts    |   7 +
 .../src/dashboard/util/getRelatedCharts.ts         |   5 +-
 superset-frontend/src/embedded/index.test.tsx      | 155 +++++++++-
 superset-frontend/src/embedded/index.tsx           | 121 +++++---
 .../explore/components/EmbedCodeContent.test.tsx   |   6 +
 .../src/explore/components/EmbedCodeContent.tsx    |  15 +-
 .../ExploreContainer/ExploreDndContext.test.tsx    | 189 +++++++++++-
 .../ExploreContainer/ExploreDndContext.tsx         |  93 +++++-
 .../components/controls/ContourControl/index.tsx   |  14 +-
 .../DndColumnMetricSelect.test.tsx                 |   5 +-
 .../DndColumnMetricSelect.tsx                      |   9 +-
 .../DndColumnSelectControl/DndColumnSelect.tsx     |   2 +-
 .../DndColumnSelectControl/DndFilterSelect.tsx     |  13 +-
 .../DndMetricSelect.test.tsx                       |  14 +-
 .../DndColumnSelectControl/DndMetricSelect.tsx     |  21 +-
 .../DndColumnSelectControl/OptionWrapper.tsx       |   7 +-
 .../DndColumnSelectControl/utils/optionSelector.ts |   8 +-
 .../FilterControl/AdhocFilterControl/index.tsx     |  29 +-
 .../components/controls/OptionControls/index.tsx   |   7 +-
 superset-frontend/src/filters/utils.test.ts        |  22 ++
 .../src/middleware/asyncEvent.test.ts              | 231 +++++++++++++++
 superset-frontend/src/middleware/asyncEvent.ts     |  29 +-
 superset-frontend/src/middleware/logger.test.ts    |   5 +
 .../src/middleware/loggerMiddleware.ts             |   2 +-
 superset-frontend/src/views/menu.test.tsx          | 109 +++++++
 superset-frontend/src/views/menu.tsx               |  15 +-
 superset-websocket/package-lock.json               | 128 ++++----
 superset-websocket/package.json                    |   6 +-
 superset/commands/chart/exceptions.py              |  13 +
 superset/commands/chart/update.py                  |  54 ++++
 superset/config.py                                 |   7 +
 superset/connectors/sqla/models.py                 |   2 +-
 superset/connectors/sqla/utils.py                  |   2 +-
 superset/db_engine_specs/databricks.py             |  58 ++--
 superset/extensions/metadb.py                      |  33 ++-
 superset/initialization/__init__.py                |  21 ++
 superset/mcp_service/chart/schemas.py              |  26 +-
 superset/mcp_service/chart/tool/list_charts.py     |   2 +-
 superset/mcp_service/constants.py                  |   2 +
 superset/mcp_service/dashboard/schemas.py          |  44 ++-
 .../dashboard/tool/get_dashboard_info.py           |   8 +
 superset/mcp_service/dataset/schemas.py            |  12 +-
 superset/mcp_service/mcp_config.py                 |   8 +
 superset/mcp_service/middleware.py                 |  40 ++-
 superset/mcp_service/sql_lab/tool/execute_sql.py   |  89 +++---
 superset/mcp_service/utils/token_utils.py          |  12 +-
 superset/migrations/shared/catalogs.py             |   3 +-
 superset/migrations/shared/migrate_viz/base.py     |   3 +-
 superset/migrations/shared/security_converge.py    |   3 +-
 ..._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 |   3 +-
 ...-09-07_23-50_33d996bcc382_update_slice_model.py |   2 +-
 ...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 |   2 +-
 .../2018-02-13_08-07_e866bd2d4976_smaller_grid.py  |   2 +-
 ...-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 |   2 +-
 ...6-07_09-52_afb7730f6a9c_remove_empty_filters.py |   2 +-
 ...13_10-20_4451805bbaa1_remove_double_percents.py |   2 +-
 .../2018-06-13_14-54_bddc498dd179_adhoc_filters.py |   2 +-
 ...4_14-31_80a67c5192fa_single_pie_chart_metric.py |   2 +-
 ...1c4c6_migrate_num_period_compare_and_period_.py |   2 +-
 .../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 |   3 +-
 ...8-07-26_11-10_c82ee8a39623_add_implicit_tags.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 |   2 +-
 .../2019-03-21_10-22_d94d33dbe938_form_strip.py    |   2 +-
 ...a3f04bc82_add_parent_ids_in_dashboard_layout.py |   2 +-
 .../2019-06-28_13-17_ab8c66efdd01_resample.py      |   2 +-
 ...ng_unique_constraint_on_dashboard_slices_tbl.py |   2 +-
 ...5afa9079866a_serialize_schema_permissions_py.py |   3 +-
 ...e_form_strip_leading_and_trailing_whitespace.py |   2 +-
 .../2019-10-10_13-52_1495eb914ad3_time_range.py    |   2 +-
 ...127d0d1d_reconvert_legacy_filters_into_adhoc.py |   2 +-
 ..._14-13_3325d4caccc8_dashboard_scoped_filters.py |   3 +-
 ...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 |   3 +-
 ...654_fix_data_access_permissions_for_virtual_.py |   3 +-
 ...b56500de1855_add_uuid_column_to_import_mixin.py |   3 +-
 ...208f_collapse_alerting_models_into_a_single_.py |   9 +-
 ...6e99fb176a0_add_import_mixing_to_saved_query.py |   2 +-
 ...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 |   2 +-
 ...1412ec1e5a7b_legacy_force_directed_to_echart.py |   2 +-
 ...989bbe479899_rename_filter_configuration_in_.py |   2 +-
 ...ea61c5e7_remove_dataset_health_check_message.py |   2 +-
 ...88938_country_map_use_lowercase_country_name.py |   2 +-
 ...3a3a8ff221_migrate_filter_sets_to_new_format.py |   2 +-
 ...ed7ec95_migrate_native_filters_to_new_schema.py |   2 +-
 ...3605f370a_fix_schemas_allowed_for_csv_upload.py |   2 +-
 ...15da_migrate_pivot_table_v2_heatmaps_to_new_.py |   2 +-
 ...4fbb_add_type_to_native_filter_configuration.py |   2 +-
 ...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 |   2 +-
 ...aa3ff_add_force_screenshot_to_alerts_reports.py |   2 +-
 ...5b9441_rename_big_viz_total_form_data_fields.py |   2 +-
 ...d1d2_move_pivot_table_v2_legacy_order_by_to_.py |   2 +-
 ...d8e252_fix_query_and_saved_query_null_schema.py |   2 +-
 ...b0ca7944_change_adhoc_filter_b_from_none_to_.py |   2 +-
 ...14-38_a9422eeaae74_new_dataset_models_take_2.py |   9 +-
 ...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 |   3 +-
 ..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py |   3 +-
 ...59_7fb8bca906d2_permalink_rename_filterstate.py |   3 +-
 ...5-48_409c7b420ab0_add_created_by_fk_as_owner.py |   2 +-
 ...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 |   2 +-
 ...7_13-24_b5ea9d343307_bar_chart_stack_options.py |   2 +-
 ...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py |   2 +-
 ...2a5681ddfd_convert_key_value_entries_to_json.py |   3 +-
 ...-41_4ea966691069_cross_filter_global_scoping.py |   2 +-
 ...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 |   2 +-
 ...d09c9_migrate_filter_boxes_to_native_filters.py |   3 +-
 ...47_be1b217cd8cd_big_number_kpi_single_metric.py |   2 +-
 ...9123a_update_charts_with_old_time_comparison.py |   2 +-
 ...fdba9f_merge_x_axis_sort_series_with_x_axis_.py |   2 +-
 ...2_convert_metric_currencies_from_str_to_json.py |   2 +-
 ...8d8526_fix_form_data_string_in_query_context.py |   2 +-
 ...rip_metricsqlexpressions_from_ag_grid_params.py | 110 +++++++
 superset/models/helpers.py                         |  10 +-
 .../extensions => superset/openapi}/__init__.py    |   4 +
 superset/openapi/manager.py                        | 143 +++++++++
 superset/sqllab/sql_json_executer.py               |   8 +-
 superset/versioning/changes/listener.py            |  27 +-
 superset/views/base.py                             |  27 ++
 tests/integration_tests/base_tests.py              |   3 +-
 tests/integration_tests/dao/base_dao_test.py       |   2 +-
 tests/integration_tests/fixtures/datasource.py     |   2 +-
 .../versioning/transaction_correctness_tests.py    |  84 ++++++
 tests/unit_tests/commands/chart/update_test.py     |  91 +++++-
 tests/unit_tests/dao/base_dao_test.py              |   2 +-
 .../unit_tests/db_engine_specs/test_databricks.py  |  74 +++++
 tests/unit_tests/db_engine_specs/test_sqlite.py    |   9 +-
 tests/unit_tests/explore/utils_test.py             |  74 +++++
 tests/unit_tests/extensions/test_sqlalchemy.py     | 115 ++++----
 .../mcp_service/chart/test_chart_schemas.py        |  67 +++++
 .../dashboard/test_dashboard_schemas.py            |  73 +++++
 .../dashboard/tool/test_dashboard_tools.py         |  14 +
 .../mcp_service/dataset/test_dataset_schemas.py    |  54 ++++
 tests/unit_tests/mcp_service/test_middleware.py    |  89 ++++++
 .../mcp_service/utils/test_token_utils.py          |  72 +++++
 .../test_add_deleted_at_to_dashboards.py           |  14 +-
 .../migrations/test_add_deleted_at_to_slices.py    |  10 +-
 .../migrations/test_add_deleted_at_to_tables.py    |  10 +-
 ...rip_metricsqlexpressions_from_ag_grid_params.py | 203 +++++++++++++
 tests/unit_tests/models/helpers_test.py            |  48 +++
 .../unit_tests/openapi}/__init__.py                |   0
 tests/unit_tests/openapi/test_manager.py           |  77 +++++
 tests/unit_tests/semantic_layers/mapper_test.py    |   3 +
 tests/unit_tests/sqllab/test_sql_json_executer.py  | 150 ++++++++++
 tests/unit_tests/views/test_base_theme_helpers.py  | 132 +++++++++
 236 files changed, 4628 insertions(+), 1221 deletions(-)
 delete mode 160000 .github/actions/file-changes-action
 create mode 100644 superset-frontend/playwright/components/modals/NativeFiltersConfigModal.ts
 copy superset-frontend/playwright/{components/modals/SaveDatasetModal.ts => pages/HomePage.ts} (57%)
 create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.test.tsx
 create mode 100644 superset-frontend/src/dashboard/components/Header/HeadlessAutoRefresh.tsx
 create mode 100644 superset-frontend/src/views/menu.test.tsx
 create mode 100644 superset/migrations/versions/2026-06-30_00-00_d24e6b0a9c7f_strip_metricsqlexpressions_from_ag_grid_params.py
 copy {superset-core/src/superset_core/extensions => superset/openapi}/__init__.py (88%)
 create mode 100644 superset/openapi/manager.py
 create mode 100644 tests/unit_tests/mcp_service/dataset/test_dataset_schemas.py
 create mode 100644 tests/unit_tests/migrations/test_strip_metricsqlexpressions_from_ag_grid_params.py
 copy {superset-core/src/superset_core/common => tests/unit_tests/openapi}/__init__.py (100%)
 create mode 100644 tests/unit_tests/openapi/test_manager.py
 create mode 100644 tests/unit_tests/sqllab/test_sql_json_executer.py