You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/30 20:11:02 UTC
(superset) branch fix/issue-31991-iran-alborz-duplicate-iso updated (cf9bb701006 -> 2d4a6898a47)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/issue-31991-iran-alborz-duplicate-iso
in repository https://gitbox.apache.org/repos/asf/superset.git
omit cf9bb701006 test(country-map): assert Alborz uses exact IR-32 ISO code
omit 21cd451a9d4 fix(country-map): give Alborz its own ISO code instead of reusing Tehran's
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 1d4c3a2adb5 fix(core): don't blank a datetime column when its format coerces every value to NaT (#42405)
add 00c60bf2def fix(i18n): Update Japanese translations (#42444)
add 8be430014e5 fix(dashboard): make Clear All clear filters that have default values (#42111)
add d984fb08a45 feat(explore): add download control to standalone charts (#42238)
add dac69f9bcde feat(pie): geometric recentering and scaling for partial arcs (#42151)
add 6a801ff94f6 fix(explore): sync FilterInput value with parent filter state (#42342)
add 7999b7410f2 fix(explore): restore Back button undo for chart changes (#42473)
add 069605828d1 feat(subjects): scope principal listings and default new assets to creator groups (#42472)
add 940b670636e feat(versioning): version-restore engine and endpoints for charts, dashboards, and datasets (#42469)
add 87f7dbf3375 fix(i18n-fr): improve French translation (#42572)
add c257fa7d66e fix(chart): render chart error stack trace in monospace in dark mode (#42320)
add 9d2dcf21980 fix(oauth2): clear schema/catalog auth banner after OAuth2 redirect refetch (#41913)
add f8c05bba6ed fix(clickhouse): bound system sampling reads instead of failing on max_rows_to_read (#42464)
add 435fb8babcf fix(sqllab): make dark-theme occurrence highlight readable (#42403)
add 5286e565e49 refactor(e2e): model dashboard filter bar (#42017)
add afb863684b1 feat(cache): add DATA_CACHE_MAX_VALUE_SIZE to skip caching oversized results (#42570)
add f486783b022 chore(deps): bump swagger-ui-react from 5.32.9 to 5.32.11 in /docs (#42549)
add 4c64ec6efad chore(deps): bump github/codeql-action/init from 4.37.2 to 4.37.3 (#42552)
add e36cbe48f2c chore(deps): bump baseline-browser-mapping from 2.10.44 to 2.11.0 in /docs (#42550)
add dd54aabc611 chore(deps-dev): bump baseline-browser-mapping from 2.10.44 to 2.11.0 in /superset-frontend (#42555)
add ffb4fcceb93 chore(deps-dev): bump ts-jest from 29.4.11 to 29.4.12 in /superset-frontend (#42554)
add 7e9c2a347ae chore(deps): bump the ag-grid group in /superset-frontend with 2 updates (#42553)
add bdaa53575f1 chore(deps): bump react-arborist from 3.15.0 to 3.15.1 in /superset-frontend (#42557)
add 6bb0d92279b chore(deps-dev): bump wait-on from 9.0.10 to 9.1.0 in /superset-frontend (#42556)
add 34e71c91f2e chore(deps-dev): bump oxlint from 1.74.0 to 1.75.0 in /superset-frontend (#42558)
add 7d542a9e87b chore(deps): bump github/codeql-action/analyze from 4.37.2 to 4.37.3 (#42551)
add 68528281b1b fix(explore): ensure unsaved-changes dialog renders above View SQL modal v2 (#42546)
add 1e3601a641e fix(docs): Fix insecure HTTP links in README.md (#42565)
add e5539102400 fix(sqllab): add filterBySqlLab prop to decouple expose_in_sqllab filter from UI rendering mode (#42440)
add bab40cf437c fix(errors): downgrade SSH tunnel connection-failure logging to WARNING (SC-115347) (#42538)
add 8955593b858 fix: close gaps in pkg_resources/sqlalchemy-redshift warning suppression (#41935)
add d9c0f19b0c8 fix(pivot-table): keep each Rows field as its own CSV/XLSX column (#42443)
add cec033e59c6 fix(table): pick totals query positionally so all_records percent metrics don't shift it (#42428)
add 23d5b634217 chore(deps): bump pyarrow from 24.0.0 to 25.0.0 (#42415)
add 673f9285892 fix(ci): stop helm release PRs from piling up and going stale (#42209)
add 59a5ae0df3e feat(soft-delete): deletion-retention purge of soft-deleted entities (#41549)
add 473f447c1bf fix(explore): keep the annotation layer modal usable in a small viewport (#42614)
add 6282f3907f0 chore(deps): bump baseline-browser-mapping from 2.11.0 to 2.11.1 in /docs (#42604)
add d1b211d4ab2 chore(deps): bump docker/login-action from 4.4.0 to 4.5.0 (#42605)
add 6a32c53070f chore(deps): bump zizmorcore/zizmor-action from 0.6.0 to 0.6.1 (#42606)
add bb4bd754269 chore(deps-dev): bump baseline-browser-mapping from 2.11.0 to 2.11.1 in /superset-frontend (#42607)
add dbaab6d6f4f fix: upgrade brace-expansion to patched versions (CVE-2026-14257) (#42583)
add 3588c9ad866 feat(scatter): add chart orientation and dot size metric controls (#40967)
add e71ade5824e fix(clickhouse): use equality for boolean filters instead of IS (#41867)
add c392a560e61 fix(plugin-chart-echarts): preserve null radar metric values as gaps (#30270) (#41962)
add 0fa176c1b28 fix(embedded): respect show_filters URL param in standalone report mode (#42307)
add 69801a57b1d fix(explore): resolve now/today anchors to local time, not UTC (#42308)
add 8cd7793cd25 fix(db-engine-specs): handle bare-year python_date_format columns in time-grain expressions (#42432)
add 9f5611aca54 chore(country-map): regenerate all country GeoJSON files from the notebook (#42493)
add 6e1c2fbcb8f chore: Mask specific Druid/Presto/Trino fields (#42492)
add bfa7dabb34b test(query): normalize_dttm_col with UTC offset at second-level grain (#37925) (#42589)
add 1df0cca2f9a docs(databricks): include Databricks in user impersonation UI text (#36850)
add dae374b75b8 fix(dashboard): prevent result set overlap in mixed chart View as Table (#42018)
add 4b3801a4477 fix(select): don't cap multi-row tag container to single-line height (#42600)
add 6279cafbbd8 fix(echarts): correct time shift handling in Timeseries transformProps (#38126)
add fc1d70c1a38 fix(country-map): give Alborz its own ISO code instead of reusing Tehran's
add 2d4a6898a47 test(country-map): assert Alborz uses exact IR-32 ISO code
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 (cf9bb701006)
\
N -- N -- N refs/heads/fix/issue-31991-iran-alborz-duplicate-iso (2d4a6898a47)
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/workflows/bump-python-package.yml | 2 +-
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/dependency-review.yml | 1 -
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/issue_creation.yml | 6 +-
.github/workflows/superset-docs-verify.yml | 77 +-
.github/workflows/superset-frontend.yml | 20 +-
.github/workflows/superset-helm-release.yml | 93 +-
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.pre-commit-config.yaml | 2 +-
README.md | 4 +-
UPDATING.md | 66 +
docker-compose-image-tag.yml | 8 +-
docker/pythonpath_dev/superset_config.py | 8 +
docs/admin_docs/configuration/cache.mdx | 15 +
docs/admin_docs/security/security.mdx | 45 +
.../developer_docs/guidelines/design-guidelines.md | 2 +-
docs/package.json | 24 +-
docs/static/feature-flags.json | 7 +
docs/yarn.lock | 449 +--
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 6 +-
helm/superset/templates/_helpers.tpl | 8 +
helm/superset/templates/init-job.yaml | 4 +
helm/superset/tests/test-istio.sh | 183 ++
helm/superset/values.yaml | 25 +
pyproject.toml | 2 +-
requirements/base.in | 2 +-
requirements/base.txt | 2 +-
requirements/development.txt | 2 +-
scripts/change_detector.py | 48 +-
superset-frontend/oxlint.json | 1 +
superset-frontend/package-lock.json | 1198 +++----
superset-frontend/package.json | 50 +-
.../packages/superset-ui-core/package.json | 4 +-
.../components/ActionButton/ActionButton.test.tsx | 18 +-
.../src/components/ActionButton/index.tsx | 38 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 82 +-
.../src/components/AsyncAceEditor/index.tsx | 28 +-
.../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/ModalTrigger/index.tsx | 5 +
.../src/components/PopoverDropdown/index.tsx | 15 +-
.../PopoverSection/PopoverSection.test.tsx | 8 +-
.../src/components/PopoverSection/index.tsx | 27 +-
.../src/components/RefreshLabel/index.tsx | 3 +-
.../src/components/Select/AsyncSelect.test.tsx | 4 +-
.../src/components/Select/Select.stories.tsx | 40 +
.../src/components/Select/Select.test.tsx | 55 +-
.../src/components/Select/Select.tsx | 5 +
.../src/components/Select/styles.tsx | 1 -
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 4 +-
.../src/components/UnsavedChangesModal/index.tsx | 2 +-
.../src/utils/rankedSearchCompare.test.ts | 27 +
.../src/utils/rankedSearchCompare.ts | 3 +-
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../components/dashboard/DashboardFilterBar.ts | 122 +
.../components/dashboard}/index.ts | 2 +-
.../playwright/pages/DashboardPage.ts | 35 +-
.../tests/dashboard/clear-all-filters.spec.ts | 28 +-
.../tests/dashboard/delete-display-control.spec.ts | 5 +-
.../playwright/tests/dashboard/export.spec.ts | 6 +-
.../tests/dashboard/gauge-interval-colors.spec.ts | 2 +
.../playwright/tests/dataset/dataset-list.spec.ts | 2 +-
superset-frontend/playwright/utils/constants.ts | 5 +
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11683742 -> 11004185 bytes
.../src/countries/afghanistan.geojson | Bin 116055 -> 116233 bytes
.../src/countries/algeria.geojson | Bin 72143 -> 72436 bytes
.../src/countries/angola.geojson | Bin 90836 -> 91061 bytes
.../src/countries/antarctica.geojson | Bin 245701 -> 249319 bytes
.../src/countries/argentina.geojson | Bin 91982 -> 92396 bytes
.../src/countries/central_african_republic.geojson | Bin 76280 -> 76367 bytes
.../src/countries/chad.geojson | Bin 59068 -> 59200 bytes
.../src/countries/chile.geojson | Bin 152109 -> 155583 bytes
.../src/countries/colombia.geojson | Bin 172427 -> 172825 bytes
.../src/countries/cook_islands.geojson | Bin 4793 -> 4932 bytes
.../democratic_republic_of_the_congo.geojson | Bin 60421 -> 60598 bytes
.../src/countries/ecuador.geojson | Bin 71984 -> 72252 bytes
.../src/countries/egypt.geojson | Bin 62737 -> 63171 bytes
.../src/countries/ethiopia.geojson | Bin 74123 -> 74208 bytes
.../src/countries/fiji.geojson | Bin 14845 -> 16252 bytes
.../src/countries/finland.geojson | Bin 130221 -> 131137 bytes
.../src/countries/france.geojson | Bin 292411 -> 293310 bytes
.../src/countries/france_overseas.geojson | Bin 318427 -> 319676 bytes
.../src/countries/france_regions.geojson | Bin 125270 -> 125649 bytes
.../src/countries/french_polynesia.geojson | Bin 21933 -> 23524 bytes
.../src/countries/greenland.geojson | Bin 180051 -> 183222 bytes
.../src/countries/iran.geojson | Bin 134245 -> 134537 bytes
.../src/countries/italy.geojson | Bin 238139 -> 239052 bytes
.../src/countries/italy_regions.geojson | Bin 106568 -> 107344 bytes
.../src/countries/japan.geojson | Bin 123030 -> 125219 bytes
.../src/countries/kazakhstan.geojson | Bin 96827 -> 97047 bytes
.../src/countries/libya.geojson | Bin 43958 -> 44004 bytes
.../src/countries/malaysia.geojson | Bin 61384 -> 61681 bytes
.../src/countries/mexico.geojson | Bin 153935 -> 155798 bytes
.../src/countries/mongolia.geojson | Bin 66008 -> 66140 bytes
.../src/countries/morocco.geojson | Bin 47809 -> 47814 bytes
.../src/countries/mozambique.geojson | Bin 70096 -> 70273 bytes
.../src/countries/myanmar.geojson | Bin 121555 -> 122123 bytes
.../src/countries/namibia.geojson | Bin 51566 -> 51744 bytes
.../src/countries/new_zealand.geojson | Bin 50769 -> 51553 bytes
.../src/countries/niger.geojson | Bin 24404 -> 24447 bytes
.../src/countries/nigeria.geojson | Bin 131937 -> 132145 bytes
.../src/countries/norway.geojson | Bin 190978 -> 193186 bytes
.../src/countries/pakistan.geojson | Bin 71132 -> 71260 bytes
.../src/countries/papua_new_guinea.geojson | Bin 92488 -> 93153 bytes
.../src/countries/peru.geojson | Bin 121731 -> 121913 bytes
.../src/countries/philippines.geojson | Bin 199021 -> 201029 bytes
.../src/countries/philippines_regions.geojson | Bin 135628 -> 137441 bytes
.../src/countries/portugal.geojson | Bin 54121 -> 54433 bytes
.../src/countries/saudi_arabia.geojson | Bin 49541 -> 49793 bytes
.../src/countries/somalia.geojson | Bin 17637 -> 17724 bytes
.../src/countries/spain.geojson | Bin 196796 -> 197369 bytes
.../src/countries/sudan.geojson | Bin 50472 -> 50604 bytes
.../src/countries/sweden.geojson | Bin 121208 -> 122167 bytes
.../src/countries/tanzania.geojson | Bin 108542 -> 108762 bytes
.../src/countries/thailand.geojson | Bin 205568 -> 206445 bytes
.../src/countries/turkey.geojson | Bin 203614 -> 204184 bytes
.../src/countries/turkey_regions.geojson | Bin 107269 -> 107486 bytes
.../src/countries/turkmenistan.geojson | Bin 34870 -> 34959 bytes
.../src/countries/uk.geojson | Bin 477503 -> 478985 bytes
.../src/countries/ukraine.geojson | Bin 173064 -> 173452 bytes
.../united_states_minor_outlying_islands.geojson | Bin 3552 -> 3957 bytes
.../src/countries/usa.geojson | Bin 514889 -> 540974 bytes
.../src/countries/uzbekistan.geojson | Bin 50250 -> 50378 bytes
.../src/countries/venezuela.geojson | Bin 118980 -> 119692 bytes
.../src/countries/vietnam.geojson | Bin 138005 -> 138908 bytes
.../src/vendor/superset/exploreUtils.ts | 69 -
.../src/AgGridTable/components/CustomHeader.tsx | 42 +-
.../src/styles/index.tsx | 10 +
.../src/MixedTimeseries/transformProps.ts | 36 +-
.../plugin-chart-echarts/src/Pie/controlPanel.tsx | 5 +-
.../plugin-chart-echarts/src/Pie/transformProps.ts | 263 +-
.../plugins/plugin-chart-echarts/src/Pie/types.ts | 33 -
.../src/Radar/transformProps.ts | 71 +-
.../plugin-chart-echarts/src/Radar/types.ts | 6 +-
.../plugin-chart-echarts/src/Radar/utils.ts | 14 +-
.../Timeseries/Regular/Scatter/controlPanel.tsx | 462 ++-
.../src/Timeseries/constants.ts | 2 +
.../src/Timeseries/transformProps.ts | 170 +-
.../src/Timeseries/transformers.ts | 44 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 3 +
.../plugin-chart-echarts/src/utils/series.ts | 30 +
.../test/MixedTimeseries/transformProps.test.ts | 88 +-
.../test/Pie/transformProps.test.ts | 387 +--
.../test/Radar/transformProps.test.ts | 112 +
.../plugin-chart-echarts/test/Radar/utils.test.ts | 18 +
.../test/Timeseries/Area/controlPanel.test.ts | 50 +-
.../test/Timeseries/Line/controlPanel.test.ts | 50 +-
.../test/Timeseries/Scatter/controlPanel.test.ts | 105 +-
.../test/Timeseries/Scatter/transformProps.test.ts | 413 ++-
.../Timeseries/SmoothLine/controlPanel.test.ts | 50 +-
.../test/Timeseries/Step/controlPanel.test.ts | 50 +-
.../test/Timeseries/buildQuery.test.ts | 18 +
.../test/Timeseries/helpers.ts | 82 +
.../test/Timeseries/transformProps.test.ts | 11 +-
.../test/Timeseries/transformers.test.ts | 31 +
.../plugin-chart-echarts/test/utils/series.test.ts | 27 +
.../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/src/transformProps.ts | 19 +-
.../plugin-chart-table/test/TableChart.test.tsx | 66 +-
.../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/SqlEditorLeftBar/index.tsx | 1 +
.../TableExploreTree/TableExploreTree.test.tsx | 71 +-
.../components/TableExploreTree/useTreeData.ts | 99 +-
.../components/TemplateParamsEditor/index.tsx | 4 +-
.../src/components/Chart/Chart.test.tsx | 4 +-
superset-frontend/src/components/Chart/Chart.tsx | 37 +-
.../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 | 29 +-
.../CopyToClipboard/CopyToClipboard.stories.tsx | 2 +-
.../src/components/CopyToClipboard/index.tsx | 15 +-
.../DatabaseSelector/DatabaseSelector.test.tsx | 70 +
.../src/components/DatabaseSelector/index.tsx | 5 +-
.../src/components/DatabaseSelector/types.ts | 1 +
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../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 +
.../ErrorMessage/ErrorMessageWithStackTrace.tsx | 11 +-
.../FrontendNetworkErrorMessage.test.tsx | 1 +
.../ErrorMessage/ParameterErrorMessage.test.tsx | 1 +
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 1 +
.../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/constants.ts | 4 +
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 4 +
.../components/CustomizationsBadge/index.tsx | 4 +
.../DashboardBuilder/DashboardBuilder.test.tsx | 67 +
.../DashboardBuilder/DashboardBuilder.tsx | 16 +-
.../dashboard/components/DeleteComponentButton.tsx | 2 +-
.../DetailsPanel/DetailsPanel.test.tsx | 2 +-
.../components/FiltersBadge/DetailsPanel/index.tsx | 2 +-
.../dashboard/components/FiltersBadge/index.tsx | 12 +-
.../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 +-
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 3 +-
.../ScopingModal/ChartsScopingListPanel.test.tsx | 7 +-
.../ScopingModal/ChartsScopingListPanel.tsx | 12 +-
.../FilterBar/CrossFilters/VerticalCollapse.tsx | 21 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 89 +-
.../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 +-
.../components/nativeFilters/FilterBar/index.tsx | 19 +-
.../nativeFilters/FilterCard/DependenciesRow.tsx | 2 +-
.../components/nativeFilters/FilterCard/Styles.ts | 7 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 21 +-
.../FiltersConfigForm/DependencyList.tsx | 9 +-
.../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/ControlPanelsContainer.tsx | 4 +-
.../DataTableControl/FilterInput.test.tsx | 30 +-
.../explore/components/DataTableControl/index.tsx | 48 +-
.../components/DataTablesPane/DataTablesPane.tsx | 37 +-
.../components/DataTableControls.tsx | 10 +-
.../components/ResultsPaneOnDashboard.tsx | 22 +-
.../DataTablesPane/components/SamplesPane.tsx | 2 +
.../components/SingleQueryResultPane.tsx | 1 +
.../src/explore/components/DataTablesPane/types.ts | 1 +
.../explore/components/DatasourcePanel/index.tsx | 25 +-
.../src/explore/components/EmbedCodeContent.tsx | 14 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 29 +
.../components/ExploreChartHeader/index.tsx | 17 +
.../ExploreChartPanel/ExploreChartPanel.test.tsx | 86 +
.../StandaloneDownloadControl.test.tsx | 147 +
.../StandaloneDownloadControl.tsx | 108 +
.../explore/components/ExploreChartPanel/index.tsx | 61 +-
.../ExploreViewContainer.test.tsx | 191 +-
.../components/ExploreViewContainer/index.tsx | 119 +-
.../AnnotationLayer.test.tsx | 347 +-
.../AnnotationLayerControl/AnnotationLayer.tsx | 241 +-
.../ColorBreakpointPopoverControl.tsx | 4 +
.../ColumnConfigControl/ColumnConfigControl.tsx | 16 +-
.../ControlPopover/ControlPopover.test.tsx | 106 +-
.../controls/ControlPopover/ControlPopover.tsx | 40 +-
.../DateFilterControl/components/DateLabel.tsx | 7 +-
.../DateFilterControl/tests/dateParser.test.ts | 53 +
.../controls/DateFilterControl/utils/dateParser.ts | 11 +-
.../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 +-
.../useExploreAdditionalActionsMenu/index.tsx | 208 +-
.../useExploreDataExport.test.ts | 223 ++
.../useExploreDataExport.ts | 275 ++
superset-frontend/src/explore/constants.ts | 2 +
.../explore/exploreUtils/exploreHistory.test.ts | 71 +
.../src/explore/exploreUtils/exploreHistory.ts | 77 +
.../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/ExtraOptions.tsx | 5 +-
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 -
.../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 3 +-
.../AddDataset/DatasetPanel/DatasetPanel.tsx | 68 +-
.../DatasetPanel/DatasetPanelWrapper.test.tsx | 1 +
.../AddDataset/DatasetPanel/MessageContent.tsx | 6 +-
superset-frontend/src/features/home/Menu.tsx | 8 +-
.../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 +-
.../components/Range/RangeFilterPlugin.test.tsx | 31 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 10 +-
.../src/hooks/apiResources/catalogs.test.ts | 231 ++
.../src/hooks/apiResources/catalogs.ts | 66 +-
.../src/hooks/apiResources/schemas.test.ts | 142 +-
.../src/hooks/apiResources/schemas.ts | 74 +-
.../src/hooks/apiResources/tables.test.ts | 61 +
superset-frontend/src/hooks/apiResources/tables.ts | 41 +-
.../src/hooks/useUnsavedChangesPrompt/index.ts | 13 +-
.../src/middleware/asyncEvent.test.ts | 38 +
superset-frontend/src/middleware/asyncEvent.ts | 18 +-
superset-frontend/src/pages/Chart/Chart.test.tsx | 149 +
superset-frontend/src/pages/Chart/index.tsx | 21 +-
.../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 +-
.../src/pages/QueryHistoryList/index.tsx | 26 +-
.../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-websocket/package-lock.json | 687 +++-
superset-websocket/package.json | 10 +-
superset/async_events/api.py | 80 +-
superset/async_events/async_query_manager.py | 115 +
superset/async_events/cache_backend.py | 18 +
superset/charts/api.py | 68 +
superset/charts/client_processing.py | 44 +-
superset/cli/deletion_retention.py | 164 +
superset/commands/chart/importers/v1/__init__.py | 9 +-
superset/commands/chart/importers/v1/utils.py | 23 +-
.../chart/{restore.py => restore_version.py} | 25 +-
.../commands/dashboard/importers/v1/__init__.py | 15 +-
superset/commands/dashboard/importers/v1/utils.py | 17 +-
superset/commands/dashboard/restore_version.py | 45 +
superset/commands/dataset/create.py | 4 +-
superset/commands/dataset/importers/v0.py | 2 +-
.../dataset/restore_version.py} | 36 +-
.../deletion_retention}/__init__.py | 12 +-
superset/commands/deletion_retention/audit.py | 238 ++
.../commands/deletion_retention/force_purge.py | 199 ++
.../commands/deletion_retention/purge_cascade.py | 607 ++++
superset/commands/deletion_retention/window.py | 81 +
superset/commands/importers/v1/assets.py | 13 +-
superset/commands/importers/v1/examples.py | 7 +
superset/commands/importers/v1/utils.py | 18 +-
superset/commands/streaming_export/base.py | 2 +-
superset/commands/utils.py | 8 +-
superset/commands/version_restore.py | 152 +
superset/common/query_actions.py | 5 +
superset/common/query_context_factory.py | 2 +-
superset/common/utils/query_cache_manager.py | 6 +-
superset/config.py | 83 +-
superset/daos/dashboard.py | 27 +-
superset/daos/version.py | 18 +-
superset/dashboards/api.py | 72 +
superset/databases/schemas.py | 15 +-
superset/datasets/api.py | 72 +
superset/datasets/datetime_format_detector.py | 38 +-
superset/db_engine_specs/base.py | 67 +
superset/db_engine_specs/clickhouse.py | 54 +
superset/db_engine_specs/databricks.py | 1 +
superset/db_engine_specs/druid.py | 5 +
superset/db_engine_specs/hive.py | 33 +-
superset/db_engine_specs/mysql.py | 9 +-
superset/db_engine_specs/postgres.py | 27 +
superset/db_engine_specs/presto.py | 9 +-
superset/db_engine_specs/redshift.py | 16 +
superset/db_engine_specs/sqlite.py | 14 +
superset/db_engine_specs/trino.py | 5 +
superset/initialization/__init__.py | 95 +-
superset/key_value/types.py | 4 +
superset/mcp_service/__init__.py | 12 +
.../dashboard/tool/generate_dashboard.py | 8 +-
superset/mcp_service/middleware.py | 222 +-
superset/mcp_service/server.py | 80 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 37 +-
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 | 2 +-
.../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 +
...07-28_09-00_e7d93a524ff6_add_purge_audit_log.py | 88 +
superset/models/__init__.py | 8 +-
superset/models/core.py | 71 +
superset/models/dashboard.py | 10 +-
superset/models/helpers.py | 47 +-
superset/models/purge_audit_log.py | 60 +
superset/security/manager.py | 146 +-
superset/semantic_layers/api.py | 11 +-
superset/subjects/api.py | 3 +-
superset/subjects/filters.py | 16 +
superset/subjects/utils.py | 206 +-
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/deletion_retention.py | 307 ++
superset/tasks/version_history_retention.py | 548 ++++
superset/translations/fr/LC_MESSAGES/messages.po | 3328 ++++++++------------
superset/translations/ja/LC_MESSAGES/messages.po | 264 +-
superset/utils/cache.py | 21 +
superset/utils/core.py | 15 +-
superset/utils/screenshot_utils.py | 214 +-
superset/utils/webdriver.py | 209 +-
superset/versioning/api_helpers.py | 72 +-
superset/versioning/baseline/__init__.py | 2 +
superset/versioning/baseline/shadow.py | 5 +
superset/versioning/changes/shadow_queries.py | 11 +-
superset/versioning/queries.py | 62 +-
superset/versioning/restore.py | 264 ++
superset/versioning/utils.py | 53 +
superset/views/base_api.py | 11 +-
superset/views/core.py | 20 +-
superset/views/dashboard/views.py | 6 +-
superset/views/error_handling.py | 33 +
superset/views/users/schemas.py | 8 +
superset/views/utils.py | 24 +-
tests/integration_tests/async_events/api_tests.py | 72 +
.../charts/version_restore_tests.py | 456 +++
tests/integration_tests/dao/conftest.py | 2 +-
.../dashboards/version_restore_tests.py | 418 +++
.../datasets/version_restore_tests.py | 507 +++
.../deletion_retention}/__init__.py | 0
.../integration_tests/deletion_retention/_base.py | 255 ++
.../deletion_retention/audit_tests.py | 109 +
.../deletion_retention/force_purge_tests.py | 234 ++
.../deletion_retention/purge_tests.py | 631 ++++
.../deletion_retention/window_tests.py | 99 +
tests/integration_tests/subjects/api_tests.py | 22 +
tests/integration_tests/users/api_tests.py | 9 +
.../versioning/retention_prune_tests.py | 510 +++
.../async_events/async_query_manager_tests.py | 170 +
tests/unit_tests/charts/test_client_processing.py | 55 +-
tests/unit_tests/charts/test_schemas.py | 15 +
.../commands/dataset/test_create_subjects.py | 71 +
.../unit_tests/commands/importers/v1/utils_test.py | 21 +
tests/unit_tests/common/test_query_actions.py | 39 +
.../common/test_query_context_factory.py | 36 +
tests/unit_tests/config_test.py | 26 +
tests/unit_tests/conftest.py | 2 +-
tests/unit_tests/dao/dashboard_test.py | 51 +
tests/unit_tests/databases/filters_test.py | 2 +-
.../datasets/commands/importers/v0/import_test.py | 30 +
.../datasets/test_datetime_format_detector.py | 239 +-
.../unit_tests/db_engine_specs/test_clickhouse.py | 313 ++
tests/unit_tests/db_engine_specs/test_druid.py | 47 +
tests/unit_tests/db_engine_specs/test_hive.py | 68 +
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_presto.py | 65 +
tests/unit_tests/db_engine_specs/test_sqlite.py | 31 +
tests/unit_tests/db_engine_specs/test_starrocks.py | 25 +-
tests/unit_tests/db_engine_specs/test_trino.py | 79 +
.../distributed_lock/distributed_lock_tests.py | 2 +-
...dengine.py => docker_compose_image_tag_test.py} | 34 +-
tests/unit_tests/initialization_test.py | 206 ++
.../dashboard/tool/test_dashboard_generation.py | 32 +
.../unit_tests/mcp_service/test_logging_filters.py | 168 +
tests/unit_tests/mcp_service/test_mcp_server.py | 18 +
.../mcp_service/test_middleware_logging.py | 130 +
...rip_metricsqlexpressions_from_ag_grid_params.py | 6 +-
.../test_version_transaction_issued_at_index.py | 90 +
tests/unit_tests/models/helpers_test.py | 227 ++
tests/unit_tests/result_set_test.py | 50 +
tests/unit_tests/scripts/change_detector_test.py | 70 +
.../security/exclude_users_filter_test.py | 8 +-
tests/unit_tests/security/manager_test.py | 567 ++++
.../security/test_audit_event_metrics.py | 55 +
tests/unit_tests/semantic_layers/api_test.py | 7 +-
tests/unit_tests/semantic_layers/mapper_test.py | 4 +-
tests/unit_tests/subjects/test_api_filters.py | 84 +
.../subjects/test_creator_group_call_sites.py | 508 +++
.../subjects/test_creator_group_defaults.py | 293 ++
tests/unit_tests/subjects/test_utils.py | 190 ++
tests/unit_tests/tasks/test_async_queries.py | 125 +
tests/unit_tests/tasks/test_cron_util.py | 21 +
tests/unit_tests/tasks/test_deletion_retention.py | 222 ++
.../tasks/test_version_history_retention.py | 200 ++
tests/unit_tests/utils/cache_test.py | 225 ++
tests/unit_tests/utils/test_core.py | 56 +
tests/unit_tests/utils/test_screenshot_utils.py | 86 +-
tests/unit_tests/utils/webdriver_test.py | 400 ++-
tests/unit_tests/versioning/test_listener.py | 2 +-
tests/unit_tests/versioning/test_restore.py | 133 +
tests/unit_tests/views/test_error_handling.py | 112 +
tests/unit_tests/views/test_related_include_ids.py | 124 +
tests/unit_tests/views/test_soft_delete_filter.py | 2 +-
tests/unit_tests/views/test_user_schemas.py | 52 +
tests/unit_tests/views/test_utils.py | 53 +
627 files changed, 25384 insertions(+), 6436 deletions(-)
create mode 100755 helm/superset/tests/test-istio.sh
create mode 100644 superset-frontend/playwright/components/dashboard/DashboardFilterBar.ts
copy superset-frontend/{packages/superset-ui-core/src/dynamic-plugins => playwright/components/dashboard}/index.ts (93%)
delete mode 100644 superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/exploreUtils.ts
create mode 100644 superset-frontend/src/database/actions.test.ts
create mode 100644 superset-frontend/src/explore/components/ExploreChartPanel/StandaloneDownloadControl.test.tsx
create mode 100644 superset-frontend/src/explore/components/ExploreChartPanel/StandaloneDownloadControl.tsx
create mode 100644 superset-frontend/src/explore/components/controls/DateFilterControl/tests/dateParser.test.ts
create mode 100644 superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/useExploreDataExport.test.ts
create mode 100644 superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/useExploreDataExport.ts
create mode 100644 superset-frontend/src/explore/exploreUtils/exploreHistory.test.ts
create mode 100644 superset-frontend/src/explore/exploreUtils/exploreHistory.ts
create mode 100644 superset-frontend/src/hooks/apiResources/catalogs.test.ts
create mode 100644 superset/cli/deletion_retention.py
copy superset/commands/chart/{restore.py => restore_version.py} (56%)
create mode 100644 superset/commands/dashboard/restore_version.py
copy superset/{utils/pandas_postprocessing/rank.py => commands/dataset/restore_version.py} (51%)
copy superset/{mcp_service/common => commands/deletion_retention}/__init__.py (76%)
create mode 100644 superset/commands/deletion_retention/audit.py
create mode 100644 superset/commands/deletion_retention/force_purge.py
create mode 100644 superset/commands/deletion_retention/purge_cascade.py
create mode 100644 superset/commands/deletion_retention/window.py
create mode 100644 superset/commands/version_restore.py
create mode 100644 superset/migrations/versions/2026-07-27_10-00_d3b9a1f6c204_version_transaction_issued_at_index.py
create mode 100644 superset/migrations/versions/2026-07-28_09-00_e7d93a524ff6_add_purge_audit_log.py
create mode 100644 superset/models/purge_audit_log.py
create mode 100644 superset/tasks/deletion_retention.py
create mode 100644 superset/tasks/version_history_retention.py
create mode 100644 superset/versioning/restore.py
create mode 100644 tests/integration_tests/charts/version_restore_tests.py
create mode 100644 tests/integration_tests/dashboards/version_restore_tests.py
create mode 100644 tests/integration_tests/datasets/version_restore_tests.py
copy {scripts => tests/integration_tests/deletion_retention}/__init__.py (100%)
create mode 100644 tests/integration_tests/deletion_retention/_base.py
create mode 100644 tests/integration_tests/deletion_retention/audit_tests.py
create mode 100644 tests/integration_tests/deletion_retention/force_purge_tests.py
create mode 100644 tests/integration_tests/deletion_retention/purge_tests.py
create mode 100644 tests/integration_tests/deletion_retention/window_tests.py
create mode 100644 tests/integration_tests/versioning/retention_prune_tests.py
create mode 100644 tests/unit_tests/commands/dataset/test_create_subjects.py
copy tests/unit_tests/{db_engine_specs/test_tdengine.py => docker_compose_image_tag_test.py} (50%)
create mode 100644 tests/unit_tests/mcp_service/test_logging_filters.py
create mode 100644 tests/unit_tests/migrations/test_version_transaction_issued_at_index.py
create mode 100644 tests/unit_tests/security/test_audit_event_metrics.py
create mode 100644 tests/unit_tests/subjects/test_api_filters.py
create mode 100644 tests/unit_tests/subjects/test_creator_group_call_sites.py
create mode 100644 tests/unit_tests/subjects/test_creator_group_defaults.py
create mode 100644 tests/unit_tests/tasks/test_deletion_retention.py
create mode 100644 tests/unit_tests/tasks/test_version_history_retention.py
create mode 100644 tests/unit_tests/versioning/test_restore.py
create mode 100644 tests/unit_tests/views/test_error_handling.py
create mode 100644 tests/unit_tests/views/test_related_include_ids.py
create mode 100644 tests/unit_tests/views/test_user_schemas.py
create mode 100644 tests/unit_tests/views/test_utils.py