This is an automated email from the ASF dual-hosted git repository.
dependabot[bot] pushed a change to branch dependabot/pip/sqlalchemy-2.1.4
in repository https://gitbox.apache.org/repos/asf/superset.git
discard f86c98d9839 chore(deps): bump sqlalchemy from 2.0.52 to 2.1.4
add bc83e3e6fdb fix(mcp): propose a matching value when a dashboard filter
value is rejected (#45547)
add b129d6a4c12 fix(semantic-layer): narrow Filter|OrFilter unions in test
helpers for mypy (#45268)
add ff214bdfb14 fix(sqllab): clip multi-line result values to their row
(#45487)
add 62d22e0697c fix(semantic-layer): type the E2E stub filters for the
full filter union (#45419)
add 5eaad449f5c fix(import): return 422 instead of 500 for unsafe ZIP
import bundles (#45440)
add 676af61b1c9 fix(jinja): keep filters with 0 or false values in
get_filters and fi… (#45437)
add 47358be13c1 fix(import): return 422 instead of 500 for non-UTF-8
members in import bundles (#45424)
add b4f8ca407a3 chore(deps-dev): bump vite from 8.3.1 to 8.3.5 in
/superset-websocket in the security group across 1 directory (#45590)
add 7ff7f9048bf fix(semantic-layer): handle absent fetch-values predicate
(#45539)
add 9ce458594fe fix(connection): encode next in the unauthorized login
redirect (#45477)
add 2304d1b80f2 fix(datasets): re-check statement count after query
mutation (#45453)
add 4bfd874c4cb fix(postprocessing): handle Decimal comparisons with zero
baselines (#45467)
add 4e5d0ef8f13 fix(models): keep NULL rows in NOT IN filters without a
NULL value (#45305)
add a0ebed9ff1a docs(auth): add Keycloak PKCE, logout and group-mapping
example (#38092)
add b3471a1369c fix(a11y): WCAG 1.4.1 — add non-color visual cues to
status indicators (#39233)
add 3297c39d94c docs(installation): describe the default image instead of
lean in Docker Compose responsibilities (#45582)
add 47300cf4c2f fix(mcp): pass time_grain as a string and keep annotation
DB error classification (#45484)
add 030f36a00c3 docs(extensions): move Semantic Layers into its own
extension point page (#45630)
add 578d43fef9b fix(listview): prevent table column layout shift on
content change (#37299)
add 97a536f37d9 feat(echarts): allow configuring minInterval on bar and
line chart axes (#43515)
add dfd84bf3d9e fix(mcp): only serve the browser hello page on the MCP
endpoint (#45391)
add 7fceb05c1ce docs(docker): drop redundant packages from custom image
example, bump version numbers (#44240)
add aabddf5b3f5 fix(semantic-layers): cap and time-bound bulk semantic
view creation (#45532)
add 2c275ed0a5b fix(echarts): restore series color markers in sanitized
tooltips (#45505)
add 98fac9104fb fix(datasets): validate metric d3format (#45633)
add bf18152476a chore: stop forcing .ipynb as a binary attribute (#45602)
add 87d1abb21e6 chore(frontend): let JEST_MAX_WORKERS cap the Jest worker
pool locally (#45594)
add 5cfcee95b4e fix(import): return 400 instead of 500 on malformed JSON
in import form fields (#45579)
add 44be9b819dd fix(bigquery): return empty extra metadata instead of 500
when table is not found (#45634)
add 0689df740e2 fix(sql-lab): return 400 instead of 500 when stop_query is
missing client_id (#45521)
add 3b7001836c7 fix(charts): keep large nullable-integer dimensions exact
(#45308)
add 43006c1d054 fix(explore): omit constant Custom SQL dimensions from
GROUP BY (#45271)
add be40309811d fix: filter Sunburst temporal segments by bucket and
invert Hours offset in grained filters (#45598)
add d595becba71 test(explore): cover column config, conditional
formatting, and contour controls (#44843)
add b1c1d41b55f ci(docker): give the CI node image the workspace manifests
so jobs stop reinstalling (#45606)
add 8cd2ab1c2ca chore(deps): bump the security group across 2 directories
with 1 update (#45645)
add 2f6d51e7ae3 chore(deps-dev): bump vitest from 5.0.3 to 5.0.4 in
/superset-websocket (#45629)
add b4e592836a9 chore(deps-dev): bump jsdom from 30.1.2 to 30.1.3 in
/superset-frontend (#45628)
add 30df96241ff chore(deps): bump antd from 6.6.5 to 6.6.6 in
/superset-frontend (#45627)
add f5eaf7c4f7c chore(deps): bump postcss from 8.5.28 to 8.5.30 in
/superset-frontend (#45626)
add c505b8b4916 chore(deps-dev): bump vitest from 5.0.3 to 5.0.4 in
/superset-embedded-sdk (#45625)
add dffb06978cd chore(deps-dev): bump jsdom from 30.1.2 to 30.1.3 in
/superset-embedded-sdk (#45624)
add 6752eef54c3 chore(deps): bump antd from 6.6.5 to 6.6.6 in /docs
(#45623)
add 9b3f66df370 chore(deps): bump zizmorcore/zizmor-action from 0.6.4 to
0.7.1 (#45621)
add 09edc1a2c6e chore(deps): bump the codeql group with 3 updates (#45620)
add 0454c5e940c chore(frontend): upgrade to TypeScript 7 (#45603)
add 3f4f772efef ci(storybook): use every core for story tests and install
deps for Chromium only (#45600)
add 3823c6dc2c5 chore(i18n): sync translation catalogs with messages.pot
(#45583)
add 424c34c695d fix(security): stop dataset editorship from authorizing
new SQL (#45342)
add 3f77b342cb8 fix(explore): persist aliased column config by real key
(#44955)
add 89840862d6f chore(deps-dev): bump vitest from 5.0.4 to 5.0.5 in
/superset-websocket (#45669)
add eeb2fc2ff36 chore(deps-dev): bump vitest from 5.0.4 to 5.0.5 in
/superset-embedded-sdk (#45666)
add 5877cb58db8 chore(deps): bump swagger-ui-react from 5.33.2 to 5.33.3
in /docs (#45665)
add ff50234bf25 chore(deps): bump js-yaml from 5.4.3 to 5.5.0 in /docs
(#45664)
add d0897f77c93 chore(deps): bump chromaui/action from 18.12.2 to 18.13.0
(#45662)
add d0116153376 feat(dashboard): expose authorized chart display labels
(#45552)
add c016883970d fix(dataset): preserve pending metric and column edits
(#45506)
add 23f10960f5a feat(plugin-chart-echarts): let users hide legend
All/Invert buttons (#45172)
add 6114b81c928 feat(ci): label PRs/issues from UTSC 2026 students (#45656)
add 30584517b5b fix(mypy): type-check dataset export in full-tree mypy
(#45616)
add 026ca216cb2 fix(sqllab): implement query cancellation for ClickHouse
(Stop button) (#45070)
add 55801123a82 docs(security): drop deprecated SESSION_USE_SIGNER and
dedupe the server-side session example (#45635)
add 472c3e4afd8 fix(tests): make deep nested sidecar fallback test
interpreter-independent (#45657)
add db8ab20f90c ci(e2e): cache a pg_dump of the loaded examples for the
Playwright jobs (#45601)
add 99b472bef74 fix(dashboard): saving a dashboard that contains an
archived chart no longer fails (#45543)
add eee2c16c8c7 fix(mcp): check chart access before adding dashboard
charts (#45535)
add 8b9767ff263 fix(versioning): retryable error when a dashboard restore
races a chart purge (#45551)
add e165c386fbf fix(mcp): recognise guest tokens on FastMCP 4 (#45639)
add a268040ccbc chore(deps): bump the security group across 2 directories
with 3 updates (#45679)
add 3c9f08d1b39 chore(deps-dev): bump webpack from 5.111.1 to 5.112.0 in
/docs (#45663)
add ac928a6c261 chore(deps): bump the security group across 3 directories
with 3 updates (#45684)
add 146ffce5c9e chore(deps-dev): update playwright requirement from
<2,>=1.63.0 to >=1.64.0,<2 (#45692)
add f1f875cbe3a chore(deps-dev): update google-cloud-storage requirement
from >=3.15.0 to >=3.17.1 (#45691)
add dba52fa8e47 chore(deps-dev): update teradatasql requirement from
>=20.0.0.69 to >=20.0.0.72 (#45689)
add e351ea64e2f chore(deps): bump sshtunnel from 0.4.0 to 0.5.1 (#45688)
add 86c62cb8332 chore(deps-dev): bump google-cloud-bigquery from 3.46.1 to
3.46.2 (#45685)
add 70d1b4a6a53 chore(deps): bump body-parser from 2.3.0 to 2.4.0 in
/superset-websocket/utils/client-ws-app in the security group across 1
directory (#45683)
add 3e39360da43 chore(deps): bump sqlalchemy from 2.0.52 to 2.1.5
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 (f86c98d9839)
\
N -- N -- N refs/heads/dependabot/pip/sqlalchemy-2.1.4
(3e39360da43)
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:
.gitattributes | 1 -
.github/utsc2026-students.yml | 63 +
.github/workflows/bashlib.sh | 47 +-
.github/workflows/chromatic.yml | 4 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/docker.yml | 2 +-
.github/workflows/frontend-bundle-size-nightly.yml | 2 +-
.github/workflows/github-action-validator.yml | 2 +-
.github/workflows/superset-e2e.yml | 44 +
.github/workflows/superset-frontend.yml | 10 +-
.github/workflows/utsc2026-labeler.yml | 57 +
AGENTS.md | 1 +
Dockerfile | 28 +-
UPDATING.md | 52 +-
docker-compose-light.yml | 1 -
docker-compose.yml | 1 -
docs/admin_docs/configuration/cache.mdx | 2 +-
.../configuration/configuring-superset.mdx | 2 +
docs/admin_docs/configuration/mcp-server.mdx | 17 +-
docs/admin_docs/installation/docker-builds.mdx | 43 +-
.../installation/installation-methods.mdx | 4 +-
docs/admin_docs/security/oauth.mdx | 318 +++++
docs/admin_docs/security/securing_superset.mdx | 3 -
docs/admin_docs/security/security.mdx | 13 +-
.../version-6.1.0/security/securing_superset.mdx | 3 -
.../version-6.1.0/security/security.mdx | 13 +-
.../contributing/development-setup.md | 9 +-
docs/developer_docs/contributing/howtos.md | 3 +
.../extensions/contribution-types.md | 332 +----
.../semantic-layers.md} | 392 +++---
.../extensions/semantic-execution-context.md | 102 --
docs/developer_docs/extensions/semantic-filters.md | 79 --
docs/developer_docs/semantic-layer-cache-clear.md | 2 +-
docs/developer_docs/sidebars.js | 1 +
docs/docs/using-superset/embedding.mdx | 36 +
docs/docs/using-superset/exploring-data.mdx | 29 +
.../using-superset/semantic-layer-connections.mdx | 11 +
.../using-superset/semantic-member-selections.mdx | 2 +-
.../docs/using-superset/using-ai-with-superset.mdx | 20 +
docs/docs/using-superset/version-history.mdx | 3 +
docs/package.json | 8 +-
docs/sidebarTutorials.js | 2 +-
docs/static/resources/openapi.json | 29 +
.../version-6.0.0/security/security.mdx | 2 -
docs/yarn.lock | 790 +++++------
pyproject.toml | 13 +-
requirements/base.txt | 2 +-
requirements/development.txt | 4 +-
superset-embedded-sdk/package-lock.json | 336 +++--
superset-embedded-sdk/package.json | 6 +-
superset-frontend/.storybook/main.mjs | 5 +-
.../.storybook/playwright.storybook-ci.config.ts | 4 +
superset-frontend/jest.config.js | 4 +
superset-frontend/package-lock.json | 508 +++++--
superset-frontend/package.json | 17 +-
.../packages/superset-core/package.json | 2 +-
.../src/utils/headerGroups.test.ts | 182 ++-
.../src/utils/headerGroups.ts | 68 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/components/Modal/Modal.tsx | 17 +-
.../src/components/TableCollection/utils.tsx | 3 +-
.../src/connection/SupersetClientClass.ts | 4 +-
.../superset-ui-core/src/query/types/Datasource.ts | 1 +
.../packages/superset-ui-core/src/utils/tooltip.ts | 31 +
.../test/chart/models/ChartProps.test.ts | 15 +
.../test/connection/SupersetClientClass.test.ts | 5 +-
.../superset-ui-core/test/utils/tooltip.test.ts | 34 +
.../src/controlPanel.tsx | 5 +
.../src/transformProps.ts | 9 +-
.../src/utils/isEqualColumns.ts | 8 +
.../test/controlPanel.test.tsx | 34 +
.../test/transformProps.test.ts | 159 +++
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../BigNumberPeriodOverPeriod/transformProps.ts | 6 +-
.../src/BigNumber/BigNumberTotal/transformProps.ts | 6 +-
.../BigNumberWithTrendline/transformProps.ts | 6 +-
.../plugin-chart-echarts/src/BigNumber/utils.ts | 10 +-
.../src/Bubble/transformProps.ts | 3 +
.../src/Butterfly/transformProps.ts | 3 +
.../src/Candlestick/transformProps.ts | 3 +
.../src/Funnel/controlPanel.tsx | 13 +-
.../src/Funnel/transformProps.ts | 3 +
.../src/Gantt/transformProps.ts | 3 +
.../src/Graph/transformProps.ts | 3 +
.../src/Histogram/controlPanel.tsx | 7 +-
.../src/Histogram/transformProps.ts | 10 +-
.../plugin-chart-echarts/src/Histogram/types.ts | 1 +
.../src/MixedTimeseries/transformProps.ts | 3 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 3 +
.../src/Radar/controlPanel.tsx | 10 +-
.../src/Radar/transformProps.ts | 3 +
.../src/Sunburst/EchartsSunburst.tsx | 99 +-
.../src/Sunburst/transformProps.ts | 36 +-
.../plugin-chart-echarts/src/Sunburst/types.ts | 4 +
.../plugin-chart-echarts/src/Sunburst/utils.ts | 190 +++
.../src/Timeseries/EchartsTimeseries.test.tsx | 1 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 28 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 19 +
.../src/Timeseries/constants.ts | 1 +
.../src/Timeseries/transformProps.ts | 86 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 2 +
.../plugins/plugin-chart-echarts/src/constants.ts | 1 +
.../plugins/plugin-chart-echarts/src/controls.tsx | 55 +-
.../plugins/plugin-chart-echarts/src/types.ts | 3 +-
.../plugin-chart-echarts/src/utils/forecast.ts | 20 +-
.../plugin-chart-echarts/src/utils/series.ts | 5 +-
.../src/utils/xAxisDrillByFilter.ts | 37 +-
.../test/BigNumber/chartDisplayLabels.test.ts | 196 +++
.../test/Gantt/transformProps.test.ts | 7 +-
.../test/Histogram/buildQuery.test.ts | 1 +
.../test/Histogram/transformProps.test.ts | 12 +
.../test/MixedTimeseries/transformProps.test.ts | 9 +-
.../test/Sunburst/EchartsSunburst.test.tsx | 474 +++++++
.../test/Sunburst/transformProps.test.ts | 149 ++-
.../test/Sunburst/utils.test.ts | 52 +
.../test/Timeseries/Bar/controlPanel.test.ts | 28 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 40 +
.../test/Timeseries/Line/controlPanel.test.ts | 42 +
.../test/Timeseries/helpers.ts | 1 +
.../test/Timeseries/transformProps.test.ts | 205 ++-
.../test/utils/forecast.test.ts | 63 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 32 +-
.../plugin-chart-table/src/controlPanel.tsx | 5 +
.../plugin-chart-table/src/transformProps.ts | 9 +-
.../plugin-chart-table/src/utils/isEqualColumns.ts | 8 +
.../plugin-chart-table/test/TableChart.test.tsx | 112 ++
.../plugin-chart-table/test/controlPanel.test.tsx | 34 +
.../test/transformProps.test.tsx | 58 +
.../components/Chart/ChartErrorMessage.test.tsx | 2 +-
.../src/components/Chart/ChartErrorMessage.tsx | 3 +-
.../Chart/DrillBy/DrillByTemporalFilters.test.tsx | 256 ++++
.../DatasourceModal.pendingEdits.test.tsx | 196 +++
.../CollectionTable.debounce.test.tsx | 287 ++++
.../components/CollectionTable/index.tsx | 231 ++--
.../src/components/Datasource/types.ts | 10 -
.../components/ErrorMessage/ErrorAlert.test.tsx | 41 +
.../src/components/GridTable/GridTable.test.tsx | 21 +
.../src/components/GridTable/index.tsx | 10 +-
.../components/gridComponents/Chart/Chart.test.tsx | 55 +
.../components/gridComponents/Chart/Chart.tsx | 7 +-
.../nativeFilters/FilterBar/utils.test.ts | 35 +
.../components/nativeFilters/FilterBar/utils.ts | 5 +-
superset-frontend/src/dashboard/types.ts | 1 +
.../dashboard/util/withChartDisplayLabels.test.ts | 153 +++
.../src/dashboard/util/withChartDisplayLabels.ts | 61 +
.../ColorSchemeControl/ColorSchemeLabel.test.tsx | 14 +
.../ColorSchemeControl/ColorSchemeLabel.tsx | 3 +
.../ColumnConfigControl.popover.test.tsx | 293 +++++
.../ColumnConfigControl.test.tsx | 75 ++
.../ColumnConfigControl/ColumnConfigControl.tsx | 20 +-
.../ControlForm/ControlForm.test.tsx | 158 +++
.../controls/ColumnConfigControl/types.ts | 1 +
.../components/controls/ComparisonRangeLabel.tsx | 66 +-
.../ConditionalFormattingControl.test.tsx | 297 ++++-
.../controls/ContourControl/ContourOption.test.tsx | 111 ++
.../ContourControl/ContourPopoverControl.test.tsx | 277 ++++
.../ContourControl/ContourPopoverTrigger.test.tsx | 133 ++
.../controls/ContourControl/index.test.tsx | 212 +++
.../alerts/components/AlertStatusIcon.test.tsx | 14 +
.../features/alerts/components/AlertStatusIcon.tsx | 1 +
superset-frontend/src/pages/ChartList/index.tsx | 9 +-
.../src/pages/DashboardList/index.tsx | 3 +-
superset-frontend/src/pages/DatasetList/index.tsx | 18 +-
superset-frontend/webpack.config.js | 43 +-
superset-websocket/package-lock.json | 246 ++--
superset-websocket/package.json | 2 +-
.../utils/client-ws-app/package-lock.json | 37 +-
superset/charts/api.py | 25 +-
superset/commands/dashboard/restore_version.py | 42 +
superset/commands/dataset/create.py | 4 +-
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 2 +-
superset/commands/importers/v1/utils.py | 24 +-
superset/commands/semantic_layer/create.py | 11 +
superset/common/utils/dataframe_utils.py | 64 +
superset/config.py | 13 +
superset/connectors/sqla/models.py | 242 +++-
superset/connectors/sqla/utils.py | 55 +-
superset/daos/dashboard.py | 82 +-
superset/dashboards/api.py | 63 +-
superset/dashboards/schemas.py | 13 +
superset/databases/api.py | 32 +-
superset/datasets/api.py | 26 +-
superset/datasets/schemas.py | 17 +-
superset/db_engine_specs/bigquery.py | 15 +-
superset/db_engine_specs/clickhouse.py | 223 ++++
superset/explore/utils.py | 6 +-
superset/importexport/api.py | 38 +-
superset/jinja_context.py | 4 +-
superset/mcp_service/auth.py | 85 +-
superset/mcp_service/chart/chart_helpers.py | 23 +
superset/mcp_service/chart/chart_utils.py | 16 +-
superset/mcp_service/chart/compile.py | 176 ++-
superset/mcp_service/composite_token_verifier.py | 51 +-
superset/mcp_service/dashboard/schemas.py | 7 +-
.../tool/add_chart_to_existing_dashboard.py | 16 +-
.../dashboard/tool/apply_dashboard_filters.py | 34 +-
.../dashboard/tool/generate_dashboard.py | 27 +-
superset/mcp_service/dashboard_scope_sql.py | 18 +-
superset/mcp_service/dataset/schemas.py | 21 +
superset/mcp_service/guest_token_verifier.py | 6 +-
superset/mcp_service/jwt_verifier.py | 28 +-
superset/mcp_service/mcp_config.py | 10 +-
superset/mcp_service/server.py | 11 +-
superset/models/dashboard.py | 225 +++-
superset/models/helpers.py | 195 ++-
superset/queries/api.py | 3 +
superset/queries/saved_queries/api.py | 26 +-
superset/queries/schemas.py | 2 +-
superset/security/manager.py | 75 +-
superset/semantic_layers/api.py | 63 +-
superset/semantic_layers/models.py | 3 +
superset/sql/parse.py | 27 +
superset/translations/ar/LC_MESSAGES/messages.po | 170 ++-
superset/translations/ca/LC_MESSAGES/messages.po | 170 ++-
superset/translations/cs/LC_MESSAGES/messages.po | 170 ++-
superset/translations/de/LC_MESSAGES/messages.po | 170 ++-
superset/translations/en/LC_MESSAGES/messages.po | 166 ++-
superset/translations/es/LC_MESSAGES/messages.po | 170 ++-
superset/translations/fa/LC_MESSAGES/messages.po | 170 ++-
superset/translations/fi/LC_MESSAGES/messages.po | 176 ++-
superset/translations/fr/LC_MESSAGES/messages.po | 170 ++-
superset/translations/it/LC_MESSAGES/messages.po | 173 ++-
superset/translations/ja/LC_MESSAGES/messages.po | 170 ++-
superset/translations/ko/LC_MESSAGES/messages.po | 175 ++-
superset/translations/lv/LC_MESSAGES/messages.po | 170 ++-
superset/translations/messages.pot | 97 +-
superset/translations/mi/LC_MESSAGES/messages.po | 170 ++-
superset/translations/nl/LC_MESSAGES/messages.po | 170 ++-
superset/translations/pl/LC_MESSAGES/messages.po | 175 ++-
superset/translations/pt/LC_MESSAGES/messages.po | 173 ++-
.../translations/pt_BR/LC_MESSAGES/messages.po | 170 ++-
superset/translations/ro/LC_MESSAGES/messages.po | 170 ++-
superset/translations/ru/LC_MESSAGES/messages.po | 170 ++-
superset/translations/sk/LC_MESSAGES/messages.po | 170 ++-
superset/translations/sl/LC_MESSAGES/messages.po | 170 ++-
superset/translations/sr/LC_MESSAGES/messages.po | 172 ++-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 172 ++-
superset/translations/ta/LC_MESSAGES/messages.po | 170 ++-
superset/translations/th/LC_MESSAGES/messages.po | 176 ++-
superset/translations/tr/LC_MESSAGES/messages.po | 170 ++-
superset/translations/uk/LC_MESSAGES/messages.po | 170 ++-
superset/translations/zh/LC_MESSAGES/messages.po | 170 ++-
.../translations/zh_TW/LC_MESSAGES/messages.po | 170 ++-
superset/utils/excel.py | 41 +-
superset/utils/number_format.py | 94 ++
superset/utils/pandas_postprocessing/compare.py | 14 +-
superset/versioning/api_helpers.py | 8 +
superset/versioning/db_errors.py | 68 +-
superset/versioning/restore.py | 84 +-
superset/views/base_api.py | 24 +
.../src/superset_e2e_semantic_stub/__init__.py | 12 +-
tests/integration_tests/dashboards/api_tests.py | 717 +++++++++-
.../dashboards/version_restore_tests.py | 168 +++
tests/integration_tests/datasets/api_tests.py | 45 +
tests/integration_tests/fixtures/public_role.py | 47 +-
tests/integration_tests/queries/api_tests.py | 30 +
.../security/public_role_tests.py | 93 ++
.../db_engine_specs/test_clickhouse.py | 118 ++
tests/unit_tests/charts/test_client_processing.py | 41 +
.../charts/test_exact_integer_chart_data.py | 824 ++++++++++++
tests/unit_tests/commands/chart/export_test.py | 2 +-
tests/unit_tests/commands/dataset/test_create.py | 11 +
.../explore/test_get_query_authorship_bypass.py | 100 +-
.../unit_tests/commands/importers/v1/utils_test.py | 92 +-
.../commands/semantic_layer/create_test.py | 53 +-
tests/unit_tests/common/test_dataframe_utils.py | 53 +
.../unit_tests/common/test_query_cache_manager.py | 38 +
.../common/test_query_context_processor.py | 50 +
tests/unit_tests/connectors/sqla/utils_test.py | 50 +
tests/unit_tests/dao/dashboard_test.py | 108 +-
tests/unit_tests/dao/test_query_stop_race.py | 95 ++
tests/unit_tests/dashboards/datasets_test.py | 1381 +++++++++++++++++++-
tests/unit_tests/databases/api_test.py | 44 +
tests/unit_tests/datasets/schema_tests.py | 80 ++
tests/unit_tests/datasource/test_query_api.py | 24 +
tests/unit_tests/db_engine_specs/test_bigquery.py | 70 +
.../unit_tests/db_engine_specs/test_clickhouse.py | 344 ++++-
tests/unit_tests/explore/utils_test.py | 39 +
tests/unit_tests/importexport/api_test.py | 99 +-
tests/unit_tests/jinja_context_test.py | 74 ++
.../mcp_service/chart/test_chart_helpers.py | 42 +
tests/unit_tests/mcp_service/chart/test_compile.py | 464 +++++++
.../test_review_query_and_preview_regressions.py | 7 +-
.../chart/test_time_grain_generic_axes.py | 171 +++
.../tool/test_add_chart_to_existing_dashboard.py | 85 +-
.../dashboard/tool/test_apply_dashboard_filters.py | 67 +-
.../tool/test_chart_access_query_count.py | 174 +++
.../dashboard/tool/test_dashboard_generation.py | 138 +-
.../tool/test_managed_dashboard_refusal.py | 3 +
.../mcp_service/native_tool_inventory.json | 36 +-
tests/unit_tests/mcp_service/test_auth_api_key.py | 10 +-
.../mcp_service/test_browser_hello_middleware.py | 126 ++
.../mcp_service/test_dashboard_scope_sql.py | 51 +
.../mcp_service/test_guest_token_auth.py | 7 +
.../mcp_service/test_multi_auth_client_id.py | 678 ++++++++++
.../unit_tests/mcp_service/test_tool_inventory.py | 19 +
.../models/groupby_literal_column_test.py | 288 ++++
tests/unit_tests/models/helpers_test.py | 171 +++
.../models/normalize_df_large_integer_test.py | 307 +++++
.../models/test_hours_offset_bound_truncation.py | 480 ++++++-
.../pandas_postprocessing/test_compare.py | 109 ++
.../security/test_dashboard_chart_labels.py | 207 +++
tests/unit_tests/semantic_layers/api_test.py | 262 +++-
.../semantic_layers/cache_policy_test.py | 3 +-
.../semantic_layers/e2e_stub_extension_test.py | 42 +-
.../semantic_layers/metric_filter_test.py | 72 +-
.../unit_tests/sql/execution/test_async_results.py | 7 +
tests/unit_tests/sql/execution/test_celery_task.py | 47 +
tests/unit_tests/sql/parse_tests.py | 44 +
tests/unit_tests/sql_lab_test.py | 38 +
tests/unit_tests/subjects/test_raise_for_access.py | 4 +
tests/unit_tests/utils/csv_tests.py | 14 +
tests/unit_tests/utils/excel_tests.py | 38 +
tests/unit_tests/utils/number_format_test.py | 31 +
tests/unit_tests/versioning/test_db_errors.py | 65 +-
tests/unit_tests/versioning/test_restore.py | 167 ++-
.../unit_tests/views/test_parse_json_form_field.py | 54 +
318 files changed, 23956 insertions(+), 2891 deletions(-)
create mode 100644 .github/utsc2026-students.yml
create mode 100644 .github/workflows/utsc2026-labeler.yml
create mode 100644 docs/admin_docs/security/oauth.mdx
copy docs/developer_docs/extensions/{contribution-types.md =>
extension-points/semantic-layers.md} (65%)
delete mode 100644 docs/developer_docs/extensions/semantic-execution-context.md
delete mode 100644 docs/developer_docs/extensions/semantic-filters.md
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/utils.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/chartDisplayLabels.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/EchartsSunburst.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Sunburst/utils.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-table/test/transformProps.test.tsx
create mode 100644
superset-frontend/src/components/Chart/DrillBy/DrillByTemporalFilters.test.tsx
create mode 100644
superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.pendingEdits.test.tsx
create mode 100644
superset-frontend/src/components/Datasource/components/CollectionTable/CollectionTable.debounce.test.tsx
create mode 100644
superset-frontend/src/dashboard/util/withChartDisplayLabels.test.ts
create mode 100644
superset-frontend/src/dashboard/util/withChartDisplayLabels.ts
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.popover.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ColumnConfigControl/ControlForm/ControlForm.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourOption.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverTrigger.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/ContourControl/index.test.tsx
create mode 100644 tests/integration_tests/security/public_role_tests.py
create mode 100644 tests/unit_tests/charts/test_exact_integer_chart_data.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_chart_access_query_count.py
create mode 100644
tests/unit_tests/mcp_service/test_browser_hello_middleware.py
create mode 100644 tests/unit_tests/mcp_service/test_multi_auth_client_id.py
create mode 100644 tests/unit_tests/models/groupby_literal_column_test.py
create mode 100644 tests/unit_tests/models/normalize_df_large_integer_test.py
create mode 100644 tests/unit_tests/security/test_dashboard_chart_labels.py
create mode 100644 tests/unit_tests/views/test_parse_json_form_field.py