This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch feat/sqllab-contribution-points-clean
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 096f24dc0c3 fix(sqllab,extensions): address bito review feedback
(round 2)
omit e4392b8efd1 fix(sqllab): stop the new-tab dropdown's portaled clicks
from also firing antd's own add-tab handler
omit 80a75afbed4 chore(i18n): regenerate messages.pot for new
extension-error/tab-label strings
omit 8397485b3b7 fix(sqllab): address bito review feedback on northPane
rendering and test fixture
omit ab77ad5d61d fix(sqllab): satisfy strict TS types for
findQueryEditorByAnyId
omit 19f48fda52d fix(sqllab,extensions): carry northPane view on tab state
and resolve backendId for query events
omit 3676a0e644a fix(sqllab,extensions): address review feedback on new-tab
dropdown, extension load failures, and Tab.backendId
omit 28705ce6e18 fix(sqllab): only consume PENDING_NORTH_PANE_VIEW_KEY on
the active tab
omit a9ca893098e fix(sqllab): address review bot feedback on extension
surfaces
omit b56d480d45f test(sqllab): cover PENDING_NORTH_PANE_VIEW_KEY
consume-and-persist flow
omit bfee3fb9338 fix(sqllab): centralize add-tab timing marker and use antd
Flex for northPane wrapper
omit aaca45b9261 test(sqllab): cover NewTabButton dropdown, direct-add, and
skip paths
omit 55e66ee1ec6 fix(sqllab): intercept new-tab activation on antd's add
button for keyboard parity
omit e7c3f53c414 fix(sqllab): skip new-tab menu items whose command isn't
registered
omit 982a9d2d3f2 test(sqllab,extensions): bridge store state cast through
unknown for tsc
omit ee98656ebdf test(sqllab,extensions): replace any casts with concrete
types
omit 9da712af3a2 test(sqllab): cover Tab backendId mapping from editor
tabViewId
omit 9f93ef6fc01 fix(sqllab,extensions): populate Tab.backendId and guard
northPane storage
omit dcd2be99319 test(sqllab,extensions): assert toast via store state; fix
northPane key type
omit ec6aa1e3a26 test(sqllab): cover northPane view rendering in SqlEditor
omit 0edfed93e79 fix(sqllab,extensions): address review feedback on
northPane keys, tab a11y, extension load errors
omit 3367838ac4e feat(sqllab,extensions): contribution surfaces for
tab/pane extensions
add 3e8cec55c4b chore(deps): bump undici from 7.29.0 to 7.30.0 in
/superset-frontend in the security group across 1 directory (#44809)
add 89759eba5d9 chore(deps): bump react-window from 2.3.2 to 2.3.3 in
/superset-frontend (#44820)
add 3e36b242a61 fix(datafusion): render temporal SQL that DataFusion
accepts (#44700)
add 8c3b985c22c fix(db2): set current_schema to the catalog name of the
selected schema (#44706)
add ba62c867258 chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in
/superset-frontend/cypress-base (#44813)
add 3f8a23622c7 perf(security): memoise the user subject lookup within a
request (#44017)
add 3f408238baa refactor(mcp): one plugin lifecycle contract and compact
chart config schemas (#44746)
add 5668faf18e6 fix(doris): quarter grain, SSL toggle, parameters URI,
error mapping and column types (#44718)
add 929c44097f8 chore(deps): bump the security group across 1 directory
with 2 updates (#44824)
add e93f8ce638c test(semantic-views): wait for views refetches to settle
before selecting a view (#44792)
add 21d46d52dfd chore(build): remove unused dependencies in `docs` and
`superset-frontend` (#44697)
add af794f8c93a chore(deps): bump the security group across 1 directory
with 2 updates (#44831)
add 8a7be3b327b fix: avoid provider calls when rendering datasource access
denials (#44432)
add 3b06cadca4c fix(csv-import): add primary key when MySQL requires one
(#44411)
add 88efac09c67 fix(mcp): align histogram and waterfall query contracts
(#44744)
add 65a6012843b ci(python): run the Python-next canary nightly, bump to
3.13 (#44767)
add e90b9fb751e chore(deps): bump dompurify from 3.4.15 to 3.4.16 in
/superset-frontend in the security group across 1 directory (#44830)
add 51378f529d8 fix(matrixify): fan metrics-axis selection into
multi-query fields (#44629)
add 883e43ee2da fix(sqllab): ignore non-object template_params in
format_sql instead of 500 (#44826)
add bbf0fa5f42f fix(core): stop discarding API errors that quote an HTML
tag (#42489)
add d80fcfc02a2 fix(i18n): make babel_update.sh .pot normalization
actually run (#44395)
add f02f53df234 fix(sql): reject client-side file-transfer statements in
query execution (#44496)
add fd524f4b217 fix(sqllab): preserve exact decimals in results and
exports (#44739)
add d2101c8dba2 fix(exasol): classify common server errors (#44721)
add dc0e306a24c fix(elasticsearch): classify byte, short, half_float,
scaled_float and unsigned_long columns (#44713)
add 8baa9c1f2e3 fix(db2): accept sqlglot's parse_mod in the DB2 term
parser (#44708)
add 5cf8213354c fix(databricks): keep the user's OAuth2 token and extra
connect_args; re-auth on HTTP 401 (#44705)
add 855bb4e21c8 fix(gsheets): align service-account validation and
serialize upload dates (#44695)
add bbf00956d46 fix(mcp): prioritize exact tool names in BM25 search
(#44682)
add 90fc4735835 test(embedded-sdk): cross-document test rig for the
navigation fix (#44608)
add e91ce19a606 fix(auth): drain flash messages on the login page (#44605)
add 924343e3ee6 fix(gantt): prevent y-axis category labels from being
clipped (#44321)
add d2fb52ac83e fix(auth): remove the legacy FAB password reset views and
move password resets into the SPA (#44626)
add fc5085bac18 feat(sqllab,extensions): contribution surfaces for
tab/pane extensions
add c5ad2ff7cd2 fix(sqllab,extensions): address review feedback on
northPane keys, tab a11y, extension load errors
add 1660fa89b61 test(sqllab): cover northPane view rendering in SqlEditor
add c03e7abca84 test(sqllab,extensions): assert toast via store state; fix
northPane key type
add c05b36c2db6 fix(sqllab,extensions): populate Tab.backendId and guard
northPane storage
add 5901d069cf6 test(sqllab): cover Tab backendId mapping from editor
tabViewId
add 0b7ffa98952 test(sqllab,extensions): replace any casts with concrete
types
add 037e807802d test(sqllab,extensions): bridge store state cast through
unknown for tsc
add ec45cbe67cd fix(sqllab): skip new-tab menu items whose command isn't
registered
add fd9df356f74 fix(sqllab): intercept new-tab activation on antd's add
button for keyboard parity
add 52327f8b1fe test(sqllab): cover NewTabButton dropdown, direct-add, and
skip paths
add f2fa74684ae fix(sqllab): centralize add-tab timing marker and use antd
Flex for northPane wrapper
add 235124b1c59 test(sqllab): cover PENDING_NORTH_PANE_VIEW_KEY
consume-and-persist flow
add 62f65550c03 fix(sqllab): address review bot feedback on extension
surfaces
add 47a742f17f8 fix(sqllab): only consume PENDING_NORTH_PANE_VIEW_KEY on
the active tab
add cbc5ee6917c fix(sqllab,extensions): address review feedback on new-tab
dropdown, extension load failures, and Tab.backendId
add cbe08812f72 fix(sqllab,extensions): carry northPane view on tab state
and resolve backendId for query events
add 460321943db fix(sqllab): satisfy strict TS types for
findQueryEditorByAnyId
add 935b836e9c6 fix(sqllab): address bito review feedback on northPane
rendering and test fixture
add 71ef3eab0d6 chore(i18n): regenerate messages.pot for new
extension-error/tab-label strings
add 5ba3a47b2ac fix(sqllab): stop the new-tab dropdown's portaled clicks
from also firing antd's own add-tab handler
add 3ab49dc0d61 fix(sqllab,extensions): address bito review feedback
(round 2)
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (096f24dc0c3)
\
N -- N -- N refs/heads/feat/sqllab-contribution-points-clean
(3ab49dc0d61)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/actions/setup-backend/action.yml | 5 +-
.github/workflows/python-nightly-canary.yml | 94 +
.github/workflows/superset-python-unittest.yml | 7 +-
RESOURCES/STANDARD_ROLES.md | 6 -
UPDATING.md | 96 +-
.../configuration/configuring-superset.mdx | 2 +-
docs/admin_docs/configuration/google-sheets.mdx | 49 +
docs/admin_docs/configuration/mcp-server.mdx | 13 +
docs/docs/using-superset/number-formatting.mdx | 16 +
docs/docusaurus.config.ts | 1 -
docs/package.json | 10 +-
docs/static/resources/openapi.json | 4 +-
.../databases/supported/apache-doris.mdx | 8 +
.../version-6.1.0/databases/supported/mysql.mdx | 18 +
docs/yarn.lock | 27 +-
requirements/development.in | 11 +
requirements/development.txt | 7 +-
scripts/translations/babel_update.sh | 15 +-
superset-embedded-sdk/testrig/README.md | 89 +
superset-embedded-sdk/testrig/drive.mjs | 655 +++++
superset-embedded-sdk/testrig/embedded.html | 127 +
superset-embedded-sdk/testrig/host.html | 239 ++
superset-embedded-sdk/testrig/server.mjs | 199 ++
superset-frontend/cypress-base/package-lock.json | 12 +-
superset-frontend/package-lock.json | 237 +-
superset-frontend/package.json | 10 +-
.../packages/superset-core/package.json | 2 -
.../packages/superset-ui-core/package.json | 4 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 63 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 34 +-
.../src/query/getClientErrorObject.ts | 29 +-
.../test/query/getClientErrorObject.test.ts | 66 +
.../plugin-chart-echarts/src/Gantt/constants.ts | 3 +
.../src/Gantt/transformProps.ts | 35 +-
.../plugin-chart-echarts/src/utils/series.ts | 65 +-
.../test/Gantt/transformProps.test.ts | 213 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 70 +
.../FilterableTable/exactDecimals.test.tsx | 92 +
.../src/components/FilterableTable/index.tsx | 41 +-
.../components/FilterableTable/sortResults.test.ts | 238 ++
.../src/components/FilterableTable/sortResults.ts | 180 ++
.../semanticViews/AddSemanticViewModal.test.tsx | 22 +
.../src/features/userInfo/UserInfoModal.test.tsx | 62 +-
.../src/features/userInfo/UserInfoModal.tsx | 26 +-
.../src/features/users/UserListModal.test.tsx | 178 ++
.../src/features/users/UserListModal.tsx | 108 +-
superset-frontend/src/features/users/utils.ts | 8 +-
superset-frontend/src/pages/Login/Login.test.tsx | 135 +-
superset-frontend/src/pages/Login/index.tsx | 41 +-
superset-frontend/src/types/bootstrapTypes.ts | 1 +
superset/commands/report/alert.py | 12 +-
superset/commands/sql_lab/estimate.py | 10 +-
superset/commands/sql_lab/export.py | 14 +
superset/commands/streaming_export/base.py | 11 +-
superset/common/query_context_processor.py | 1 +
superset/config.py | 5 +-
superset/dataframe.py | 38 +-
superset/db_engine_specs/databricks.py | 91 +-
superset/db_engine_specs/datafusion.py | 34 +-
superset/db_engine_specs/db2.py | 12 +-
superset/db_engine_specs/doris.py | 111 +-
superset/db_engine_specs/elasticsearch.py | 25 +
superset/db_engine_specs/exasol.py | 76 +
superset/db_engine_specs/gsheets.py | 81 +-
superset/db_engine_specs/mysql.py | 257 +-
superset/exceptions.py | 18 +
superset/initialization/__init__.py | 2 +-
superset/mcp_service/chart/chart_helpers.py | 163 +-
superset/mcp_service/chart/chart_utils.py | 128 +-
superset/mcp_service/chart/compile.py | 19 +-
superset/mcp_service/chart/plugin.py | 222 +-
superset/mcp_service/chart/plugins/big_number.py | 55 +-
superset/mcp_service/chart/plugins/bubble.py | 27 +-
superset/mcp_service/chart/plugins/gantt.py | 79 +-
superset/mcp_service/chart/plugins/gauge.py | 63 +-
superset/mcp_service/chart/plugins/handlebars.py | 4 +
superset/mcp_service/chart/plugins/histogram.py | 98 +-
.../mcp_service/chart/plugins/mixed_timeseries.py | 43 +
superset/mcp_service/chart/plugins/table.py | 1 +
superset/mcp_service/chart/plugins/treemap.py | 141 +-
superset/mcp_service/chart/plugins/waterfall.py | 35 +
superset/mcp_service/chart/preview_utils.py | 197 +-
superset/mcp_service/chart/query_result.py | 19 +-
superset/mcp_service/chart/registry.py | 49 +-
superset/mcp_service/chart/schemas.py | 82 +-
superset/mcp_service/chart/tool/get_chart_data.py | 29 +-
.../mcp_service/chart/tool/get_chart_preview.py | 128 +-
.../chart/tool/get_chart_type_schema.py | 4 +-
superset/mcp_service/chart/tool/update_chart.py | 65 +-
.../mcp_service/chart/tool/update_chart_preview.py | 48 +-
.../chart/validation/dataset_validator.py | 4 +-
superset/mcp_service/server.py | 48 +
superset/result_set.py | 6 +
superset/security/manager.py | 149 +-
superset/security/password_change.py | 63 +-
superset/sql/dialects/db2.py | 81 +-
superset/sql/execution/celery_task.py | 2 +-
superset/sql/execution/executor.py | 13 +
superset/sql/parse.py | 333 ++-
superset/sql_lab.py | 7 +-
superset/sqllab/api.py | 7 +
superset/subjects/utils.py | 40 +-
superset/translations/ar/LC_MESSAGES/messages.po | 113 +-
superset/translations/ca/LC_MESSAGES/messages.po | 114 +-
superset/translations/cs/LC_MESSAGES/messages.po | 115 +-
superset/translations/de/LC_MESSAGES/messages.po | 109 +-
superset/translations/en/LC_MESSAGES/messages.po | 100 +-
superset/translations/es/LC_MESSAGES/messages.po | 115 +-
superset/translations/fa/LC_MESSAGES/messages.po | 107 +-
superset/translations/fi/LC_MESSAGES/messages.po | 117 +-
superset/translations/fr/LC_MESSAGES/messages.po | 108 +-
superset/translations/it/LC_MESSAGES/messages.po | 118 +-
superset/translations/ja/LC_MESSAGES/messages.po | 106 +-
superset/translations/ko/LC_MESSAGES/messages.po | 107 +-
superset/translations/lv/LC_MESSAGES/messages.po | 115 +-
superset/translations/messages.pot | 2556 +++++---------------
superset/translations/mi/LC_MESSAGES/messages.po | 102 +-
superset/translations/nl/LC_MESSAGES/messages.po | 114 +-
superset/translations/pl/LC_MESSAGES/messages.po | 115 +-
superset/translations/pt/LC_MESSAGES/messages.po | 118 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 111 +-
superset/translations/ro/LC_MESSAGES/messages.po | 114 +-
superset/translations/ru/LC_MESSAGES/messages.po | 109 +-
superset/translations/sk/LC_MESSAGES/messages.po | 115 +-
superset/translations/sl/LC_MESSAGES/messages.po | 115 +-
superset/translations/sr/LC_MESSAGES/messages.po | 116 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 116 +-
superset/translations/ta/LC_MESSAGES/messages.po | 116 +-
superset/translations/th/LC_MESSAGES/messages.po | 109 +-
superset/translations/tr/LC_MESSAGES/messages.po | 110 +-
superset/translations/uk/LC_MESSAGES/messages.po | 116 +-
superset/translations/zh/LC_MESSAGES/messages.po | 102 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 102 +-
superset/utils/csv.py | 10 +
superset/views/auth.py | 11 +-
superset/views/users/api.py | 7 +-
superset/views/users/schemas.py | 39 +-
superset/views/utils.py | 2 +-
.../charts/semantic_save_tests.py | 82 +-
tests/integration_tests/core_tests.py | 30 +-
tests/unit_tests/commands/report/alert_test.py | 37 +
tests/unit_tests/commands/sql_lab/export_test.py | 113 +
.../sql_lab/streaming_export_command_test.py | 74 +
tests/unit_tests/commands/sql_lab/test_estimate.py | 30 +
.../common/test_query_context_processor.py | 12 +
tests/unit_tests/dataframe_test.py | 83 +-
.../unit_tests/db_engine_specs/test_databricks.py | 202 +-
.../unit_tests/db_engine_specs/test_datafusion.py | 32 +-
tests/unit_tests/db_engine_specs/test_db2.py | 52 +-
tests/unit_tests/db_engine_specs/test_doris.py | 227 +-
.../db_engine_specs/test_elasticsearch.py | 41 +
tests/unit_tests/db_engine_specs/test_exasol.py | 191 ++
tests/unit_tests/db_engine_specs/test_gsheets.py | 259 +-
tests/unit_tests/db_engine_specs/test_mariadb.py | 83 +
tests/unit_tests/db_engine_specs/test_mysql.py | 440 +++-
.../mcp_service/chart/test_chart_helpers.py | 113 +
.../chart/test_chart_plugin_contract.py | 762 ++++++
.../chart/test_histogram_boxplot_charts.py | 62 +
.../mcp_service/chart/test_preview_utils.py | 66 +
.../unit_tests/mcp_service/chart/test_registry.py | 56 +-
.../mcp_service/chart/test_registry_filters.py | 9 +
.../mcp_service/chart/test_treemap_completeness.py | 76 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 38 +
.../chart/tool/test_get_chart_preview.py | 37 +
.../chart/tool/test_get_chart_type_schema.py | 10 +
.../mcp_service/chart/tool/test_update_chart.py | 43 +-
.../mcp_service/test_chart_tool_inventory.py | 236 +-
.../unit_tests/mcp_service/test_tool_inventory.py | 78 +-
.../mcp_service/test_tool_search_transform.py | 412 +++-
tests/unit_tests/result_set_test.py | 71 +
.../scripts/translations/babel_update_test.py | 355 +++
tests/unit_tests/security/manager_test.py | 211 ++
tests/unit_tests/security/test_password_change.py | 106 +-
.../security/test_permission_instructions_link.py | 4 +-
tests/unit_tests/sql/dialects/db2_tests.py | 20 +
tests/unit_tests/sql/execution/test_celery_task.py | 2 +-
tests/unit_tests/sql/execution/test_executor.py | 51 +
tests/unit_tests/sql/parse_tests.py | 207 ++
tests/unit_tests/sql_lab_test.py | 41 +-
tests/unit_tests/sqllab/api_test.py | 45 +
tests/unit_tests/subjects/test_utils.py | 80 +
tests/unit_tests/views/test_auth_login.py | 77 +
tests/unit_tests/views/test_current_user_api.py | 103 +-
183 files changed, 14823 insertions(+), 3428 deletions(-)
create mode 100644 .github/workflows/python-nightly-canary.yml
create mode 100644 docs/admin_docs/configuration/google-sheets.mdx
create mode 100644 superset-embedded-sdk/testrig/README.md
create mode 100644 superset-embedded-sdk/testrig/drive.mjs
create mode 100644 superset-embedded-sdk/testrig/embedded.html
create mode 100644 superset-embedded-sdk/testrig/host.html
create mode 100644 superset-embedded-sdk/testrig/server.mjs
create mode 100644
superset-frontend/src/components/FilterableTable/exactDecimals.test.tsx
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.test.ts
create mode 100644
superset-frontend/src/components/FilterableTable/sortResults.ts
create mode 100644 superset-frontend/src/features/users/UserListModal.test.tsx
create mode 100644 tests/unit_tests/commands/sql_lab/export_test.py
create mode 100644 tests/unit_tests/db_engine_specs/test_exasol.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_plugin_contract.py
create mode 100644 tests/unit_tests/scripts/translations/babel_update_test.py
create mode 100644 tests/unit_tests/views/test_auth_login.py