This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch no-console
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 7c8180d2db whack-a-mole
discard dfe6a3f43b patchy patch patch
discard 6fee4c3549 yet another tweak...
discard e9a471b4cb more changes...
discard 3c9635e885 precommit fixes
discard 596891fe0a corrected source paths.
discard 5e5b0e6f74 fixing duplicate rule
discard c73e04ae07 pre-commit
discard 883ab719b1 another patch...
discard b91910ff14 more fixes!
discard 0145de57c1 chore(linting): setting no-console to error, and migrating
instances to use `logging`
add 77ffe65773 chore(deps): bump axios from 1.10.0 to 1.11.0 in /docs
(#34285)
add 9099b0f00d fix: fix the pre-commit hook for tsc (#34275)
add 43775e9373 fix(sqllab_export): manually encode CSV output to support
utf-8-sig (#34235)
add 800c1639ec chore(deps-dev): bump prettier from 3.5.3 to 3.6.2 in
/superset-frontend (#33997)
add 9b88527883 chore: remove supposedly dev dep `html-webpack-plugin` from
lockfile (#34288)
add 1e5a4e9bdc fix: Saved queries list break if one query can't be parsed
(#34289)
add 7a1c056374 fix(charting): correctly categorize numeric columns with
NULL values (#34213)
add da55a6c94a fix(chart-download): ensure full table or handlebar chart
is captured in image export (#34233)
add c99843b13a fix: Hide View in SQL Lab for users without access (#34293)
add ab59b7e9b0 feat: make `SupersetClient` retry on 502-504 (#34290)
add efa8cb6fa4 chore: improve sqlglot parsing (#34270)
add 3f8472ca7b chore: move some rules from ruff -> pylint (#34292)
add 30e5684006 fix: address numerous long-standing console errors (python
& web) (#34299)
add 89bf77b5c9 fix(theming): Fix visual regressions from theming P7
(#34237)
add 3177131d52 feat: re-order CRUD list view action buttons (#34294)
add b794b192d1 fix: return 422 on invalid SQL (#34303)
add 8df5860826 chore: bump sqlglot to latest version (27.3.0) (#34302)
add 7f44992c4b fix: enhance disallowed SQL functions list for improved
security (#33084)
add 9c771fb2ba fix: preserve correct column order when table layout is
changed with time comparison enabled (#34300)
add c25b4221f8 fix(npm): more reliable execution of `npm run update-maps`
(#34305)
add 8783579aa8 fix(cartodiagram): add missing locales for rendering
echarts (#34268)
add 5f11f9097a fix: Charts list is displaying empty dataset names when
there's no schema (#34315)
add e741a3167f feat: add a theme CRUD page to manage themes (#34182)
add 1be2287b3a feat(timeseries): enhance 'Series Limit' to support
grouping the long tail (#34308)
add c49789167b style(chart): restyle table pagination (#34311)
add 1a4e2173f5 fix(NavBar): Add brand text back (#34318)
add 913e068113 style(FastVizSwitcher): Adjust padding for FastVizSwitcher
selector (#34317)
add 604d72cc98 feat: introducing a docker-compose-light.yml for lighter
development (#34324)
add 22b3cc0480 chore: bump BigQuery dialect to 1.15.0 (#34371)
add dc0c389488 docs(development): fix 2 typos in the dockerfile (#34341)
add f554848c9f fix(PivotTable): Render html in cells if allowRenderHtml is
true (#34351)
add ff76ab647f build(deps): update `ag-grid` to non-breaking major v34
(#34326)
add bb572983cd feat(theming): Align embedded sdk with theme configs
(#34273)
add 914ce9aa4f feat: read column metadata (#34359)
add 122bb68e5a fix: subquery alias in RLS (#34374)
add a9cd58508b chore(deps): bump cookie and @types/cookie in
/superset-websocket (#34335)
add 32626ab707 fix: use catalog name on generated queries (#34360)
add c9e06714f8 fix: prevent theme initialization errors during fresh
installs (#34339)
add 972be15dda feat: focus on text input when modal opens (#34379)
add 16db999067 fix: rate limiting issues with example data hosted on
github.com (#34381)
add 8de8f95a3c feat: allow creating dataset without exploring (#34380)
add 0964a8bb7a fix(big number with trendline): running 2 identical queries
for no good reason (#34296)
add a1c39d4906 feat(charts): Enable async buildQuery support for complex
chart logic (#34383)
add 14e90a0f52 feat: Add GitHub Codespaces support with
docker-compose-light (#34376)
add eca28582b6 feat(i18n): update Spanish translations (messages.po)
(#34206)
add 131ae5aa9d docs(development): fix typo in the dockerfile (#34387)
add bf967d6ba4 fix(charts): Fix unquoted 'Others' literal in series limit
GROUP BY clause (#34390)
add 6006a21378 docs(development): fix comment in the dockerfile (#34391)
add 0cbf4d5d4d chore(deps): bump d3-scale from 3.3.0 to 4.0.2 in
/superset-frontend/packages/superset-ui-core (#31534)
add 5c2eb0a68c build(deps): bump reselect from 4.1.7 to 5.1.1 in
/superset-frontend (#30119)
add a611278e04 fix: Console errors from various sources (#34178)
add 54a5b58e40 feat(codespaces): auto-setup Python venv with dependencies
(#34409)
add fd4570625a fix(theme-list): reorder buttons to place import leftmost
(#34389)
add becd0b8883 feat: add runtime custom font loading via configuration
(#34416)
add f168dd69a8 fix(sunburst): Fix sunburst chart cross-filter logic
(#31495)
add 762a11b0bb fix(sqllab): access legacy kv record (#34411)
add 6fc734da51 fix: prevent anonymous code in Postgres (#34412)
add c480fa7fcf fix(migrations): prevent theme seeding before themes table
exists (#34433)
add 50197fc33e chore: Add bottom border to top navigation menu (#34429)
add ea64f3122e chore: Change button labels to sentence case (#34432)
add 70394e79ef feat: Add configurable query identifiers for Mixed
Timeseries charts (#34406)
add cf5b976659 fix(dashboard): adds dependent filter select first value
fixes (#34137)
add 9cf2472291 fix: time grain and DB dropdowns (#34431)
add 25bb353f9d chore(deps-dev): update jest requirement from ^30.0.2 to
^30.0.4 in /superset-frontend/packages/generator-superset (#34039)
add 967134f540 fix(theming): Visual bugs p-3 (#34424)
add 6c9cda758a chore: update chart list e2e and component tests (#34393)
add cb27d5fe8d chore: proper current_app.config proxy usage (#34345)
add 659cd33749 fix(echarts): resolve bar chart X-axis time formatting
stuck on adaptive (#34436)
add 6a83b6fd87 fix(pie chart): Total now positioned correctly with all
Legend positions, and respects theming (#34435)
add 7c2ec4ca5f fix: Update table chart configuration labels to sentence
case (#34438)
add 6da0aa8b51 chore(linting): setting no-console to error, and migrating
instances to use `logging`
add 991a928c92 more fixes!
add 99ac6822ae another patch...
add 9a5f7779f1 pre-commit
add 00da9b8c10 fixing duplicate rule
add df6975ecbd corrected source paths.
add 49a3966104 precommit fixes
add fee6ab61d7 more changes...
add 0216548e5d yet another tweak...
add 4bc9c844c3 patchy patch patch
add 7a59c256ed whack-a-mole
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 (7c8180d2db)
\
N -- N -- N refs/heads/no-console (7a59c256ed)
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:
.devcontainer/Dockerfile | 20 +
.devcontainer/README.md | 16 +
.devcontainer/bashrc-additions | 62 +
.devcontainer/build-and-push-image.sh | 20 +
.devcontainer/devcontainer.json | 66 +
.devcontainer/setup-dev.sh | 78 +
.devcontainer/start-superset.sh | 108 +
.github/workflows/superset-python-unittest.yml | 2 +-
.pre-commit-config.yaml | 17 +-
Dockerfile | 6 +-
LLMS.md | 45 +-
UPDATING.md | 2 +
docker-compose-image-tag.yml | 3 +
docker-compose-light.yml | 157 +
docker-compose-non-dev.yml | 3 +
docker-compose.yml | 3 +
docker/.env | 6 +-
docker/frontend-mem-nag.sh | 44 +-
docker/pythonpath_dev/.gitignore | 1 +
docker/pythonpath_dev/superset_config.py | 2 +-
.../pythonpath_dev/superset_config_docker_light.py | 37 +-
docs/docs/configuration/theming.mdx | 141 +-
docs/docs/contributing/development.mdx | 80 +-
docs/docs/installation/docker-compose.mdx | 34 +-
docs/package.json | 3 +-
docs/yarn.lock | 10 +-
pyproject.toml | 20 +-
requirements/base.txt | 2 +-
requirements/development.txt | 4 +-
scripts/check-type.js | 101 +-
scripts/python_tests.sh | 2 +-
.../cypress/e2e/chart_list/list.test.ts | 55 -
.../cypress/e2e/dashboard/drillby.test.ts | 23 +-
.../cypress/e2e/dashboard/nativeFilters.test.ts | 69 +
.../cypress-base/cypress/e2e/explore/chart.test.js | 6 +-
superset-frontend/package-lock.json | 1644 +++-
superset-frontend/package.json | 11 +-
.../packages/generator-superset/package.json | 2 +-
.../src/components/ControlHeader.tsx | 17 +-
.../src/components/Select.tsx | 4 +-
.../src/sections/echartsTimeSeriesQuery.tsx | 2 +-
.../src/shared-controls/customControls.tsx | 62 +-
.../src/shared-controls/sharedControls.tsx | 16 +
.../packages/superset-ui-core/package.json | 4 +-
.../src/chart/models/ChartProps.ts | 26 +-
.../src/components/AsyncAceEditor/index.tsx | 7 +-
.../AsyncAceEditor/useJsonValidation.test.ts | 75 +
.../components/AsyncAceEditor/useJsonValidation.ts | 82 +
.../src/components/CodeSyntaxHighlighter/index.tsx | 11 +-
.../components/Collapse/CollapseLabelInModal.tsx | 58 +-
.../src/components/ConfirmStatusChange/index.tsx | 1 +
.../src/components/DeleteModal/index.tsx | 2 +
.../src/components/DeleteModal/types.ts | 1 +
.../src/components/EmptyState/index.tsx | 2 +-
.../src/components/Icons/BaseIcon.tsx | 8 +-
.../src/components/InfoTooltip/index.tsx | 4 +-
.../src/components/Label/index.tsx | 4 +-
.../src/components/Modal/FormModal.tsx | 2 +
.../src/components/Modal/Modal.tsx | 6 +-
.../src/components/ModalTrigger/index.tsx | 1 +
.../TelemetryPixel/TelemetryPixel.test.tsx | 2 +-
.../src/components/TelemetryPixel/index.tsx | 3 +-
.../src/components/ThemeSelect/index.tsx | 79 -
.../components/ThemeSubMenu/ThemeSubMenu.test.tsx | 273 +
.../src/components/ThemeSubMenu/index.tsx | 170 +
.../src/components/Typography/index.tsx | 1 +
.../src/components/UnsavedChangesModal/index.tsx | 90 +-
.../superset-ui-core/src/components/index.ts | 3 +
.../superset-ui-core/src/connection/constants.ts | 2 +-
.../superset-ui-core/src/query/buildQueryObject.ts | 2 +
.../superset-ui-core/src/theme/Theme.test.tsx | 18 -
.../packages/superset-ui-core/src/theme/Theme.tsx | 70 +-
.../packages/superset-ui-core/src/theme/index.tsx | 17 +-
.../packages/superset-ui-core/src/theme/types.ts | 22 +
.../src/theme/utils/themeUtils.test.ts | 134 +
.../superset-ui-core/src/theme/utils/themeUtils.ts | 113 +
.../superset-ui-core/src/utils/featureFlags.ts | 3 +-
.../test/chart/models/ChartProps.test.ts | 4 +-
.../scripts/Country Map GeoJSON Generator.ipynb | Bin 11105571 -> 2319015
bytes
.../src/vendor/parcoords/d3.parcoords.js | 8 +-
.../plugin-chart-ag-grid-table/package.json | 4 +-
.../components/TimeComparisonVisibility.tsx | 60 +-
.../src/AgGridTable/index.tsx | 75 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 4 -
.../src/controlPanel.tsx | 8 +-
.../plugins/plugin-chart-ag-grid-table/src/i18n.ts | 66 -
.../plugins/plugin-chart-cartodiagram/package.json | 2 +
.../src/components/ChartLayer.tsx | 8 +
.../src/components/ChartWrapper.tsx | 21 +-
.../src/components/OlChartMap.tsx | 5 +
.../plugins/plugin-chart-cartodiagram/src/types.ts | 2 +
.../src/util/chartUtil.tsx | 2 +
.../test/components/chartLayer.test.ts | 2 +
.../src/BigNumber/BigNumberViz.tsx | 382 +-
.../BigNumberWithTrendline/buildQuery.test.ts | 45 +-
.../BigNumber/BigNumberWithTrendline/buildQuery.ts | 57 +-
.../BigNumberWithTrendline/transformProps.test.ts | 37 +-
.../BigNumberWithTrendline/transformProps.ts | 68 +-
.../src/MixedTimeseries/controlPanel.tsx | 17 +-
.../src/MixedTimeseries/transformProps.ts | 28 +-
.../src/MixedTimeseries/types.ts | 2 +
.../plugin-chart-echarts/src/Pie/transformProps.ts | 29 +-
.../src/Sankey/transformProps.ts | 4 +-
.../src/Sunburst/EchartsSunburst.tsx | 61 +-
.../src/Timeseries/constants.ts | 1 +
.../src/Tree/transformProps.ts | 4 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 85 +-
.../test/BigNumber/transformProps.test.ts | 5 +-
.../test/MixedTimeseries/buildQuery.test.ts | 2 +
.../test/MixedTimeseries/transformProps.test.ts | 83 +-
.../test/Pie/transformProps.test.ts | 151 +
.../test/Timeseries/Bar/controlPanel.test.ts | 204 +
.../test/Timeseries/Bar/transformProps.test.ts | 353 +
.../test/Timeseries/constants.test.ts | 43 +
.../src/react-pivottable/TableRenderers.jsx | 14 +-
.../plugins/plugin-chart-table/src/Styles.tsx | 9 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 93 +-
.../plugins/plugin-chart-table/src/consts.ts | 5 +-
.../plugin-chart-table/src/controlPanel.tsx | 8 +-
.../plugins/plugin-chart-table/src/i18n.ts | 66 -
.../SqlLab/components/SaveDatasetModal/index.tsx | 24 +-
.../src/SqlLab/components/SaveQuery/index.tsx | 12 +-
.../src/SqlLab/components/SqlEditor/index.tsx | 1 +
.../src/SqlLab/components/TableElement/index.tsx | 4 +-
.../Chart/ChartContextMenu/ChartContextMenu.tsx | 10 +-
.../Chart/DrillBy/DrillByMenuItems.test.tsx | 43 +-
.../components/Chart/DrillBy/DrillByMenuItems.tsx | 10 +-
.../src/components/Chart/DrillBy/DrillByModal.tsx | 1 +
.../Chart/DrillDetail/DrillDetailModal.tsx | 1 +
.../src/components/Chart/DrillDetail/index.ts | 1 +
...ilMenuItems.tsx => useDrillDetailMenuItems.tsx} | 179 +-
.../components/Chart/MenuItemWithTruncation.tsx | 65 +-
.../src/components/Chart/chartAction.js | 28 +-
.../src/components/Chart/chartActions.test.js | 17 +-
.../src/components/CrudThemeProvider.tsx | 76 +
.../Datasource/ChangeDatasourceModal.tsx | 1 +
.../src/components/Datasource/DatasourceEditor.jsx | 65 +-
.../components/ErrorMessage/BasicErrorAlert.tsx | 9 +-
.../src/components/ErrorMessage/ErrorAlert.tsx | 1 +
.../src/components/FacePile/FacePile.test.tsx | 112 +-
.../src/components/ImportModal/index.tsx | 3 +-
.../src/components/ListView/Filters/Search.tsx | 8 +-
.../ModalTitleWithIcon/ModalTitleWithIcon.test.tsx | 60 +
.../src/components/ModalTitleWithIcon/index.tsx | 62 +
superset-frontend/src/components/Tag/index.tsx | 3 +-
.../src/components/Tag/utils.test.tsx | 167 +-
.../src/components/TagsList/TagsList.test.tsx | 126 +
.../src/dashboard/actions/dashboardInfo.ts | 46 +
.../components/CssEditor/CssEditor.test.tsx | 38 +-
.../src/dashboard/components/CssEditor/index.tsx | 224 +-
.../DashboardBuilder/DashboardBuilder.test.tsx | 1 +
.../dashboard/components/EmbeddedModal/index.tsx | 9 +-
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/types.ts | 4 +
.../Header/useHeaderActionsDropdownMenu.tsx | 370 +-
.../PropertiesModal/PropertiesModal.test.tsx | 7 +-
.../dashboard/components/PropertiesModal/index.tsx | 15 +-
.../components/RefreshIntervalModal.test.tsx | 14 +-
.../src/dashboard/components/SaveModal.tsx | 280 +-
.../components/SliceHeaderControls/index.tsx | 370 +-
.../dashboard/components/gridComponents/Tabs.jsx | 1 -
.../DownloadMenuItems/DownloadMenuItems.test.tsx | 22 +-
.../components/menu/DownloadMenuItems/index.tsx | 114 +-
.../menu/ShareMenuItems/ShareMenuItems.test.tsx | 49 +-
.../components/menu/ShareMenuItems/index.tsx | 43 +-
.../CrossFilters/ScopingModal/ScopingModal.tsx | 4 +-
.../FilterBar/FilterControls/FilterValue.tsx | 29 +
.../FiltersConfigModal/FilterConfigPane.test.tsx | 6 +-
.../FiltersConfigModal/FilterTitlePane.tsx | 4 +-
.../src/dashboard/containers/DashboardPage.tsx | 29 +-
.../src/dashboard/reducers/dashboardInfo.js | 7 +
superset-frontend/src/dashboard/styles.ts | 14 +-
superset-frontend/src/dashboard/types.ts | 6 +
.../EmbeddedContextProviders.tsx} | 36 +-
superset-frontend/src/embedded/index.tsx | 40 +-
.../explore/components/ControlPanelsContainer.tsx | 18 +-
.../explore/components/PropertiesModal/index.tsx | 20 +-
.../src/explore/components/SaveModal.tsx | 7 +-
.../controls/DateFilterControl/DateFilterLabel.tsx | 23 +-
.../DateFilterControl/components/DateLabel.tsx | 14 +-
.../DndColumnSelectControl/ColumnSelectPopover.tsx | 7 +-
.../explore/components/controls/ViewQuery.test.tsx | 40 +-
.../src/explore/components/controls/ViewQuery.tsx | 132 +-
.../explore/components/controls/ViewQueryModal.tsx | 4 +-
.../controls/VizTypeControl/FastVizSwitcher.tsx | 13 +-
.../components/controls/VizTypeControl/VizTile.tsx | 3 +-
.../VizTypeControl/VizTypeControl.test.tsx | 21 +
.../controls/VizTypeControl/VizTypeGallery.tsx | 7 +
.../useExploreAdditionalActionsMenu/index.jsx | 475 +-
.../src/explore/controlPanels/sections.tsx | 3 +-
.../src/explore/exploreUtils/exploreUtils.test.jsx | 4 +-
.../src/explore/exploreUtils/index.js | 6 +-
.../src/features/alerts/AlertReportModal.tsx | 20 +-
.../annotationLayers/AnnotationLayerModal.tsx | 41 +-
.../src/features/annotations/AnnotationModal.tsx | 39 +-
.../src/features/cssTemplates/CssTemplateModal.tsx | 37 +-
.../databases/DatabaseModal/ExtraOptions.tsx | 29 +
.../databases/DatabaseModal/SSHTunnelForm.tsx | 2 +-
.../src/features/databases/DatabaseModal/index.tsx | 74 +-
.../src/features/databases/DatabaseModal/styles.ts | 3 +-
.../UploadDataModel/UploadDataModal.test.tsx | 28 +-
.../features/databases/UploadDataModel/index.tsx | 14 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 146 +-
.../features/datasets/AddDataset/Footer/index.tsx | 52 +-
.../features/datasets/DuplicateDatasetModal.tsx | 11 +-
.../src/features/groups/GroupListModal.tsx | 9 +-
superset-frontend/src/features/home/ChartTable.tsx | 18 +-
.../src/features/home/DashboardTable.tsx | 17 +-
superset-frontend/src/features/home/Menu.test.tsx | 39 +
superset-frontend/src/features/home/Menu.tsx | 10 +-
superset-frontend/src/features/home/RightMenu.tsx | 46 +-
.../src/features/home/SavedQueries.tsx | 5 +-
.../HeaderReportDropdown/index.test.tsx | 58 +-
.../ReportModal/HeaderReportDropdown/index.tsx | 274 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 28 +-
.../src/features/roles/RoleListAddModal.tsx | 12 +-
.../src/features/roles/RoleListDuplicateModal.tsx | 11 +-
.../src/features/roles/RoleListEditModal.tsx | 10 +-
.../src/features/tags/BulkTagModal.tsx | 4 +-
superset-frontend/src/features/tags/TagModal.tsx | 10 +-
.../src/features/themes/ThemeModal.test.tsx | 286 +
.../src/features/themes/ThemeModal.tsx | 414 +
.../src/features/{cssTemplates => themes}/types.ts | 8 +-
.../src/features/users/UserListModal.tsx | 9 +-
.../components/Select/SelectFilterPlugin.tsx | 59 +
.../components/TimeGrain/TimeGrainFilterPlugin.tsx | 1 +
.../src/pages/AlertReportList/index.tsx | 17 +-
.../src/pages/AnnotationLayerList/index.tsx | 16 +-
.../src/pages/AnnotationList/index.tsx | 8 +-
.../pages/ChartList/ChartList.cardview.test.tsx | 588 ++
.../pages/ChartList/ChartList.listview.test.tsx | 883 ++
.../pages/ChartList/ChartList.permissions.test.tsx | 486 +
.../src/pages/ChartList/ChartList.test.jsx | 343 -
.../src/pages/ChartList/ChartList.test.tsx | 476 +
.../src/pages/ChartList/ChartList.testHelpers.tsx | 332 +
superset-frontend/src/pages/ChartList/index.tsx | 37 +-
.../src/pages/CssTemplateList/index.tsx | 18 +-
.../src/pages/DashboardList/index.tsx | 32 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 8 +-
superset-frontend/src/pages/DatasetList/index.tsx | 36 +-
.../src/pages/RowLevelSecurityList/index.tsx | 12 +-
.../src/pages/SavedQueryList/index.tsx | 37 +-
.../src/pages/ThemeList/ThemeList.test.tsx | 201 +
superset-frontend/src/pages/ThemeList/index.tsx | 524 ++
superset-frontend/src/pages/UserInfo/index.tsx | 1 -
superset-frontend/src/setup/setupClient.ts | 32 +
superset-frontend/src/theme/ThemeController.ts | 332 +-
superset-frontend/src/theme/ThemeProvider.tsx | 74 +-
.../src/theme/tests/ThemeController.test.ts | 309 +-
.../src/theme/tests/ThemeProvider.test.tsx | 3 +-
superset-frontend/src/types/Dashboard.ts | 5 +
superset-frontend/src/types/bootstrapTypes.ts | 18 +-
superset-frontend/src/utils/chartRegistry.test.ts | 225 +
superset-frontend/src/utils/downloadAsImage.ts | 273 +-
superset-frontend/src/views/CRUD/hooks.test.tsx | 153 +
superset-frontend/src/views/CRUD/types.ts | 3 +-
superset-frontend/src/views/routes.tsx | 8 +
superset-frontend/webpack.config.js | 6 +
superset-websocket/package-lock.json | 29 +-
superset-websocket/package.json | 7 +-
superset-websocket/spec/config.test.ts | 1 +
superset-websocket/spec/index.test.ts | 35 +-
superset-websocket/src/index.ts | 4 +-
superset/__init__.py | 3 -
superset/advanced_data_type/api.py | 7 +-
superset/app.py | 21 +-
superset/async_events/async_query_manager.py | 29 +-
superset/available_domains/api.py | 5 +-
superset/charts/api.py | 3 +-
superset/charts/data/api.py | 4 +-
superset/charts/schemas.py | 46 +-
superset/cli/lib.py | 48 -
superset/cli/main.py | 37 +-
superset/cli/reset.py | 101 +-
superset/cli/test.py | 5 +-
superset/commands/dashboard/filter_state/get.py | 5 +-
superset/commands/dashboard/update.py | 5 +-
superset/commands/database/create.py | 4 +-
superset/commands/database/importers/v1/utils.py | 4 +-
superset/commands/database/sync_permissions.py | 6 +-
superset/commands/database/validate_sql.py | 6 +-
superset/commands/dataset/create.py | 11 +-
superset/commands/dataset/importers/v1/utils.py | 11 +-
superset/commands/distributed_lock/base.py | 4 +-
superset/commands/distributed_lock/create.py | 4 +-
superset/commands/distributed_lock/delete.py | 4 +-
superset/commands/distributed_lock/get.py | 4 +-
superset/commands/explore/form_data/get.py | 5 +-
superset/commands/importers/v1/utils.py | 6 +
superset/commands/report/alert.py | 3 +-
superset/commands/report/base.py | 4 +-
superset/commands/report/execute.py | 6 +-
superset/commands/sql_lab/estimate.py | 11 +-
superset/commands/sql_lab/export.py | 9 +-
superset/commands/sql_lab/permalink/get.py | 2 +-
superset/commands/sql_lab/results.py | 9 +-
.../theme}/__init__.py | 0
superset/commands/theme/delete.py | 116 +
.../commands/{security => theme}/exceptions.py | 18 +-
superset/commands/theme/export.py | 75 +
superset/commands/theme/import_themes.py | 85 +
.../theme/importers}/__init__.py | 0
.../{chart => theme}/importers/dispatcher.py | 11 +-
superset/commands/theme/seed.py | 108 +
.../ssh_tunnel/delete.py => theme/update.py} | 42 +-
superset/common/query_actions.py | 3 -
superset/common/query_context_factory.py | 7 +-
superset/common/query_context_processor.py | 21 +-
superset/common/query_object.py | 3 +
superset/common/utils/query_cache_manager.py | 18 +-
superset/common/utils/time_range_utils.py | 7 +-
superset/config.py | 152 +-
superset/connectors/sqla/models.py | 35 +-
superset/connectors/sqla/utils.py | 8 +-
superset/daos/{security.py => theme.py} | 14 +-
superset/dashboards/api.py | 1 +
superset/dashboards/schemas.py | 13 +
superset/databases/api.py | 11 +-
superset/databases/filters.py | 4 +-
superset/databases/ssh_tunnel/models.py | 3 -
superset/datasource/api.py | 3 +-
superset/db_engine_specs/__init__.py | 5 +-
superset/db_engine_specs/base.py | 20 +-
superset/db_engine_specs/clickhouse.py | 4 +-
superset/db_engine_specs/duckdb.py | 5 +-
superset/db_engine_specs/hive.py | 19 +-
superset/db_engine_specs/impala.py | 4 +-
superset/db_engine_specs/ocient.py | 3 +-
superset/db_engine_specs/presto.py | 4 +-
superset/db_engine_specs/singlestore.py | 6 +-
superset/db_engine_specs/snowflake.py | 8 +-
superset/db_engine_specs/trino.py | 10 +-
superset/examples/bart_lines.py | 4 +-
superset/examples/birth_names.py | 13 +-
.../configs/datasets/examples/FCC_2018_Survey.yaml | 2 +-
.../configs/datasets/examples/channel_members.yaml | 2 +-
.../configs/datasets/examples/channels.yaml | 2 +-
.../datasets/examples/cleaned_sales_data.yaml | 2 +-
.../configs/datasets/examples/covid_vaccines.yaml | 2 +-
.../configs/datasets/examples/exported_stats.yaml | 2 +-
.../configs/datasets/examples/messages.yaml | 2 +-
.../configs/datasets/examples/threads.yaml | 2 +-
.../datasets/examples/unicode_test.test.yaml | 2 +-
.../examples/configs/datasets/examples/users.yaml | 2 +-
.../configs/datasets/examples/users_channels.yaml | 2 +-
.../datasets/examples/video_game_sales.yaml | 2 +-
superset/examples/country_map.py | 2 +-
superset/examples/energy.py | 2 +-
superset/examples/flights.py | 4 +-
superset/examples/helpers.py | 25 +-
superset/examples/long_lat.py | 2 +-
superset/examples/multiformat_time_series.py | 9 +-
superset/examples/paris.py | 2 +-
superset/examples/random_time_series.py | 9 +-
superset/examples/sf_population_polygons.py | 4 +-
superset/examples/supported_charts_dashboard.py | 2 +-
superset/examples/world_bank.py | 7 +-
superset/extensions/pylint.py | 37 -
superset/initialization/__init__.py | 107 +-
superset/migrations/shared/migrate_viz/base.py | 6 +-
.../shared/migrate_viz/query_functions.py | 2 +-
...c2d8ec8595_create_ssh_tunnel_credentials_tbl.py | 3 -
...2_convert_metric_currencies_from_str_to_json.py | 2 +-
...=> 2025-07-15_16-40_3fd555e76e3d_theme_crud.py} | 66 +-
...d1fb11291f2_add_theme_id_to_dashboard_model.py} | 42 +-
superset/models/core.py | 42 +-
superset/models/dashboard.py | 9 +-
superset/models/helpers.py | 136 +-
superset/models/sql_lab.py | 8 +-
superset/reports/notifications/email.py | 11 +-
superset/security/manager.py | 33 +-
superset/sql/parse.py | 69 +-
superset/sql_lab.py | 59 +-
superset/sql_validators/presto_db.py | 2 -
superset/sqllab/api.py | 11 +-
superset/tasks/cron_util.py | 5 +-
superset/tasks/scheduler.py | 21 +-
superset/templates/superset/spa.html | 7 +
superset/themes/api.py | 534 ++
superset/{css_templates => themes}/filters.py | 10 +-
superset/themes/schemas.py | 88 +
superset/thumbnails/digest.py | 12 +-
superset/translations/ar/LC_MESSAGES/messages.po | 8 +-
superset/translations/ca/LC_MESSAGES/messages.po | 8 +-
superset/translations/de/LC_MESSAGES/messages.po | 8 +-
superset/translations/en/LC_MESSAGES/messages.po | 8 +-
superset/translations/es/LC_MESSAGES/messages.po | 9272 ++++++++------------
superset/translations/fa/LC_MESSAGES/messages.po | 8 +-
superset/translations/fr/LC_MESSAGES/messages.po | 8 +-
superset/translations/it/LC_MESSAGES/messages.po | 8 +-
superset/translations/ja/LC_MESSAGES/messages.po | 8 +-
superset/translations/ko/LC_MESSAGES/messages.po | 8 +-
superset/translations/messages.pot | 8 +-
superset/translations/nl/LC_MESSAGES/messages.po | 8 +-
superset/translations/pl/LC_MESSAGES/messages.po | 8 +-
superset/translations/pt/LC_MESSAGES/messages.po | 8 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 8 +-
superset/translations/ru/LC_MESSAGES/messages.po | 8 +-
superset/translations/sk/LC_MESSAGES/messages.po | 8 +-
superset/translations/sl/LC_MESSAGES/messages.po | 8 +-
superset/translations/tr/LC_MESSAGES/messages.po | 8 +-
superset/translations/uk/LC_MESSAGES/messages.po | 8 +-
superset/translations/zh/LC_MESSAGES/messages.po | 8 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 8 +-
superset/utils/cache.py | 23 +-
superset/utils/core.py | 136 +-
superset/utils/database.py | 10 +-
superset/utils/decorators.py | 12 +-
superset/utils/encrypt.py | 2 +-
superset/utils/machine_auth.py | 10 +-
superset/utils/oauth2.py | 10 +-
superset/utils/screenshots.py | 9 +-
superset/utils/slack.py | 8 +-
superset/utils/urls.py | 8 +-
superset/utils/webdriver.py | 44 +-
superset/views/base.py | 128 +-
superset/views/core.py | 5 +-
superset/views/database/views.py | 5 +-
superset/views/datasource/schemas.py | 20 +-
superset/views/datasource/utils.py | 3 +-
superset/views/error_handling.py | 3 +
superset/views/filters.py | 10 +-
superset/views/health.py | 12 +-
superset/views/{css_templates.py => themes.py} | 7 +-
superset/views/users/api.py | 15 +-
superset/views/utils.py | 8 +-
superset/viz.py | 54 +-
tests/conftest.py | 3 +-
.../advanced_data_type/api_tests.py | 17 +-
.../available_domains/api_tests.py | 6 +-
tests/integration_tests/base_api_tests.py | 2 +-
tests/integration_tests/base_tests.py | 17 +-
tests/integration_tests/cache_tests.py | 2 +-
tests/integration_tests/charts/data/api_tests.py | 28 +-
tests/integration_tests/charts/schema_tests.py | 9 +-
tests/integration_tests/cli_tests.py | 29 +-
tests/integration_tests/core_tests.py | 18 +-
tests/integration_tests/dashboards/api_tests.py | 35 +-
tests/integration_tests/dashboards/base_case.py | 6 +-
.../integration_tests/dashboards/commands_tests.py | 4 +-
.../dashboards/security/security_dataset_tests.py | 8 +-
.../dashboards/test_theme_integration.py | 361 +
tests/integration_tests/databases/api_tests.py | 88 +-
tests/integration_tests/datasets/api_tests.py | 31 +-
tests/integration_tests/datasource_tests.py | 19 +-
.../db_engine_specs/base_engine_spec_tests.py | 6 +-
tests/integration_tests/email_tests.py | 115 +-
.../explore/form_data/commands_tests.py | 17 +-
.../explore/permalink/commands_tests.py | 7 +-
.../fixtures/dashboard_with_tabs.py | 2 +-
tests/integration_tests/model_tests.py | 11 +-
tests/integration_tests/query_context_tests.py | 5 +-
tests/integration_tests/reports/api_tests.py | 10 +-
tests/integration_tests/reports/commands_tests.py | 46 +-
.../security/row_level_security_tests.py | 11 +-
tests/integration_tests/security_tests.py | 8 +-
tests/integration_tests/sql_lab/api_tests.py | 31 +-
tests/integration_tests/sql_lab/commands_tests.py | 13 +-
.../sql_lab/permalink/api_tests.py | 2 +-
.../sql_lab/test_execute_sql_statements.py | 7 +-
tests/integration_tests/test_app.py | 1 +
.../integration_tests/themes}/__init__.py | 0
.../integration_tests/themes/api_endpoints_test.py | 322 +
tests/integration_tests/themes/api_tests.py | 398 +
tests/integration_tests/thumbnails_tests.py | 8 +-
tests/integration_tests/utils_tests.py | 18 +-
tests/integration_tests/viz_tests.py | 71 +-
tests/unit_tests/charts/test_schemas.py | 154 +
.../databases/importers/v1/command_test.py | 2 +-
tests/unit_tests/commands/dataset/test_create.py | 170 +
tests/unit_tests/commands/report/base_test.py | 12 +-
tests/unit_tests/commands/report/execute_test.py | 2 +-
.../common/test_query_context_processor.py | 8 +-
tests/unit_tests/config_test.py | 142 +-
tests/unit_tests/connectors/sqla/models_test.py | 409 +
tests/unit_tests/connectors/sqla/test_utils.py | 123 +
tests/unit_tests/databases/api_test.py | 31 +-
.../databases/commands/importers/v1/import_test.py | 7 +-
tests/unit_tests/databases/filters_test.py | 6 +-
tests/unit_tests/db_engine_specs/test_base.py | 4 +-
tests/unit_tests/db_engine_specs/test_duckdb.py | 11 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 4 +-
tests/unit_tests/extensions/test_sqlalchemy.py | 69 +-
tests/unit_tests/jinja_context_test.py | 62 +-
.../unit_tests/migrations/shared/catalogs_test.py | 8 +-
tests/unit_tests/models/core_test.py | 13 +-
tests/unit_tests/models/helpers_test.py | 314 +
tests/unit_tests/models/sql_lab_test.py | 45 +-
tests/unit_tests/queries/query_object_test.py | 1 +
tests/unit_tests/reports/schemas_test.py | 12 +-
tests/unit_tests/security/manager_test.py | 2 +-
tests/unit_tests/sql/parse_tests.py | 65 +-
tests/unit_tests/sql_lab_test.py | 41 +-
.../unit_tests/themes}/__init__.py | 0
tests/unit_tests/themes/api_test.py | 119 +
tests/unit_tests/themes/commands_test.py | 216 +
tests/unit_tests/themes/dao_test.py | 56 +
tests/unit_tests/themes/model_test.py | 53 +
tests/unit_tests/themes/test_utils.py | 1 +
tests/unit_tests/thumbnails/test_digest.py | 11 +-
tests/unit_tests/utils/map_type_tests.py | 86 +
tests/unit_tests/utils/test_core.py | 21 +-
tests/unit_tests/utils/test_decorators.py | 3 +-
503 files changed, 23983 insertions(+), 10282 deletions(-)
create mode 100644 .devcontainer/Dockerfile
create mode 100644 .devcontainer/README.md
create mode 100644 .devcontainer/bashrc-additions
create mode 100755 .devcontainer/build-and-push-image.sh
create mode 100644 .devcontainer/devcontainer.json
create mode 100755 .devcontainer/setup-dev.sh
create mode 100755 .devcontainer/start-superset.sh
create mode 100644 docker-compose-light.yml
copy
superset/migrations/versions/2020-08-08_18-10_f2672aa8350a_add_slack_to_alerts.py
=> docker/pythonpath_dev/superset_config_docker_light.py (53%)
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/useJsonValidation.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/useJsonValidation.ts
delete mode 100644
superset-frontend/packages/superset-ui-core/src/components/ThemeSelect/index.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/ThemeSubMenu/ThemeSubMenu.test.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/ThemeSubMenu/index.tsx
create mode 100644
superset-frontend/packages/superset-ui-core/src/theme/utils/themeUtils.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/theme/utils/themeUtils.ts
delete mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/i18n.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/controlPanel.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/Bar/transformProps.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/constants.test.ts
delete mode 100644 superset-frontend/plugins/plugin-chart-table/src/i18n.ts
copy
superset-frontend/src/components/Chart/DrillDetail/{DrillDetailMenuItems.tsx =>
useDrillDetailMenuItems.tsx} (63%)
create mode 100644 superset-frontend/src/components/CrudThemeProvider.tsx
create mode 100644
superset-frontend/src/components/ModalTitleWithIcon/ModalTitleWithIcon.test.tsx
create mode 100644
superset-frontend/src/components/ModalTitleWithIcon/index.tsx
copy superset-frontend/src/{views/RootContextProviders.tsx =>
embedded/EmbeddedContextProviders.tsx} (75%)
create mode 100644 superset-frontend/src/features/themes/ThemeModal.test.tsx
create mode 100644 superset-frontend/src/features/themes/ThemeModal.tsx
copy superset-frontend/src/features/{cssTemplates => themes}/types.ts (89%)
create mode 100644
superset-frontend/src/pages/ChartList/ChartList.cardview.test.tsx
create mode 100644
superset-frontend/src/pages/ChartList/ChartList.listview.test.tsx
create mode 100644
superset-frontend/src/pages/ChartList/ChartList.permissions.test.tsx
delete mode 100644 superset-frontend/src/pages/ChartList/ChartList.test.jsx
create mode 100644 superset-frontend/src/pages/ChartList/ChartList.test.tsx
create mode 100644
superset-frontend/src/pages/ChartList/ChartList.testHelpers.tsx
create mode 100644 superset-frontend/src/pages/ThemeList/ThemeList.test.tsx
create mode 100644 superset-frontend/src/pages/ThemeList/index.tsx
create mode 100644 superset-frontend/src/utils/chartRegistry.test.ts
delete mode 100755 superset/cli/lib.py
copy superset/{advanced_data_type => commands/theme}/__init__.py (100%)
create mode 100644 superset/commands/theme/delete.py
copy superset/commands/{security => theme}/exceptions.py (71%)
create mode 100644 superset/commands/theme/export.py
create mode 100644 superset/commands/theme/import_themes.py
copy superset/{advanced_data_type => commands/theme/importers}/__init__.py
(100%)
copy superset/commands/{chart => theme}/importers/dispatcher.py (90%)
create mode 100644 superset/commands/theme/seed.py
copy superset/commands/{database/ssh_tunnel/delete.py => theme/update.py} (54%)
copy superset/daos/{security.py => theme.py} (69%)
copy
superset/migrations/versions/{2022-03-04_09-59_6766938c6065_add_key_value_store.py
=> 2025-07-15_16-40_3fd555e76e3d_theme_crud.py} (54%)
copy
superset/migrations/versions/{2024-05-01_10-52_58d051681a3b_add_catalog_perm_to_tables.py
=> 2025-07-15_18-41_cd1fb11291f2_add_theme_id_to_dashboard_model.py} (55%)
create mode 100644 superset/themes/api.py
copy superset/{css_templates => themes}/filters.py (80%)
create mode 100644 superset/themes/schemas.py
copy superset/views/{css_templates.py => themes.py} (89%)
create mode 100644 tests/integration_tests/dashboards/test_theme_integration.py
copy {superset/advanced_data_type =>
tests/integration_tests/themes}/__init__.py (100%)
create mode 100644 tests/integration_tests/themes/api_endpoints_test.py
create mode 100644 tests/integration_tests/themes/api_tests.py
create mode 100644 tests/unit_tests/charts/test_schemas.py
create mode 100644 tests/unit_tests/commands/dataset/test_create.py
create mode 100644 tests/unit_tests/connectors/sqla/test_utils.py
copy {superset/advanced_data_type => tests/unit_tests/themes}/__init__.py
(100%)
create mode 100644 tests/unit_tests/themes/api_test.py
create mode 100644 tests/unit_tests/themes/commands_test.py
create mode 100644 tests/unit_tests/themes/dao_test.py
create mode 100644 tests/unit_tests/themes/model_test.py
create mode 100644 tests/unit_tests/utils/map_type_tests.py