This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch fix-save-and-go-to-dashboard
in repository https://gitbox.apache.org/repos/asf/superset.git
from 969c6be8c2c Merge branch 'master' into fix-save-and-go-to-dashboard
add 49b42431292 test(dashboard): migrate dashboard load smoke test to
Playwright (#41432)
add 894c0191d64 fix(superset_app_root): when used with oauth (#38033)
add 19159d58c80 refactor: engine enforce SQLAlchemy 2.0 (#42277)
add 40d9e7d0485 fix(ag-grid-table): avoid ambiguous build query import
(#42313)
add 641713f6237 fix: Revert "chore(deps): bump echarts from 5.6.0 to 6.1.0
in /superset-frontend" (#42314)
add 8d034ef65ca fix(plugin-chart-echarts): import the -obj locale build so
time axes render (#42317)
add e075133a833 fix(pandas_postprocessing): avoid FutureWarning for
max/min in boxplot MINMAX (#42272)
add 32937f24d25 fix(heatmap): correct tooltip axis value lookup and
percentage calculations and add tests (#41864)
add 17bd286ae9b fix(forecast): resolve time grain robustly for Prophet
forecasting (#42145)
add 3ed8889a010 fix: Added PostgreSQL 17.X to the supported database
versions table in (#42280)
add ef459c21e82 fix(helm): add MCP HTTPRoute configuration (#42219)
add 67924ad35e1 fix(dashboard): offer Exit edit mode when there is nothing
to discard (#42208)
add 2926d6f6a9b chore(deps): bump actions/labeler from 6.2.0 to 7.0.0
(#42332)
add 1dd3103c246 chore(deps): bump github/codeql-action/analyze from 4.37.0
to 4.37.1 (#42331)
add 873da606ddf chore(deps): bump github/codeql-action/init from 4.37.0 to
4.37.1 (#42334)
add ab553c37ab9 chore(deps-dev): bump @formatjs/intl-durationformat from
0.10.17 to 0.10.18 in /superset-frontend (#42337)
add 66543184913 chore(deps): bump caniuse-lite from 1.0.30001805 to
1.0.30001806 in /docs (#42333)
add 2e72080a163 chore(deps): bump echarts to 6.1.0 with locale and
containLabel guards (#42315) (#42321)
add c5f6d33d211 docs: add pattern to the list of organisations using
superset (#42341)
add cc8edd22318 chore(deps): bump ag-grid from 36.0.0 to 36.0.1 in
/superset-frontend (#42338)
add cb319c9b817 fix(mcp): trust dataset is_dttm flag when applying
time_grain to VARCHAR temporal columns (#42288)
add f2848d951c4 chore(deps-dev): update taos-ws-py requirement from
>=0.6.9 to >=0.7.0 (#42344)
add 6b02a423ef8 chore(deps-dev): bump the storybook group in
/superset-frontend with 5 updates (#42355)
add df8bbb548a3 fix(native-filters): keep filter value input caret at
inline start (#42323)
add 2317d9cf918 fix(mcp): truncate query-tool responses instead of
hard-failing (#42244)
add fdb9c152f06 chore(deps): bump nh3 from 0.3.5 to 0.3.6 (#42349)
add 6317113ee85 chore(deps): bump pydantic from 2.11.7 to 2.13.4 (#42350)
add 1049826bc15 chore(deps): bump sqlalchemy-continuum from 1.6.0 to 1.7.0
(#42351)
add 206fe7ab120 fix(embedded): stop rejecting guest chart data built from
control-specific params keys (#42295)
add c43effa4a32 fix(explore): show the beginning date on time-series
x-axis line charts (#42046)
add d41f0febaee fix(api): add example to get_export_ids_schema so Swagger
"Try it out" pre-fills a valid array (#42265)
add 14c96761e55 chore: SQLAlchemy User cascade backref warnings are
irrelevant (#42360)
add 5776aff50ac fix(charts): handle async (202) chart-data responses in
StatefulChart (#42157)
add bcf0361a919 feat(KustoKQL): Add support for NULL / IS NOT NULL
operator (#37890)
add 921f75d5444 chore(deps): bump pillow from 12.2.0 to 12.3.0 (#42348)
add 49f4e84b486 chore(deps): bump flask-compress from 1.17 to 1.24 (#42346)
add cfb04a6e79e chore(deps-dev): bump databricks-sql-connector from 4.2.6
to 4.3.0 (#42347)
add 3ff5dbfe81e fix(native-filters): use FILTER_STATE_CACHE_CONFIG timeout
for dynamic filter option queries (#38910)
add 4ee500e47bf fix(explore): render Jinja before validating legacy chart
filters (#41996)
add a1142b0f915 fix(dataset): disable duplicate button when name is empty
(#42217)
add 4f017de5326 docs(gunicorn): correct dead links in values.yaml (#42385)
add 542416ac6e7 chore(deps): bump @deck.gl/mapbox from 9.3.6 to 9.3.7 in
/superset-frontend in the deckgl group (#42377)
add 5b5e5cf82da chore(deps): bump actions/checkout from 7.0.0 to 7.0.1
(#42376)
add 16de95f0246 chore(deps): bump immer from 11.1.11 to 11.1.15 in
/superset-frontend (#42378)
add 0b9a9c5d038 chore(deps): bump body-parser from 1.20.5 to 1.20.6 in
/docs (#42370)
add d2ea5e9a1a5 chore(deps-dev): bump brace-expansion from 1.1.15 to
1.1.16 in /superset-embedded-sdk (#42369)
add 67c3fea0ce7 fix(security): bump pyasn1 from 0.6.3 to 0.6.4 (#42363)
add 0792f98910d fix(security): bump pillow from 12.2.0 to 12.3.0 (#42362)
add 65528a5b761 docs(map-tiles): add Yandex Maps Tiles API configuration
(#42375)
add 3bdf134aaa2 fix(logging): stop noisy LocalProxy-not-mapped warning for
guest users (#42306)
add 7eceebce1ce feat(dbspec): Support apache datafusion dbspec (#42374)
add f7d0ec3a2c4 chore: add @rusackas to migration code owners (#42398)
add 3a53c4ebc3b chore(deps): raise SQLAlchemy lower bound to >=1.4.43
(#41123)
add 99841fb504b fix(async): include datasets and rev claims in guest
channel HMAC (#41487)
add f3fa1c7d4f6 fix(reports): write a single execution log row per report
run (#29857) (#41966)
add 134cae07ae1 fix(ui): update stale Ant Design v6 internal class
selectors (#42146)
add 52552c8278e test(dashboard): migrate dashboard force-refresh control
to Playwright (#41433)
add 5ffdac1871d fix(mcp): align pooled screenshot override signature
(#42384)
add 857a194c667 chore(deps): bump postcss from 8.5.16 to 8.5.23 in /docs
(#42397)
add e9f61c1e662 chore(deps): bump postcss from 8.5.15 to 8.5.23 in
/superset-frontend (#42396)
add 83ea9a10253 chore(deps): bump js-yaml from 5.2.1 to 5.2.2 in /docs
(#42395)
add b82ff27f9cc fix(sqllab): render each query error once on async
fallback (#42318)
add 2a07f7967d4 chore(deps): bump brace-expansion, @cypress/code-coverage
and eslint in /superset-frontend/cypress-base (#42275)
add c65bedf2d76 fix(extensions): make LOCAL_EXTENSIONS hot reload reliable
in Docker (#40084)
add 5775bdbe5ec chore(deps-dev): bump postcss from 8.5.15 to 8.5.23 in
/superset-embedded-sdk (#42394)
add 8c37d627aa9 fix: allow clearing database/schema in DatasourceModal
(#39918)
add d4652460eed chore(deps-dev): bump google-cloud-bigquery from 3.42.1 to
3.42.2 (#42422)
add 8864b7a0a31 chore(deps-dev): update oracledb requirement from
<5,>=2.0.0 to >=4.0.2,<5 (#42421)
add 9d6fbdceff8 chore(deps-dev): update ibm-db-sa requirement from
<=0.4.4,>0.3.8 to <=0.4.4,>=0.4.4 (#42419)
add 4f3a1a50582 chore(deps-dev): update snowflake-sqlalchemy requirement
from <2,>=1.10.2 to >=1.11.0,<2 (#42418)
add dd08c4f36c1 chore(deps-dev): update flightsql-dbapi requirement from
<0.3,>=0.2.0 to >=0.2.2,<0.3 (#42416)
add 4443357f334 chore(deps): bump flask-caching from 2.3.1 to 2.4.1
(#42413)
add e1ffa53d9b4 chore(deps): bump pyparsing from 3.2.3 to 3.3.2 (#42420)
add 6c2ccc44bdc chore(table): drop dead th.ant-column-cell selector
(#42407)
add e3d3262e977 chore(deps-dev): bump grpcio from 1.81.1 to 1.83.0 (#42414)
add 9a025267bdf fix(reports): positive readiness check for non-tiled
screenshots (#42253)
add ba0900d2b32 fix(semantic-layers): show a friendly warning when schema
enrichment falls back (#42400)
add 90040fc1f6a fix(mcp_service): downgrade client-disconnect transport
noise to WARNING (SC-115264) (#42441)
add 710037d3d2f chore(importers): log field names instead of full config
on validation failure (#42399)
add e54eccd5fb8 chore(a11y): enable jsx-a11y/prefer-tag-over-role as error
(#42078)
add 8f8331f656e chore: session enforce sqlalchemy 2.0 (#42365)
add 6856d0fc671 fix(select): rank case-insensitive matches consistently in
dropdown search (#42408)
add e338c77dd73 fix(dashboard-tabs): disable drag on input fields during
tab reorder (#36889)
add 943bbb92e4e chore(deps): bump @fontsource/fira-code from 5.2.7 to
5.3.0 in /superset-frontend (#42461)
add 5dea601a09a chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in
/superset-frontend (#42460)
add fdea53df9ec chore(deps-dev): bump source-map from 0.7.6 to 0.8.0 in
/superset-frontend (#42459)
add 67face3e3d2 chore(deps-dev): bump lightningcss from 1.32.0 to 1.33.0
in /superset-frontend (#42457)
add 0d2a82c2b2e chore(deps): bump react-arborist from 3.13.2 to 3.15.0 in
/superset-frontend (#42456)
add 5898463ced3 chore(deps-dev): bump @swc/core from 1.15.43 to 1.15.46 in
/superset-frontend (#42455)
add b3c95d138a9 chore(deps): bump chrono-node from 2.10.0 to 2.10.1 in
/superset-frontend (#42454)
add fe787269353 chore(deps-dev): bump stylelint from 17.14.0 to 17.14.1 in
/superset-frontend (#42453)
add 23e5cc24d52 chore(deps): bump @fontsource/fira-code from 5.2.7 to
5.3.0 in /docs (#42451)
add c09ebc2087d chore(deps): bump @fontsource/inter from 5.2.8 to 5.3.0 in
/docs (#42450)
add 3666b9a934c chore(deps): bump swagger-ui-react from 5.32.8 to 5.32.9
in /docs (#42449)
add dece4577924 chore(deps): bump @swc/core from 1.15.43 to 1.15.46 in
/docs (#42448)
add 95e5e25e1a2 feat(helm): mitigate init-db Job hang under Istio sidecar
injection (closes #25798) (#41396)
add 03c97764d15 chore(ci): remove nyc usage for merging coverage results
as Codecov natively supports the action (#42431)
add 45c2b801f7b chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to
5.3.0 in /superset-frontend (#42458)
add faf2cc0f04e chore(deps): bump @fontsource/ibm-plex-mono from 5.2.7 to
5.3.0 in /docs (#42447)
add 3540f3f9571 chore(deps): bump the rjsf group in /superset-frontend
with 3 updates (#42446)
add 4300e9fb930 chore(deps): bump hot-shots from 17.0.0 to 17.0.1 in
/superset-websocket (#42445)
add 748e1e80f06 chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0
(#42452)
add 74924ae73a4 fix(db_engine_specs): use CAST(DATE({col}) AS DATETIME) in
MySQL HOUR time grain (#38617)
add a44afd81058 chore: drop legacy /superset prefix from remaining
hardcoded URLs (#42156)
add 1d752a0ced6 fix(embedded): load guest charts with missing or stale
query_context (#42150)
add 12d7179c21b fix(hive): select schema via USE prequery instead of
rewriting the URI database (#36603)
add 3e7ae85cc24 fix(importers): catch YAMLError instead of narrower
ParserError in load_yaml (#42426)
add 276b7e2d678 fix(importers): catch YAMLError instead of narrower
ParserError in dataset v0 importer (#42442)
add eb914b8ae35 fix(datasets): log datetime format-detection DB query
failures at WARNING (#42388)
add c792752a58b fix(db_engine_specs): preserve DATE semantics when
applying Postgres time grains (#42254) (#42329)
add 79f3fed1f98 fix(country-map): carve the Great Lakes out of USA map
states (#29503)
add a73e2485de8 feat(versioning): version-history retention cleanup job
(#41075)
add c0117f78a9c feat(dashboard): respect GranularExportControls for
download permission (#41799)
add a8e2a340f19 fix(select): exclude null-valued options from "Select all"
count (#42220)
add 3095d7b07ff fix(metadata-bar): add max-width to text for proper
ellipsis truncation (#42237)
add a10c3f0b1dd test(result_set): add regression test for empty result set
column metadata (#35962)
add 26b6f7bb5df fix(dashboard): preserve refresh_frequency when absent
from save data (#42354)
add ecc7f726a4e fix: guard potential null derefs and remove dead branches
(#42358)
add 435e7825a6e chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in
/superset-frontend (#42527)
add e754b73af29 chore(deps-dev): bump baseline-browser-mapping from
2.10.43 to 2.10.44 in /superset-frontend (#42526)
add be012c8faad chore(deps): bump markdown-to-jsx from 9.8.2 to 9.9.0 in
/superset-frontend (#42524)
add 2c061f1e05b chore(deps-dev): bump the storybook group in
/superset-frontend with 5 updates (#42523)
add a970838b5c3 chore(deps): bump github/codeql-action/init from 4.37.1 to
4.37.2 (#42522)
add 2e81eb580f2 chore(deps): bump baseline-browser-mapping from 2.10.43 to
2.10.44 in /docs (#42521)
add dd7bbe0adfe chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in
/docs (#42519)
add a301e7c5119 chore(deps-dev): bump the typescript-eslint group in /docs
with 3 updates (#42518)
add ad15c4ddd1d chore(deps): bump the storybook group in /docs with 2
updates (#42517)
add 25a985893d9 chore(deps-dev): bump typescript-eslint from 8.64.0 to
8.65.0 in /superset-websocket (#42516)
add 39f9b7029be chore(deps): bump github/codeql-action/analyze from 4.37.1
to 4.37.2 (#42520)
add 526cebac73a chore(deps-dev): bump prettier from 3.9.5 to 3.9.6 in
/superset-websocket (#42514)
add 7b767f6c1d5 chore(ci): swap linkinator-action for lychee-action in
docs link checker (#42501)
add b983161eeff feat(async): cancel running chart queries under
GLOBAL_ASYNC_QUERIES (#42305)
add 236c9a52fda chore(deps-dev): bump @typescript-eslint/eslint-plugin
from 8.63.0 to 8.65.0 in /superset-websocket (#42515)
add b5c8d4a5df3 fix(mixed-timeseries): stop duplicating first metric in
multi-metric + group-by series names (#40146)
add e426fb7bc6e chore(ci): correct GH event type for opening new issue and
PR in supersetbot orglabel job (#42424)
add 181f5bc9c1e fix(mcp): capture created chart/dashboard id in
generate_chart/generate_dashboard audit logs (#42367)
add 5aaf9d337b5 fix(jinja): handle non-JSON body with JSON content-type in
get_form_data (#42196)
add 623348f190b chore(deps-dev): bump @typescript-eslint/eslint-plugin
from 8.64.0 to 8.65.0 in /superset-frontend in the typescript-eslint group
across 1 directory (#42512)
add fc59d9c0cf3 fix(i18n): improve french translations (#42470)
add 9cdb5552557 fix(docker): isolate tagged images from host packages
(#42249)
add 22ad3f2c34e fix(ci): make the Dependency Review check able to fail
again (#42537)
add 4a4f0685fd6 fix(reports): prevent bad-date crontab from crashing the
report scheduler for all tenants (#42486)
add ccbfbad8e6b Merge branch 'master' into fix-save-and-go-to-dashboard
No new revisions were added by this update.
Summary of changes:
.github/CODEOWNERS | 2 +-
.github/dependabot.yml | 4 +
.github/workflows/bump-python-package.yml | 4 +-
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/check_db_migration_confict.yml | 2 +-
.github/workflows/codeql-analysis.yml | 8 +-
.github/workflows/dependency-review.yml | 5 +-
.github/workflows/docker.yml | 6 +-
.github/workflows/embedded-sdk-release.yml | 2 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/generate-FOSSA-report.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/issue_creation.yml | 8 +-
.github/workflows/labeler.yml | 2 +-
.github/workflows/latest-release-tag.yml | 2 +-
.github/workflows/license-check.yml | 2 +-
.github/workflows/pr-lint.yml | 2 +-
.github/workflows/pre-commit.yml | 2 +-
.github/workflows/release.yml | 2 +-
.../workflows/scheduled-docker-image-refresh.yml | 2 +-
.github/workflows/showtime-trigger.yml | 2 +-
.github/workflows/superset-app-cli.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 2 +-
.github/workflows/superset-docs-verify.yml | 83 +-
.github/workflows/superset-e2e.yml | 14 +-
.github/workflows/superset-extensions-cli.yml | 2 +-
.github/workflows/superset-frontend.yml | 18 +-
.github/workflows/superset-helm-lint-test.yml | 2 +-
.github/workflows/superset-helm-release.yml | 2 +-
.github/workflows/superset-playwright.yml | 8 +-
.../workflows/superset-python-integrationtest.yml | 8 +-
.github/workflows/superset-python-presto-hive.yml | 6 +-
.github/workflows/superset-python-unittest.yml | 4 +-
.github/workflows/superset-translations.yml | 4 +-
.github/workflows/superset-websocket.yml | 2 +-
.github/workflows/supersetbot.yml | 2 +-
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.github/workflows/tag-release.yml | 4 +-
.github/workflows/tech-debt.yml | 2 +-
.gitignore | 1 +
.pre-commit-config.yaml | 2 +-
RESOURCES/INTHEWILD.yaml | 5 +
UPDATING.md | 10 +
docker-compose-image-tag.yml | 8 +-
docker-compose.yml | 1 +
docker/docker-bootstrap.sh | 4 +-
.../configuration/configuring-superset.mdx | 8 +-
docs/admin_docs/configuration/map-tiles.mdx | 29 +
docs/package.json | 28 +-
docs/src/data/databases.json | 108 +-
docs/static/img/databases/datafusion.png | Bin 0 -> 14784 bytes
docs/static/img/logos/pattern_logo.png | Bin 0 -> 7067 bytes
docs/yarn.lock | 430 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 10 +-
helm/superset/templates/_helpers.tpl | 8 +
helm/superset/templates/httproute.yaml | 12 +
helm/superset/templates/init-job.yaml | 4 +
helm/superset/tests/httproute_test.yaml | 92 +
helm/superset/tests/test-istio.sh | 183 +
helm/superset/values.yaml | 40 +-
pyproject.toml | 21 +-
pytest.ini | 4 +-
requirements/base.txt | 24 +-
requirements/development.txt | 35 +-
scripts/benchmark_migration.py | 2 +-
scripts/change_detector.py | 1 +
superset-embedded-sdk/package-lock.json | 20 +-
.../cypress-base/cypress/support/directories.ts | 14 +-
superset-frontend/cypress-base/package-lock.json | 6203 +++++++++-----------
superset-frontend/oxlint.json | 1 +
superset-frontend/package-lock.json | 1441 ++---
superset-frontend/package.json | 48 +-
.../src/operators/prophetOperator.ts | 31 +-
.../test/operators/prophetOperator.test.ts | 105 +
.../packages/superset-ui-core/package.json | 4 +-
.../src/chart/components/StatefulChart.test.tsx | 491 +-
.../src/chart/components/StatefulChart.tsx | 187 +-
.../src/chart/models/ChartProps.ts | 12 +
.../components/ActionButton/ActionButton.test.tsx | 18 +-
.../src/components/ActionButton/index.tsx | 38 +-
.../src/components/ButtonGroup/index.tsx | 4 +
.../src/components/EmptyState/index.tsx | 4 +
.../src/components/FaveStar/index.tsx | 10 +-
.../src/components/Form/LabeledErrorBoundInput.tsx | 4 +
.../src/components/IconButton/index.tsx | 4 +
.../src/components/Loading/index.tsx | 4 +
.../src/components/MetadataBar/MetadataBar.tsx | 1 +
.../src/components/Modal/Modal.tsx | 4 +-
.../src/components/ModalTrigger/index.tsx | 5 +
.../src/components/PopoverDropdown/index.tsx | 15 +-
.../PopoverSection/PopoverSection.test.tsx | 8 +-
.../src/components/PopoverSection/index.tsx | 27 +-
.../components/ProgressBar/ProgressBar.test.tsx | 22 +-
.../src/components/ProgressBar/index.tsx | 4 +-
.../src/components/RefreshLabel/index.tsx | 3 +-
.../src/components/Select/AsyncSelect.test.tsx | 4 +-
.../src/components/Select/AsyncSelect.tsx | 2 +-
.../src/components/Select/Select.test.tsx | 33 +-
.../src/components/Select/Select.tsx | 7 +-
.../src/components/Table/VirtualTable.tsx | 2 +-
.../src/components/Table/index.tsx | 2 +-
.../src/components/TableCollection/index.tsx | 6 -
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 4 +-
.../src/components/antdDomContract.test.tsx | 145 +-
.../src/utils/rankedSearchCompare.test.ts | 27 +
.../src/utils/rankedSearchCompare.ts | 3 +-
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../playwright/components/core/Menu.ts | 20 +
.../generators/docs/docs-screenshots.spec.ts | 2 +-
.../generators/docs/screenshot-manifest.yaml | 16 +-
.../playwright/helpers/api/dashboard.ts | 85 +
.../playwright/pages/DashboardPage.ts | 31 +-
.../tests/dashboard/clear-all-filters.spec.ts | 41 +-
.../tests/dashboard/dashboard-controls.spec.ts | 152 +
.../tests/dashboard/dashboard-load.spec.ts | 212 +
.../tests/dashboard/dashboard-test-helpers.ts | 121 +-
.../tests/dashboard/delete-display-control.spec.ts | 41 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 41 +-
.../mixed-chart-dashboard-filters.spec.ts | 41 +-
.../tests/embedded/pivot-collapse-state.spec.ts | 37 +-
superset-frontend/playwright/utils/constants.ts | 11 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11683742 -> 10895145
bytes
.../src/countries/usa.geojson | Bin 514889 -> 540974
bytes
.../src/vendor/superset/exploreUtils.ts | 69 -
.../src/AgGridTable/components/CustomHeader.tsx | 42 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 4 +-
.../src/styles/index.tsx | 10 +
.../test/buildQuery.test.ts | 4 +-
.../src/Heatmap/transformProps.ts | 11 +-
.../src/MixedTimeseries/transformProps.ts | 53 +-
.../src/Timeseries/transformProps.ts | 25 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 64 +-
.../src/components/echartsLocale.ts | 108 +
.../test/Heatmap/transformProps.test.ts | 165 +
.../test/MixedTimeseries/transformProps.test.ts | 135 +
.../test/Timeseries/transformProps.test.ts | 69 +
.../test/components/Echart.test.tsx | 17 +
.../test/components/echartsLocale.test.ts | 82 +
.../src/react-pivottable/Styles.ts | 16 +
.../src/react-pivottable/TableRenderers.tsx | 30 +-
.../src/DataTable/components/Pagination.tsx | 13 +-
.../src/DataTable/hooks/useSticky.tsx | 4 +
.../plugins/plugin-chart-table/src/Styles.tsx | 11 +-
.../plugin-chart-table/test/TableChart.test.tsx | 11 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/components/Legend.test.tsx | 18 +-
.../preset-chart-deckgl/src/components/Legend.tsx | 27 +-
.../preset-chart-deckgl/src/utils/explore.ts | 2 +-
.../components/ExploreResultsButton/index.tsx | 1 -
.../SqlLab/components/ResultSet/ResultSet.test.tsx | 29 +
.../src/SqlLab/components/ResultSet/index.tsx | 21 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 2 +-
.../components/TemplateParamsEditor/index.tsx | 4 +-
.../src/chartCustomizations/components/common.ts | 7 +
.../src/components/Chart/Chart.test.tsx | 4 +-
superset-frontend/src/components/Chart/Chart.tsx | 37 +-
.../src/components/Chart/ChartRenderer.tsx | 14 +
.../components/Chart/DrillBy/DrillByModal.test.tsx | 2 +-
.../src/components/Chart/DrillBy/DrillByModal.tsx | 31 +-
.../components/Chart/DrillBy/DrillBySubmenu.tsx | 21 +-
.../Chart/DrillDetail/DownloadDropdown.tsx | 16 +-
.../Chart/DrillDetail/DrillDetailTableControls.tsx | 3 +-
.../src/components/Chart/chartAction.ts | 72 +-
.../src/components/Chart/chartActions.test.ts | 107 +
.../CopyToClipboard/CopyToClipboard.stories.tsx | 2 +-
.../src/components/CopyToClipboard/index.tsx | 15 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../Datasource/DatasourceModal/index.tsx | 9 +-
.../components/CollectionTable/index.tsx | 3 +-
.../DatasourceEditor/DatasourceEditor.tsx | 14 +-
.../ErrorMessage/BasicErrorAlert.test.tsx | 1 +
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 1 +
.../DatasetNotFoundErrorMessage.test.tsx | 1 +
.../src/components/ErrorMessage/ErrorAlert.tsx | 34 +-
.../ErrorMessageWithStackTrace.test.tsx | 1 +
.../FrontendNetworkErrorMessage.test.tsx | 1 +
.../ErrorMessage/ParameterErrorMessage.test.tsx | 1 +
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 1 +
.../src/components/ImportModal/styles.ts | 2 +-
.../ListView/Filters/CompactSelectPanel.tsx | 7 +
.../src/components/ListView/ListView.test.tsx | 14 +-
.../src/components/ListView/ListView.tsx | 61 +-
.../src/components/MessageToasts/Toast.tsx | 3 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 4 +
.../components/CustomizationsBadge/index.tsx | 4 +
.../dashboard/components/DeleteComponentButton.tsx | 2 +-
.../DetailsPanel/DetailsPanel.test.tsx | 2 +-
.../components/FiltersBadge/DetailsPanel/index.tsx | 2 +-
.../dashboard/components/FiltersBadge/index.tsx | 12 +-
.../dashboard/components/Header/Header.test.tsx | 12 +-
.../src/dashboard/components/Header/index.tsx | 7 +-
.../src/dashboard/components/IconButton.tsx | 19 +-
.../components/gridComponents/Chart/Chart.tsx | 5 +-
.../components/gridComponents/Tab/Tab.tsx | 22 +-
.../components/gridComponents/Tabs/Tabs.tsx | 6 +-
.../TabsRenderer/TabsRenderer.test.tsx | 65 +
.../gridComponents/TabsRenderer/TabsRenderer.tsx | 8 +-
.../nativeFilters/ConfigModal/ModalFooter.tsx | 2 +-
.../nativeFilters/ConfigModal/SharedStyles.tsx | 2 +-
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 3 +-
.../ScopingModal/ChartsScopingListPanel.test.tsx | 7 +-
.../ScopingModal/ChartsScopingListPanel.tsx | 12 +-
.../FilterBar/CrossFilters/VerticalCollapse.tsx | 21 +-
.../FilterBar/FilterConfigurationLink/index.tsx | 17 +-
.../FilterControls/FilterControlShared.tsx | 8 +
.../FilterBar/FilterControls/FilterControls.tsx | 28 +-
.../FilterBar/FilterControls/GroupByFilterCard.tsx | 5 +
.../FilterBar/UrlFilters/VerticalCollapse.tsx | 20 +-
.../nativeFilters/FilterBar/Vertical.tsx | 9 +-
.../nativeFilters/FilterCard/DependenciesRow.tsx | 2 +-
.../components/nativeFilters/FilterCard/Styles.ts | 7 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 21 +-
.../FiltersConfigForm/DependencyList.tsx | 9 +-
.../Footer/CancelConfirmationAlert.tsx | 2 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 21 +-
superset-frontend/src/database/actions.test.ts | 67 +
superset-frontend/src/database/actions.ts | 2 +-
.../src/explore/components/ControlHeader.tsx | 5 +
.../explore/components/DataTableControl/index.tsx | 15 +-
.../components/DataTablesPane/DataTablesPane.tsx | 37 +-
.../components/DataTableControls.tsx | 3 +-
.../explore/components/DatasourcePanel/index.tsx | 25 +-
.../src/explore/components/EmbedCodeContent.tsx | 14 +-
.../explore/components/ExploreChartPanel/index.tsx | 39 +-
.../components/ExploreViewContainer/index.tsx | 49 +-
.../ColorBreakpointPopoverControl.tsx | 4 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 16 +-
.../DateFilterControl/components/DateLabel.tsx | 7 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 44 +-
.../DndColumnSelectPopoverTitle.tsx | 18 +-
.../controls/DndColumnSelectControl/Option.tsx | 3 +-
.../DndColumnSelectControl/useResizeButton.tsx | 5 +
.../FilterControl/AdhocFilterControl/index.tsx | 13 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 5 +
.../FixedOrMetricControl.test.tsx | 1 +
.../controls/LayerConfigsControl/LayerTreeItem.tsx | 29 +-
.../MetricControl/AdhocMetricEditPopover/index.tsx | 34 +-
.../MetricControl/AdhocMetricEditPopoverTitle.tsx | 19 +-
.../components/controls/OptionControls/index.tsx | 10 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 21 +-
.../components/controls/VizTypeControl/index.tsx | 22 +-
.../alerts/components/NotificationMethod.test.tsx | 23 +
.../alerts/components/NotificationMethod.tsx | 43 +-
.../src/features/charts/ChartCard.tsx | 56 +-
.../src/features/dashboards/DashboardCard.tsx | 58 +-
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 -
.../src/features/databases/DatabaseModal/styles.ts | 4 +-
.../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 3 +-
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 68 +-
.../DatasetPanel/DatasetPanelWrapper.test.tsx | 1 +
.../AddDataset/DatasetPanel/MessageContent.tsx | 6 +-
.../datasets/DuplicateDatasetModal.test.tsx | 28 +
.../features/datasets/DuplicateDatasetModal.tsx | 6 +-
.../src/features/groups/GroupListModal.tsx | 2 +-
superset-frontend/src/features/home/Menu.tsx | 8 +-
superset-frontend/src/features/home/RightMenu.tsx | 4 +-
.../src/features/home/SavedQueries.tsx | 4 +
superset-frontend/src/features/home/SubMenu.tsx | 214 +-
.../src/features/queries/QueryPreviewModal.tsx | 13 +-
.../src/features/queries/SyntaxHighlighterCopy.tsx | 3 +-
.../src/features/roles/RoleFormItems.tsx | 2 +-
.../src/features/users/UserListModal.tsx | 4 +-
.../components/common.test.tsx} | 20 +-
superset-frontend/src/filters/components/common.ts | 7 +
.../src/middleware/asyncEvent.test.ts | 99 +-
superset-frontend/src/middleware/asyncEvent.ts | 65 +-
.../src/pages/ChartCreation/index.tsx | 9 +-
.../pages/ChartList/ChartList.cardview.test.tsx | 6 +-
.../pages/ChartList/ChartList.listview.test.tsx | 2 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 16 +-
.../src/pages/ChartList/ChartList.test.tsx | 2 +-
superset-frontend/src/pages/ChartList/index.tsx | 65 +-
.../DashboardList/DashboardList.cardview.test.tsx | 4 +-
.../DashboardList.permissions.test.tsx | 10 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 4 +-
.../src/pages/DashboardList/index.tsx | 75 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 117 +-
.../DatasetList/DatasetList.behavior.test.tsx | 4 +-
.../DatasetList/DatasetList.listview.test.tsx | 25 +-
superset-frontend/src/pages/DatasetList/index.tsx | 127 +-
superset-frontend/src/pages/Login/Login.test.tsx | 281 +-
superset-frontend/src/pages/Login/index.tsx | 5 +-
.../src/pages/QueryHistoryList/index.tsx | 26 +-
.../src/pages/Register/Register.test.tsx | 105 +-
.../src/pages/RowLevelSecurityList/index.tsx | 47 +-
superset-frontend/src/pages/Tags/index.tsx | 48 +-
.../src/pages/TaskList/TaskList.test.tsx | 6 +-
superset-frontend/src/pages/TaskList/index.tsx | 31 +-
superset-frontend/src/utils/findPermission.test.ts | 52 +-
superset-frontend/src/utils/findPermission.ts | 13 +
superset-frontend/src/utils/pathUtils.test.ts | 18 +
superset-websocket/package-lock.json | 687 ++-
superset-websocket/package.json | 10 +-
superset/annotation_layers/annotations/schemas.py | 6 +-
superset/annotation_layers/schemas.py | 6 +-
superset/app.py | 8 +
superset/async_events/api.py | 80 +-
superset/async_events/async_query_manager.py | 120 +
superset/async_events/cache_backend.py | 18 +
superset/charts/schemas.py | 18 +-
superset/cli/test_db.py | 3 +
superset/commands/dataset/importers/v0.py | 2 +-
superset/commands/importers/v1/utils.py | 18 +-
superset/commands/report/execute.py | 47 +-
superset/commands/streaming_export/base.py | 2 +-
superset/common/query_context_factory.py | 2 +-
superset/common/query_context_processor.py | 70 +-
superset/common/utils/query_cache_manager.py | 6 +-
superset/config.py | 67 +-
superset/css_templates/schemas.py | 6 +-
superset/daos/dashboard.py | 3 +-
superset/dashboards/schemas.py | 18 +-
superset/databases/schemas.py | 6 +-
superset/datasets/datetime_format_detector.py | 19 +-
superset/datasets/schemas.py | 12 +-
superset/db_engine_specs/databricks.py | 1 +
superset/db_engine_specs/datafusion.py | 92 +
superset/db_engine_specs/gsheets.py | 1 +
superset/db_engine_specs/hive.py | 33 +-
superset/db_engine_specs/kusto.py | 111 +-
superset/db_engine_specs/mysql.py | 9 +-
superset/db_engine_specs/postgres.py | 27 +
superset/db_engine_specs/presto.py | 3 +-
superset/extensions/api.py | 2 +-
superset/extensions/cache_middleware.py | 6 +-
superset/extensions/local_extensions_watcher.py | 211 +-
superset/extensions/utils.py | 9 +-
superset/initialization/__init__.py | 73 +-
superset/mcp_service/chart/chart_utils.py | 87 +-
superset/mcp_service/middleware.py | 403 +-
.../mcp_service/screenshot/pooled_screenshot.py | 8 +-
superset/mcp_service/server.py | 65 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 37 +-
superset/mcp_service/utils/token_utils.py | 244 +
superset/migrations/shared/catalogs.py | 4 +-
superset/migrations/shared/native_filters.py | 2 +-
..._08-54_c3a8f8611885_materializing_permission.py | 2 +-
...d8bc074f7aad_add_new_field_is_restricted_to_.py | 2 +-
...06-27_08-43_27ae655e4247_make_creator_owners.py | 2 +-
...-09-07_23-50_33d996bcc382_update_slice_model.py | 4 +-
...2_11-31_eca4694defa7_sqllab_setting_defaults.py | 2 +-
...4_12-31_db0c65b146bd_update_slice_model_json.py | 2 +-
...7c195a_rewriting_url_from_shortner_with_new_.py | 2 +-
...-08_08-19_67a6ac9b727b_update_spatial_params.py | 2 +-
...2-17_11-06_21e88bc06c02_annotation_migration.py | 4 +-
.../2018-02-13_08-07_e866bd2d4976_smaller_grid.py | 4 +-
...-04-03_08-19_130915240929_is_sqllab_viz_flow.py | 2 +-
...9_bf706ae5eb46_cal_heatmap_metric_to_metrics.py | 2 +-
...018-06-04_11-12_c5756bec8b47_time_grain_sqla.py | 4 +-
...6-07_09-52_afb7730f6a9c_remove_empty_filters.py | 2 +-
...13_10-20_4451805bbaa1_remove_double_percents.py | 58 +-
.../2018-06-13_14-54_bddc498dd179_adhoc_filters.py | 4 +-
...4_14-31_80a67c5192fa_single_pie_chart_metric.py | 4 +-
...1c4c6_migrate_num_period_compare_and_period_.py | 4 +-
.../2018-07-19_23-41_c617da68de7d_form_nullable.py | 2 +-
...07-20_15-31_7f2635b51f5d_update_base_columns.py | 2 +-
...07-20_15-57_e9df189e5c7e_update_base_metrics.py | 2 +-
..._bebcf3fed1fe_convert_dashboard_v1_positions.py | 2 +-
.../versions/2018-08-01_11-47_7fcdcde0761c_.py | 2 +-
...08545_migrate_time_range_for_default_filters.py | 2 +-
...2018-12-11_22-03_fb13d49b72f9_better_filters.py | 4 +-
...e1b21cd94a4_change_owner_to_m2m_relation_on_.py | 2 +-
.../2019-03-21_10-22_d94d33dbe938_form_strip.py | 2 +-
...a3f04bc82_add_parent_ids_in_dashboard_layout.py | 4 +-
.../2019-06-28_13-17_ab8c66efdd01_resample.py | 4 +-
...ng_unique_constraint_on_dashboard_slices_tbl.py | 2 +-
...5afa9079866a_serialize_schema_permissions_py.py | 2 +-
...e_form_strip_leading_and_trailing_whitespace.py | 2 +-
.../2019-10-10_13-52_1495eb914ad3_time_range.py | 4 +-
...127d0d1d_reconvert_legacy_filters_into_adhoc.py | 2 +-
..._14-13_3325d4caccc8_dashboard_scoped_filters.py | 2 +-
...10-42_f9a30386bd74_cleanup_time_grainularity.py | 2 +-
...29_09-24_620241d1153f_update_time_grain_sqla.py | 2 +-
...978245563a02_migrate_iframe_to_dash_markdown.py | 2 +-
...654_fix_data_access_permissions_for_virtual_.py | 2 +-
...b56500de1855_add_uuid_column_to_import_mixin.py | 4 +-
...208f_collapse_alerting_models_into_a_single_.py | 4 +-
...6e99fb176a0_add_import_mixing_to_saved_query.py | 4 +-
...e38177dbf641_security_converge_saved_queries.py | 4 +-
...15-25_40f16acf1ba7_security_converge_reports.py | 4 +-
...8ee129739cf9_security_converge_css_templates.py | 4 +-
..._14-13_ccb74baaa89b_security_converge_charts.py | 4 +-
...5-05_45731db65d9c_security_converge_datasets.py | 4 +-
...45_1f6dca87d1a2_security_converge_dashboards.py | 4 +-
...2_c25cb2c78727_security_converge_annotations.py | 4 +-
...-49_42b4c9e01447_security_converge_databases.py | 4 +-
...14_13-40_4b84f97828aa_security_converge_logs.py | 4 +-
...12-15_e37912a26567_security_converge_queries.py | 4 +-
...60bf0649a77_migrate_x_dateunit_in_time_range.py | 2 +-
...2fdb_add_granularity_to_charts_where_missing.py | 2 +-
...-10_12-32_41ce8799acc3_rename_pie_label_type.py | 4 +-
...1412ec1e5a7b_legacy_force_directed_to_echart.py | 4 +-
...8_09-13_c501b7c653a3_add_missing_uuid_column.py | 2 +-
...989bbe479899_rename_filter_configuration_in_.py | 4 +-
...ea61c5e7_remove_dataset_health_check_message.py | 2 +-
...88938_country_map_use_lowercase_country_name.py | 4 +-
...3a3a8ff221_migrate_filter_sets_to_new_format.py | 4 +-
...ed7ec95_migrate_native_filters_to_new_schema.py | 4 +-
...3605f370a_fix_schemas_allowed_for_csv_upload.py | 2 +-
...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 2 +-
..._17-16_f6196627326f_update_chart_permissions.py | 4 +-
...13dd52_change_fetch_values_predicate_to_text.py | 2 +-
...4fbb_add_type_to_native_filter_configuration.py | 4 +-
...453f4e2e_migrate_timeseries_limit_metric_to_.py | 2 +-
...12_11-15_32646df09c64_update_time_grain_sqla.py | 2 +-
...e5f1dacd_rename_to_schemas_allowed_for_file_.py | 4 +-
...aa3ff_add_force_screenshot_to_alerts_reports.py | 2 +-
...5b9441_rename_big_viz_total_form_data_fields.py | 4 +-
...d1d2_move_pivot_table_v2_legacy_order_by_to_.py | 4 +-
...d8e252_fix_query_and_saved_query_null_schema.py | 2 +-
...b0ca7944_change_adhoc_filter_b_from_none_to_.py | 4 +-
...14-38_a9422eeaae74_new_dataset_models_take_2.py | 2 +-
...d0249074e4_deprecate_time_range_endpoints_v2.py | 2 +-
...07e4fdbaba_rm_time_range_endpoints_from_qc_3.py | 2 +-
...-39_cbe71abde154_fix_report_schedule_and_log.py | 2 +-
...8_16-07_e786798587de_delete_none_permissions.py | 2 +-
..._16-17_f3afaf1f11f0_add_unique_name_desc_rls.py | 2 +-
...59_7fb8bca906d2_permalink_rename_filterstate.py | 4 +-
...5-48_409c7b420ab0_add_created_by_fk_as_owner.py | 2 +-
..._13-00_c747c78868b6_migrating_legacy_treemap.py | 4 +-
...-07_14-00_06e1e70058c7_migrating_legacy_area.py | 4 +-
...665d_fix_table_chart_conditional_formatting_.py | 2 +-
...1_4ce1d9b25135_remove_filter_bar_orientation.py | 2 +-
...4-46_c0a3ea245b61_remove_show_native_filters.py | 2 +-
...ac08bb5b83_invert_horizontal_bar_chart_order.py | 4 +-
...7_13-24_b5ea9d343307_bar_chart_stack_options.py | 4 +-
...03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py | 2 +-
...2a5681ddfd_convert_key_value_entries_to_json.py | 4 +-
...-41_4ea966691069_cross_filter_global_scoping.py | 4 +-
...02_9ba2ce3086e5_migrate_pivot_table_v1_to_v2.py | 4 +-
...-08_10-22_4c5da39be729_migrate_treemap_chart.py | 4 +-
...e58e1e58e5c_migrate_dual_line_to_mixed_chart.py | 4 +-
...delete_obsolete_druid_nosql_slice_parameters.py | 2 +-
...6f8b1280_cleanup_erroneous_parent_filter_ids.py | 2 +-
...9_17-54_ee179a490af9_deckgl_path_width_units.py | 2 +-
...23_0769ef90fddd_fix_schema_perm_for_datasets.py | 2 +-
...086c2676_add_normalize_columns_to_sqla_model.py | 2 +-
...317970b4400c_added_time_secondary_column_to_.py | 2 +-
...ff00fe8_add_percent_calculation_type_funnel_.py | 4 +-
...18_14-41_a32e0c4d8646_migrate_sunburst_chart.py | 4 +-
...d09c9_migrate_filter_boxes_to_native_filters.py | 2 +-
...d83218_migrate_can_view_and_drill_permission.py | 4 +-
...47_be1b217cd8cd_big_number_kpi_single_metric.py | 4 +-
...8_15-43_5ad7321c2169_mig_new_csv_upload_perm.py | 4 +-
...14-04_d60591c5515f_mig_new_excel_upload_perm.py | 4 +-
...36_4a33124c18ad_mig_new_columnar_upload_perm.py | 4 +-
...9123a_update_charts_with_old_time_comparison.py | 4 +-
...09-34_d482d51c15ca_remove_legacy_plugins_5_0.py | 4 +-
...-34_74ad1125881c_converge_upload_permissions.py | 4 +-
...fdba9f_merge_x_axis_sort_series_with_x_axis_.py | 4 +-
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...8d8526_fix_form_data_string_in_query_context.py | 2 +-
...00-00_ce6bd21901ab_migrate_deckgl_and_mapbox.py | 4 +-
...a1b2c3d4e5f6_add_granular_export_permissions.py | 4 +-
...-00_b4a3f2e1d0c9_fix_security_view_menu_case.py | 2 +-
...23_a7d3f1b9c2e4_cleanup_stale_can_import_pvm.py | 4 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 2 +-
...a1f6c204_version_transaction_issued_at_index.py | 48 +
superset/models/core.py | 2 +
superset/queries/saved_queries/schemas.py | 12 +-
superset/reports/schemas.py | 6 +-
superset/row_level_security/schemas.py | 6 +-
superset/security/manager.py | 206 +-
superset/semantic_layers/api.py | 11 +-
superset/tags/models.py | 2 +-
superset/tasks/async_queries.py | 28 +-
superset/tasks/celery_app.py | 2 +-
superset/tasks/cron_util.py | 19 +-
superset/tasks/schemas.py | 6 +-
superset/tasks/version_history_retention.py | 548 ++
superset/themes/schemas.py | 12 +-
superset/translations/fr/LC_MESSAGES/messages.po | 1673 +++---
superset/utils/core.py | 10 +-
superset/utils/log.py | 8 +-
superset/utils/pandas_postprocessing/boxplot.py | 10 +-
superset/utils/pandas_postprocessing/prophet.py | 2 +-
superset/utils/screenshot_utils.py | 214 +-
superset/utils/webdriver.py | 219 +-
superset/versioning/queries.py | 19 +-
superset/views/utils.py | 24 +-
superset/viz.py | 10 -
superset_text.yml | 1 +
tests/integration_tests/async_events/api_tests.py | 72 +
tests/integration_tests/charts/data/api_tests.py | 167 +-
tests/integration_tests/dao/conftest.py | 3 +-
tests/integration_tests/event_logger_tests.py | 85 +-
tests/integration_tests/fixtures/datasource.py | 4 +-
.../composite_pk_association_tables__tests.py | 4 +-
.../migrations/composite_pk_round_trip__tests.py | 6 +-
tests/integration_tests/reports/commands_tests.py | 64 +-
.../versioning/retention_prune_tests.py | 510 ++
.../async_events/async_query_manager_tests.py | 208 +
tests/unit_tests/charts/test_filters.py | 3 +-
.../unit_tests/commands/importers/v1/utils_test.py | 21 +
tests/unit_tests/commands/report/execute_test.py | 3 +
.../common/test_query_context_factory.py | 36 +
tests/unit_tests/config_test.py | 26 +
tests/unit_tests/conftest.py | 4 +-
tests/unit_tests/connectors/sqla/models_test.py | 10 +-
tests/unit_tests/core_tests.py | 63 +
tests/unit_tests/dao/dashboard_test.py | 51 +
tests/unit_tests/databases/filters_test.py | 6 +-
.../datasets/commands/importers/v0/import_test.py | 30 +
.../datasets/test_datetime_format_detector.py | 39 +-
.../unit_tests/db_engine_specs/test_datafusion.py | 101 +
tests/unit_tests/db_engine_specs/test_gsheets.py | 2 +
tests/unit_tests/db_engine_specs/test_hive.py | 68 +
tests/unit_tests/db_engine_specs/test_kusto.py | 85 +
tests/unit_tests/db_engine_specs/test_mysql.py | 88 +-
tests/unit_tests/db_engine_specs/test_postgres.py | 47 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 2 +-
tests/unit_tests/db_engine_specs/test_starrocks.py | 25 +-
.../distributed_lock/distributed_lock_tests.py | 2 +-
...dengine.py => docker_compose_image_tag_test.py} | 34 +-
.../unit_tests/extensions/test_cache_middleware.py | 15 +
.../extensions/test_local_extensions_watcher.py | 59 +
tests/unit_tests/extensions/test_sqlalchemy.py | 12 +-
tests/unit_tests/initialization_test.py | 161 +
.../mcp_service/chart/test_chart_utils.py | 83 +
.../unit_tests/mcp_service/test_logging_filters.py | 168 +
tests/unit_tests/mcp_service/test_middleware.py | 295 +
.../mcp_service/test_middleware_logging.py | 130 +
.../mcp_service/test_pooled_screenshot.py | 34 +-
.../mcp_service/utils/test_token_utils.py | 103 +
.../composite_pk_association_tables_test.py | 2 +-
.../test_add_deleted_at_to_dashboards.py | 2 +-
.../migrations/test_add_deleted_at_to_slices.py | 2 +-
.../migrations/test_add_deleted_at_to_tables.py | 2 +-
...rip_metricsqlexpressions_from_ag_grid_params.py | 8 +-
.../test_version_transaction_issued_at_index.py | 90 +
tests/unit_tests/models/core_test.py | 6 +-
tests/unit_tests/models/helpers_test.py | 3 +
.../models/owner_association_tables_test.py | 2 +-
.../pandas_postprocessing/test_boxplot.py | 22 +
.../pandas_postprocessing/test_prophet.py | 34 +
tests/unit_tests/result_set_test.py | 50 +
tests/unit_tests/scripts/change_detector_test.py | 7 +
.../security/exclude_users_filter_test.py | 10 +-
tests/unit_tests/security/manager_test.py | 660 +++
tests/unit_tests/semantic_layers/api_test.py | 7 +-
tests/unit_tests/semantic_layers/mapper_test.py | 4 +-
tests/unit_tests/sql/parse_tests.py | 268 +
tests/unit_tests/tasks/test_async_queries.py | 125 +
tests/unit_tests/tasks/test_cron_util.py | 21 +
.../tasks/test_version_history_retention.py | 200 +
tests/unit_tests/test_viz_query_obj.py | 57 +
tests/unit_tests/utils/filters_test.py | 9 +-
.../utils/pandas_sqlalchemy_compat_test.py | 2 +-
tests/unit_tests/utils/test_screenshot_utils.py | 86 +-
tests/unit_tests/utils/webdriver_test.py | 400 +-
tests/unit_tests/versioning/test_listener.py | 4 +-
tests/unit_tests/views/test_soft_delete_filter.py | 2 +-
tests/unit_tests/views/test_utils.py | 53 +
555 files changed, 18528 insertions(+), 8104 deletions(-)
create mode 100644 docs/static/img/databases/datafusion.png
create mode 100644 docs/static/img/logos/pattern_logo.png
create mode 100644 helm/superset/tests/httproute_test.yaml
create mode 100755 helm/superset/tests/test-istio.sh
create mode 100644
superset-frontend/playwright/tests/dashboard/dashboard-controls.spec.ts
create mode 100644
superset-frontend/playwright/tests/dashboard/dashboard-load.spec.ts
delete mode 100644
superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/exploreUtils.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/components/echartsLocale.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/components/echartsLocale.test.ts
create mode 100644 superset-frontend/src/database/actions.test.ts
copy
superset-frontend/src/{explore/components/controls/DateFilterControl/tests/CurrentCalendarFrame.test.tsx
=> filters/components/common.test.tsx} (50%)
create mode 100644 superset/db_engine_specs/datafusion.py
create mode 100644
superset/migrations/versions/2026-07-27_10-00_d3b9a1f6c204_version_transaction_issued_at_index.py
create mode 100644 superset/tasks/version_history_retention.py
create mode 100644 tests/integration_tests/versioning/retention_prune_tests.py
create mode 100644 tests/unit_tests/db_engine_specs/test_datafusion.py
copy tests/unit_tests/{db_engine_specs/test_tdengine.py =>
docker_compose_image_tag_test.py} (50%)
create mode 100644 tests/unit_tests/extensions/test_local_extensions_watcher.py
create mode 100644 tests/unit_tests/mcp_service/test_logging_filters.py
copy superset/migrations/versions/2016-11-23_10-27_f1f2d4af5b90_.py =>
tests/unit_tests/mcp_service/test_pooled_screenshot.py (55%)
create mode 100644
tests/unit_tests/migrations/test_version_transaction_issued_at_index.py
create mode 100644 tests/unit_tests/tasks/test_version_history_retention.py
create mode 100644 tests/unit_tests/test_viz_query_obj.py
create mode 100644 tests/unit_tests/views/test_utils.py