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

hughhhh pushed a change to branch hughhhh/pfm-2-query-rewrite
in repository https://gitbox.apache.org/repos/asf/superset.git


    from f6201846f84 Merge remote-tracking branch 
'origin/hughhhh/pfm-1-model-migration-api' into hughhhh/pfm-2-query-rewrite
     add 9f48d0eac9e fix(tests): await userEvent.click in CsrfErrorMessage 
compact-mode test (#44540)
     add 7024401aef2 fix(mcp): drop tiktoken, size-guard responses by exact 
byte length (#44508)
     add 9413294b2bd docs(pivot-table): document the "Show values as" 
percentage display option (#44127)
     add 48795f9a2d4 docs(explore): document show_download param for standalone 
chart embeds (#43906)
     add 7dd70eaf2d6 fix: tighten object-level and destination checks across 
four unrelated endpoints (#44036)
     add add97e5d190 fix(embedded): tighten guest-token scoping for 
annotations, result types, and channels (#43391)
     add ca7cdfcd0ff fix(pinot): require the SQLAlchemy 2 driver extra (#44287)
     add 0f229fda75f fix(security): exempt health blueprint from forced 
password changes (#44504)
     add 269b9f99fef fix(views): return 401 for NoAuthorizationError in 
handle_api_exception (SC-121647) (#44533)
     add 50bbcedf13b docs(mcp): document restore_chart and restore_dashboard 
tools (#44207)
     add ea1ffcf0adb fix: fixed inverseSelection (#40970)
     add 350dd0d60ec fix(security): delete deprecated permissions left over 
after upgrades (#44142)
     add 7a9fe06762b fix(mcp): stop data tool responses crashing on binary and 
NaT values (#44495)
     add 9612437a9c8 fix(extensions): preserve chat state across display modes 
(#44490)
     add 61fffbe0c08 chore(deps-dev): bump oxlint from 1.82.0 to 1.83.0 in 
/superset-frontend (#44525)
     add c14ac29f477 fix(mcp): complete Treemap round-trip and previews (#44152)
     add 3b4e5f5d0c6 chore(deps): bump markdown-to-jsx from 9.10.2 to 9.10.3 in 
/superset-frontend (#44570)
     add 7fe03a536b6 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in 
/superset-frontend (#44569)
     add 6403e16fe56 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in 
/superset-embedded-sdk (#44568)
     add d1f395914f1 chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in 
/superset-embedded-sdk (#44567)
     add 6c9138a6b7c chore(deps-dev): bump baseline-browser-mapping from 
2.11.23 to 2.11.24 in /superset-frontend (#44566)
     add 4b180bddad7 chore(deps): bump baseline-browser-mapping from 2.11.23 to 
2.11.24 in /docs (#44565)
     add 4290d94d6c9 chore(deps-dev): bump vitest from 5.0.0 to 5.0.1 in 
/superset-websocket (#44564)
     add 3e80a53e14f chore(deps-dev): bump @types/node from 26.5.1 to 26.6.1 in 
/superset-websocket (#44563)
     add f8f293d2666 chore(deps): bump benchmark-action/github-action-benchmark 
from 1.22.1 to 1.22.2 (#44520)
     add 689ab4a77af fix(translations): regenerate messages.pot after the 
connection-move reword (#44574)
     add 02dbfd2ab5b fix(dashboard): don't register an active tab for childless 
TABS components (#44345)
     add 838376dbc28 fix(mongodb): treat the Mongo database as the SQL Lab 
schema so Data Preview returns rows (#44141)
     add 6323b37f50a fix(dashboard): prevent and repair self-nested layout 
components (#44303)
     add 7c7b3adf745 fix(export): keep the acting user in streaming CSV exports 
(#44425)
     add c0c688d3e4b fix(mcp): return a specific error per failure class on 
tool calls (#44387)
     add a071d23b41f fix(dashboard): guest sessions, pluggable storage, and 
streamed downloads for the Excel export (#43805)
     add d7a918b814c fix(ci): make check_pot_drift extract from an isolated git 
snapshot (#44578)
     add 775f7c5a1fd fix(db2): Use DATE_TRUNC to improve timegrain expressions 
(#43236)
     add 298aa2f0ba4 fix(dataset): bump changed_on on column refresh so chart 
cache invalidates (#43921)
     add 082961ba168 fix(chart): require edit rights for query-context-only 
updates (#44494)
     add 3b355b6a854 fix(chart): allow semantic view datasource when saving 
charts (#44169)
     add 390bf299ff9 fix(i18n): stop f-strings in gettext leaking a bogus msgid 
on Python 3.12 (#44584)
     add 8141d666d6d fix(dashboard): show loading spinner for charts outside an 
in-flight auto-refresh batch (#44272)
     add cd36b555e9b Merge remote-tracking branch 'origin/master' into 
hughhhh/pfm-1-model-migration-api
     add da9f21c1314 Merge branch 'hughhhh/pfm-1-model-migration-api' into 
hughhhh/pfm-2-query-rewrite

No new revisions were added by this update.

Summary of changes:
 .github/workflows/frontend-bundle-size-nightly.yml |    2 +-
 .github/workflows/superset-frontend.yml            |    2 +-
 UPDATING.md                                        |  107 +-
 .../configuration/configuring-superset.mdx         |    7 +
 docs/admin_docs/configuration/mcp-server.mdx       |  106 +-
 .../extensions/extension-points/chat.md            |    4 +
 docs/docs/using-superset/embedding.mdx             |   21 +
 docs/docs/using-superset/exploring-data.mdx        |   14 +
 .../using-superset/exporting-dashboard-data.mdx    |  116 +-
 .../docs/using-superset/using-ai-with-superset.mdx |    2 +
 docs/package.json                                  |    2 +-
 docs/src/data/databases.json                       |    1 +
 docs/static/resources/openapi.json                 |   78 +-
 docs/yarn.lock                                     |    8 +-
 pyproject.toml                                     |   23 +-
 requirements/development.txt                       |    5 -
 scripts/translations/check_pot_drift.py            |   77 +-
 superset-embedded-sdk/package-lock.json            |  204 +--
 superset-embedded-sdk/package.json                 |    4 +-
 superset-frontend/package-lock.json                |  186 +--
 superset-frontend/package.json                     |    8 +-
 .../packages/superset-ui-core/package.json         |    2 +-
 .../ErrorMessage/CsrfErrorMessage.test.tsx         |    4 +-
 superset-frontend/src/core/chat/ChatHost.tsx       |   20 +-
 .../src/dashboard/actions/hydrate.test.ts          |   85 +-
 superset-frontend/src/dashboard/actions/hydrate.ts |   28 +-
 .../Header/useHeaderAutoRefresh.test.tsx           |   58 +-
 .../components/Header/useHeaderAutoRefresh.ts      |    2 +-
 .../components/gridComponents/Chart/Chart.test.tsx |   59 +
 .../components/gridComponents/Chart/Chart.tsx      |    4 +-
 .../components/gridComponents/Tabs/Tabs.test.tsx   |   95 ++
 .../components/gridComponents/Tabs/Tabs.tsx        |   22 +-
 .../gridComponents/TabsRenderer/TabsRenderer.tsx   |    2 +-
 .../DownloadMenuItems/DownloadMenuItems.test.tsx   |  616 ++++++++-
 .../components/menu/DownloadMenuItems/index.tsx    |  210 ++-
 .../dashboard/contexts/AutoRefreshContext.test.tsx |   69 +
 .../src/dashboard/contexts/AutoRefreshContext.tsx  |   31 +-
 .../src/dashboard/reducers/dashboardLayout.test.ts |   62 +
 .../src/dashboard/reducers/dashboardLayout.ts      |   26 +
 .../src/dashboard/reducers/dashboardState.test.ts  |   23 +
 .../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 +-
 .../components/Select/SelectFilterPlugin.tsx       |   22 +-
 superset-frontend/src/views/App.test.tsx           |  125 ++
 superset-frontend/src/views/App.tsx                |   28 +-
 superset-websocket/package-lock.json               |  204 +--
 superset-websocket/package.json                    |    4 +-
 superset/commands/chart/update.py                  |   11 +-
 superset/commands/dashboard/update.py              |    7 +-
 superset/commands/database/exceptions.py           |    9 +-
 superset/commands/database/update.py               |   20 +-
 superset/commands/database/utils.py                |   47 +
 superset/commands/distributed_lock/acquire.py      |    9 +-
 superset/commands/semantic_layer/update.py         |   55 +-
 superset/commands/streaming_export/base.py         |   41 +-
 superset/common/query_context_processor.py         |   18 +-
 superset/config.py                                 |   68 +-
 superset/connectors/sqla/models.py                 |   53 +-
 superset/daos/dashboard.py                         |    5 +
 superset/dashboards/api.py                         |  264 +++-
 superset/dashboards/excel_export/download_link.py  |  160 +++
 superset/dashboards/excel_export/email.py          |   29 +-
 superset/dashboards/layout.py                      |  269 ++++
 superset/db_engine_specs/base.py                   |   82 +-
 superset/db_engine_specs/db2.py                    |   27 +-
 superset/db_engine_specs/gsheets.py                |    1 +
 superset/db_engine_specs/ibmi.py                   |   21 +
 superset/db_engine_specs/mongodb.py                |   63 +-
 superset/db_engine_specs/pinot.py                  |    4 +
 superset/db_engine_specs/snowflake.py              |    1 +
 superset/embedded/view.py                          |    8 +-
 superset/key_value/types.py                        |    1 +
 superset/mcp_service/SECURITY.md                   |    2 +-
 superset/mcp_service/__main__.py                   |    4 +-
 superset/mcp_service/chart/chart_helpers.py        |   35 +
 superset/mcp_service/chart/chart_utils.py          |  124 ++
 superset/mcp_service/chart/compile.py              |   50 +-
 superset/mcp_service/chart/plugins/treemap.py      |   10 +-
 superset/mcp_service/chart/preview_utils.py        |   14 +-
 superset/mcp_service/chart/query_result.py         |  113 +-
 superset/mcp_service/chart/schemas.py              |  390 +++---
 superset/mcp_service/chart/tool/get_chart_data.py  |   40 +-
 .../mcp_service/chart/tool/get_chart_preview.py    |   30 +-
 .../chart/tool/get_chart_type_schema.py            |   21 +-
 superset/mcp_service/chart/tool/update_chart.py    |   30 +-
 .../mcp_service/chart/tool/update_chart_preview.py |   51 +-
 superset/mcp_service/chart/treemap_preview.py      |  297 +++++
 superset/mcp_service/constants.py                  |   30 +-
 superset/mcp_service/dashboard/schemas.py          |   15 +-
 .../dashboard/tool/generate_dashboard.py           |    3 +-
 superset/mcp_service/dataset/schemas.py            |   13 +-
 .../explore/tool/generate_explore_link.py          |    3 +-
 superset/mcp_service/mcp_config.py                 |   23 +-
 superset/mcp_service/middleware.py                 |  495 +++++--
 superset/mcp_service/semantic_layer/schemas.py     |   29 +-
 superset/mcp_service/sql_lab/schemas.py            |   18 +-
 superset/mcp_service/sql_lab/tool/execute_sql.py   |   19 -
 .../{token_utils.py => response_size_utils.py}     |  319 ++---
 superset/mcp_service/utils/response_utils.py       |    8 +-
 superset/mcp_service/utils/serialization.py        |  225 ++++
 superset/migrations/shared/security_converge.py    |   34 +
 ...4fb8bfc1_delete_deprecated_permissions_33272.py |  153 +++
 ...a4572f8a_rename_deprecated_permissions_33272.py |  193 +++
 ...e6_merge_deprecated_permissions_with_master.py} |   12 +-
 ...merge_deprecated_permissions_with_master_v2.py} |   12 +-
 ...merge_deprecated_permissions_with_master_v3.py} |   12 +-
 ...1_a7f3c2e91d84_add_partition_filter_mapping.py} |    4 +-
 superset/models/dashboard.py                       |    3 +
 superset/security/api.py                           |   13 +-
 superset/security/manager.py                       |  435 ++++++-
 superset/security/password_change.py               |   11 +-
 superset/tasks/export_dashboard_excel.py           |  272 +++-
 superset/translations/ar/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/ca/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/cs/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/de/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/en/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/es/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/fa/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/fi/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/fr/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/it/LC_MESSAGES/messages.po   |   38 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/ko/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/lv/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/messages.pot                 |   36 +-
 superset/translations/mi/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/nl/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/pl/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/pt/LC_MESSAGES/messages.po   |   36 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |   36 +-
 superset/translations/ro/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/sk/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/sl/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/sr/LC_MESSAGES/messages.po   |   36 +-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/ta/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/th/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/tr/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/uk/LC_MESSAGES/messages.po   |   36 +-
 superset/translations/zh/LC_MESSAGES/messages.po   |   38 +-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |   36 +-
 superset/utils/export_storage.py                   |   76 ++
 superset/utils/gcs.py                              |  101 ++
 superset/utils/network.py                          |  115 ++
 superset/utils/s3.py                               |  124 +-
 superset/views/error_handling.py                   |    6 +-
 superset/views/utils.py                            |   12 +
 tests/integration_tests/charts/api_tests.py        |  109 ++
 tests/integration_tests/charts/commands_tests.py   |  133 +-
 tests/integration_tests/dashboards/api_tests.py    |  435 ++++++-
 tests/integration_tests/datasets/api_tests.py      |   15 +-
 tests/integration_tests/embedded/test_view.py      |   23 +
 tests/integration_tests/reports/commands_tests.py  |   65 +-
 tests/integration_tests/security/api_tests.py      |   28 +
 tests/integration_tests/security_tests.py          |    8 +
 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/utils_test.py  |   58 +
 .../commands/semantic_layer/update_test.py         |   96 ++
 .../common/test_query_context_processor.py         |   35 +
 tests/unit_tests/connectors/sqla/models_test.py    |  234 ++++
 tests/unit_tests/dao/dashboard_test.py             |  139 ++
 tests/unit_tests/dao/test_query_stop_race.py       |   68 +-
 tests/unit_tests/dashboards/api_test.py            |  116 ++
 tests/unit_tests/dashboards/layout_test.py         |  325 +++++
 .../dashboards/test_excel_export_download_link.py  |   65 +
 tests/unit_tests/db_engine_specs/test_base.py      |  243 +++-
 .../unit_tests/db_engine_specs/test_databricks.py  |   28 +-
 .../db_engine_specs/test_databricks_multi_cloud.py |    4 +
 tests/unit_tests/db_engine_specs/test_db2.py       |   35 +-
 tests/unit_tests/db_engine_specs/test_gsheets.py   |   27 +-
 tests/unit_tests/db_engine_specs/test_ibmi.py      |   76 ++
 tests/unit_tests/db_engine_specs/test_mongodb.py   |  205 ++-
 tests/unit_tests/db_engine_specs/test_pinot.py     |   41 +-
 tests/unit_tests/db_engine_specs/test_snowflake.py |    7 +-
 tests/unit_tests/db_engine_specs/test_trino.py     |    7 +-
 .../distributed_lock/distributed_lock_tests.py     |   22 +
 .../mcp_service/chart/test_treemap_completeness.py | 1373 ++++++++++++++++++++
 .../mcp_service/chart/tool/test_get_chart_data.py  |  180 ++-
 .../chart/tool/test_get_chart_type_schema.py       |   26 +
 .../dashboard/tool/test_dashboard_generation.py    |   63 +
 .../explore/tool/test_generate_explore_link.py     |   49 +
 .../semantic_layer/tool/test_list_metrics.py       |   62 +-
 .../mcp_service/sql_lab/tool/test_execute_sql.py   |  104 +-
 .../mcp_service/test_error_classification.py       |  679 ++++++++++
 .../mcp_service/test_mcp_tool_registration.py      |    2 +-
 tests/unit_tests/mcp_service/test_middleware.py    |  227 ++--
 .../mcp_service/test_response_serialization.py     |  321 +++++
 ..._token_utils.py => test_response_size_utils.py} |  265 ++--
 .../mcp_service/utils/test_serialization.py        |  294 +++++
 .../migrations/shared/security_converge_test.py    |  218 ++++
 .../test_deprecated_permissions_33272.py           |  420 ++++++
 tests/unit_tests/models/dashboard_test.py          |   41 +-
 tests/unit_tests/security/manager_test.py          |  431 +++++-
 tests/unit_tests/security/test_password_change.py  |   68 +-
 tests/unit_tests/semantic_layers/models_test.py    |  225 ++++
 tests/unit_tests/subjects/test_raise_for_access.py |  122 ++
 .../tasks/test_export_dashboard_excel.py           |  681 +++++++++-
 tests/unit_tests/utils/gcs_tests.py                |  120 ++
 tests/unit_tests/utils/s3_tests.py                 |  102 +-
 tests/unit_tests/utils/test_network.py             |   81 +-
 tests/unit_tests/views/test_error_handling.py      |   22 +
 tests/unit_tests/views/test_utils.py               |   69 +-
 213 files changed, 16942 insertions(+), 2062 deletions(-)
 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/views/App.test.tsx
 create mode 100644 superset/dashboards/excel_export/download_link.py
 create mode 100644 superset/dashboards/layout.py
 create mode 100644 superset/mcp_service/chart/treemap_preview.py
 rename superset/mcp_service/utils/{token_utils.py => response_size_utils.py} 
(81%)
 create mode 100644 superset/mcp_service/utils/serialization.py
 create mode 100644 
superset/migrations/versions/2026-09-10_00-00_1f5f4fb8bfc1_delete_deprecated_permissions_33272.py
 create mode 100644 
superset/migrations/versions/2026-09-10_00-01_3ce9a4572f8a_rename_deprecated_permissions_33272.py
 copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py => 
2026-09-16_00-01_2ce579e91ae6_merge_deprecated_permissions_with_master.py} (79%)
 copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py => 
2026-09-17_00-00_53a7abc31422_merge_deprecated_permissions_with_master_v2.py} 
(76%)
 copy superset/migrations/versions/{2016-09-19_17-22_b347b202819b_.py => 
2026-09-23_00-00_95d8a99c822e_merge_deprecated_permissions_with_master_v3.py} 
(76%)
 rename 
superset/migrations/versions/{2026-09-19_00-00_a7f3c2e91d84_add_partition_filter_mapping.py
 => 2026-09-23_00-01_a7f3c2e91d84_add_partition_filter_mapping.py} (98%)
 create mode 100644 superset/utils/export_storage.py
 create mode 100644 superset/utils/gcs.py
 create mode 100644 tests/unit_tests/dashboards/layout_test.py
 create mode 100644 
tests/unit_tests/dashboards/test_excel_export_download_link.py
 create mode 100644 tests/unit_tests/db_engine_specs/test_ibmi.py
 create mode 100644 
tests/unit_tests/mcp_service/chart/test_treemap_completeness.py
 create mode 100644 tests/unit_tests/mcp_service/test_error_classification.py
 create mode 100644 tests/unit_tests/mcp_service/test_response_serialization.py
 rename tests/unit_tests/mcp_service/utils/{test_token_utils.py => 
test_response_size_utils.py} (87%)
 create mode 100644 tests/unit_tests/mcp_service/utils/test_serialization.py
 create mode 100644 tests/unit_tests/migrations/shared/security_converge_test.py
 create mode 100644 
tests/unit_tests/migrations/test_deprecated_permissions_33272.py
 create mode 100644 tests/unit_tests/utils/gcs_tests.py

Reply via email to