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/05/30 03:48:39 UTC
(superset) branch investigate-deps-ci-break updated (80b9157fa35 -> 6594daf6f28)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch investigate-deps-ci-break
in repository https://gitbox.apache.org/repos/asf/superset.git
from 80b9157fa35 Merge branch 'master' into investigate-deps-ci-break
add fbffae04446 fix(dataset-editor): drop null warning_markdown from extra JSON serialisation (#39706)
add 69adecd6a35 fix(reports): enforce server-side recipient on chart/dashboard report subscriptions (#38847)
add f2d80a183e8 chore(deps): bump content-disposition from 1.1.0 to 2.0.0 in /superset-frontend (#40109)
add b7585122c88 chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.3 to 8.59.4 in /superset-websocket (#40250)
add 89cab1860e8 chore(codeowners): add @rusackas as translations maintainer (#40295)
add 10b7bfc8c16 test(helpers): regression for humanize locale activation (#28331) (#40233)
add aa8255c55c6 test(reports): regression for alerts CSV missing chart time filters (#25538) (#40232)
add b23c65e04f1 test(charts): regression for last-modified sort order (#27500) (#40231)
add f8600471fad test(datasets): regression test for Jinja not rendered on sync columns (#25839) (#40224)
add 46b2d7d7a9c test(dashboard-import): pin native filter scope rootPath preservation (#19944) (#40135)
add 4a9aecda4aa fix(dashboard-import): remap chartsInScope on import (#26338) (#40140)
add 68c145adc36 feat(semantic layers): add metadata on additive metrics (#40279)
add 3f0858e35de chore(sql-lab): migrate useDispatch to useAppDispatch (#40037)
add a75f9b67b28 chore(superset-ui-switchboard): forward-compat fixes for TypeScript 6.0 (Phase E) (#40028)
add d203f0de337 chore(sql-lab): finish SqlLab typed-dispatch migration for SaveDatasetModal (#40040)
add a273fe4d621 fix(list-view): preserve user name in filter pill after navigation (#39505)
add 2cd5efa6279 ci(deps): bump lower bound on pip dependabot PRs (#40308)
add b1ca8cac6b6 fix(tests): fix flaky FileHandler test by awaiting LaunchQueue consumer in afterEach (#39508)
add cdca6f7fdcc fix(sqllab): keep saved-query list working when Jinja `dataset(id)` references a deleted dataset (#39703)
add 7e74fc41920 fix(charts): handle PostgreSQL INTERVAL type in bar and pie charts (#34513)
add 9638eecdb13 chore(deps-dev): bump oxlint from 1.65.0 to 1.66.0 in /superset-frontend (#40318)
add 3acef94ef63 chore(deps): update zod requirement from ^4.4.1 to ^4.4.3 in /superset-frontend/plugins/plugin-chart-echarts (#40313)
add a183582291e chore(deps): bump markdown-to-jsx from 9.8.0 to 9.8.1 in /superset-frontend (#40316)
add ce9cab098fd feat(mcp): chart formatting options across all supported chart types (#39887)
add e3711bec391 fix(recommandation): Fix chart recommandation (#39886)
add d1d07112aa4 feat(mcp): add find_users tool and owner filter columns for listings (#39679)
add 2f5fcc21f92 fix(semantic layers): coerce filter types (#40222)
add 2f95d288dd7 fix(mcp): eager-load dataset.metrics to prevent Excel export DetachedInstanceError (#39483)
add 53d8e5bdfa8 feat(mcp): include applied dashboard filters in get_chart_info (#39620)
add 4c3f65ef0b4 feat(mcp): make config optional in generate_explore_link (#39559)
add f187a8e1c41 fix(reports): guard null dashboard height in Playwright screenshots (#40179)
add 73f66e4c141 fix(datasets): isolate filter state to fix concurrent /dataset race (#39685)
add 5526464def7 fix(frontend): update safeStringify to surface [Circular] and DRY plugin code (#39156)
add b8b91574e0e fix(view query): Update style for code viewer container (#39635)
add 89c2a474334 fix(TableView): reset pagination when data reduces below current page (#34562)
add 8b483f320e9 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40325)
add bc26006a43d chore(deps-dev): update sqlalchemy-drill requirement from <2,>=1.1.4 to >=1.1.10,<2 (#40310)
add f09fd63495a chore(deps): bump @googleapis/sheets from 13.0.1 to 13.0.2 in /superset-frontend (#40324)
add dcef6f8a41c chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40322)
add 48cb3f5885c chore(deps-dev): bump baseline-browser-mapping from 2.10.29 to 2.10.31 in /superset-frontend (#40320)
add e25d7081979 fix(mcp): hide write tools from users without write permissions (#40098)
add ac035083d75 feat(path): support metric-based color scales & line width by metric (#39165)
add 5966bb1c1ef feat(mcp): add series_limit to generate_chart XY config (#40307)
add 558ff4452b8 fix(preview): fix chart preview bugs (#40063)
add 55491006016 feat(i18n): add missing Slovak translations (#40219)
add a94edfe4187 fix(i18n): add Slovenian translation for 'Range type' in DateFilter (#40287)
add f7f6c29adf0 chore(deps-dev): bump webpack from 5.106.2 to 5.107.1 in /superset-frontend (#40370)
add 8e98ca65691 docs: expand out-of-scope vulnerability definitions (#40332)
add 31087177ab3 chore(deps-dev): bump webpack from 5.107.0 to 5.107.1 in /docs (#40364)
add f4af6a2caf0 fix(docker): add missing `service-worker.js` into built container image (#39596)
add 64f0e88de79 chore(backend/build): upgrade Gunicorn from v22 to v25 (#38788)
add df8222ffcd2 chore(deps-dev): bump ts-jest from 29.4.10 to 29.4.11 in /superset-frontend (#40369)
add b0d26196fc5 chore(deps-dev): bump @swc/plugin-emotion from 14.9.0 to 14.10.0 in /superset-frontend (#40368)
add 8ab4695ba34 fix(mcp): use `name` URL param so AI-generated SQL Lab titles render (#40288)
add 21059b54f06 feat(semantic layers): form for SL with a single SV (#40280)
add c945ef67639 chore(oxlint): enable import/newline-after-import + react/no-unstable-nested-components (#40319)
add 42149f6a78f fix(chart): fix label and description translation on UI and enhance french translations (#40229)
add 91d96419fe0 feat(sec): delays version-bumping PR to avoid prematurely usage of compromised packages (#39783)
add 3b4892c48cd fix(select): replace cached options with search results in AsyncSelect (#40039)
add 869ab37f590 chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40366)
add d97b5d6509c chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40372)
add 3599c78a034 chore(deps): bump react-arborist from 3.6.1 to 3.7.0 in /superset-frontend (#40371)
add 5af8fe77fab chore(deps): bump zod from 4.4.1 to 4.4.3 in /superset-frontend (#40367)
add 6e23e4541d3 chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#40365)
add 2a0ebd7055a chore(deps-dev): bump ts-jest from 29.4.10 to 29.4.11 in /superset-websocket (#40363)
add 0febe32dc9c chore(deps): bump geostyler from 18.5.1 to 18.6.0 in /superset-frontend (#40323)
add c728b4a11f5 chore(deps): bump sqlglot from 28.10.0 to 30.8.0 (#40186)
add e40648dfcbd chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /superset-websocket (#39425)
add 5cdd542ae50 fix(i18n): translate DateFilter tooltip for time range values (#40286)
add f8e13770fcf fix(dashboard): add top padding to "Create new chart" button in builder pane (#40033)
add af6ac4d09cb feat(i18n): AI-assisted translation backfill tooling + Spanish translations (#39448)
add e57387098b4 fix(bigquery): limit result set size to prevent browser memory crashes (#38588)
add 8d985d223bc ci(e2e): run backend under gunicorn instead of flask dev server (#40234)
add 42668cf6341 ci(docker): pin QEMU binfmt image to stabilize arm64 builds (#40235)
add 838ac8f553c fix(ci): stop cancelling Hold Label Check runs (#40380)
add 168b49bf34f chore(cypress): remove dead _skip spec files and skipped inline tests (#40384)
add 2fa3bbd91cf chore(ci): limit /app/prefix matrix variant to master merges (#40385)
add 55203bbc748 chore(deps): bump qs from 6.14.2 to 6.15.2 in /docs (#40383)
add 841871f1e78 chore(deps): bump qs from 6.14.2 to 6.15.2 in /superset-websocket/utils/client-ws-app (#40382)
add 816794b1985 fix(frontend): handle null/undefined path in ensureAppRoot (#39940)
add 5003ee1499a docs: remove out-of-place phrase (#40226)
add b21450681dc feat(i18n): add Thai (th) translations (AI-generated, needs review) (#40391)
add 965ec472965 fix(explore): hide value input for unary filter operators (#39924)
add 2fef4e41f20 feat(i18n): add Finnish (fi) translations (AI-generated, needs review) (#40390)
add 9c90a6854c5 ci(translations): hard-block translation regressions in CI (#39443)
add 8caa74354f6 chore(deps): bump markdown from 3.8.1 to 3.10.2 (#40389)
add fe484f6bb28 fix(UserListModal): Success notification mentions user and not group (#40284)
add b64561f3a37 chore(mcp): Simplify chart preview response (#40020)
add 33585b0480c feat(mcp): make form_data_key optional in update_chart_preview (#39680)
add 09572cd5efb chore(deps): bump tabulate from 0.9.0 to 0.10.0 (#40315)
add c381677dfdf chore(deps): bump click from 8.2.1 to 8.4.0 (#40312)
add bbe2f207d2d chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40418)
add 03d25277ba7 chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#40417)
add 9cc2deb9036 chore(deps): update zod requirement from ^4.4.1 to ^4.4.3 in /superset-frontend/plugins/plugin-chart-echarts (#40416)
add e9d46d843fa chore(deps): bump react-map-gl from 8.1.0 to 8.1.1 in /superset-frontend (#40415)
add 709ef9b6155 chore(deps): bump d3-cloud from 1.2.8 to 1.2.9 in /superset-frontend (#40321)
add 8b551d3f742 chore(deps-dev): bump duckdb from 1.4.2 to 1.5.2 (#40381)
add 952a6f3a239 fix(mcp): prevent encoding error on tools/list when middleware raises (#40446)
add b6f545e61e1 feat(mcp): resolve call_tool proxy name and capture error_type in logging (#38915)
add 7e088792b95 test(model): roll back uncommitted ds_col mutations in timestamp-expression tests (#40451)
add 09a94fa26b4 feat(mcp): return browser-friendly hello page for GET /mcp from browsers (#40309)
add 207a7bf7f9b fix: preserve dashboard certification when saving layout changes (#40193)
add fb606623538 chore(mcp): revert browser-friendly hello page for GET /mcp from browsers (#40467)
add d744f5715c4 fix(dashboard-export): include and re-attach roles in import/export (#21000) (#40136)
add e041f253856 fix(mcp): return error when target_tab not found in add_chart_to_existing_dashboard (#40124)
add ef4514f5abd fix(treemap): remove gaps between chart nodes (#40181)
add 6bd1b462164 chore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 (#40458)
add 894058fe3d4 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40438)
add 08164e33bb4 chore(deps): bump d3-cloud from 1.2.8 to 1.2.9 in /superset-frontend (#40437)
add 9441240e5c4 chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40436)
add c73106b7a28 fix(chart-echarts): drop white textBorder from Funnel segment labels (#40468)
add 0dc58d10420 feat(mcp): browser hello page with working middleware and config-driven content (#40471)
add e68251fa704 feat(mcp): support custom SQL metrics in generate_chart and update_chart (#40448)
add f037449b753 fix(roles): resolve HTTP 429 and 414 errors on role management page (#39465)
add 8a0026b1736 fix(groups): display user full name in role edit user dropdown (#39942)
add f663f47628a fix(embedding): require non-default JWT secret when embedded dashboards are enabled (#39999)
add ec09cec6bdf fix(ci): correct first-interaction inputs in welcome workflow (#40508)
add f7e1f968946 fix(i18n): Wrapped default Chat Error message in t() to support translation (#40504)
add 96b96ad7d47 chore(deps): bump ws from 8.20.1 to 8.21.0 in /superset-websocket (#40483)
add b0da0cf202b chore(ci): update GHA actions to Node.js 24-compatible versions (#40477)
add 8853ab5c753 feat(mcp): add get_dashboard_layout companion tool (#40328)
add b2320820b4a feat(core): SoftDeleteMixin and restore infrastructure (#39977)
add 8f88bbcc796 chore(deps-dev): bump @swc/core from 1.15.33 to 1.15.40 in /superset-frontend (#40519)
add 63ae80ab623 chore(deps-dev): bump baseline-browser-mapping from 2.10.31 to 2.10.32 in /superset-frontend (#40518)
add e1948c87c6d chore(deps-dev): bump webpack-sources from 3.4.1 to 3.5.0 in /superset-frontend (#40517)
add cf9ee99b5ae chore(deps-dev): bump eslint-plugin-react-you-might-not-need-an-effect from 0.10.1 to 0.10.2 in /superset-frontend (#40516)
add 61cb0aeae74 chore(deps): bump @swc/core from 1.15.33 to 1.15.40 in /docs (#40515)
add c3bda6baea9 chore(deps): bump fs-extra from 11.3.2 to 11.3.5 in /superset-frontend (#40487)
add ead21d9789d chore(deps): bump react-syntax-highlighter from 16.1.0 to 16.1.1 in /superset-frontend (#40486)
add 661ff31c6d5 chore(deps): bump yeoman-generator from 8.1.2 to 8.2.2 in /superset-frontend (#40485)
add 63e3a18e8f4 chore(deps): bump baseline-browser-mapping from 2.10.31 to 2.10.32 in /docs (#40484)
add ae5823fb9c2 chore(deps-dev): bump tmp from 0.2.5 to 0.2.7 in /superset-frontend (#40480)
add e73d2d0bf60 chore(deps): bump tmp from 0.2.4 to 0.2.7 in /superset-frontend/cypress-base (#40476)
add 53e2793bc3c fix: coerce out-of-bounds nanosecond timestamps to NaT instead of raising (#40127)
add f614863ed78 feat(mcp): add list and get tools for annotation layers and annotations (#40342)
add a69bbcb044c feat(mcp): add list and get tools for saved queries and query history (#40346)
add 8d8eeb35053 feat(mcp): add list_tags and get_tag_info MCP tools (#40349)
add b8ea4448d69 feat(ci): perform static security analysis for GHA workflows (#40510)
add 40de44f6de6 feat(mcp): add list and get tools for action log and tasks (#40344)
add 43c3c06035f chore(deps): bump vm2 from 3.11.3 to 3.11.5 in /superset-frontend (#40529)
add 62b4ee3d9e0 feat(mcp): add list and get tools for users and roles (#40345)
add 6594daf6f28 Merge branch 'master' into investigate-deps-ci-break
No new revisions were added by this update.
Summary of changes:
.github/CODEOWNERS | 2 +-
.github/SECURITY.md | 16 +-
.github/actions/setup-docker/action.yml | 15 +-
.github/actions/setup-supersetbot/action.yml | 4 +-
.github/dependabot.yml | 66 +-
.github/workflows/bashlib.sh | 125 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/docker.yml | 6 +-
.github/workflows/github-action-validator.yml | 12 +-
.github/workflows/no-hold-label.yml | 7 +-
.github/workflows/superset-e2e.yml | 4 +-
.../workflows/superset-translations-comment.yml | 87 +
.github/workflows/superset-translations.yml | 90 +-
.github/workflows/welcome-new-users.yml | 11 +-
.gitignore | 2 +
.pre-commit-config.yaml | 2 +-
.pylintrc | 2 +-
Dockerfile | 2 +
.../contributing/development-setup.md | 1 -
docs/developer_docs/contributing/howtos.md | 86 +
docs/package.json | 6 +-
docs/yarn.lock | 177 +-
pyproject.toml | 15 +-
requirements/base.txt | 10 +-
requirements/development.txt | 14 +-
scripts/change_detector.py | 1 +
scripts/translations/backfill_po.py | 653 +
scripts/translations/build_translation_index.py | 153 +
.../translations/check_translation_regression.py | 250 +
superset-core/pyproject.toml | 2 +-
.../src/superset_core/semantic_layers/types.py | 21 +
.../cypress/e2e/dashboard/_skip.controls.test.ts | 100 -
.../dashboard/_skip.horizontalFilterBar.test.ts | 292 -
.../cypress/e2e/dashboard/_skip.key_value.test.ts | 53 -
.../cypress/e2e/dashboard/_skip.load.test.ts | 51 -
.../_skip.nativeFilters.noInitState.test.ts | 385 -
.../e2e/dashboard/_skip.nativeFilters.test.ts | 431 -
.../cypress/e2e/dashboard/_skip.tabs.test.ts | 194 -
.../cypress/e2e/dashboard/_skip.url_params.test.ts | 45 -
.../cypress/e2e/dashboard/editmode.test.ts | 1110 +-
.../cypress/e2e/explore/_skip.AdhocFilters.test.ts | 109 -
.../cypress/e2e/explore/_skip.AdhocMetrics.test.ts | 123 -
.../e2e/explore/_skip.advanced_analytics.test.ts | 65 -
.../cypress/e2e/explore/_skip.annotations.test.ts | 48 -
.../cypress/e2e/explore/_skip.link.test.ts | 192 -
.../visualizations/_skip.big_number.test.js | 80 -
.../visualizations/_skip.big_number_total.test.js | 79 -
.../explore/visualizations/_skip.box_plot.test.js | 65 -
.../explore/visualizations/_skip.bubble.test.js | 108 -
.../explore/visualizations/_skip.compare.test.js | 100 -
.../visualizations/_skip.download_chart.test.js | 54 -
.../e2e/explore/visualizations/_skip.gauge.test.js | 75 -
.../e2e/explore/visualizations/_skip.graph.test.ts | 91 -
.../e2e/explore/visualizations/_skip.pie.test.js | 82 -
.../visualizations/_skip.pivot_table.test.js | 106 -
.../explore/visualizations/_skip.sunburst.test.js | 97 -
.../e2e/explore/visualizations/_skip.table.test.ts | 474 -
.../e2e/explore/visualizations/_skip.time_table.js | 130 -
.../explore/visualizations/_skip.world_map.test.js | 95 -
superset-frontend/cypress-base/package-lock.json | 12 +-
superset-frontend/oxlint.json | 13 +-
superset-frontend/package-lock.json | 528 +-
superset-frontend/package.json | 28 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/chart/components/SuperChart.tsx | 1 +
.../src/components/Select/AsyncSelect.test.tsx | 470 +
.../src/components/Select/AsyncSelect.tsx | 117 +-
.../src/components/Select/utils.tsx | 4 +
.../src/components/TableView/TableView.test.tsx | 34 +
.../src/components/TableView/TableView.tsx | 15 +
.../src/query/types/QueryResponse.ts | 1 +
.../src/switchboard.test.ts | 7 +-
.../superset-ui-switchboard/src/switchboard.ts | 6 +-
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/Funnel/transformProps.ts | 2 -
.../plugin-chart-echarts/src/Treemap/constants.ts | 4 +-
.../src/Treemap/transformProps.ts | 3 +-
.../test/Funnel/transformProps.test.ts | 9 +
.../test/Treemap/transformProps.test.ts | 41 +
.../plugin-chart-point-cluster-map/package.json | 2 +-
.../src/layers/Path/Path.test.tsx | 525 +-
.../preset-chart-deckgl/src/layers/Path/Path.tsx | 108 +-
.../src/layers/Path/buildQuery.test.ts | 355 +
.../src/layers/Path/buildQuery.ts | 66 +-
.../src/layers/Path/controlPanel.test.ts | 242 +
.../src/layers/Path/controlPanel.ts | 73 +-
.../src/layers/Path/transformProps.test.ts | 364 +
.../src/layers/Path/transformProps.ts | 65 +-
.../src/utilities/Shared_DeckGL.tsx | 35 +
superset-frontend/spec/helpers/testing-library.tsx | 2 +-
superset-frontend/src/SqlLab/actions/sqlLab.ts | 20 +-
.../src/SqlLab/components/EditorAutoSync/index.tsx | 5 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 5 +-
.../SqlLab/components/EditorWrapper/useKeywords.ts | 5 +-
.../components/ExploreCtasResultsButton/index.tsx | 9 +-
.../src/SqlLab/components/HighlightedSql/index.tsx | 9 +-
.../src/SqlLab/components/PopEditorTab/index.tsx | 5 +-
.../SqlLab/components/QueryAutoRefresh/index.tsx | 5 +-
.../SqlLab/components/QueryLimitSelect/index.tsx | 4 +-
.../src/SqlLab/components/QueryTable/index.tsx | 5 +-
.../src/SqlLab/components/ResultSet/index.tsx | 5 +-
.../SaveDatasetModal/SaveDatasetModal.test.tsx | 105 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 11 +-
.../src/SqlLab/components/SouthPane/index.tsx | 5 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 5 +-
.../SqlLab/components/SqlEditorLeftBar/index.tsx | 4 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 5 +-
.../SqlEditorTopBar/useDatabaseSelector.ts | 5 +-
.../src/SqlLab/components/TableElement/index.tsx | 5 +-
.../SqlLab/components/TableExploreTree/index.tsx | 5 +-
.../components/TableExploreTree/useTreeData.ts | 4 +-
.../src/SqlLab/components/TablePreview/index.tsx | 5 +-
.../components/DynamicGroupBy/controlPanel.test.ts | 53 +
.../components/DynamicGroupBy/controlPanel.ts | 13 +-
.../components/TimeColumn/controlPanel.test.ts | 53 +
.../components/TimeColumn/controlPanel.ts | 7 +-
.../components/TimeGrain/controlPanel.test.ts | 53 +
.../components/TimeGrain/controlPanel.ts | 7 +-
.../src/components/Chart/ChartErrorMessage.tsx | 3 +-
.../src/components/Chart/chartAction.ts | 10 +-
.../src/components/Chart/chartActions.test.ts | 51 +
.../DatasourceModal/DatasourceModal.test.tsx | 34 +-
.../Datasource/DatasourceModal/index.tsx | 4 +-
.../components/ListView/Filters/Select.test.tsx | 267 +
.../src/components/ListView/Filters/Select.tsx | 12 +-
superset-frontend/src/components/ListView/types.ts | 4 +
.../src/dashboard/actions/dashboardLayout.ts | 1 +
.../src/dashboard/actions/dashboardState.ts | 9 +-
.../src/dashboard/components/SliceAdder.tsx | 2 +-
.../components/menu/DownloadMenuItems/index.tsx | 4 +-
.../src/dashboard/hooks/useDownloadScreenshot.ts | 4 +-
.../components/ControlPanelsContainer.test.tsx | 20 +
.../explore/components/ControlPanelsContainer.tsx | 11 +-
.../controls/DateFilterControl/DateFilterLabel.tsx | 6 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 64 +
.../index.tsx | 91 +-
.../src/explore/components/controls/ViewQuery.tsx | 9 +-
.../src/features/groups/GroupListModal.tsx | 3 +-
superset-frontend/src/features/groups/utils.ts | 3 +-
.../reports/ReportModal/ReportModal.test.tsx | 20 +-
.../src/features/reports/ReportModal/actions.ts | 23 +
.../src/features/reports/ReportModal/index.tsx | 38 +-
.../src/features/reports/ReportModal/reducer.ts | 21 +
.../src/features/roles/RoleListEditModal.test.tsx | 113 +-
.../src/features/roles/RoleListEditModal.tsx | 59 +-
.../semanticLayers/MultiEnumControl.test.tsx | 96 +
.../semanticLayers/jsonFormsHelpers.test.ts | 45 +-
.../features/semanticLayers/jsonFormsHelpers.tsx | 91 +-
.../semanticViews/AddSemanticViewModal.tsx | 38 +-
.../src/features/users/UserListModal.tsx | 2 +-
superset-frontend/src/features/users/utils.ts | 9 +
.../filters/components/Range/controlPanel.test.ts | 53 +
.../src/filters/components/Range/controlPanel.ts | 11 +-
.../filters/components/Select/controlPanel.test.ts | 34 +-
.../src/filters/components/Select/controlPanel.ts | 56 +-
.../src/filters/components/Time/controlPanel.ts | 7 +-
.../filters/components/TimeColumn/controlPanel.ts | 7 +-
.../filters/components/TimeGrain/controlPanel.ts | 7 +-
.../src/pages/FileHandler/index.test.tsx | 19 +-
superset-frontend/src/utils/export.test.ts | 13 +-
superset-frontend/src/utils/export.ts | 4 +-
superset-frontend/src/utils/fetchOptions.ts | 21 +-
superset-frontend/src/utils/pathUtils.test.ts | 14 +
superset-frontend/src/utils/pathUtils.ts | 11 +-
superset-frontend/src/utils/safeStringify.test.ts | 26 +-
superset-frontend/src/utils/safeStringify.ts | 16 +-
superset-frontend/src/views/store.ts | 13 +-
superset-frontend/webpack.proxy-config.js | 1 +
superset-websocket/package-lock.json | 44 +-
superset-websocket/package.json | 8 +-
superset-websocket/src/index.ts | 6 +-
superset-websocket/tsconfig.json | 1 +
.../utils/client-ws-app/package-lock.json | 12 +-
superset/charts/schemas.py | 4 +
superset/commands/dashboard/export.py | 10 +
superset/commands/dashboard/importers/v1/utils.py | 53 +-
superset/commands/dataset/importers/v1/utils.py | 39 +-
superset/commands/importers/v1/utils.py | 47 +
superset/commands/report/base.py | 5 +-
superset/commands/report/update.py | 30 +-
superset/commands/restore.py | 98 +
superset/common/query_context_processor.py | 13 +
superset/common/utils/query_cache_manager.py | 21 +-
superset/config.py | 7 +-
superset/constants.py | 2 +
superset/daos/base.py | 88 +-
superset/daos/database.py | 7 +
superset/daos/{security.py => role.py} | 11 +-
superset/dashboards/schemas.py | 1 +
superset/db_engine_specs/base.py | 12 +-
superset/db_engine_specs/bigquery.py | 109 +-
superset/db_engine_specs/postgres.py | 42 +-
superset/initialization/__init__.py | 75 +-
superset/mcp_service/__main__.py | 34 +-
.../mcp_service/action_log}/__init__.py | 0
superset/mcp_service/action_log/schemas.py | 302 +
.../{database => action_log}/tool/__init__.py | 8 +-
.../action_log/tool/get_action_log_info.py | 97 +
.../action_log/tool/list_action_logs.py | 152 +
.../mcp_service/annotation_layer}/__init__.py | 0
superset/mcp_service/annotation_layer/schemas.py | 367 +
.../{explore => annotation_layer}/tool/__init__.py | 17 +-
.../tool/get_annotation_layer_info.py | 97 +
.../tool/get_layer_annotation_info.py | 130 +
.../tool/list_annotation_layers.py | 123 +
.../tool/list_layer_annotations.py | 144 +
superset/mcp_service/app.py | 167 +-
superset/mcp_service/auth.py | 173 +-
superset/mcp_service/chart/chart_helpers.py | 135 +-
superset/mcp_service/chart/chart_utils.py | 150 +-
superset/mcp_service/chart/schemas.py | 476 +-
superset/mcp_service/chart/tool/generate_chart.py | 25 +-
superset/mcp_service/chart/tool/get_chart_data.py | 214 +-
superset/mcp_service/chart/tool/get_chart_info.py | 105 +-
.../mcp_service/chart/tool/get_chart_preview.py | 111 +-
superset/mcp_service/chart/tool/list_charts.py | 7 +-
superset/mcp_service/chart/tool/update_chart.py | 33 +-
.../mcp_service/chart/tool/update_chart_preview.py | 47 +-
.../chart/validation/dataset_validator.py | 45 +-
.../chart/validation/runtime/__init__.py | 4 +-
.../validation/runtime/chart_type_suggester.py | 23 +-
.../chart/validation/schema_validator.py | 35 +-
superset/mcp_service/common/schema_discovery.py | 8 +-
superset/mcp_service/dashboard/schemas.py | 315 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 91 +-
.../dashboard/tool/generate_dashboard.py | 6 +-
.../dashboard/tool/get_dashboard_layout.py | 119 +
.../mcp_service/dashboard/tool/list_dashboards.py | 9 +-
superset/mcp_service/database/schemas.py | 23 +-
superset/mcp_service/dataset/schemas.py | 30 +-
superset/mcp_service/dataset/tool/list_datasets.py | 7 +-
.../explore/tool/generate_explore_link.py | 41 +-
superset/mcp_service/jwt_verifier.py | 275 +-
superset/mcp_service/mcp_config.py | 6 +-
superset/mcp_service/mcp_core.py | 15 +-
superset/mcp_service/middleware.py | 172 +-
superset/mcp_service/privacy.py | 13 +-
.../mcp_service/query}/__init__.py | 0
superset/mcp_service/query/schemas.py | 293 +
.../query/tool}/__init__.py | 7 +-
superset/mcp_service/query/tool/get_query_info.py | 122 +
superset/mcp_service/query/tool/list_queries.py | 156 +
.../mcp_service/role}/__init__.py | 0
superset/mcp_service/role/schemas.py | 264 +
.../role/tool}/__init__.py | 7 +-
superset/mcp_service/role/tool/get_role_info.py | 97 +
superset/mcp_service/role/tool/list_roles.py | 135 +
.../mcp_service/saved_query}/__init__.py | 0
superset/mcp_service/saved_query/schemas.py | 269 +
.../{database => saved_query}/tool/__init__.py | 8 +-
.../saved_query/tool/get_saved_query_info.py | 129 +
.../saved_query/tool/list_saved_queries.py | 158 +
superset/mcp_service/server.py | 120 +-
superset/mcp_service/sql_lab/schemas.py | 21 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 7 +-
superset/mcp_service/system/schemas.py | 84 +-
superset/mcp_service/system/tool/__init__.py | 2 +
superset/mcp_service/system/tool/find_users.py | 101 +
.../mcp_service/tag}/__init__.py | 0
superset/mcp_service/tag/schemas.py | 251 +
.../execution => mcp_service/tag/tool}/__init__.py | 8 +-
superset/mcp_service/tag/tool/get_tag_info.py | 108 +
superset/mcp_service/tag/tool/list_tags.py | 157 +
.../mcp_service/task}/__init__.py | 0
superset/mcp_service/task/schemas.py | 259 +
.../task/tool}/__init__.py | 7 +-
superset/mcp_service/task/tool/get_task_info.py | 107 +
superset/mcp_service/task/tool/list_tasks.py | 140 +
.../mcp_service/user}/__init__.py | 0
superset/mcp_service/user/schemas.py | 302 +
.../user/tool}/__init__.py | 7 +-
superset/mcp_service/user/tool/get_user_info.py | 107 +
superset/mcp_service/user/tool/list_users.py | 151 +
superset/mcp_service/utils/response_utils.py | 11 +
superset/mcp_service/utils/sanitization.py | 139 +-
superset/models/helpers.py | 260 +-
superset/models/sql_lab.py | 14 +-
superset/reports/api.py | 79 +-
superset/reports/schemas.py | 24 +
superset/result_set.py | 4 +-
superset/security/manager.py | 50 +-
superset/semantic_layers/mapper.py | 192 +-
superset/sql/dialects/db2.py | 6 +
superset/sql/dialects/dremio.py | 6 +-
superset/sql/dialects/firebolt.py | 11 +-
superset/sql/parse.py | 37 +-
superset/translations/es/LC_MESSAGES/messages.po | 4264 +--
superset/translations/fi/LC_MESSAGES/messages.po | 30258 +++++++++++++++++++
superset/translations/fr/LC_MESSAGES/messages.po | 1774 +-
superset/translations/requirements.txt | 1 +
superset/translations/sk/LC_MESSAGES/messages.po | 11768 ++++----
superset/translations/sl/LC_MESSAGES/messages.po | 6 +-
superset/translations/th/LC_MESSAGES/messages.po | 29937 ++++++++++++++++++
superset/utils/webdriver.py | 13 +-
superset/views/base_api.py | 30 +
superset/views/filters.py | 213 +-
tests/integration_tests/charts/api_tests.py | 70 +
tests/integration_tests/model_tests.py | 89 +-
tests/integration_tests/reports/api_tests.py | 3 +-
tests/unit_tests/charts/test_client_processing.py | 34 +-
tests/unit_tests/commands/dashboard/export_test.py | 68 +
.../importers/v1/test_find_existing_for_import.py | 180 +
.../unit_tests/commands/importers/v1/utils_test.py | 119 +
tests/unit_tests/commands/report/execute_test.py | 43 +
tests/unit_tests/commands/report/update_test.py | 148 +-
.../commands/test_base_restore_command.py | 187 +
.../common/test_query_context_processor.py | 120 +
tests/unit_tests/connectors/sqla/utils_test.py | 48 +
tests/unit_tests/dao/base_dao_test.py | 7 +
tests/unit_tests/daos/test_base_dao_soft_delete.py | 100 +
.../dashboards/commands/importers/v1/utils_test.py | 245 +
tests/unit_tests/datasets/api_tests.py | 43 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 132 +-
tests/unit_tests/db_engine_specs/test_postgres.py | 41 +-
.../unit_tests/mcp_service/action_log}/__init__.py | 0
.../mcp_service/action_log/tool}/__init__.py | 0
.../action_log/tool/test_action_log_tools.py | 401 +
.../mcp_service/annotation_layer}/__init__.py | 0
.../mcp_service/annotation_layer/tool}/__init__.py | 0
.../tool/test_annotation_layer_tools.py | 562 +
.../mcp_service/chart/test_big_number_chart.py | 41 +-
.../mcp_service/chart/test_chart_schemas.py | 295 +
.../mcp_service/chart/test_chart_utils.py | 268 +-
.../mcp_service/chart/test_new_chart_types.py | 286 +
.../mcp_service/chart/tool/test_generate_chart.py | 90 +
.../mcp_service/chart/tool/test_get_chart_data.py | 285 +
.../mcp_service/chart/tool/test_get_chart_info.py | 243 +-
.../chart/tool/test_get_chart_preview.py | 115 +-
.../mcp_service/chart/tool/test_update_chart.py | 58 +
.../chart/tool/test_update_chart_preview.py | 72 +-
.../chart/validation/test_runtime_validator.py | 25 +
.../tool/test_add_chart_to_existing_dashboard.py | 52 +
.../dashboard/tool/test_dashboard_generation.py | 174 +-
.../dashboard/tool/test_get_dashboard_layout.py | 285 +
.../mcp_service/dataset/tool/test_dataset_tools.py | 18 +-
.../explore/tool/test_generate_explore_link.py | 46 +
.../unit_tests/mcp_service/query}/__init__.py | 0
.../unit_tests/mcp_service/query/tool}/__init__.py | 0
.../mcp_service/query/tool/test_query_tools.py | 328 +
.../unit_tests/mcp_service/role}/__init__.py | 0
.../unit_tests/mcp_service/role/tool}/__init__.py | 0
.../mcp_service/role/tool/test_role_tools.py | 336 +
.../mcp_service/saved_query}/__init__.py | 0
.../mcp_service/saved_query/tool}/__init__.py | 0
.../saved_query/tool/test_saved_query_tools.py | 337 +
.../sql_lab/tool/test_open_sql_lab_with_context.py | 43 +-
.../mcp_service/system/tool/test_find_users.py | 257 +
.../system/tool/test_get_current_user.py | 66 +-
.../mcp_service/system/tool/test_get_schema.py | 40 +-
.../unit_tests/mcp_service/tag}/__init__.py | 0
.../unit_tests/mcp_service/tag/tool}/__init__.py | 0
.../mcp_service/tag/tool/test_tag_tools.py | 268 +
.../unit_tests/mcp_service/task}/__init__.py | 0
.../unit_tests/mcp_service/task/tool}/__init__.py | 0
.../mcp_service/task/tool/test_task_tools.py | 284 +
tests/unit_tests/mcp_service/test_auth_rbac.py | 120 +
tests/unit_tests/mcp_service/test_jwt_verifier.py | 6 +-
.../mcp_service/test_jwt_verifier_browser_hello.py | 126 +
.../mcp_service/test_mcp_tool_registration.py | 138 +-
tests/unit_tests/mcp_service/test_middleware.py | 206 +-
.../mcp_service/test_middleware_logging.py | 181 +-
.../mcp_service/test_tool_search_transform.py | 30 +-
.../unit_tests/mcp_service/user}/__init__.py | 0
.../unit_tests/mcp_service/user/tool}/__init__.py | 0
.../mcp_service/user/tool/test_user_tools.py | 449 +
.../mcp_service/utils/test_sanitization.py | 200 +
tests/unit_tests/models/helpers_test.py | 53 +
tests/unit_tests/models/sql_lab_test.py | 57 +-
tests/unit_tests/models/test_soft_delete_mixin.py | 566 +
tests/unit_tests/reports/schemas_test.py | 158 +-
tests/unit_tests/result_set_test.py | 20 +
.../unit_tests/scripts/translations}/__init__.py | 0
.../scripts/translations/backfill_po_test.py | 312 +
.../translations/build_translation_index_test.py | 256 +
tests/unit_tests/semantic_layers/mapper_test.py | 372 +-
tests/unit_tests/semantic_layers/types_test.py | 58 +
tests/unit_tests/utils/webdriver_test.py | 87 +
tests/unit_tests/views/test_soft_delete_filter.py | 356 +
379 files changed, 94154 insertions(+), 16046 deletions(-)
create mode 100644 .github/workflows/superset-translations-comment.yml
create mode 100644 scripts/translations/backfill_po.py
create mode 100644 scripts/translations/build_translation_index.py
create mode 100755 scripts/translations/check_translation_regression.py
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.horizontalFilterBar.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.key_value.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.load.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.nativeFilters.noInitState.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.nativeFilters.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.tabs.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.url_params.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.AdhocFilters.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.AdhocMetrics.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.advanced_analytics.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.annotations.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/_skip.link.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.big_number.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.big_number_total.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.box_plot.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.bubble.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.compare.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.download_chart.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.gauge.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.graph.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.pie.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.pivot_table.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.sunburst.test.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.table.test.ts
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.time_table.js
delete mode 100644 superset-frontend/cypress-base/cypress/e2e/explore/visualizations/_skip.world_map.test.js
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/buildQuery.test.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/controlPanel.test.ts
create mode 100644 superset-frontend/plugins/preset-chart-deckgl/src/layers/Path/transformProps.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/DynamicGroupBy/controlPanel.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeColumn/controlPanel.test.ts
create mode 100644 superset-frontend/src/chartCustomizations/components/TimeGrain/controlPanel.test.ts
create mode 100644 superset-frontend/src/components/ListView/Filters/Select.test.tsx
create mode 100644 superset-frontend/src/features/semanticLayers/MultiEnumControl.test.tsx
create mode 100644 superset-frontend/src/filters/components/Range/controlPanel.test.ts
create mode 100644 superset/commands/restore.py
copy superset/daos/{security.py => role.py} (78%)
copy {superset-core/src/superset_core/common => superset/mcp_service/action_log}/__init__.py (100%)
create mode 100644 superset/mcp_service/action_log/schemas.py
copy superset/mcp_service/{database => action_log}/tool/__init__.py (84%)
create mode 100644 superset/mcp_service/action_log/tool/get_action_log_info.py
create mode 100644 superset/mcp_service/action_log/tool/list_action_logs.py
copy {superset-core/src/superset_core/common => superset/mcp_service/annotation_layer}/__init__.py (100%)
create mode 100644 superset/mcp_service/annotation_layer/schemas.py
copy superset/mcp_service/{explore => annotation_layer}/tool/__init__.py (68%)
create mode 100644 superset/mcp_service/annotation_layer/tool/get_annotation_layer_info.py
create mode 100644 superset/mcp_service/annotation_layer/tool/get_layer_annotation_info.py
create mode 100644 superset/mcp_service/annotation_layer/tool/list_annotation_layers.py
create mode 100644 superset/mcp_service/annotation_layer/tool/list_layer_annotations.py
create mode 100644 superset/mcp_service/dashboard/tool/get_dashboard_layout.py
copy {superset-core/src/superset_core/common => superset/mcp_service/query}/__init__.py (100%)
create mode 100644 superset/mcp_service/query/schemas.py
copy superset/{models/sql_types => mcp_service/query/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/query/tool/get_query_info.py
create mode 100644 superset/mcp_service/query/tool/list_queries.py
copy {superset-core/src/superset_core/common => superset/mcp_service/role}/__init__.py (100%)
create mode 100644 superset/mcp_service/role/schemas.py
copy superset/{models/sql_types => mcp_service/role/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/role/tool/get_role_info.py
create mode 100644 superset/mcp_service/role/tool/list_roles.py
copy {superset-core/src/superset_core/common => superset/mcp_service/saved_query}/__init__.py (100%)
create mode 100644 superset/mcp_service/saved_query/schemas.py
copy superset/mcp_service/{database => saved_query}/tool/__init__.py (83%)
create mode 100644 superset/mcp_service/saved_query/tool/get_saved_query_info.py
create mode 100644 superset/mcp_service/saved_query/tool/list_saved_queries.py
create mode 100644 superset/mcp_service/system/tool/find_users.py
copy {superset-core/src/superset_core/common => superset/mcp_service/tag}/__init__.py (100%)
create mode 100644 superset/mcp_service/tag/schemas.py
copy superset/{sql/execution => mcp_service/tag/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/tag/tool/get_tag_info.py
create mode 100644 superset/mcp_service/tag/tool/list_tags.py
copy {superset-core/src/superset_core/common => superset/mcp_service/task}/__init__.py (100%)
create mode 100644 superset/mcp_service/task/schemas.py
copy superset/{models/sql_types => mcp_service/task/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/task/tool/get_task_info.py
create mode 100644 superset/mcp_service/task/tool/list_tasks.py
copy {superset-core/src/superset_core/common => superset/mcp_service/user}/__init__.py (100%)
create mode 100644 superset/mcp_service/user/schemas.py
copy superset/{models/sql_types => mcp_service/user/tool}/__init__.py (86%)
create mode 100644 superset/mcp_service/user/tool/get_user_info.py
create mode 100644 superset/mcp_service/user/tool/list_users.py
create mode 100644 superset/translations/fi/LC_MESSAGES/messages.po
create mode 100644 superset/translations/th/LC_MESSAGES/messages.po
create mode 100644 tests/unit_tests/commands/importers/v1/test_find_existing_for_import.py
create mode 100644 tests/unit_tests/commands/importers/v1/utils_test.py
create mode 100644 tests/unit_tests/commands/test_base_restore_command.py
create mode 100644 tests/unit_tests/daos/test_base_dao_soft_delete.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/action_log}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/action_log/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/action_log/tool/test_action_log_tools.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/annotation_layer}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/annotation_layer/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/annotation_layer/tool/test_annotation_layer_tools.py
create mode 100644 tests/unit_tests/mcp_service/dashboard/tool/test_get_dashboard_layout.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/query}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/query/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/query/tool/test_query_tools.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/role}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/role/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/role/tool/test_role_tools.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/saved_query}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/saved_query/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/saved_query/tool/test_saved_query_tools.py
create mode 100644 tests/unit_tests/mcp_service/system/tool/test_find_users.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/tag}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/tag/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/task}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/task/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/task/tool/test_task_tools.py
create mode 100644 tests/unit_tests/mcp_service/test_jwt_verifier_browser_hello.py
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/user}/__init__.py (100%)
copy {superset-core/src/superset_core/common => tests/unit_tests/mcp_service/user/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/user/tool/test_user_tools.py
create mode 100644 tests/unit_tests/models/test_soft_delete_mixin.py
copy {superset-core/src/superset_core/common => tests/unit_tests/scripts/translations}/__init__.py (100%)
create mode 100644 tests/unit_tests/scripts/translations/backfill_po_test.py
create mode 100644 tests/unit_tests/scripts/translations/build_translation_index_test.py
create mode 100644 tests/unit_tests/semantic_layers/types_test.py
create mode 100644 tests/unit_tests/views/test_soft_delete_filter.py