This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch fix/issue-41795-open-pr
in repository https://gitbox.apache.org/repos/asf/superset.git
omit 85465c1e3f1 fix: dedupe LIKE cast condition, tighten UUID type match,
assert on Cast node
omit 42fd8e19fa7 fix(sqla): cast native UUID columns to string for
LIKE/ILIKE filters
add ad8e6d41402 build(deps): upgrade `react-markdown` to v9 and
`remark-gfm` to v4 (#41778)
add 689b4f623e4 docs(admin/config): resolve misconfigured aws-iam Markdown
file (#41748)
add 21b4185819e fix(ace-editor): caret drift from late font loads and
emoji widths (#41697)
add 51e708da6bb fix(mcp): accept Superset vocabulary in chart configs and
clarify query_dataset metric errors (#40972)
add 69ce27f1731 feat(sec): resolve all vuln alerts in
`superset-embedded-sdk`, `superset-frontend` and `docs` (#41776)
add fb496e158a2 fix(ag-grid): persist "None" value aggregation selection
(#41386)
add 44c1ad5c714 fix: delint frontend files (#41802)
add c0b0a2fdaf5 feat(tags): add favorites filter to Tags list view (#41461)
add 033b7bc385e fix(databases): update broken database documentation links
to /user-docs namespace (#41557)
add 9e50d9eca67 fix: Italian translation (#36114)
add ee524b34713 fix(dashboard): let CSV exports use query cache instead of
always force-querying (#41469)
add 2aa43f6f0f5 fix(sql): stop sanitize_clause from rewriting user SQL
semantics (#36113) (#41125)
add 85eaf15c5e0 test(databases): stabilize flaky SQLAlchemy-form
visibility assertion (#41823)
add 101c1e88275 fix(ace-editor): carry token classes onto emoji boxes
(#41821)
add 4b78758fd22 chore(deps-dev): bump typescript-eslint from 8.62.0 to
8.62.1 in /superset-websocket (#41815)
add 847bdad9600 chore(deps-dev): bump @typescript-eslint/parser from
8.62.0 to 8.62.1 in /superset-frontend (#41820)
add 2b74e140f37 chore(deps-dev): update sqlalchemy-parseable requirement
from <0.2.0,>=0.1.3 to >=0.1.6,<0.2.0 (#41814)
add 87fa7e5e640 chore(deps-dev): bump prettier from 3.9.1 to 3.9.3 in
/superset-websocket (#41810)
add e52240b9a60 test(datasets): prove column metadata persists for
zero-row queries (#41838)
add a8a1b220fdc chore(deps): update @ant-design/icons requirement from
^6.2.5 to ^6.3.2 in /superset-frontend/packages/superset-ui-core (#41790)
add 1c3b070d342 feat(i18n): do-not-translate registry + '#.
do-not-translate' marker standard (#41651)
add c846da8dfb2 fix(frontend): resolve image download formatting and
cleanup issues (#38927)
add de5a233ccf9 fix(sqllab): preserve saved query description when editing
(#41685)
add ec4e5deb014 feat(theming): add opt-in SQL Lab grid tokens and fix
modal border-radius clipping (#41031)
add 5e384f54d3a fix(ag-grid): select cell on click instead of its text
(#41392)
add 4167a21f7d4 fix(semantic layers): guards for zero rows (#41600)
add 4dc45aa9586 fix(semantic layers): apply post-processing (#41601)
add ffd09829423 fix(ag-grid): keep basic conditional formatting aligned
after sort (#41390)
add 5e16c4eaaf6 chore(deps-dev): bump oxlint from 1.71.0 to 1.72.0 in
/superset-frontend (#41848)
add 7bdde4a36af chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in
/superset-frontend (#41846)
add aa330422f19 chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in
/superset-websocket (#41844)
add 3a514dc8eb0 chore(deps-dev): update sqlalchemy-singlestoredb
requirement from <2,>=1.1.1 to >=1.2.1,<2 (#41809)
add 0dcb09b1638 chore(deps-dev): bump @typescript-eslint/eslint-plugin
from 8.62.0 to 8.62.1 in /superset-frontend (#41822)
add 53c3b1ceb1b chore(deps): bump fs-extra from 11.3.5 to 11.3.6 in
/superset-frontend (#41847)
add 9b508ebe0d0 fix(ag-grid): honor dataset hour offset in time range
filters (#41391)
add dd0277e1e37 feat(mcp): support embedded guest-token authentication
(#41003)
add 77b98a5d676 chore(deps-dev): update databend-sqlalchemy requirement
from <1.0,>=0.3.2 to >=0.5.5,<1.0 (#41479)
add f0e25fb9789 test(preset-chart-deckgl): prove ctrl+click on deck.gl
legend toggles the layer without opening a new tab (#41830)
add d0b42d8c19a test(dashboard): prove activeTabs from permalinks selects
tab content (#41832)
add af058ccecb5 test(plugin-chart-echarts): prove user-selected plain
legend type is honored (#39540) (#41833)
add de5a31a2cfd test(sql): prove Oracle GROUP BY is no longer rewritten to
ordinals (#35414) (#41834)
add 00a9546de9f test(sql): prove multi-space column names no longer trip
subquery validation (#41835)
add 7b0969131ff test(sql): prove ClickHouse parametric aggregates parse
cleanly (#37285) (#41836)
add 973366d30bf test(models): prove owner association tables reject
duplicate rows (#41837)
add 19c982d8d30 test(async-queries): prove OAuth2RedirectError survives
async chart queries (#41839)
add 51a171f8217 test(dashboard): prove BigInt column values no longer
break native filter config (#41840)
add 0d9b3f3b059 test(dashboard): prove filters with defaults apply without
touching every filter (#41841)
add a01a4ae511e test(superset-ui-core): prove angle-bracketed non-HTML
values render as text (#34082) (#41829)
add 04f8b700d76 feat(datasets): soft-delete and restore (#40130)
add 5f27f88e730 test(preset-chart-deckgl): prove legend clicks no longer
scroll to top (#41831)
add fe7d9b47247 fix(sqllab): reflect query history deletion without page
refresh (#41019)
add fbc24959ab3 feat(mcp): add semantic layer MCP tools (list_metrics,
get_table, get_compatible_dimensions, get_compatible_metrics) (#41611)
add 054be4d45e8 chore(deps-dev): bump eslint-plugin-storybook from 10.4.5
to 10.4.6 in /superset-frontend (#41360)
add 8e98ae701b5 chore(deps): bump cryptography from 48.0.1 to 49.0.0
(#41811)
add 6edbf425f79 chore(deps-dev): update sqlalchemy-ocient requirement from
>=1.0.0 to >=3.0.0 (#41806)
add 098b95560d8 fix(oauth2): retrigger queries for unsaved charts and
schema loading after OAuth2 redirect (#41101)
add 8108496e2a1 chore(deps-dev): bump @types/d3-scale from 2.2.10 to 4.0.9
in /superset-frontend/packages/superset-ui-core (#41318)
add 4038c9d1e69 chore(deps-dev): bump google-cloud-bigquery from 3.27.0 to
3.42.1 (#41807)
add d9e1f34527b fix(a11y): add aria-label to notification method remove
button (#41850)
add 09361606335 chore(deps-dev): bump eslint-plugin-cypress from 3.6.0 to
6.4.2 in /superset-frontend (#41849)
add 8f4c4117656 fix(mcp): coerce Role ORM objects to role names in
UserInfo schema (#40746)
add 2a77c0156af fix(frontend/setup): sanitize returned client error
message when shown as HTML content (#41768)
add 17ae25b8d4d fix(explore): resolve adhoc Custom SQL dimension in Bubble
chart (#41861)
add ef10501e6b2 feat(table v2): add tooltip to table header (#39287)
add f1c0a461fda chore(deps): bump react-markdown from 9.0.7 to 10.1.0 in
/superset-frontend/packages/superset-ui-core (#41805)
add 6b1311a6c7c fix(sqllab): correct verticalalign CSS typo in
SqlEditorTabHeader icon styles (#41052)
add 0d9533fdf8f fix(reports): export server-paginated table row limits
(#41103)
add 7b95d8b17c9 feat(alerts): add user lookup for email recipients (#41338)
add 050acc6c308 fix(databend): support configuring Databend via individual
parameters (#41513)
add c253b68d7bc fix(chart): fix Chart Time Grain option not working if
Dataset is not saved (#38766)
add ddca50c8209 fix(ui): improve getPopupContainer to avoid double
scrollbar without breaking modal behavior (#38792)
add 98fc8576131 feat(cache): warm up native filter option queries (#41531)
add 866f8c51ee2 fix(sqllab): invalid height in ResultTable (#37408)
add e49945fc2fb fix(table charts v1 & v2): pagination, translation and
search by (#36881)
add 96171552890 fix(utils): urls preserve query params (#35936)
add 3fa000ba0bc fix(chart): allow custom date format for week range in Big
Number with Trendline (#35752)
add 0efcd54250a fix(charts): fix time comparison crash when offsets share
a numeric prefix (#39344)
add f6d03e4a687 fix(clickhouse): time filters use server timezone for
toDateTime literals (#41579)
add 206155f986c fix(explore): apply per-datasource access check on the
legacy explore view (#41425)
add f74de0eb6c3 fix: Show metric in the default tooltip of deck.gl GeoJson
Polygon chart (#41341)
add 2dab31c1301 fix(mcp): serialize FAB role permissions (#41404)
add 01cd2152027 fix(explore): default Save As for new charts in save
dialog (#41314)
add 3b1abf82608 feat(Icons): adding Layout icon (#41853)
add 211bcbc6353 chore(deps-dev): bump @swc/plugin-emotion from 14.14.0 to
14.14.1 in /superset-frontend (#41875)
add d81b135a04c fix(explore): render DragOverlay so dragged metric/column
is visible (#41879)
add 8a599d70b43 fix(explore): admin creating new chart crashes on save
(#41880)
add 49ed2063815 fix(a11y): add aria-label to dependency-list remove icon
(#41878)
add deefe897f15 chore(frontend): remove orphaned eslint-plugin-cypress
devDependency (#41866)
add dc5c5af4671 docs: Add geOrchestra project and pi-geosolutions to In
the Wild (#41801)
add e333135a0d4 feat(i18n): expose the six newly backfilled locales
(#41827)
add 001d6c9692c fix(semantic-layers): apply time-comparison offset to
`TEMPORAL_RANGE` filters (#41556)
add 34d4966f8b1 fix(dataset): resolve duplicate virtual dataset validation
error (#37932)
add 01e872c1056 refactor: remove the deprecated AVOID_COLORS_COLLISION
feature flag (#41800)
add 33f0fc93edf feat: introduce Subject model and entity editors/viewers
(#38831)
add 83716cb8c0d build(websocket): migrate to ESM (#41680)
add 2c8cdbbd9b2 chore(dependabot): unify npm Dependabot config used for
multi-workspace `superset-frontend` (#41586)
add e65b2c49d73 fix(marshmallow): add compatibility layer for
Flask-AppBuilder with marshmallow 4.x (#35920)
add 8e549e49750 chore(deps-dev): update playwright requirement from
<2,>=1.60.0 to >=1.61.0,<2 (#41890)
add 31351eb52af chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in
/superset-frontend (#41896)
add 15f8b8e9b40 chore(deps): bump immer from 11.1.8 to 11.1.9 in
/superset-frontend (#41894)
add a0d9e82c60b chore(deps): bump celery from 5.5.2 to 5.6.3 (#41892)
add 3a10f39c207 chore(deps-dev): bump pytest from 7.4.4 to 9.1.1 (#41888)
add ea5950558bb feat(dashboard): add vertical alignment guides and height
indicator when resizing charts (#41079)
add 74c3f3b66bd feat(theme): make default theme changeable through
config.py (#41007)
add 227b3a48c11 fix(chart-data): return 403 for SupersetSecurityException
in chart data API (#41865)
add 3dd5e69714f chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in
/superset-websocket (#41887)
add 30e1ab3203c chore(deps): bump docker/login-action from 4.2.0 to 4.3.0
(#41901)
add a4418a27c5c chore(deps): bump github/codeql-action/analyze from 4.36.2
to 4.36.3 (#41900)
add c1d4401d292 chore(deps): bump github/codeql-action/init from 4.36.2 to
4.36.3 (#41899)
add afc7dbeff23 chore(deps-dev): update teradatasql requirement from
>=16.20.0.23 to >=20.0.0.62 (#41886)
add 1fd43ffe52c feat(mcp): scope embedded-guest data reads to the token's
dashboards (#41753)
add baff395d983 feat(mcp): add list_themes, get_theme_info, and
create_theme tools (#41497)
add bea5f8d4a44 fix(dashboard): stagger manual refresh to prevent worker
saturation (#40512)
add 43bfc85941c fix(db): validate schema and table cache timeout to reject
negative values (#38490)
add 2380d576d54 fix(cli): avoid DetachedInstanceError in
compute-thumbnails (#41530)
add 1bfb7c60e7c fix(ci): repair stale mock target breaking Python-Unit on
master (#41911)
add a899e1db414 feat(versioning): entity-version base infrastructure
(gated off, dark launch) (#41176)
add 0ff52d46e07 fix(docs): correct broken In the Wild logo for Région
Hauts-de-France (#41918)
add ea76d0d785e chore(deps): bump cookie from 1.1.1 to 2.0.1 in
/superset-websocket (#41874)
add be600f78fc6 chore(deps): upgrade ag-grid to 36.0.0 (#41882)
add 597c9c6fea6 fix: do not require recaptcha public key for LDAP
authentication (#37009)
add e2ba378b699 fix(sqllab): redirect legacy /superset/sql/<db_id>/ deep
links (#41759)
add 38707866c02 chore(deps-dev): bump baseline-browser-mapping from
2.10.40 to 2.10.41 in /superset-frontend (#41929)
add 169c05f8ce8 chore(deps-dev): bump tsx from 4.22.4 to 4.22.5 in
/superset-frontend (#41928)
add 2a3d65f61a6 chore(deps): bump docker/login-action from 4.3.0 to 4.4.0
(#41927)
add 1ddc3e45d77 chore(deps): bump @deck.gl/mapbox from 9.3.5 to 9.3.6 in
/superset-frontend (#41926)
add 1631d52b650 fix(CollectionControl): a11y drag handle and vertical axis
lock (#39863)
add 2112fbd3798 feat(subjects): add read-only Subject REST API and DAO
(#41897)
add a6ce2fd76b0 fix(mcp): patch list_metrics DAOs via module object to
avoid Python 3.10 mock resolution bug (#41881)
add 5b8e94de267 feat(semantic layers): dashboard filters (#40475)
add bd61e09b4ea fix(mcp): bind Big Number chart to a temporal column for
dashboard time filters (#41895)
add bc80d138fdc chore(deps): bump slack-sdk from 3.42.0 to 3.43.0 (#41893)
add 35712ff9770 fix(sqllab): show truncated table list warning (#41617)
add 4dde4d2c706 fix(versioning): make baseline capture atomic (#41941)
add 38181521912 fix(mcp): user/role tools demanded a permission FAB never
registers (#41858)
add 51ce2b11ad3 chore(deps-dev): update impyla requirement from
<0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
add 7a752d1c228 fix(dashboard): restore arrow key navigation in modal
inputs opened from dropdown (#37978)
add 5c12f216d51 feat(mcp): add delete_chart and delete_dashboard tools
(#41472)
add 678fcba8b48 feat(helm): Superset 6 structured config schema with
deprecation path (#41777)
add b641008da6a fix(versioning): preserve complete multi-flush history
(#41940)
add df209cedbf8 chore(deps-dev): update sqlalchemy-firebird requirement
from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
add e8521471820 test: add edge-case tests for datetime_to_epoch function
(#39404)
add a03cabffa77 perf(csv): avoid regex in CSV value escaping (#40195)
add 0ecf34d80e1 fix(a11y): add aria-label to ViewportControl text inputs
(#41931)
add b237aefb1ea fix(a11y): add aria-label to RightMenu documentation and
bug-report icon links (#41903)
add f5deda78641 fix(dataset): copy catalog field when duplicating a
BigQuery dataset (#41106)
add 189f258e0ce fix(drill): coerce temporal drill filter values (#40180)
add 5e6b29d1a32 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3
(#41953)
add cee5e0fcec4 fix(sqla): cast native UUID columns to string for
LIKE/ILIKE filters
add d1016aa6791 fix: dedupe LIKE cast condition, tighten UUID type match,
assert on Cast node
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 (85465c1e3f1)
\
N -- N -- N refs/heads/fix/issue-41795-open-pr (d1016aa6791)
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/dependabot.yml | 300 -
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/codeql-analysis.yml | 4 +-
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
RESOURCES/INTHEWILD.yaml | 39 +-
UPDATING.md | 139 +-
docs/admin_docs/configuration/alerts-reports.mdx | 6 +-
docs/admin_docs/configuration/aws-iam.mdx | 20 +-
docs/admin_docs/configuration/cache.mdx | 12 +-
.../configuration/networking-settings.mdx | 6 +-
docs/admin_docs/security/securing_superset.mdx | 2 +-
docs/admin_docs/security/security.mdx | 155 +-
.../components/design-system/metadatabar.mdx | 16 +-
docs/developer_docs/contributing/howtos.md | 11 +
.../guidelines/backend-style-guidelines.md | 10 +-
.../guidelines/backend/dao-style-guidelines.md | 8 +-
docs/developer_docs/testing/backend-testing.md | 2 +-
docs/docs/faq.mdx | 17 +
.../creating-your-first-dashboard.mdx | 8 +-
docs/package.json | 7 +-
docs/src/components/databases/types.ts | 2 +-
docs/src/pages/inTheWild.tsx | 3 +-
docs/src/pages/index.tsx | 3 +-
docs/src/types/yaml.d.ts | 4 +-
docs/src/webpack.extend.ts | 4 +-
docs/static/feature-flags.json | 21 +-
docs/static/img/logos/camptocamp.svg | Bin 0 -> 14528 bytes
docs/static/img/logos/craig.png | Bin 0 -> 40696 bytes
docs/static/img/logos/geo2france.png | Bin 0 -> 4687 bytes
docs/static/img/logos/geobretagne.svg | Bin 0 -> 7203 bytes
docs/static/img/logos/georchestra.svg | Bin 0 -> 12615 bytes
docs/static/img/logos/jDev.svg | Bin 0 -> 26135 bytes
docs/static/img/logos/mel.jpg | Bin 0 -> 27292 bytes
docs/static/img/logos/pi-Geosolutions.png | Bin 0 -> 22032 bytes
.../img/logos/rennes-ville-metropole_noir.svg | Bin 0 -> 4242 bytes
docs/tsconfig.json | 1 -
docs/yarn.lock | 7726 ++++++-----
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 59 +-
helm/superset/UPGRADING.md | 161 +
helm/superset/templates/NOTES.txt | 6 +
helm/superset/templates/_helpers.tpl | 641 +-
helm/superset/templates/deployment-beat.yaml | 10 +-
helm/superset/templates/deployment-flower.yaml | 5 +-
helm/superset/templates/deployment-worker.yaml | 10 +-
helm/superset/templates/deployment-ws.yaml | 3 +
helm/superset/templates/deployment.yaml | 12 +-
helm/superset/templates/secret-env.yaml | 36 +-
.../superset/templates/secret-superset-config.yaml | 4 +-
helm/superset/tests/checksum_test.yaml | 132 +
helm/superset/tests/config_test.yaml | 94 +
helm/superset/tests/deprecation_test.yaml | 28 +
helm/superset/tests/initscript_test.yaml | 63 +
helm/superset/tests/secret_env_test.yaml | 71 +
helm/superset/tests/serviceaccount_test.yaml | 28 +
helm/superset/tests/values_defaults_test.yaml | 30 +
helm/superset/values.schema.json | 140 +
helm/superset/values.yaml | 148 +-
pyproject.toml | 29 +-
requirements/base.in | 2 +-
requirements/base.txt | 16 +-
requirements/development.txt | 26 +-
scripts/translations/apply_do_not_translate.py | 128 +
scripts/translations/babel_update.sh | 8 +
scripts/translations/backfill_po.py | 63 +
superset-core/pyproject.toml | 2 +-
superset-core/src/superset_core/common/daos.py | 54 +-
superset-core/src/superset_core/common/models.py | 62 +
.../src/superset_core/semantic_layers/types.py | 2 +-
superset-embedded-sdk/package-lock.json | 1410 +-
superset-embedded-sdk/package.json | 8 +-
.../cypress-base/cypress/e2e/explore/utils.ts | 6 +-
.../cypress-base/cypress/fixtures/charts.json | 4 -
superset-frontend/jest.config.js | 5 +-
superset-frontend/package-lock.json | 3291 ++---
superset-frontend/package.json | 32 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/src/theme/types.ts | 10 +
.../superset-core/src/translation/types/index.ts | 19 +-
.../superset-ui-chart-controls/src/fixtures.ts | 2 +-
.../src/operators/renameOperator.ts | 2 +-
.../src/operators/utils/timeOffset.ts | 6 +-
.../superset-ui-chart-controls/src/types.ts | 14 +-
.../test/operators/renameOperator.test.ts | 24 +
.../test/operators/utils/timeOffset.test.ts | 23 +
.../packages/superset-ui-core/package.json | 16 +-
.../src/color/CategoricalColorScale.ts | 20 +-
.../AsyncAceEditor/AsyncAceEditor.stories.tsx | 8 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 193 +
.../AsyncAceEditor/emojiWidthPatch.test.ts | 219 +
.../components/AsyncAceEditor/emojiWidthPatch.ts | 283 +
.../src/components/AsyncAceEditor/index.tsx | 81 +-
.../src/components/Button/types.ts | 7 +-
.../src/components/CodeEditor/index.tsx | 8 +-
.../src/components/DropdownButton/index.tsx | 20 +-
.../src/components/DynamicEditableTitle/index.tsx | 20 +-
.../src/components/EmptyState/index.tsx | 8 +-
.../superset-ui-core/src/components/Form/types.ts | 3 +-
.../src/components/Icons/AntdEnhanced.tsx | 2 +
.../src/components/Icons/index.tsx | 3 +-
.../superset-ui-core/src/components/Label/types.ts | 7 +-
.../src/components/Loading/types.ts | 5 +-
.../src/components/MetadataBar/ContentConfig.tsx | 6 +-
.../src/components/MetadataBar/ContentType.ts | 17 +-
.../components/MetadataBar/MetadataBar.stories.tsx | 22 +-
.../components/MetadataBar/MetadataBar.test.tsx | 12 +-
.../MetadataBar/MetadataBarOverview.stories.tsx | 4 +-
.../src/components/MetadataBar/constants.ts | 2 +-
.../src/components/Modal/Modal.tsx | 78 +-
.../components/ModalTrigger/ModalTrigger.test.tsx | 42 +-
.../src/components/ModalTrigger/index.tsx | 20 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 5 +-
.../src/components/Select/AsyncSelect.tsx | 5 +-
.../src/components/Select/Select.stories.tsx | 5 +-
.../src/components/Select/Select.tsx | 5 +-
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 14 +-
.../src/components/ThemedAgGridReact/index.tsx | 1 +
.../superset-ui-core/src/connection/types.ts | 11 +-
.../superset-ui-core/src/currency-format/types.ts | 8 +-
.../superset-ui-core/src/models/Registry.ts | 4 +-
.../src/query/api/v1/handleError.ts | 3 +-
.../src/query/getClientErrorObject.ts | 10 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 15 +-
.../superset-ui-core/src/query/types/Filter.ts | 4 +-
.../superset-ui-core/src/query/types/Metric.ts | 7 +-
.../src/query/types/PostProcessing.ts | 30 +-
.../src/query/types/QueryFormData.ts | 3 +-
.../superset-ui-core/src/time-comparison/types.ts | 9 +-
.../superset-ui-core/src/utils/featureFlags.ts | 3 +-
.../superset-ui-core/src/utils/html.test.tsx | 17 +
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../test/color/CategoricalColorScale.test.ts | 84 +-
.../playwright/helpers/api/dataset.ts | 6 +-
.../playwright/tests/dashboard/theme.spec.ts | 35 +-
.../src/AgGridTable/index.tsx | 32 +-
.../src/AgGridTableChart.tsx | 8 +
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 3 +-
.../src/renderers/NumericCellRenderer.tsx | 15 +-
.../src/transformProps.ts | 37 +-
.../plugin-chart-ag-grid-table/src/types.ts | 8 +-
.../src/utils/copyCellValue.ts | 156 +
.../src/utils/getCellStyle.ts | 8 +-
.../src/utils/getColumnStateSignature.ts | 51 +
.../src/utils/getRowBasicColorFormatter.ts | 50 +
.../src/utils/isEqualColumns.ts | 25 +-
.../src/utils/reconcileColumnState.test.ts | 17 +
.../src/utils/useColDefs.ts | 1 +
.../test/AgGridTableChart.test.tsx | 66 +-
.../test/cellSelectionWiring.test.tsx | 99 +
.../test/controlPanel.test.tsx | 3 +-
.../test/transformProps.test.ts | 266 +
.../test/utils/copyCellValue.test.ts | 203 +
.../test/utils/getColumnStateSignature.test.ts | 82 +
.../test/utils/getRowBasicColorFormatter.test.ts | 81 +
.../plugin-chart-echarts/src/BigNumber/utils.ts | 2 +-
.../plugin-chart-echarts/src/BoxPlot/types.ts | 6 +-
.../src/Bubble/transformProps.ts | 11 +-
.../src/Radar/controlPanel.tsx | 3 +-
.../src/Timeseries/transformers.ts | 3 +-
.../plugin-chart-echarts/src/Waterfall/types.ts | 6 +-
.../plugin-chart-echarts/src/utils/legendLayout.ts | 6 +-
.../src/utils/safeEChartOptionsParser.ts | 8 +-
.../plugin-chart-echarts/src/utils/series.ts | 6 +-
.../test/BigNumber/transformProps.test.ts | 28 +-
.../test/Bubble/transformProps.test.ts | 72 +
.../test/Timeseries/transformProps.test.ts | 55 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 68 +-
.../src/plugin/controls/shared.ts | 3 +-
.../src/PivotTableChart.tsx | 84 +-
.../src/react-pivottable/utilities.ts | 3 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 4 +-
.../test/PivotTableChart.test.tsx | 370 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 2 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 81 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 5 +-
.../plugin-chart-table/src/controlPanel.tsx | 3 +-
.../plugin-chart-table/test/TableChart.test.tsx | 49 +
.../plugin-chart-table/test/controlPanel.test.tsx | 3 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/components/Legend.test.tsx | 57 +-
.../src/layers/Path/buildQuery.ts | 3 +-
.../src/layers/Polygon/transformProps.test.ts | 36 +
.../src/layers/Polygon/transformProps.ts | 16 +-
.../src/utilities/Shared_DeckGL.tsx | 3 +-
.../src/utilities/tooltipUtils.test.tsx | 90 +
.../src/utilities/tooltipUtils.tsx | 50 +-
.../src/utils/crossFiltersDataMask.ts | 12 +-
superset-frontend/spec/fixtures/mockCharts.ts | 7 -
.../spec/fixtures/mockDashboardInfo.js | 3 +-
.../spec/fixtures/mockDashboardState.js | 3 +-
superset-frontend/spec/fixtures/mockDatasource.ts | 4 +-
superset-frontend/spec/fixtures/mockReportState.js | 1 -
.../spec/fixtures/mockSliceEntities.js | 23 +-
.../src/SqlLab/actions/sqlLab.test.ts | 83 +-
superset-frontend/src/SqlLab/actions/sqlLab.ts | 26 +-
.../src/SqlLab/components/QueryTable/index.tsx | 26 +-
.../src/SqlLab/components/QueryTable/styles.ts | 1 +
.../buildResultsGridThemeOverrides.test.ts | 94 +
.../ResultSet/buildResultsGridThemeOverrides.ts | 46 +
.../src/SqlLab/components/ResultSet/index.tsx | 41 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 104 +-
.../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 41 +
.../src/SqlLab/components/SaveQuery/index.tsx | 12 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 4 +-
.../SqlLab/components/TabbedSqlEditors/index.tsx | 36 +-
.../TableExploreTree/TreeNodeRenderer.tsx | 6 +-
superset-frontend/src/SqlLab/fixtures.ts | 3 +-
.../middlewares/persistSqlLabStateEnhancer.ts | 5 +-
superset-frontend/src/SqlLab/reducers/sqlLab.ts | 3 +-
superset-frontend/src/SqlLab/types.ts | 10 +-
.../TimeGrainPreFilter.integration.test.tsx | 6 +-
.../src/components/AuditInfo/index.tsx | 6 +-
.../src/components/AuditInfo/types.ts | 4 +-
.../components/Chart/ChartErrorMessage.test.tsx | 14 +-
.../src/components/Chart/ChartErrorMessage.tsx | 8 +-
.../components/Chart/DrillBy/DrillByChart.test.tsx | 7 +-
.../components/Chart/DrillBy/DrillByModal.test.tsx | 7 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 2 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 7 +-
superset-frontend/src/components/Chart/types.ts | 6 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../DatasourceModal/DatasourceModal.test.tsx | 8 +
.../Datasource/DatasourceModal/index.tsx | 7 +-
.../Datasource/FoldersEditor/TreeItem.styles.ts | 24 +-
.../Datasource/FoldersEditor/treeUtils.ts | 4 +-
.../DatasourceEditor/DatasourceEditor.tsx | 106 +-
.../DatasetUsageTab/DatasetUsageTab.test.tsx | 39 +-
.../components/DatasetUsageTab/index.tsx | 28 +-
.../tests/DatasourceEditor.test.utils.tsx | 2 +-
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 12 +-
.../ErrorMessage/DatabaseErrorMessage.tsx | 18 +-
.../ErrorMessage/OAuth2RedirectMessage.test.tsx | 60 +-
.../ErrorMessage/OAuth2RedirectMessage.tsx | 19 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 12 +-
.../ErrorMessage/TimeoutErrorMessage.tsx | 18 +-
.../src/components/FacePile/FacePile.stories.tsx | 60 -
.../src/components/FacePile/FacePile.test.tsx | 173 -
.../src/components/FacePile/index.tsx | 64 -
.../src/components/FacePile/utils.tsx | 49 -
.../FilterableTable/FilterableTable.test.tsx | 55 +-
.../src/components/FilterableTable/index.tsx | 2 +
.../src/components/FilterableTable/types.ts | 3 +
.../src/components/GridTable/Header.test.tsx | 6 +-
.../src/components/GridTable/index.tsx | 10 +-
.../src/components/GridTable/types.ts | 12 +
.../src/components/ImportModal/ErrorAlert.tsx | 2 +-
.../components/ImportModal/ImportErrorAlert.tsx | 2 +-
.../ListView/Filters/CompactSelectPanel.tsx | 6 +-
superset-frontend/src/components/ListView/types.ts | 1 +
.../TableSelector/TableSelector.test.tsx | 40 +-
.../src/components/TableSelector/index.tsx | 6 +
.../src/components/TagsList/TagsList.test.tsx | 4 +-
superset-frontend/src/components/index.ts | 1 -
.../src/dashboard/actions/dashboardLayout.ts | 2 +-
.../src/dashboard/actions/dashboardState.test.ts | 44 +
.../src/dashboard/actions/dashboardState.ts | 23 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../src/dashboard/actions/sliceEntities.ts | 6 +-
.../components/AddSliceCard/AddSliceCard.tsx | 3 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 14 +-
.../src/dashboard/components/Dashboard.tsx | 4 +-
.../DashboardBuilder/DashboardBuilder.tsx | 19 +-
.../DashboardBuilder/DashboardContainer.test.tsx | 3 +-
.../dashboard/components/DashboardGrid.test.tsx | 36 +
.../src/dashboard/components/DashboardGrid.tsx | 59 +-
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/index.tsx | 17 +-
.../components/Header/useDashboardMetadataBar.tsx | 17 +-
.../Header/useHeaderAutoRefresh.test.tsx | 154 +
.../components/Header/useHeaderAutoRefresh.ts | 31 +-
.../PropertiesModal/PropertiesModal.test.tsx | 249 +-
.../PropertiesModal/hooks/useAccessOptions.ts | 76 -
.../dashboard/components/PropertiesModal/index.tsx | 77 +-
.../sections/AccessSection.stories.tsx | 152 +
.../sections/AccessSection.test.tsx | 72 +-
.../PropertiesModal/sections/AccessSection.tsx | 119 +-
.../components/PropertiesModal/utils.test.ts | 90 -
.../dashboard/components/PropertiesModal/utils.ts | 81 -
.../src/dashboard/components/SaveModal.tsx | 10 +-
.../src/dashboard/components/SliceAdder.test.tsx | 2 +-
.../src/dashboard/components/SliceAdder.tsx | 11 +-
.../components/SliceHeader/SliceHeader.test.tsx | 2 +-
.../SliceHeaderControls.subdirectory.test.tsx | 2 +-
.../SliceHeaderControls.test.tsx | 2 +-
.../src/dashboard/components/dnd/DragHandle.tsx | 10 +-
.../components/gridComponents/Chart/Chart.test.tsx | 1 -
.../components/gridComponents/Chart/Chart.tsx | 4 +-
.../components/gridComponents/Header/Header.tsx | 7 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 52 +
.../FilterBar/ActionButtons/index.tsx | 60 +-
.../FilterBar/CrossFilters/CrossFilter.tsx | 20 +-
.../FilterBar/CrossFilters/CrossFilterTag.tsx | 10 +-
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 8 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 110 +
.../FilterBarSettings/FilterBarSettings.test.tsx | 2 +-
.../FilterControls.overflow.test.tsx | 3 +-
.../FilterBar/FilterControls/FilterValue.tsx | 9 +-
.../FilterBar/UrlFilters/UrlFilterTag.tsx | 8 +-
.../FiltersConfigForm/ColumnSelect.tsx | 92 +-
.../FiltersConfigForm/DatasetSelect.test.tsx | 45 +
.../FiltersConfigForm/DatasetSelect.tsx | 102 +-
.../FiltersConfigForm/DependencyList.tsx | 6 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 206 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 4 +
.../FiltersConfigForm/utils.test.ts | 76 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 91 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 15 +
.../hooks/useItemStateManager.ts | 3 +-
.../FiltersConfigModal/hooks/useModalSaveLogic.ts | 3 +-
.../transformers/buildTarget.test.ts | 74 +
.../FiltersConfigModal/transformers/buildTarget.ts | 61 +
.../transformers/customizationTransformer.ts | 21 +-
.../transformers/filterTransformer.ts | 20 +-
.../nativeFilters/FiltersConfigModal/types.ts | 3 +
.../nativeFilters/FiltersConfigModal/utils.ts | 10 +-
.../dashboard/components/nativeFilters/state.ts | 11 +-
.../dashboard/components/nativeFilters/utils.ts | 6 +-
.../components/resizable/ResizableContainer.tsx | 155 +-
.../dashboard/containers/DashboardPage.test.tsx | 3 +-
.../src/dashboard/containers/DashboardPage.tsx | 3 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 24 +-
.../src/dashboard/reducers/dashboardInfo.ts | 4 +-
.../src/dashboard/reducers/nativeFilters.ts | 5 +-
superset-frontend/src/dashboard/types.ts | 19 +-
.../util/charts/getFormDataWithExtraFilters.ts | 17 +-
superset-frontend/src/dashboard/util/constants.ts | 1 +
.../util/getFormDataWithExtraFilters.test.ts | 43 +
.../src/dashboard/util/getRelatedCharts.test.ts | 65 +-
.../src/dashboard/util/getRelatedCharts.ts | 17 +-
.../src/dashboard/util/permissionUtils.test.ts | 190 +-
.../src/dashboard/util/permissionUtils.ts | 25 +-
.../src/dashboard/util/risonFilters.ts | 6 +-
superset-frontend/src/dataMask/reducer.ts | 2 +-
.../src/explore/actions/hydrateExplore.ts | 13 +-
.../src/explore/actions/saveModalActions.test.ts | 36 +-
.../src/explore/actions/saveModalActions.ts | 8 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +-
.../components/ExploreChartHeader/index.tsx | 12 +-
.../ExploreChartHeader/useExploreMetadataBar.tsx | 4 +-
.../ExploreContainer/ExploreDndContext.tsx | 61 +
.../ExploreViewContainer.test.tsx | 185 +-
.../PropertiesModal/PropertiesModal.test.tsx | 64 +-
.../explore/components/PropertiesModal/index.tsx | 178 +-
.../src/explore/components/SaveModal.test.tsx | 48 +-
.../src/explore/components/SaveModal.tsx | 33 +-
.../CollectionControl/CollectionControl.test.tsx | 8 +
.../controls/CollectionControl/index.tsx | 35 +-
.../controls/ColumnConfigControl/types.ts | 4 +-
.../DatasourceControl/DatasourceControl.test.tsx | 12 +-
.../controls/DatasourceControl/index.tsx | 12 +-
.../components/controls/DateFilterControl/types.ts | 22 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 3 +-
.../index.tsx | 5 +-
.../LayerConfigsPopoverContent.tsx | 3 +-
.../SelectAsyncControl/SelectAsyncControl.test.tsx | 6 +-
.../explore/components/controls/SelectControl.tsx | 3 +-
.../components/controls/TextAreaControl.tsx | 16 +-
.../components/controls/TextControl/index.tsx | 4 +-
.../components/controls/VerticalRadioControl.tsx | 8 +-
.../components/controls/ViewportControl.tsx | 1 +
.../components/controls/VizTypeControl/VizTile.tsx | 50 +-
.../useExploreAdditionalActionsMenu/index.tsx | 3 +-
.../explore/controlUtils/standardizedFormData.ts | 3 +-
superset-frontend/src/explore/fixtures.tsx | 2 +-
.../src/explore/reducers/exploreReducer.ts | 30 +-
superset-frontend/src/explore/types.ts | 9 +-
.../src/features/alerts/AlertReportModal.test.tsx | 151 +-
.../src/features/alerts/AlertReportModal.tsx | 171 +-
.../alerts/components/NotificationMethod.test.tsx | 233 +
.../alerts/components/NotificationMethod.tsx | 248 +-
superset-frontend/src/features/alerts/types.ts | 4 +-
.../AllEntitiesTable.subdirectory.test.tsx | 6 +-
.../features/allEntities/AllEntitiesTable.test.tsx | 10 +-
.../src/features/allEntities/AllEntitiesTable.tsx | 15 +-
.../src/features/charts/ChartCard.tsx | 5 +-
.../src/features/cssTemplates/types.ts | 6 +-
.../src/features/dashboards/DashboardCard.test.tsx | 15 +-
.../src/features/dashboards/DashboardCard.tsx | 5 +-
.../databases/DatabaseModal/ExtraOptions.test.tsx | 68 +
.../databases/DatabaseModal/ExtraOptions.tsx | 36 +-
.../databases/DatabaseModal/ModalHeader.test.tsx | 58 +
.../databases/DatabaseModal/ModalHeader.tsx | 21 +-
.../databases/DatabaseModal/index.test.tsx | 75 +-
.../src/features/databases/DatabaseModal/index.tsx | 16 +-
.../features/databases/UploadDataModel/index.tsx | 11 +-
superset-frontend/src/features/databases/types.ts | 3 +-
.../DatasetPanel.subdirectory.test.tsx | 2 +-
.../datasets/AddDataset/DatasetPanel/fixtures.ts | 2 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 4 +-
.../src/features/datasets/AddDataset/types.tsx | 3 +-
.../features/datasets/DatasetSelectLabel/index.tsx | 24 +-
.../datasets/DuplicateDatasetModal.test.tsx | 5 +-
.../datasets/hooks/useDatasetLists.test.ts | 10 +-
.../src/features/datasets/hooks/useDatasetLists.ts | 10 +-
.../DatasetMetadataBar.skipped-stories.tsx | 17 +-
.../metadataBar/useDatasetMetadataBar.test.tsx | 18 +-
.../datasets/metadataBar/useDatasetMetadataBar.tsx | 13 +-
superset-frontend/src/features/datasets/types.ts | 4 +-
.../src/features/home/ActivityTable.tsx | 6 +-
superset-frontend/src/features/home/RightMenu.tsx | 12 +-
.../OwnerSelectLabel/OwnerSelectLabel.test.tsx | 38 -
.../HeaderReportDropdown/index.test.tsx | 2 +-
.../reports/ReportModal/ReportModal.test.tsx | 109 +-
.../src/features/reports/ReportModal/index.tsx | 12 +-
.../features/reports/ReportModal/reducer.test.ts | 2 +-
superset-frontend/src/features/reports/types.ts | 2 +-
.../features/rls/RowLevelSecurityModal.test.tsx | 55 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 217 +-
superset-frontend/src/features/rls/types.ts | 15 +-
.../src/features/semanticLayers/label.ts | 12 +
.../SubjectPicker/SubjectPicker.stories.tsx | 169 +
.../subjects/SubjectPicker/SubjectPicker.test.tsx | 293 +
.../src/features/subjects/SubjectPicker/index.tsx | 139 +
.../src/features/subjects/SubjectPicker/utils.ts | 200 +
.../subjects/SubjectPile/SubjectPile.stories.tsx | 74 +
.../subjects/SubjectPile/SubjectPile.test.tsx | 103 +
.../src/features/subjects/SubjectPile/index.tsx | 142 +
.../SubjectSelectLabel.stories.tsx | 115 +
.../SubjectSelectLabel}/index.tsx | 55 +-
superset-frontend/src/features/themes/types.ts | 6 +-
.../TimeGrainPreFilter.integration.test.tsx | 4 +-
superset-frontend/src/hooks/apiResources/charts.ts | 16 +-
.../src/hooks/apiResources/dashboards.test.ts | 2 +-
.../src/hooks/apiResources/dashboards.ts | 7 +-
.../src/hooks/apiResources/queries.ts | 2 +-
.../src/middleware/loggerMiddleware.ts | 6 +-
.../pages/AlertReportList/AlertReportList.test.tsx | 66 +-
.../src/pages/AlertReportList/index.tsx | 51 +-
superset-frontend/src/pages/AllEntities/index.tsx | 14 +-
superset-frontend/src/pages/Chart/index.tsx | 11 +-
.../pages/ChartList/ChartList.listview.test.tsx | 12 +-
.../src/pages/ChartList/ChartList.test.tsx | 14 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 48 +-
superset-frontend/src/pages/ChartList/index.tsx | 71 +-
.../DashboardList/DashboardList.behavior.test.tsx | 10 +-
.../DashboardList/DashboardList.listview.test.tsx | 2 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 18 +-
.../DashboardList/DashboardList.testHelpers.tsx | 42 +-
.../src/pages/DashboardList/index.tsx | 96 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 4 +-
.../DatasetList/DatasetList.listview.test.tsx | 60 +-
.../DatasetList/DatasetList.permissions.test.tsx | 3 +-
.../src/pages/DatasetList/DatasetList.test.tsx | 13 +-
.../pages/DatasetList/DatasetList.testHelpers.tsx | 40 +-
superset-frontend/src/pages/DatasetList/index.tsx | 48 +-
.../FileHandler/FileHandler.subdirectory.test.tsx | 4 +-
.../src/pages/FileHandler/index.test.tsx | 4 +-
superset-frontend/src/pages/Home/index.tsx | 8 +-
.../src/pages/QueryHistoryList/index.tsx | 4 +-
.../RowLevelSecurityList.test.tsx | 82 +-
.../src/pages/RowLevelSecurityList/index.tsx | 45 +-
.../src/pages/SavedQueryList/index.tsx | 6 +-
superset-frontend/src/pages/Tags/index.tsx | 21 +-
superset-frontend/src/pages/TaskList/index.tsx | 12 +-
superset-frontend/src/setup/setupApp.ts | 3 +-
superset-frontend/src/theme/ThemeController.ts | 28 +-
.../src/theme/tests/ThemeController.test.ts | 95 +
.../src/theme/utils/antdTokenNames.ts | 7 +
superset-frontend/src/types/Chart.ts | 8 +-
superset-frontend/src/types/Dashboard.ts | 11 +-
superset-frontend/src/types/Dataset.ts | 4 +-
.../FacePile/types.ts => types/Subject.ts} | 22 +-
superset-frontend/src/types/TaggedObject.ts | 4 +-
superset-frontend/src/types/{Owner.ts => User.ts} | 5 +-
superset-frontend/src/types/bootstrapTypes.ts | 5 +
superset-frontend/src/utils/downloadAsImage.tsx | 1 -
.../{getOwnerName.test.ts => getUserName.test.ts} | 18 +-
.../src/utils/{getOwnerName.ts => getUserName.ts} | 10 +-
superset-frontend/src/views/CRUD/hooks.ts | 9 +-
superset-frontend/src/views/CRUD/types.ts | 21 +-
superset-frontend/src/views/CRUD/utils.test.tsx | 12 +-
superset-frontend/src/views/CRUD/utils.tsx | 102 +-
.../{eslint.config.js => eslint.config.mjs} | 17 +-
superset-websocket/package-lock.json | 355 +-
superset-websocket/package.json | 20 +-
superset-websocket/src/config.ts | 7 +-
superset-websocket/src/index.ts | 8 +-
superset-websocket/tsconfig.json | 5 +-
superset/charts/api.py | 249 +-
superset/charts/data/api.py | 10 +
superset/charts/data/dashboard_filter_context.py | 2 +-
superset/charts/filters.py | 115 +-
superset/charts/schemas.py | 23 +-
superset/cli/sync_subjects.py | 108 +
superset/cli/thumbnails.py | 30 +-
superset/commands/base.py | 45 +-
superset/commands/chart/create.py | 14 +-
superset/commands/chart/delete.py | 4 +-
superset/commands/chart/importers/v1/utils.py | 180 +-
superset/commands/chart/update.py | 36 +-
superset/commands/dashboard/copy.py | 19 +-
superset/commands/dashboard/create.py | 21 +-
superset/commands/dashboard/delete.py | 6 +-
superset/commands/dashboard/export.py | 10 -
.../commands/dashboard/importers/v1/__init__.py | 62 +-
superset/commands/dashboard/importers/v1/utils.py | 65 +-
superset/commands/dashboard/update.py | 90 +-
superset/commands/database/delete.py | 40 +-
superset/commands/database/exceptions.py | 37 +
superset/commands/database/sync_permissions.py | 37 +-
superset/commands/database/uploaders/base.py | 40 +-
superset/commands/dataset/columns/delete.py | 4 +-
superset/commands/dataset/create.py | 21 +-
superset/commands/dataset/delete.py | 4 +-
superset/commands/dataset/duplicate.py | 98 +-
superset/commands/dataset/exceptions.py | 48 +-
superset/commands/dataset/importers/v1/utils.py | 252 +-
superset/commands/dataset/metrics/delete.py | 4 +-
superset/commands/dataset/refresh.py | 4 +-
superset/commands/dataset/restore.py | 60 +
superset/commands/dataset/update.py | 15 +-
superset/commands/exceptions.py | 14 -
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 162 +-
superset/commands/importers/v1/__init__.py | 13 +
superset/commands/importers/v1/assets.py | 44 +-
superset/commands/importers/v1/utils.py | 36 +-
superset/commands/report/create.py | 18 +-
superset/commands/report/delete.py | 4 +-
superset/commands/report/execute.py | 155 +-
superset/commands/report/execute_now.py | 2 +-
superset/commands/report/update.py | 22 +-
superset/commands/restore.py | 19 +-
superset/commands/security/create.py | 25 +-
superset/commands/security/reset.py | 14 +
superset/commands/security/update.py | 33 +-
superset/commands/semantic_layer/delete.py | 4 +-
superset/commands/semantic_layer/update.py | 2 +-
superset/commands/tag/export.py | 2 +-
superset/commands/tag/utils.py | 8 +-
superset/commands/tasks/update.py | 2 +-
superset/commands/utils.py | 193 +-
superset/common/tags.py | 20 +-
superset/config.py | 159 +-
superset/connectors/sqla/models.py | 122 +-
superset/constants.py | 2 +
superset/core/api/core_api_injection.py | 16 +-
superset/css_templates/api.py | 4 +-
superset/daos/chart.py | 42 +-
superset/daos/dashboard.py | 66 +-
superset/daos/dataset.py | 434 +-
superset/daos/datasource.py | 13 +-
superset/daos/group.py | 65 +
superset/daos/report.py | 43 +-
superset/daos/role.py | 43 +-
superset/daos/semantic_layer.py | 34 +
superset/daos/{role.py => subject.py} | 16 +-
superset/daos/tag.py | 6 +-
superset/daos/user.py | 40 +
superset/daos/version.py | 69 +
superset/dashboards/api.py | 269 +-
superset/dashboards/filters.py | 185 +-
superset/dashboards/schemas.py | 47 +-
superset/databases/api.py | 54 +-
superset/databases/schemas.py | 70 +-
superset/datasets/api.py | 422 +-
superset/datasets/filters.py | 29 +
superset/datasets/schemas.py | 7 +-
superset/datasource/schemas.py | 19 +-
superset/db_engine_specs/clickhouse.py | 7 +-
superset/db_engine_specs/databend.py | 76 +-
superset/examples/birth_names.py | 42 +-
superset/explorables/base.py | 2 +-
superset/explore/schemas.py | 12 +-
superset/explore/utils.py | 2 +-
superset/extensions/__init__.py | 25 +
superset/initialization/__init__.py | 237 +
superset/marshmallow_compatibility.py | 14 +-
superset/mcp_service/ARCHITECTURE.md | 2 +-
superset/mcp_service/CLAUDE.md | 22 +-
superset/mcp_service/SECURITY.md | 52 +-
superset/mcp_service/app.py | 79 +-
superset/mcp_service/auth.py | 170 +-
superset/mcp_service/chart/chart_utils.py | 112 +-
superset/mcp_service/chart/plugins/big_number.py | 2 +-
superset/mcp_service/chart/schemas.py | 197 +-
superset/mcp_service/chart/tool/__init__.py | 2 +
superset/mcp_service/chart/tool/delete_chart.py | 186 +
superset/mcp_service/chart/tool/generate_chart.py | 9 +-
superset/mcp_service/chart/tool/get_chart_data.py | 62 +-
superset/mcp_service/chart/tool/get_chart_info.py | 12 +-
.../mcp_service/chart/tool/get_chart_preview.py | 19 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 10 +
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/common/cache_schemas.py | 24 +-
superset/mcp_service/common/schema_discovery.py | 12 +-
superset/mcp_service/composite_token_verifier.py | 42 +-
superset/mcp_service/dashboard/schemas.py | 91 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 16 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 235 +
.../dashboard/tool/generate_dashboard.py | 16 +-
.../dashboard/tool/get_dashboard_info.py | 6 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../dashboard/tool/manage_native_filters.py | 2 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 4 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 4 +-
superset/mcp_service/dataset/schemas.py | 29 +-
.../mcp_service/dataset/tool/create_dataset.py | 74 +-
.../dataset/tool/create_virtual_dataset.py | 15 +
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
superset/mcp_service/dataset/tool/query_dataset.py | 83 +-
superset/mcp_service/guest_scope.py | 72 +
superset/mcp_service/guest_token_verifier.py | 180 +
superset/mcp_service/mcp_config.py | 156 +-
superset/mcp_service/mcp_core.py | 22 +-
superset/mcp_service/privacy.py | 27 +-
superset/mcp_service/report/schemas.py | 29 +-
.../mcp_service/report/tool/get_report_info.py | 2 +-
superset/mcp_service/report/tool/list_reports.py | 4 +-
superset/mcp_service/rls/schemas.py | 28 +-
.../mcp_service/rls/tool/get_rls_filter_info.py | 12 +-
superset/mcp_service/rls/tool/list_rls_filters.py | 30 +-
superset/mcp_service/role/schemas.py | 53 +-
superset/mcp_service/role/tool/get_role_info.py | 4 +
superset/mcp_service/role/tool/list_roles.py | 4 +
.../mcp_service/semantic_layer}/__init__.py | 0
superset/mcp_service/semantic_layer/schemas.py | 302 +
.../semantic_layer/tool/__init__.py} | 21 +-
.../tool/get_compatible_dimensions.py | 250 +
.../semantic_layer/tool/get_compatible_metrics.py | 254 +
.../mcp_service/semantic_layer/tool/get_table.py | 529 +
.../semantic_layer/tool/list_metrics.py | 338 +
superset/mcp_service/server.py | 1 +
superset/mcp_service/system/schemas.py | 26 +
superset/mcp_service/tag/schemas.py | 2 +-
superset/mcp_service/tag/tool/get_tag_info.py | 2 +-
superset/mcp_service/tag/tool/list_tags.py | 2 +-
.../role.py => mcp_service/theme/__init__.py} | 15 +-
superset/mcp_service/{tag => theme}/schemas.py | 158 +-
.../role.py => mcp_service/theme/tool/__init__.py} | 18 +-
superset/mcp_service/theme/tool/create_theme.py | 159 +
.../tool/get_theme_info.py} | 65 +-
.../list_tags.py => theme/tool/list_themes.py} | 104 +-
superset/mcp_service/user/schemas.py | 45 +-
superset/mcp_service/user/tool/get_user_info.py | 4 +
superset/mcp_service/user/tool/list_users.py | 4 +
superset/mcp_service/utils/query_utils.py | 57 +
superset/mcp_service/utils/response_utils.py | 58 +-
superset/middleware/legacy_prefix_redirect.py | 42 +-
...03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py | 944 ++
..._12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py | 58 +
...-28_19-50_56cd24c07170_add_versioning_tables.py | 574 +
...3_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py | 180 +
superset/models/dashboard.py | 96 +-
superset/models/helpers.py | 175 +-
superset/models/slice.py | 79 +-
superset/models/sql_lab.py | 27 +-
superset/queries/api.py | 13 +-
superset/queries/saved_queries/api.py | 6 +-
superset/reports/api.py | 48 +-
superset/reports/filters.py | 20 +-
superset/reports/models.py | 27 +-
superset/reports/schemas.py | 13 +-
superset/row_level_security/api.py | 48 +-
superset/row_level_security/schemas.py | 39 +-
superset/security/manager.py | 554 +-
superset/semantic_layers/api.py | 9 +-
superset/semantic_layers/mapper.py | 176 +-
superset/semantic_layers/models.py | 14 +-
superset/sql/parse.py | 29 +-
.../common => superset/subjects}/__init__.py | 0
superset/subjects/api.py | 123 +
superset/{daos/role.py => subjects/exceptions.py} | 15 +-
superset/subjects/filters.py | 263 +
superset/subjects/hooks.py | 83 +
superset/subjects/models.py | 203 +
superset/subjects/schemas.py | 51 +
superset/subjects/sync.py | 143 +
superset/{daos/role.py => subjects/types.py} | 16 +-
superset/subjects/utils.py | 169 +
superset/superset_typing.py | 4 +-
superset/tags/api.py | 30 +-
superset/tags/filters.py | 30 +-
superset/tags/models.py | 67 +-
superset/tags/schemas.py | 3 +-
superset/tasks/api.py | 9 +-
superset/tasks/cache.py | 208 +-
superset/tasks/native_filter_cache.py | 245 +
superset/tasks/types.py | 18 +-
superset/tasks/utils.py | 119 +-
superset/themes/api.py | 28 +-
superset/themes/schemas.py | 41 +-
superset/translations/ar/LC_MESSAGES/messages.po | 30 +
superset/translations/ca/LC_MESSAGES/messages.po | 410 +-
superset/translations/cs/LC_MESSAGES/messages.po | 397 +-
superset/translations/de/LC_MESSAGES/messages.po | 428 +-
superset/translations/do-not-translate.txt | 59 +
superset/translations/en/LC_MESSAGES/messages.po | 333 +-
superset/translations/es/LC_MESSAGES/messages.po | 410 +-
superset/translations/fa/LC_MESSAGES/messages.po | 396 +-
superset/translations/fi/LC_MESSAGES/messages.po | 540 +-
superset/translations/fr/LC_MESSAGES/messages.po | 4660 +++----
superset/translations/it/LC_MESSAGES/messages.po | 13038 +++++++------------
superset/translations/ja/LC_MESSAGES/messages.po | 376 +-
superset/translations/ko/LC_MESSAGES/messages.po | 30 +
superset/translations/lv/LC_MESSAGES/messages.po | 403 +-
superset/translations/messages.pot | 358 +-
superset/translations/mi/LC_MESSAGES/messages.po | 405 +-
superset/translations/nl/LC_MESSAGES/messages.po | 410 +-
superset/translations/pl/LC_MESSAGES/messages.po | 419 +-
superset/translations/pt/LC_MESSAGES/messages.po | 30 +
.../translations/pt_BR/LC_MESSAGES/messages.po | 399 +-
superset/translations/ro/LC_MESSAGES/messages.po | 2938 ++++-
superset/translations/ru/LC_MESSAGES/messages.po | 394 +-
superset/translations/sk/LC_MESSAGES/messages.po | 397 +-
superset/translations/sl/LC_MESSAGES/messages.po | 410 +-
superset/translations/sr/LC_MESSAGES/messages.po | 3570 ++---
.../translations/sr_Latn/LC_MESSAGES/messages.po | 3623 +++---
superset/translations/th/LC_MESSAGES/messages.po | 528 +-
superset/translations/tr/LC_MESSAGES/messages.po | 357 +-
superset/translations/uk/LC_MESSAGES/messages.po | 402 +-
superset/translations/zh/LC_MESSAGES/messages.po | 30 +
.../translations/zh_TW/LC_MESSAGES/messages.po | 30 +
superset/utils/core.py | 6 +-
superset/utils/csv.py | 48 +-
superset/utils/filters.py | 53 +-
.../utils/pandas_postprocessing/contribution.py | 4 +-
superset/utils/urls.py | 34 +-
.../common => superset/versioning}/__init__.py | 0
superset/versioning/api_helpers.py | 219 +
superset/versioning/baseline/__init__.py | 69 +
superset/versioning/baseline/children.py | 212 +
superset/versioning/baseline/collection.py | 153 +
superset/versioning/baseline/dirty.py | 243 +
superset/versioning/baseline/insertion.py | 150 +
superset/versioning/baseline/listener.py | 132 +
superset/versioning/baseline/shadow.py | 92 +
superset/versioning/changes/__init__.py | 76 +
superset/versioning/changes/listener.py | 433 +
superset/versioning/changes/shadow_queries.py | 323 +
superset/versioning/changes/state.py | 233 +
superset/versioning/changes/table.py | 90 +
superset/versioning/diff.py | 1111 ++
superset/versioning/etag.py | 78 +
superset/versioning/factory.py | 312 +
superset/versioning/queries.py | 518 +
superset/versioning/schemas.py | 152 +
superset/versioning/utils.py | 50 +
superset/views/base.py | 61 +-
superset/views/base_api.py | 10 +-
superset/views/core.py | 31 +-
superset/views/dashboard/mixin.py | 17 +-
superset/views/dashboard/views.py | 9 +-
superset/views/datasource/views.py | 14 +-
superset/views/filters.py | 67 +-
superset/views/sql_lab/views.py | 44 +-
superset/views/users/api.py | 4 +-
tests/integration_tests/base_api_tests.py | 402 +-
tests/integration_tests/base_tests.py | 65 +-
tests/integration_tests/charts/api_tests.py | 147 +-
tests/integration_tests/charts/commands_tests.py | 47 +-
tests/integration_tests/charts/data/api_tests.py | 4 +-
.../integration_tests/charts/soft_delete_tests.py | 34 +-
tests/integration_tests/commands_test.py | 5 +-
tests/integration_tests/core_tests.py | 17 +-
tests/integration_tests/dao/base_dao_test.py | 86 +-
tests/integration_tests/dashboard_tests.py | 8 +-
tests/integration_tests/dashboard_utils.py | 29 +-
tests/integration_tests/dashboards/api_tests.py | 315 +-
.../integration_tests/dashboards/commands_tests.py | 24 +-
tests/integration_tests/dashboards/dao_tests.py | 33 +-
.../dashboards/dashboard_test_utils.py | 22 +-
.../dashboards/security/security_dataset_tests.py | 6 +-
.../dashboards/security/security_rbac_tests.py | 533 -
.../dashboards/soft_delete_tests.py | 52 +-
.../dashboards/superset_factory_util.py | 102 +-
.../dashboards/test_theme_integration.py | 8 +-
.../dashboards/update_tabs_test.py | 33 +-
.../databases/commands/upload_test.py | 3 +-
tests/integration_tests/datasets/api_tests.py | 388 +-
tests/integration_tests/datasets/commands_tests.py | 17 +-
.../datasets/soft_delete_tests.py | 605 +
tests/integration_tests/datasource_tests.py | 23 +-
.../integration_tests/fixtures/tabbed_dashboard.py | 15 +
tests/integration_tests/import_export_tests.py | 26 +-
tests/integration_tests/insert_chart_mixin.py | 21 +-
.../queries/saved_queries/api_tests.py | 5 +-
tests/integration_tests/query_context_tests.py | 4 +
tests/integration_tests/reports/alert_tests.py | 50 +-
tests/integration_tests/reports/api_tests.py | 94 +-
tests/integration_tests/reports/commands_tests.py | 10 +-
tests/integration_tests/reports/scheduler_tests.py | 40 +-
tests/integration_tests/reports/utils.py | 43 +-
.../security/row_level_security_tests.py | 1448 +-
tests/integration_tests/security_tests.py | 322 +-
tests/integration_tests/sqla_models_tests.py | 15 +-
.../integration_tests/subjects}/__init__.py | 0
tests/integration_tests/subjects/api_tests.py | 142 +
tests/integration_tests/superset_test_config.py | 9 +-
tests/integration_tests/tagging_tests.py | 8 +-
tests/integration_tests/tags/api_tests.py | 68 +-
.../tags/mysql_compatibility_test.py | 2 +-
.../integration_tests/versioning}/__init__.py | 0
.../versioning/capture_disabled_tests.py | 171 +
tests/integration_tests/versioning/conftest.py | 94 +
.../versioning/snapshot_projection_tests.py | 70 +
.../versioning/transaction_correctness_tests.py | 224 +
.../versioning/versions_api_tests.py | 458 +
.../charts/commands/importers/v1/import_test.py | 14 +-
tests/unit_tests/charts/test_filters.py | 180 +
tests/unit_tests/cli/thumbnails_test.py | 79 +
tests/unit_tests/commands/chart/restore_test.py | 4 +-
.../commands/chart/test_access_checks.py | 46 +-
tests/unit_tests/commands/chart/update_test.py | 78 +-
tests/unit_tests/commands/dashboard/create_test.py | 68 +-
tests/unit_tests/commands/dashboard/export_test.py | 57 +-
.../unit_tests/commands/dashboard/restore_test.py | 10 +-
.../commands/databases/sync_permissions_test.py | 46 +
.../commands/databases/upload_command_test.py | 93 +
tests/unit_tests/commands/dataset/restore_test.py | 181 +
tests/unit_tests/commands/dataset/test_create.py | 85 +-
.../unit_tests/commands/dataset/test_duplicate.py | 480 +-
tests/unit_tests/commands/dataset/update_test.py | 35 +-
tests/unit_tests/commands/report/create_test.py | 2 +-
tests/unit_tests/commands/report/execute_test.py | 327 +-
.../unit_tests/commands/report/test_execute_now.py | 12 +-
tests/unit_tests/commands/report/update_test.py | 18 +-
tests/unit_tests/commands/security/rls_test.py | 93 +-
.../commands/semantic_layer/delete_test.py | 8 +-
.../commands/semantic_layer/update_test.py | 4 +-
.../commands/test_base_restore_command.py | 40 +-
tests/unit_tests/commands/test_utils.py | 138 +-
tests/unit_tests/common/test_time_shifts.py | 54 +
tests/unit_tests/connectors/sqla/models_test.py | 31 -
tests/unit_tests/connectors/sqla/utils_test.py | 74 +
tests/unit_tests/dao/dataset_test.py | 247 +
tests/unit_tests/dao/datasource_test.py | 59 +
tests/unit_tests/dao/group_test.py | 81 +
tests/unit_tests/dao/role_test.py | 81 +
tests/unit_tests/dao/subject_test.py | 61 +
tests/unit_tests/dao/user_test.py | 74 +
.../daos/test_base_relationship_filters.py | 8 +-
tests/unit_tests/dashboards/api_test.py | 40 +-
.../commands/importers/v1/import_test.py | 44 +-
tests/unit_tests/dashboards/schema_tests.py | 4 +-
tests/unit_tests/databases/commands/delete_test.py | 129 +
.../databases/commands/importers/v1/import_test.py | 6 +-
tests/unit_tests/databases/schema_tests.py | 273 +-
.../datasets/commands/importers/v1/import_test.py | 560 +-
.../unit_tests/db_engine_specs/test_clickhouse.py | 26 +-
tests/unit_tests/db_engine_specs/test_databend.py | 37 +
tests/unit_tests/examples/generic_loader_test.py | 4 +-
tests/unit_tests/explore/utils_test.py | 16 +-
tests/unit_tests/initialization_test.py | 98 +
.../mcp_service/chart/test_big_number_chart.py | 121 +
.../chart/test_chart_config_coercion.py | 279 +
.../mcp_service/chart/test_chart_utils.py | 84 +-
.../mcp_service/chart/tool/test_delete_chart.py | 229 +
.../mcp_service/chart/tool/test_generate_chart.py | 13 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 31 +-
.../mcp_service/chart/tool/test_get_chart_info.py | 19 +
.../chart/tool/test_get_chart_preview.py | 36 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 18 +
.../mcp_service/chart/tool/test_list_charts.py | 5 +-
.../dashboard/test_dashboard_schemas.py | 8 +-
.../tool/test_add_chart_to_existing_dashboard.py | 29 +-
.../dashboard/tool/test_dashboard_generation.py | 101 +-
.../dashboard/tool/test_dashboard_tools.py | 97 +-
.../dashboard/tool/test_delete_dashboard.py | 254 +
.../dashboard/tool/test_duplicate_dashboard.py | 7 +-
.../tool/test_remove_chart_from_dashboard.py | 65 +-
.../dashboard/tool/test_update_dashboard.py | 14 +-
.../database/tool/test_database_tools.py | 2 +-
.../dataset/tool/test_create_dataset.py | 36 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 78 +-
.../mcp_service/report/tool/test_report_tools.py | 37 +-
.../mcp_service/rls/tool/test_rls_tools.py | 69 +-
.../mcp_service/role/tool/test_role_tools.py | 49 +
.../saved_query/tool/test_saved_query_tools.py | 2 +-
.../mcp_service/semantic_layer}/__init__.py | 0
.../mcp_service/semantic_layer/tool}/__init__.py | 0
.../tool/test_get_compatible_dimensions.py | 284 +
.../tool/test_get_compatible_metrics.py | 280 +
.../semantic_layer/tool/test_get_table.py | 299 +
.../semantic_layer/tool/test_list_metrics.py | 311 +
.../system/tool/test_generate_bug_report.py | 2 +-
.../system/tool/test_get_current_user.py | 5 +-
.../mcp_service/system/tool/test_get_schema.py | 48 +-
.../mcp_service/system/tool/test_mcp_core.py | 22 +-
.../mcp_service/tag/tool/test_tag_tools.py | 4 +-
tests/unit_tests/mcp_service/test_auth_rbac.py | 66 +
tests/unit_tests/mcp_service/test_guest_scope.py | 121 +
.../mcp_service/test_guest_token_auth.py | 685 +
tests/unit_tests/mcp_service/test_mcp_config.py | 2 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 29 +
tests/unit_tests/mcp_service/test_privacy.py | 58 +-
.../mcp_service/test_schema_discovery.py | 6 +-
.../unit_tests/mcp_service/theme}/__init__.py | 0
.../unit_tests/mcp_service/theme/tool}/__init__.py | 0
.../mcp_service/theme/tool/test_create_theme.py | 260 +
.../mcp_service/theme/tool/test_get_theme_info.py | 133 +
.../mcp_service/theme/tool/test_list_themes.py | 128 +
tests/unit_tests/mcp_service/user/test_schemas.py | 153 +
.../mcp_service/utils/test_permissions_utils.py | 7 +-
.../mcp_service/utils/test_query_utils.py | 96 +
.../mcp_service/utils/test_response_utils.py | 109 +
.../mcp_service/utils/test_token_utils.py | 2 +-
.../middleware/test_legacy_prefix_redirect.py | 75 +-
.../migrations/test_add_deleted_at_to_tables.py | 189 +
tests/unit_tests/models/helpers_test.py | 264 +-
.../models/multi_space_column_names_test.py | 164 +
.../models/owner_association_tables_test.py | 106 +
tests/unit_tests/models/sql_lab_test.py | 97 +
tests/unit_tests/models/test_soft_delete_mixin.py | 4 +-
.../models/test_time_filter_hour_offset.py | 99 +
.../pandas_postprocessing/test_contribution.py | 33 +
.../reports/notifications/email_tests.py | 6 +-
.../reports/notifications/slack_tests.py | 2 +-
.../reports/notifications/webhook_tests.py | 2 +-
tests/unit_tests/row_level_security/schema_test.py | 23 +-
.../scripts/translations/backfill_po_test.py | 98 +
tests/unit_tests/security/audit_log_test.py | 24 +-
tests/unit_tests/security/manager_test.py | 63 +-
tests/unit_tests/security/test_permission_hooks.py | 156 -
tests/unit_tests/semantic_layers/api_test.py | 3 +
tests/unit_tests/semantic_layers/dao_test.py | 205 +
tests/unit_tests/semantic_layers/mapper_test.py | 429 +-
tests/unit_tests/semantic_layers/models_test.py | 107 +
tests/unit_tests/sql/parse_tests.py | 125 +-
.../unit_tests/subjects}/__init__.py | 0
tests/unit_tests/subjects/test_copy_command.py | 94 +
tests/unit_tests/subjects/test_filters.py | 321 +
tests/unit_tests/subjects/test_raise_for_access.py | 403 +
tests/unit_tests/subjects/test_security.py | 280 +
tests/unit_tests/subjects/test_utils.py | 367 +
tests/unit_tests/tags/models_test.py | 2 +-
tests/unit_tests/tasks/test_async_queries.py | 52 +
tests/unit_tests/tasks/test_cache.py | 288 +-
tests/unit_tests/tasks/test_native_filter_cache.py | 405 +
tests/unit_tests/tasks/test_utils.py | 383 +-
tests/unit_tests/test_marshmallow_compatibility.py | 182 +
tests/unit_tests/themes/api_test.py | 45 +-
tests/unit_tests/utils/csv_tests.py | 3 +
tests/unit_tests/utils/filters_test.py | 119 +-
tests/unit_tests/utils/test_core.py | 13 +-
tests/unit_tests/utils/test_date_parsing.py | 91 +
tests/unit_tests/utils/urls_tests.py | 50 +-
tests/unit_tests/versioning/test_diff_caps.py | 218 +
tests/unit_tests/versioning/test_listener.py | 204 +
tests/unit_tests/views/datasource/views_test.py | 28 +-
tests/unit_tests/views/test_bootstrap_auth.py | 21 +
943 files changed, 71105 insertions(+), 35581 deletions(-)
create mode 100644 docs/static/img/logos/camptocamp.svg
create mode 100644 docs/static/img/logos/craig.png
create mode 100644 docs/static/img/logos/geo2france.png
create mode 100644 docs/static/img/logos/geobretagne.svg
create mode 100644 docs/static/img/logos/georchestra.svg
create mode 100644 docs/static/img/logos/jDev.svg
create mode 100644 docs/static/img/logos/mel.jpg
create mode 100644 docs/static/img/logos/pi-Geosolutions.png
create mode 100644 docs/static/img/logos/rennes-ville-metropole_noir.svg
create mode 100644 helm/superset/UPGRADING.md
create mode 100644 helm/superset/tests/checksum_test.yaml
create mode 100644 helm/superset/tests/config_test.yaml
create mode 100644 helm/superset/tests/deprecation_test.yaml
create mode 100644 helm/superset/tests/initscript_test.yaml
create mode 100644 helm/superset/tests/secret_env_test.yaml
create mode 100644 helm/superset/tests/serviceaccount_test.yaml
create mode 100644 helm/superset/tests/values_defaults_test.yaml
create mode 100644 helm/superset/values.schema.json
create mode 100644 scripts/translations/apply_do_not_translate.py
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/copyCellValue.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getColumnStateSignature.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getRowBasicColorFormatter.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/cellSelectionWiring.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/transformProps.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/copyCellValue.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getColumnStateSignature.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getRowBasicColorFormatter.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/PivotTableChart.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/utilities/tooltipUtils.test.tsx
create mode 100644
superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.test.ts
create mode 100644
superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.ts
delete mode 100644
superset-frontend/src/components/FacePile/FacePile.stories.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/index.tsx
delete mode 100644 superset-frontend/src/components/FacePile/utils.tsx
create mode 100644
superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.test.tsx
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.stories.tsx
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.test.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.ts
create mode 100644
superset-frontend/src/features/databases/DatabaseModal/ModalHeader.test.tsx
delete mode 100644
superset-frontend/src/features/owners/OwnerSelectLabel/OwnerSelectLabel.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.stories.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/index.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/utils.ts
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/SubjectPile.stories.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/SubjectPile.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/index.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectSelectLabel/SubjectSelectLabel.stories.tsx
rename superset-frontend/src/features/{owners/OwnerSelectLabel =>
subjects/SubjectSelectLabel}/index.tsx (56%)
rename superset-frontend/src/{components/FacePile/types.ts =>
types/Subject.ts} (67%)
rename superset-frontend/src/types/{Owner.ts => User.ts} (87%)
rename superset-frontend/src/utils/{getOwnerName.test.ts =>
getUserName.test.ts} (65%)
rename superset-frontend/src/utils/{getOwnerName.ts => getUserName.ts} (80%)
rename superset-websocket/{eslint.config.js => eslint.config.mjs} (75%)
create mode 100644 superset/cli/sync_subjects.py
create mode 100644 superset/commands/dataset/restore.py
create mode 100644 superset/daos/group.py
copy superset/daos/{role.py => subject.py} (73%)
create mode 100644 superset/daos/version.py
create mode 100644 superset/mcp_service/chart/tool/delete_chart.py
create mode 100644 superset/mcp_service/dashboard/tool/delete_dashboard.py
create mode 100644 superset/mcp_service/guest_scope.py
create mode 100644 superset/mcp_service/guest_token_verifier.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/semantic_layer}/__init__.py (100%)
create mode 100644 superset/mcp_service/semantic_layer/schemas.py
copy superset/{daos/role.py => mcp_service/semantic_layer/tool/__init__.py}
(64%)
create mode 100644
superset/mcp_service/semantic_layer/tool/get_compatible_dimensions.py
create mode 100644
superset/mcp_service/semantic_layer/tool/get_compatible_metrics.py
create mode 100644 superset/mcp_service/semantic_layer/tool/get_table.py
create mode 100644 superset/mcp_service/semantic_layer/tool/list_metrics.py
copy superset/{daos/role.py => mcp_service/theme/__init__.py} (75%)
copy superset/mcp_service/{tag => theme}/schemas.py (56%)
copy superset/{daos/role.py => mcp_service/theme/tool/__init__.py} (75%)
create mode 100644 superset/mcp_service/theme/tool/create_theme.py
copy superset/mcp_service/{tag/tool/get_tag_info.py =>
theme/tool/get_theme_info.py} (55%)
copy superset/mcp_service/{tag/tool/list_tags.py => theme/tool/list_themes.py}
(56%)
create mode 100644 superset/mcp_service/utils/query_utils.py
create mode 100644
superset/migrations/versions/2026-03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py
create mode 100644
superset/migrations/versions/2026-05-08_12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py
create mode 100644
superset/migrations/versions/2026-05-28_19-50_56cd24c07170_add_versioning_tables.py
create mode 100644
superset/migrations/versions/2026-06-03_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py
copy {superset-core/src/superset_core/common => superset/subjects}/__init__.py
(100%)
create mode 100644 superset/subjects/api.py
copy superset/{daos/role.py => subjects/exceptions.py} (72%)
create mode 100644 superset/subjects/filters.py
create mode 100644 superset/subjects/hooks.py
create mode 100644 superset/subjects/models.py
create mode 100644 superset/subjects/schemas.py
create mode 100644 superset/subjects/sync.py
copy superset/{daos/role.py => subjects/types.py} (75%)
create mode 100644 superset/subjects/utils.py
create mode 100644 superset/tasks/native_filter_cache.py
create mode 100644 superset/translations/do-not-translate.txt
copy {superset-core/src/superset_core/common =>
superset/versioning}/__init__.py (100%)
create mode 100644 superset/versioning/api_helpers.py
create mode 100644 superset/versioning/baseline/__init__.py
create mode 100644 superset/versioning/baseline/children.py
create mode 100644 superset/versioning/baseline/collection.py
create mode 100644 superset/versioning/baseline/dirty.py
create mode 100644 superset/versioning/baseline/insertion.py
create mode 100644 superset/versioning/baseline/listener.py
create mode 100644 superset/versioning/baseline/shadow.py
create mode 100644 superset/versioning/changes/__init__.py
create mode 100644 superset/versioning/changes/listener.py
create mode 100644 superset/versioning/changes/shadow_queries.py
create mode 100644 superset/versioning/changes/state.py
create mode 100644 superset/versioning/changes/table.py
create mode 100644 superset/versioning/diff.py
create mode 100644 superset/versioning/etag.py
create mode 100644 superset/versioning/factory.py
create mode 100644 superset/versioning/queries.py
create mode 100644 superset/versioning/schemas.py
create mode 100644 superset/versioning/utils.py
delete mode 100644
tests/integration_tests/dashboards/security/security_rbac_tests.py
create mode 100644 tests/integration_tests/datasets/soft_delete_tests.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/subjects}/__init__.py (100%)
create mode 100644 tests/integration_tests/subjects/api_tests.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/versioning}/__init__.py (100%)
create mode 100644 tests/integration_tests/versioning/capture_disabled_tests.py
create mode 100644 tests/integration_tests/versioning/conftest.py
create mode 100644
tests/integration_tests/versioning/snapshot_projection_tests.py
create mode 100644
tests/integration_tests/versioning/transaction_correctness_tests.py
create mode 100644 tests/integration_tests/versioning/versions_api_tests.py
create mode 100644 tests/unit_tests/charts/test_filters.py
create mode 100644 tests/unit_tests/cli/thumbnails_test.py
create mode 100644 tests/unit_tests/commands/dataset/restore_test.py
create mode 100644 tests/unit_tests/dao/datasource_test.py
create mode 100644 tests/unit_tests/dao/group_test.py
create mode 100644 tests/unit_tests/dao/role_test.py
create mode 100644 tests/unit_tests/dao/subject_test.py
create mode 100644 tests/unit_tests/databases/commands/delete_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_config_coercion.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_delete_chart.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_delete_dashboard.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/semantic_layer}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/semantic_layer/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_dimensions.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_metrics.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_table.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_list_metrics.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_token_auth.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_create_theme.py
create mode 100644
tests/unit_tests/mcp_service/theme/tool/test_get_theme_info.py
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_list_themes.py
create mode 100644 tests/unit_tests/mcp_service/user/test_schemas.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_query_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_response_utils.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_tables.py
create mode 100644 tests/unit_tests/models/multi_space_column_names_test.py
create mode 100644 tests/unit_tests/models/owner_association_tables_test.py
create mode 100644 tests/unit_tests/models/test_time_filter_hour_offset.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/subjects}/__init__.py (100%)
create mode 100644 tests/unit_tests/subjects/test_copy_command.py
create mode 100644 tests/unit_tests/subjects/test_filters.py
create mode 100644 tests/unit_tests/subjects/test_raise_for_access.py
create mode 100644 tests/unit_tests/subjects/test_security.py
create mode 100644 tests/unit_tests/subjects/test_utils.py
create mode 100644 tests/unit_tests/tasks/test_native_filter_cache.py
create mode 100644 tests/unit_tests/test_marshmallow_compatibility.py
create mode 100644 tests/unit_tests/versioning/test_diff_caps.py
create mode 100644 tests/unit_tests/versioning/test_listener.py