This is an automated email from the ASF dual-hosted git repository. elizabeth pushed a change to branch theming in repository https://gitbox.apache.org/repos/asf/superset.git
from 274fc8be37 feat: Add comprehensive dark mode support for chart thumbnails and examples add e8e1466185 feat: refactor modals to use consistent design patterns (#34711) add 6908a733a0 fix: Misaligned global controls in Table chart (#34799) add da8c0f94e6 fix: Remove border around textarea in dashboard edit mode (#34814) add 3895b8b127 fix: Low contrast in viz creator selected tag in dark mode (#34811) add 59c01e016d fix(native-filters): Low contrast of empty state in dark mode (#34812) add 2b2cc96f11 fix(DetailsPanel): Applied filters colors (#34790) add 0a45a89786 feat(docs): Docusaurus multi-versioning, Developer Portal starter kit (#34271) add 75af53dc3d fix: customize column description limit size in db_engine_spec (#34808) add e1234b2264 fix: User-provided Jinja template parameters causing SQL parsing errors (#34802) add a8be5a5a0c chore: Extensions architecture POC (#31934) add 5c3c2599db fix(Icons): Add missing data-test and aria-label attributes to custom icons (#34809) add 547f297171 fix(echarts): Series labels hard to read in dark mode (#34815) add b225432c55 fix: Unexpected overflow ellipsis dots after status icon in Dashboard list (#34798) add c7779578f9 chore: Add instruction for LLMs to use antd theme tokens (#34800) add 1204507d68 fix: make `get_image()` always return `BytesIO` (#34801) add b381992a75 fix(theming): explore chart type style fixes, nav right menu spacing fixed (#34795) add 471d9fe737 fix: Add dataset ID to file name on exports (#34782) add 9c9588cce6 fix: Avoid dataset drill request if no perm (#34665) add 47414e18d4 feat: Use DuckDB for examples data in Docker development environment (#34831) add b89b0bdf5d fix(sqllab): Missing executed sql value in the result table (#34846) add 4701e78f1f fix(docker): configure gunicorn for DuckDB thread safety in docker-compose-light (#34848) add b8c2f7db47 build(docker): update base debian image to 13 (trixie) (#34821) add 54af1cb2c8 chore: bump FAB to 4.8.1 (#34838) add 97b35a4640 fix(dashboard): Anchor link positions (#34843) add cb24737825 feat(bigquery): show materialized views (#34766) add 659db162d6 fix(docker): remove --with-threads from remaining dev workflows for DuckDB compatibility (#34851) add ab58b0a8a3 fix: DB icon sizes in database add modal (#34854) add b74a244950 fix: Remove the underline from the right section of main menu (#34855) add ce3b93d8a0 perf: Use react-router to toggle fullscreen mode on dashboard (#34857) add 06264f07fb chore(npm): updating apache-superset/core package name and version to test releasing. (#34862) add 53ce530a46 ci: Add Python 3.12 images to Docker Hub (#34853) add d8a3d29ad9 chore: Adds a README and CHANGELOG to @apache-superset/core (#34866) add 30c72ba0a3 chore: Adds README and CHANGELOG to apache-superset-core and apache-superset-cli (#34867) add b558b34faf fix: Update apache-superset-core dependency to accept rc1 version (#34872) add 836540e8c9 fix(tests): Mock MessageChannel to prevent Jest hanging from rc-overflow (#34871) add 5566eb8dd6 fix: Undefined error when viewing query in Explore + visual fixes (#34869) add 665a11f821 fix: SelectControl default sort numeric choices by value (#34858) add 7946ec003f fix(tests): Improve MessageChannel mocking to prevent worker force exits (#34878) add ebfb14c353 fix(ConfirmStatusChange): remove deprecated event.persist() to fix headless browser crashes (#34864) add bcf156c969 fix: Rename apache-superset-cli to apache-superset-extensions-cli (#34883) add 1d9e17df14 chore(docs): update files for release 4.1.4 (#34890) add e463743fcf fix: Filter bar orientation submenu should not be highlighted (#34900) add 812374b31b feat: Integrate Superset Showtime GitHub Actions workflows (#34833) add 54f071138c fix: Chart execution for Databricks (#34906) add dc7a8844eb feat(pie): add sort legend (#34323) add c5a84c0985 fix(drilling): drill by pagination works with MSSQL data source, cont. (#34724) add 6b69dc42dc fix: add --without-threads flag to Flask dev server for DuckDB compatibility (#34907) add 077724c2d2 feat(api): dataset read API uuid support (#34836) add 175835138c fix: Improve table layout and column sizing (#34887) add c1a3606774 fix: Update @apache-superset/core reference in package-lock.json (#34924) add 4695be5cc5 fix: complete theme management system import/export (#34850) add d183969744 fix(theming): fix TimeTable chart issues (#34868) add b9cbf2e766 chore(deps-dev): bump lerna from 8.2.1 to 8.2.3 in /superset-frontend (#34954) add bc9ec6ac63 fix: revert mistake setting TALISMAN_ENABLED=False (#34909) add 6e7cb521ba chore(deps): upgrade databricks connectors (#34692) add 4d040006b6 chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /docs (#34923) add fad3cb3162 fix: Athena quoting (#34895) add 92879e6b32 chore(deps-dev): bump eslint from 9.33.0 to 9.34.0 in /docs (#34929) add 322442d5be fix: apache-superset-core exported packages (#34977) add 9bcc62f210 fix: Skip coverage for @apache-superset/core (#34958) add 0a76f84142 chore(deps): bump caniuse-lite from 1.0.30001735 to 1.0.30001739 in /docs (#34921) add 6a4b1df3a2 fix(dashboard): table charts render correctly after tab switch and refresh (#34975) add ba838b6aeb chore(deps): bump @mdx-js/react from 3.1.0 to 3.1.1 in /docs (#34928) add f0ff972f0e chore(deps-dev): bump eslint-plugin-import from 2.31.0 to 2.32.0 in /superset-frontend (#34931) add 744fa1f54c fix(TimeTable): use type-only export for TableChartProps to resolve webpack warnings (#34989) add b2f8803486 fix: playwright feature flag evaluation (#34978) add 71242dc6dd docs(alerts & reports): update how to get headless browser (#34908) add 5dba59b6a4 fix(ChartCreation): Translate chart description (#34918) add 682cdcc3e0 fix(echarts): Display NULL values in categorical x-axis for bar charts (#34761) add b5ae402c12 fix(charts): Handle virtual dataset names without schema prefix correctly (#34760) add 0de5b28716 fix(databricks): string escaper v2 (#34991) add 0a75bac2a1 fix(error-handling): jinja2 error handling improvements (#34803) add b7a193d53e fix: apache-superset-extensions-cli exported files (#34990) add b0d3f0f0d4 feat: add customizable brand spinners with theme integration (#34764) add cefd046ea0 fix(sqllab): autocomplete and delete tabs (#34781) add 448a28545b fix(ui-core): Invalid postTransform process (#34874) add 355d7e1ee5 chore(deps-dev): bump eslint from 9.30.0 to 9.34.0 in /superset-websocket (#34936) add 15d2f22eb4 chore(deps): bump react-virtualized-auto-sizer and @types/react-virtualized-auto-sizer in /superset-frontend (#34938) add 1444ef36b9 chore(deps-dev): bump @babel/core from 7.27.7 to 7.28.3 in /superset-frontend (#34940) add fa5b0d7281 chore(deps-dev): bump cross-env from 7.0.3 to 10.0.0 in /superset-frontend (#34941) add 3081c7fb62 chore(deps-dev): bump fork-ts-checker-webpack-plugin from 9.0.2 to 9.1.0 in /superset-frontend (#34942) add 3ba3c09c47 chore(deps-dev): bump @types/jsonwebtoken from 9.0.9 to 9.0.10 in /superset-websocket (#34946) add a81282adeb chore(deps-dev): bump ts-jest from 29.3.1 to 29.4.1 in /superset-websocket (#34947) add a6b4ff9847 chore(deps): bump react-syntax-highlighter from 15.6.1 to 15.6.6 in /superset-frontend (#34949) add 0cd0b37983 chore(deps): bump @rjsf/core from 5.24.1 to 5.24.13 in /superset-frontend (#34950) add d2a1d86561 chore(deps): bump actions/download-artifact from 4 to 5 (#34963) add c426723275 chore(deps): bump geostyler-data from 1.0.0 to 1.1.0 in /superset-frontend (#34966) add e77ff267a1 chore(deps): bump luxon from 3.6.1 to 3.7.1 in /superset-frontend (#34967) add 61f359d565 chore(deps): bump actions/setup-java from 4 to 5 (#34968) add 3dbe593a4a chore(deps): bump actions/checkout from 4 to 5 (#34969) add 7320ad9a0a chore(deps): bump actions/first-interaction from 2 to 3 (#34970) add e5e3ddb24e chore(deps): bump codecov/codecov-action from 3 to 5 (#34972) add ea0a77daaf fix(tests): resolve AlertReportModal checkmark test failures (#34995) add 8406a827dd fix(deps): expand pyarrow version range to <19 (#34870) add 2e51d02806 fix: doris genericDataType modify (#35011) add 2e4ccffc11 fix: Add TypeScript declaration file generation to @apache-superset/core package (#35002) add 59df0d6f15 fix(RoleListEditModal): display user's other properties in table (#35017) add 569a7b33a5 fix(theming): more visual bugs (#34987) add 7fb7ac8bef fix(sql): Add Impala dialect support to sqlglot parser (#34662) add 031fb4b5a8 fix: display legend mixed timeseries chart (#35005) add 9424538bb1 feat: add sort legend to legend section (#34911) add ce74ae095d feat: Use dashboard name for screenshot download (#34988) add bc54b7970a fix(echarts): rename time series shifted for isTimeComparisonValue (#35022) add c65cb284e6 fix(chart): change "No query." to "Query cannot be loaded" in Multi Layer Deck.gl Chart (#34973) add d826e90395 chore(deps-dev): bump @typescript-eslint/parser from 8.33.0 to 8.41.0 in /superset-websocket (#34959) add 472e599f91 chore(deps): bump @rjsf/validator-ajv8 from 5.24.12 to 5.24.13 in /superset-frontend (#34953) add 876257fb94 chore(deps): bump ts-loader from 9.5.2 to 9.5.4 in /docs (#34956) add 4e969d19d1 feat: allow create metric and add to folder in single request (#34993) add a20b236809 chore(deps): bump sha.js from 2.4.11 to 2.4.12 in /docs (#34797) add 9efb80dbf4 fix(tests): one of integration test in TestSqlaTableModel does not support MySQL "concat" (#35007) add 5a3182ce21 fix: mixed timeseries chart add legend margin (#35036) add bef1f4d045 fix(theming): Icons in ExecutionLogList and Country map chart tooltip theme consistency (#34828) add 385471c34d fix(utils): ensure webdriver timeout compatibility with urllib3 2.x (#34440) add 0fce5ecfa5 fix(dashboard): normalize spacings and background colors (#35001) add 1c2b9db4f0 fix: Upload CSV as Dataset (#34763) add da7f6efea8 docs(typos): correct spelling mistakes (#35043) add b05def1a8a fix(superset-embedded-sdk/release-if-necessary): remove axios (#35038) add c5f220a9ff fix(table): table search input placeholder (#35064) add 15e4e8df94 fix(utils): Suppress pandas date parsing warnings in normalize_dttm_col (#35042) add 4c2b27e7f0 fix: Change database event in core (#35071) add 65376c7baf fix(Table Chart): render null dates properly (#34558) add 2f64343186 feat(dataset): create usage tab for dataset (#34707) add 42b15b6840 fix(translation): order incompatible placeholders, translated placeholders, semantic changes (#34722) add fedb3ca941 chore(deps-dev): bump @typescript-eslint/parser from 8.40.0 to 8.41.0 in /docs (#34934) add 912ed2ba80 fix(timeshifts): Add missing feature flag to enum (#35072) add 7a20a65a4d feat(embedded): Change function signature of setupExtensions (#35062) add a7d349a5c6 fix(drill-to-detail): ensure axis label filters map to original column names (#34694) add 078c1701f4 feat(sqllab extension): core query interface api (#35077) add 5a2411fa64 fix(settingsMenu): Version (#35096) add eb4351af83 feat(Timeseries & MixedTimeseries): Force selected timegrain on timeseries intervals when the x-axis is of timestamp type (#34595) add 529adebe1b fix(templates): Restores templates files accidentally removed (#35094) add 7bf16d805d fix(theming): replace error color with bolt icon for local themes (#35090) add b42060c880 fix(pie): fixes pie chart other click error (#35086) add 454ed1883f feat(BoxPlot): add chart data zoom (#35097) add 06261f262b fix: page size options 'all' correct in table and remove PAGE_SIZE_OPTIONS in handlebars (#35095) add e729b2dbb4 fix: SQL Lab tab events (#35105) add 3416bd1479 chore: add codeowners (#35107) add dea9068647 fix(DashboardEditor): CSS template selector UI in dashboard properties modal restored (#35106) add 72b02948f7 Merge branch 'master' into theming No new revisions were added by this update. Summary of changes: .devcontainer/Dockerfile | 2 +- .github/CODEOWNERS | 10 + .github/actions/change-detector/action.yml | 19 +- .github/workflows/bump-python-package.yml | 2 +- .github/workflows/cancel_duplicates.yml | 2 +- .github/workflows/check-python-deps.yml | 2 +- .github/workflows/check_db_migration_confict.yml | 2 +- .github/workflows/claude.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependency-review.yml | 4 +- .github/workflows/docker.yml | 8 +- .github/workflows/embedded-sdk-release.yml | 2 +- .github/workflows/embedded-sdk-test.yml | 2 +- .github/workflows/ephemeral-env-pr-close.yml | 10 +- .github/workflows/ephemeral-env.yml | 21 +- .github/workflows/generate-FOSSA-report.yml | 4 +- .github/workflows/github-action-validator.yml | 2 +- .github/workflows/issue_creation.yml | 2 +- .github/workflows/latest-release-tag.yml | 2 +- .github/workflows/license-check.yml | 4 +- .github/workflows/pr-lint.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- .github/workflows/prefer-typescript.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/showtime-cleanup.yml | 50 + .github/workflows/showtime-trigger.yml | 179 + .../{superset-cli.yml => superset-app-cli.yml} | 4 +- .github/workflows/superset-applitool-cypress.yml | 2 +- .../workflows/superset-applitools-storybook.yml | 2 +- .github/workflows/superset-docs-deploy.yml | 4 +- .github/workflows/superset-docs-verify.yml | 4 +- .github/workflows/superset-e2e.yml | 6 +- .github/workflows/superset-extensions-cli.yml | 64 + .github/workflows/superset-frontend.yml | 12 +- .github/workflows/superset-helm-lint.yml | 2 +- .github/workflows/superset-helm-release.yml | 2 +- .../workflows/superset-python-integrationtest.yml | 6 +- .github/workflows/superset-python-presto-hive.yml | 4 +- .github/workflows/superset-python-unittest.yml | 2 +- .github/workflows/superset-translations.yml | 4 +- .github/workflows/superset-websocket.yml | 2 +- .github/workflows/supersetbot.yml | 2 +- .github/workflows/tag-release.yml | 6 +- .github/workflows/tech-debt.yml | 2 +- .github/workflows/welcome-new-users.yml | 2 +- .gitignore | 2 +- .pre-commit-config.yaml | 80 +- .rat-excludes | 3 + CHANGELOG.md | 4 + docs/README.md => CHANGELOG/4.1.4.md | 18 +- Dockerfile | 65 +- LLMS.md | 4 +- Makefile | 2 +- RELEASING/Dockerfile.from_local_tarball | 2 +- RELEASING/Dockerfile.from_svn_tarball | 2 +- RELEASING/Dockerfile.make_docs | 2 +- RELEASING/Dockerfile.make_tarball | 2 +- RELEASING/README.md | 6 + UPDATING.md | 3 + docker-compose-light.yml | 29 +- docker-compose-non-dev.yml | 2 +- docker-compose.yml | 7 +- docker/apt-install.sh | 4 +- docker/docker-bootstrap.sh | 2 +- docker/docker-init.sh | 2 + docker/pip-install.sh | 6 +- docker/pythonpath_dev/superset_config.py | 14 +- docs/README.md | 180 + docs/components/chart-components/bar-chart.md | 105 + docs/components/index.md | 59 + docs/components/layout-components/grid.md | 113 + docs/components/test.mdx | 35 + docs/components/ui-components/button.mdx | 146 + docs/components/versions.json | 1 + docs/components_versions.json | 1 + docs/developer_portal/api/frontend.md | 477 ++ docs/developer_portal/architecture/overview.md | 348 ++ docs/developer_portal/cli/overview.md | 466 ++ docs/developer_portal/examples/index.md | 464 ++ docs/developer_portal/getting-started/index.md | 248 + docs/developer_portal/index.md | 126 + .../types.ts => docs/developer_portal/sidebars.js | 66 +- docs/developer_portal/versions.json | 1 + docs/developer_portal_versions.json | 1 + docs/docs/configuration/alerts-reports.mdx | 80 +- docs/docs/contributing/development.mdx | 24 +- docs/docs/contributing/howtos.mdx | 4 +- docs/docs/installation/docker-builds.mdx | 2 - docs/docs/installation/docker-compose.mdx | 2 +- docs/docusaurus.config.ts | 141 +- docs/package.json | 46 +- docs/scripts/manage-versions.mjs | 242 + docs/sidebarComponents.js | 68 + .../Chart/types.ts => docs/sidebarTutorials.js | 53 +- .../src/components/Button.jsx | 6 +- docs/src/components/StorybookWrapper.jsx | 121 + docs/src/pages/index.tsx | 20 +- docs/src/styles/custom.css | 54 + docs/src/theme/DocVersionBadge/index.js | 119 + .../src/theme/DocVersionBadge/styles.module.css | 30 +- docs/src/theme/DocVersionBanner/index.js | 121 + .../src/theme/DocVersionBanner/styles.module.css | 37 +- docs/src/webpack.extend.ts | 115 + docs/static/resources/openapi.json | 7 +- docs/tutorials_versions.json | 3 + .../{docs => versioned_docs/version-6.0.0}/api.mdx | 0 .../configuration/alerts-reports.mdx | 0 .../configuration/async-queries-celery.mdx | 0 .../version-6.0.0}/configuration/cache.mdx | 0 .../configuration/configuring-superset.mdx | 0 .../configuration/country-map-tools.mdx | 40 + .../version-6.0.0}/configuration/databases.mdx | 0 .../version-6.0.0}/configuration/event-logging.mdx | 0 .../importing-exporting-datasources.mdx | 0 .../version-6.0.0}/configuration/map-tiles.mdx | 0 .../configuration/networking-settings.mdx | 0 .../configuration/sql-templating.mdx | 0 .../version-6.0.0}/configuration/theming.mdx | 0 .../version-6.0.0}/configuration/timezones.mdx | 0 .../version-6.0.0}/contributing/contributing.mdx | 0 .../version-6.0.0}/contributing/development.mdx | 4 +- .../version-6.0.0}/contributing/guidelines.mdx | 0 .../version-6.0.0}/contributing/howtos.mdx | 4 +- .../version-6.0.0}/contributing/misc.mdx | 0 .../version-6.0.0/contributing/resources.mdx | 104 + .../{docs => versioned_docs/version-6.0.0}/faq.mdx | 0 .../version-6.0.0}/installation/architecture.mdx | 0 .../version-6.0.0}/installation/docker-builds.mdx | 0 .../version-6.0.0}/installation/docker-compose.mdx | 2 +- .../installation/installation-methods.mdx | 0 .../version-6.0.0}/installation/kubernetes.mdx | 0 .../version-6.0.0}/installation/pypi.mdx | 0 .../installation/upgrading-superset.mdx | 0 docs/versioned_docs/version-6.0.0/intro.md | 227 + .../version-6.0.0}/quickstart.mdx | 0 .../version-6.0.0}/security/cves.mdx | 0 .../version-6.0.0}/security/security.mdx | 0 .../creating-your-first-dashboard.mdx | 0 .../using-superset/exploring-data.mdx | 0 .../version-6.0.0}/using-superset/issue-codes.mdx | 0 .../versioned_sidebars/version-6.0.0-sidebars.json | 74 + docs/versions-config.json | 53 + docs/versions.json | 3 + docs/yarn.lock | 4807 ++++++++++++-------- pyproject.toml | 24 +- requirements/base.txt | 16 +- requirements/development.in | 3 +- requirements/development.txt | 336 +- scripts/change_detector.py | 5 + scripts/uv-pip-compile.sh | 10 +- superset-core/.gitignore | 1 + docs/README.md => superset-core/CHANGELOG.md | 7 +- LICENSE.txt => superset-core/LICENSE.txt | 0 superset-core/README.md | 113 + superset-core/pyproject.toml | 63 + .../src/superset_core}/__init__.py | 0 .../src/superset_core/api/__init__.py | 11 +- .../src/superset_core/api/types}/__init__.py | 0 .../src/superset_core/api/types/models.py | 90 + .../src/superset_core/api/types/query.py | 30 +- .../src/superset_core/api/types/rest_api.py | 64 + .../src/superset_core/extensions}/__init__.py | 0 .../src/superset_core/extensions/types.py | 63 + superset-embedded-sdk/package-lock.json | 426 -- superset-embedded-sdk/package.json | 1 - superset-embedded-sdk/release-if-necessary.js | 5 +- .../CHANGELOG.md | 7 +- LICENSE.txt => superset-extensions-cli/LICENSE.txt | 0 superset-extensions-cli/README.md | 110 + superset-extensions-cli/pyproject.toml | 125 + .../src/superset_extensions_cli}/__init__.py | 0 .../src/superset_extensions_cli/cli.py | 471 ++ .../src/superset_extensions_cli/constants.py | 6 +- .../templates/backend/pyproject.toml.j2 | 4 + .../templates/extension.json.j2 | 25 + .../templates/frontend/package.json.j2 | 34 + .../src/superset_extensions_cli/utils.py | 31 +- superset-extensions-cli/tests/README.md | 206 + .../tests}/__init__.py | 0 superset-extensions-cli/tests/conftest.py | 136 + superset-extensions-cli/tests/test_cli_build.py | 552 +++ superset-extensions-cli/tests/test_cli_bundle.py | 255 ++ superset-extensions-cli/tests/test_cli_dev.py | 238 + superset-extensions-cli/tests/test_cli_init.py | 362 ++ superset-extensions-cli/tests/test_cli_validate.py | 195 + superset-extensions-cli/tests/test_templates.py | 331 ++ superset-extensions-cli/tests/test_utils.py | 271 ++ superset-extensions-cli/tests/utils.py | 211 + superset-frontend/babel.config.js | 2 + .../cypress/e2e/dashboard/drilltodetail.test.ts | 4 +- .../cypress/e2e/dashboard/editmode.test.ts | 211 +- superset-frontend/jest.config.js | 2 + superset-frontend/package-lock.json | 4039 +++++++++++++--- superset-frontend/package.json | 28 +- .../packages/generator-superset/package.json | 2 +- .../packages/superset-core/.babelrc.json | 7 + .../packages/superset-core/CHANGELOG.md | 7 +- superset-frontend/packages/superset-core/README.md | 116 + .../packages/superset-core/package.json | 35 + .../superset-core/src/api/authentication.ts} | 44 +- .../packages/superset-core/src/api/commands.ts | 70 + .../superset-core/src/api/contributions.ts | 90 + .../packages/superset-core/src/api/core.ts | 304 ++ .../packages/superset-core/src/api/environment.ts | 153 + .../packages/superset-core/src/api/extensions.ts | 69 + .../packages/superset-core/src/api/index.ts | 42 + .../packages/superset-core/src/api/sqlLab.ts | 541 +++ .../superset-core/src/index.ts} | 2 +- .../packages/superset-core/tsconfig.json | 19 + .../superset-ui-chart-controls/src/index.ts | 4 +- .../src/operators/renameOperator.ts | 14 +- .../test/operators/renameOperator.test.ts | 38 + .../packages/superset-ui-core/package.json | 2 +- .../src/chart/components/SuperChartCore.test.tsx | 90 + .../src/chart/components/SuperChartCore.tsx | 61 +- .../src/components/AsyncAceEditor/index.tsx | 5 +- .../components/Collapse/CollapseLabelInModal.tsx | 14 +- .../ConfirmStatusChange.test.jsx | 66 - .../ConfirmStatusChange.test.tsx | 177 + .../src/components/ConfirmStatusChange/index.tsx | 5 +- .../src/components/EditableTitle/index.tsx | 7 +- .../src/components/IconButton/index.tsx | 31 +- .../src/components/IconTooltip/index.tsx | 6 +- .../src/components/IconTooltip/types.ts | 2 + .../src/components/Icons/AntdEnhanced.tsx | 2 + .../src/components/Icons/AsyncIcon.tsx | 8 +- .../src/components/Icons/BaseIcon.tsx | 2 +- .../components/Label/reusable/PublishedLabel.tsx | 9 +- .../src/components/Loading/Loading.stories.tsx | 192 +- .../src/components/Loading/Loading.test.tsx | 3 +- .../src/components/Loading/index.test.tsx | 107 + .../src/components/Loading/index.tsx | 76 +- .../src/components/Loading/types.ts | 4 + .../src/components/Popconfirm}/index.tsx | 11 +- .../src/components/Table/index.tsx | 4 + .../src/components/TableCollection/index.tsx | 8 +- .../src/components/TableCollection/utils.tsx | 4 +- .../src/components/Tabs/Tabs.test.tsx | 306 ++ .../superset-ui-core/src/components/Tabs/Tabs.tsx | 6 +- .../src/components/assets/images/index.ts | 4 +- .../src/components/assets/images/loading.svg | Bin 0 -> 1652 bytes .../superset-ui-core/src/components/index.ts | 1 + .../src/connection/SupersetClient.ts | 1 + .../src/connection/SupersetClientClass.ts | 8 +- .../superset-ui-core/src/connection/types.ts | 1 + .../packages/superset-ui-core/src/theme/Theme.tsx | 4 + .../packages/superset-ui-core/src/theme/types.ts | 4 + .../superset-ui-core/src/utils/featureFlags.ts | 2 + .../Icons/AsyncIcon.integration.test.tsx | 122 + .../test/connection/SupersetClient.test.ts | 2 +- .../packages/superset-ui-demo/package.json | 2 +- .../src/ReactCountryMap.jsx | 2 + .../legacy-preset-chart-nvd3/src/ReactNVD3.jsx | 6 + .../src/BoxPlot/controlPanel.ts | 1 + .../src/BoxPlot/transformProps.ts | 21 + .../src/Bubble/transformProps.ts | 6 +- .../src/Funnel/transformProps.ts | 6 +- .../src/Gantt/transformProps.ts | 14 + .../src/Graph/transformProps.ts | 6 +- .../src/MixedTimeseries/controlPanel.tsx | 2 + .../src/MixedTimeseries/transformProps.ts | 34 +- .../src/MixedTimeseries/types.ts | 1 + .../plugin-chart-echarts/src/Pie/transformProps.ts | 8 +- .../src/Radar/transformProps.ts | 6 +- .../src/Timeseries/Area/controlPanel.tsx | 2 + .../src/Timeseries/Regular/Bar/controlPanel.tsx | 2 + .../src/Timeseries/Regular/Line/controlPanel.tsx | 2 + .../Timeseries/Regular/Scatter/controlPanel.tsx | 2 + .../Timeseries/Regular/SmoothLine/controlPanel.tsx | 2 + .../src/Timeseries/Step/controlPanel.tsx | 2 + .../src/Timeseries/transformProps.ts | 21 +- .../plugin-chart-echarts/src/Timeseries/types.ts | 1 + .../plugins/plugin-chart-echarts/src/constants.ts | 1 + .../plugins/plugin-chart-echarts/src/controls.tsx | 34 + .../plugins/plugin-chart-echarts/src/types.ts | 1 + .../src/utils/eventHandlers.ts | 7 +- .../plugin-chart-echarts/src/utils/series.ts | 7 +- .../test/BoxPlot/transformProps.test.ts | 8 + .../test/Bubble/transformProps.test.ts | 149 +- .../test/Funnel/transformProps.test.ts | 89 +- .../test/Gantt/transformProps.test.ts | 146 +- .../test/Graph/transformProps.test.ts | 156 +- .../test/MixedTimeseries/transformProps.test.ts | 160 + .../test/Pie/transformProps.test.ts | 100 + .../test/Radar/transformProps.test.ts | 162 +- .../test/Timeseries/transformProps.test.ts | 146 +- .../plugin-chart-echarts/test/utils/series.test.ts | 37 + .../plugins/plugin-chart-handlebars/src/consts.ts | 16 - .../plugins/plugin-chart-table/src/TableChart.tsx | 8 +- .../plugins/plugin-chart-table/src/consts.ts | 2 +- .../spec/helpers/jsDomWithFetchAPI.ts | 7 + superset-frontend/spec/helpers/shim.tsx | 27 +- superset-frontend/spec/helpers/testing-library.tsx | 5 +- superset-frontend/src/SqlLab/actions/sqlLab.js | 8 +- .../src/SqlLab/actions/sqlLab.test.js | 4 + .../SqlLab/components/QueryAutoRefresh/index.tsx | 11 +- .../src/SqlLab/components/ResultSet/index.tsx | 2 + .../src/SqlLab/components/SouthPane/index.tsx | 12 + .../SqlLab/components/SqlEditor/SqlEditor.test.tsx | 4 +- .../src/SqlLab/components/SqlEditor/index.tsx | 51 +- superset-frontend/src/SqlLab/fixtures.ts | 4 + .../src/SqlLab/reducers/getInitialState.ts | 20 +- superset-frontend/src/SqlLab/reducers/sqlLab.js | 10 +- .../src/SqlLab/reducers/sqlLab.test.js | 16 +- superset-frontend/src/SqlLab/types.ts | 1 + .../SqlLab/utils/reduxStateToLocalStorageHelper.ts | 1 + superset-frontend/src/components/Chart/Chart.tsx | 16 +- .../Chart/ChartContextMenu/ChartContextMenu.tsx | 1 + .../Chart/ChartContextMenu/useContextMenu.test.tsx | 58 + .../src/components/Chart/ChartRenderer.jsx | 1 + .../src/components/Chart/ChartRenderer.test.jsx | 23 +- superset-frontend/src/components/Chart/types.ts | 10 +- .../src/components/CopyToClipboard/index.tsx | 11 +- .../ChangeDatasourceModal.test.jsx | 2 +- .../index.tsx} | 2 +- .../{ => DatasourceModal}/DatasourceModal.test.jsx | 2 +- .../index.tsx} | 6 +- .../CollectionTable}/CollectionTable.test.tsx | 2 +- .../CollectionTable/index.tsx} | 6 +- .../DatasourceEditor}/DatasourceEditor.jsx | 129 +- .../DashboardLinksExternal.test.tsx | 132 + .../components/DashboardLinksExternal/index.tsx | 78 + .../DatasetUsageTab/DatasetUsageTab.test.tsx | 214 + .../components/DatasetUsageTab/index.tsx | 293 ++ .../DatasourceEditor/components}/index.ts | 5 +- .../components/DatasourceEditor/index.ts} | 2 +- .../tests}/DatasourceEditor.test.jsx | 4 +- .../tests}/DatasourceEditorCurrency.test.jsx | 2 +- .../tests}/DatasourceEditorRTL.test.jsx | 0 .../{ => components/Field}/Field.test.tsx | 2 +- .../{Field.tsx => components/Field/index.tsx} | 0 .../Fieldset/index.tsx} | 4 +- .../components/Datasource/components}/index.ts | 7 +- .../components/Datasource/{index.tsx => index.ts} | 0 .../Datasource/{utils.js => utils/index.js} | 0 .../Datasource/{ => utils}/utils.test.tsx | 2 +- .../src/components/ListView/CrossLinks.tsx | 10 +- .../components/ListView/DashboardCrossLinks.tsx | 10 +- .../src/components/ListView/ListView.tsx | 63 +- .../Modal/CollapsibleModalSection.test.tsx | 119 + .../components/Modal/CollapsibleModalSection.tsx | 87 + .../src/components/Modal/ModalFormField.test.tsx | 136 + .../src/components/Modal/ModalFormField.tsx | 143 + .../src/components/Modal/StandardModal.test.tsx | 127 + .../src/components/Modal/StandardModal.tsx | 145 + .../images => src/components/Modal}/index.ts | 20 +- .../components/Modal/useModalValidation.test.ts | 184 + .../src/components/Modal/useModalValidation.tsx | 181 + .../TableSelector/TableSelector.test.tsx | 33 +- .../src/components/TableSelector/index.tsx | 6 +- .../setupExtensions.ts => core/authentication.ts} | 10 +- superset-frontend/src/core/commands.ts | 64 + superset-frontend/src/core/core.ts | 184 + superset-frontend/src/core/environment.ts | 57 + .../FormattedNumber.tsx => core/extensions.ts} | 24 +- .../components/assets/images => src/core}/index.ts | 9 +- superset-frontend/src/core/sqlLab.ts | 537 +++ .../{components/Chart/types.ts => core/utils.ts} | 50 +- .../src/dashboard/actions/dashboardInfo.ts | 48 +- .../src/dashboard/actions/dashboardState.js | 11 +- .../BuilderComponentPane.test.tsx | 9 +- .../components/BuilderComponentPane/index.tsx | 152 +- .../src/dashboard/components/ColorSchemeSelect.tsx | 213 + .../components/CssEditor/CssEditor.test.tsx | 144 - .../src/dashboard/components/CssEditor/index.tsx | 291 -- .../DashboardBuilder/DashboardBuilder.test.tsx | 8 +- .../DashboardBuilder/DashboardBuilder.tsx | 16 +- .../DashboardBuilder/DashboardContainer.tsx | 8 +- .../DashboardBuilder/DashboardWrapper.tsx | 6 +- .../dashboard/components/DashboardBuilder/state.ts | 29 +- .../EmbeddedModal/EmbeddedModal.test.tsx | 4 +- .../components/FiltersBadge/DetailsPanel/index.tsx | 23 +- .../dashboard/components/FiltersBadge/Styles.tsx | 3 +- .../dashboard/components/Header/Header.test.tsx | 4 +- .../src/dashboard/components/Header/index.jsx | 58 +- .../src/dashboard/components/Header/types.ts | 13 +- .../Header/useHeaderActionsDropdownMenu.tsx | 110 +- .../PropertiesModal/PropertiesModal.test.tsx | 293 +- .../PropertiesModal/hooks/useAccessOptions.ts | 52 + .../dashboard/components/PropertiesModal/index.tsx | 731 ++- .../sections/AccessSection.test.tsx | 133 + .../PropertiesModal/sections/AccessSection.tsx | 163 + .../sections/AdvancedSection.test.tsx | 82 + .../PropertiesModal/sections/AdvancedSection.tsx | 71 + .../sections/BasicInfoSection.test.tsx | 124 + .../PropertiesModal/sections/BasicInfoSection.tsx | 84 + .../sections/CertificationSection.tsx | 51 + .../PropertiesModal/sections/RefreshSection.tsx} | 43 +- .../sections/StylingSection.test.tsx | 230 + .../PropertiesModal/sections/StylingSection.tsx | 224 + .../components/PropertiesModal/sections}/index.ts | 8 +- .../RefreshFrequency/RefreshFrequencySelect.tsx | 178 + .../components/RefreshFrequency}/index.ts | 8 +- .../components/RefreshIntervalModal.test.tsx | 245 - .../dashboard/components/RefreshIntervalModal.tsx | 390 +- .../SliceHeaderControls.test.tsx | 53 + .../components/SliceHeaderControls/index.tsx | 1 + .../gridComponents/{ => Chart}/Chart.jsx | 20 +- .../gridComponents/{ => Chart}/Chart.test.jsx | 2 +- .../components/gridComponents/Chart/index.js} | 4 +- .../{ => ChartHolder}/ChartHolder.test.tsx | 8 +- .../{ => ChartHolder}/ChartHolder.tsx | 0 .../gridComponents/ChartHolder/index.ts} | 2 +- .../gridComponents/{ => Column}/Column.jsx | 0 .../gridComponents/{ => Column}/Column.test.jsx | 2 +- .../components/gridComponents/Column/index.js} | 4 +- .../gridComponents/{ => Divider}/Divider.jsx | 8 +- .../gridComponents/{ => Divider}/Divider.test.jsx | 2 +- .../components/gridComponents/Divider/index.js} | 4 +- .../DynamicComponent/DynamicComponent.test.tsx | 329 ++ .../{ => DynamicComponent}/DynamicComponent.tsx | 34 +- .../gridComponents/DynamicComponent/index.ts} | 2 +- .../gridComponents/{ => Header}/Header.jsx | 12 + .../gridComponents/{ => Header}/Header.test.jsx | 2 +- .../components/gridComponents/Header/index.js} | 4 +- .../gridComponents/{ => Markdown}/Markdown.jsx | 0 .../{ => Markdown}/Markdown.test.jsx | 2 +- .../components/gridComponents/Markdown/index.js} | 4 +- .../components/gridComponents/{ => Row}/Row.jsx | 8 +- .../gridComponents/{ => Row}/Row.test.jsx | 92 +- .../components/gridComponents/Row/index.js} | 4 +- .../components/gridComponents/Tab.test.jsx | 141 - .../components/gridComponents/{ => Tab}/Tab.jsx | 19 +- .../gridComponents/{ => Tab}/Tab.test.tsx | 2 +- .../components/gridComponents/Tab/index.js} | 5 +- .../components/gridComponents/Tabs.test.jsx | 203 - .../components/gridComponents/{ => Tabs}/Tabs.jsx | 159 +- .../gridComponents/{ => Tabs}/Tabs.test.tsx | 33 +- .../components/gridComponents/Tabs/index.js} | 4 +- .../TabsRenderer/TabsRenderer.test.tsx | 201 + .../gridComponents/TabsRenderer/TabsRenderer.tsx | 121 + .../gridComponents/TabsRenderer}/index.ts | 5 +- .../dashboard/components/gridComponents/index.js | 10 - .../FilterBar/ActionButtons/index.tsx | 2 +- .../FilterBar/FilterBarSettings/index.tsx | 16 +- .../FilterBar/FilterControls/FilterValue.tsx | 2 +- .../nativeFilters/FilterBar/Horizontal.tsx | 2 +- .../nativeFilters/FilterBar/Vertical.tsx | 3 +- .../src/dashboard/containers/DashboardPage.tsx | 4 +- .../src/dashboard/hooks/useDownloadScreenshot.ts | 26 +- .../src/dashboard/reducers/dashboardInfo.js | 28 +- .../src/dashboard/reducers/dashboardState.js | 11 +- .../src/dashboard/reducers/dashboardState.test.js | 17 + .../src/dashboard/reducers/dashboardState.test.ts | 140 +- superset-frontend/src/dashboard/types.ts | 2 + superset-frontend/src/embedded/index.tsx | 2 + .../src/explore/components/ControlHeader.tsx | 11 +- .../components/ControlPanelsContainer.test.tsx | 126 +- .../explore/components/ControlPanelsContainer.tsx | 4 +- .../PropertiesModal/PropertiesModal.test.tsx | 128 +- .../explore/components/PropertiesModal/index.tsx | 440 +- .../CollectionControl/CollectionControl.test.tsx | 9 +- .../controls/CollectionControl/index.jsx | 42 +- .../components/controls/OptionControls/index.tsx | 1 + .../explore/components/controls/SelectControl.jsx | 45 +- .../components/controls/SelectControl.test.jsx | 208 + .../TimeSeriesColumnControl.test.tsx | 36 +- .../controls/TimeSeriesColumnControl/index.jsx | 21 +- .../explore/components/controls/ViewQuery.test.tsx | 74 + .../src/explore/components/controls/ViewQuery.tsx | 61 +- .../components/controls/ViewQueryModalFooter.tsx | 7 +- .../components/controls/VizTypeControl/VizTile.tsx | 2 +- .../VizTypeControl/VizTypeControl.test.tsx | 2 +- .../controls/VizTypeControl/VizTypeGallery.tsx | 7 +- .../controls/VizTypeControl/constants.tsx | 14 +- .../ExtensionPlaceholder.test.tsx} | 35 +- .../extensions/ExtensionPlaceholder.tsx} | 23 +- .../src/extensions/ExtensionsContext.test.tsx | 150 + .../src/extensions/ExtensionsContext.tsx | 93 + .../src/extensions/ExtensionsContextUtils.test.ts | 74 + .../extensions/ExtensionsContextUtils.ts} | 25 +- .../src/extensions/ExtensionsList.test.tsx | 99 + .../src/extensions/ExtensionsList.tsx | 123 + .../src/extensions/ExtensionsManager.test.ts | 568 +++ .../src/extensions/ExtensionsManager.ts | 329 ++ .../src/extensions/ExtensionsStartup.test.tsx | 205 + .../src/extensions/ExtensionsStartup.tsx | 91 + .../src/features/alerts/AlertReportModal.test.tsx | 53 +- .../src/features/alerts/AlertReportModal.tsx | 987 ++-- .../features/alerts/components/AlertStatusIcon.tsx | 38 +- .../alerts/components/RecipientIcon.test.tsx | 19 + .../annotationLayers/AnnotationLayerModal.tsx | 4 +- .../src/features/annotations/AnnotationModal.tsx | 2 +- .../src/features/cssTemplates/CssTemplateModal.tsx | 4 +- .../DatabaseConnectionForm/EncryptedField.test.tsx | 5 + .../databases/DatabaseModal/index.test.tsx | 4 +- .../UploadDataModel/UploadDataModal.test.tsx | 4 +- .../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 5 +- .../AddDataset/DatasetPanel/DatasetPanel.tsx | 7 +- .../EditDataset/UsageTab/UsageTab.test.tsx | 416 -- .../AddDataset/EditDataset/UsageTab/index.tsx | 265 -- .../datasets/AddDataset/EditDataset/index.tsx | 3 +- .../datasets/AddDataset/Footer/Footer.test.tsx | 4 + .../datasets/metadataBar/useDatasetMetadataBar.tsx | 8 +- superset-frontend/src/features/home/Menu.test.tsx | 29 +- superset-frontend/src/features/home/RightMenu.tsx | 76 +- .../src/features/queries/QueryPreviewModal.tsx | 8 +- .../features/queries/SavedQueryPreviewModal.tsx | 5 +- .../src/features/queries/SyntaxHighlighterCopy.tsx | 1 - .../src/features/roles/RoleListEditModal.tsx | 3 + .../src/hooks/apiResources/datasets.ts | 12 +- .../src/hooks/apiResources/queries.test.ts | 28 +- .../src/hooks/apiResources/sqlEditorTabs.test.ts | 1 + .../src/hooks/useThemeMenuItems.test.tsx | 2 +- superset-frontend/src/hooks/useThemeMenuItems.tsx | 12 +- .../pages/ChartList/ChartList.cardview.test.tsx | 2 +- .../pages/ChartList/ChartList.listview.test.tsx | 78 + superset-frontend/src/pages/ChartList/index.tsx | 29 +- .../src/pages/DashboardList/index.tsx | 5 +- superset-frontend/src/pages/DatasetList/index.tsx | 1 - superset-frontend/src/pages/Home/Home.test.tsx | 8 +- .../src/pages/QueryHistoryList/index.tsx | 11 +- .../types.ts => src/setup/setupCodeOverrides.ts} | 23 +- superset-frontend/src/views/App.tsx | 6 +- .../src/views/RootContextProviders.tsx | 17 +- superset-frontend/src/views/routes.tsx | 11 + superset-frontend/src/views/store.ts | 7 +- .../src/visualizations/TimeTable/SparklineCell.tsx | 243 - .../src/visualizations/TimeTable/TimeTable.jsx | 344 -- .../visualizations/TimeTable/TimeTable.test.tsx | 172 + .../src/visualizations/TimeTable/TimeTable.tsx | 144 + .../FormattedNumber/FormattedNumber.test.tsx | 96 + .../FormattedNumber}/FormattedNumber.tsx | 21 +- .../FormattedNumber/index.ts} | 2 +- .../components/LeftCell/LeftCell.test.tsx | 142 + .../TimeTable/components/LeftCell/LeftCell.tsx | 67 + .../{types.d.ts => components/LeftCell/index.ts} | 3 +- .../TimeTable/components/LeftCell/mustache.d.ts} | 15 +- .../components/Sparkline/Sparkline.test.tsx | 118 + .../TimeTable/components/Sparkline/Sparkline.tsx | 62 + .../{types.d.ts => components/Sparkline/index.ts} | 3 +- .../SparklineCell/SparklineCell.test.tsx | 145 + .../components/SparklineCell/SparklineCell.tsx | 240 + .../SparklineCell/index.ts} | 2 +- .../components/ValueCell/ValueCell.test.tsx | 219 + .../TimeTable/components/ValueCell/ValueCell.tsx | 66 + .../{types.d.ts => components/ValueCell/index.ts} | 3 +- .../visualizations/TimeTable/components}/index.ts | 8 +- .../config/controlPanel/controlPanel.test.ts | 93 + .../controlPanel/controlPanel.ts} | 8 +- .../{types.d.ts => config/controlPanel/index.ts} | 3 +- .../visualizations/TimeTable/config}/index.ts | 5 +- .../TimeTable/config/transformProps}/index.ts | 4 +- .../config/transformProps/transformProps.test.ts | 284 ++ .../{ => config/transformProps}/transformProps.ts | 17 +- .../visualizations/TimeTable/constants.ts} | 3 +- .../src/visualizations/TimeTable/index.ts | 2 +- .../src/visualizations/TimeTable/types.ts | 83 + .../TimeTable/utils/colorUtils/colorUtils.test.ts | 93 + .../TimeTable/utils/colorUtils/colorUtils.ts | 59 + .../{types.d.ts => utils/colorUtils/index.ts} | 3 +- .../visualizations/TimeTable/utils}/index.ts | 9 +- .../{types.d.ts => utils/numberUtils/index.ts} | 3 +- .../utils/numberUtils/numberUtils.test.ts} | 46 +- .../TimeTable/utils/numberUtils/numberUtils.ts} | 20 +- .../TimeTable/utils/rowProcessing}/index.ts | 3 +- .../utils/rowProcessing/rowProcessing.test.ts | 109 + .../rowProcessing/rowProcessing.ts} | 27 +- .../TimeTable/utils/sortUtils}/index.ts | 3 +- .../TimeTable/utils/sortUtils/sortUtils.test.ts | 117 + .../TimeTable/utils/sortUtils/sortUtils.ts | 64 + .../TimeTable/utils/sparklineDataUtils}/index.ts | 10 +- .../sparklineDataUtils/sparklineDataUtils.test.ts | 123 + .../utils/sparklineDataUtils/sparklineDataUtils.ts | 96 + .../TimeTable/utils/sparklineHelpers}/index.ts | 9 +- .../sparklineHelpers/sparklineHelpers.test.ts | 190 + .../utils/sparklineHelpers/sparklineHelpers.ts | 102 + .../TimeTable/utils/valueCalculations}/index.ts | 9 +- .../valueCalculations/valueCalculations.test.ts | 274 ++ .../utils/valueCalculations/valueCalculations.ts | 139 + superset-frontend/tsconfig.json | 7 +- superset-frontend/webpack.config.js | 28 +- superset-websocket/package-lock.json | 561 ++- superset-websocket/package.json | 8 +- superset/__init__.py | 4 +- superset/app.py | 8 +- superset/charts/api.py | 13 +- superset/charts/schemas.py | 10 +- superset/commands/dashboard/export.py | 9 + .../commands/dashboard/importers/v1/__init__.py | 28 +- superset/commands/dashboard/importers/v1/utils.py | 2 + superset/commands/database/tables.py | 31 +- superset/commands/database/uploaders/base.py | 3 +- superset/commands/database/uploaders/csv_reader.py | 222 +- superset/commands/dataset/export.py | 2 +- superset/commands/dataset/update.py | 32 +- superset/commands/importers/v1/__init__.py | 14 +- superset/commands/importers/v1/utils.py | 7 + superset/commands/sql_lab/execute.py | 14 +- superset/commands/theme/import_themes.py | 11 +- superset/common/query_actions.py | 2 +- superset/common/query_context_factory.py | 2 +- superset/common/query_object_factory.py | 2 +- superset/config.py | 39 +- superset/connectors/sqla/models.py | 44 +- superset/connectors/sqla/utils.py | 17 +- superset/{advanced_data_type => core}/__init__.py | 0 .../{advanced_data_type => core/api}/__init__.py | 0 .../api/types}/__init__.py | 0 superset/core/api/types/models.py | 72 + .../core/api/types/query.py | 16 +- .../validators.py => core/api/types/rest_api.py} | 24 +- superset/daos/base.py | 55 + superset/daos/datasource.py | 31 +- superset/daos/exceptions.py | 5 + superset/dashboards/api.py | 24 +- superset/dashboards/schemas.py | 2 + superset/datasets/api.py | 52 +- superset/db_engine_specs/base.py | 24 + superset/db_engine_specs/bigquery.py | 94 + superset/db_engine_specs/databricks.py | 31 +- superset/db_engine_specs/doris.py | 4 +- superset/db_engine_specs/duckdb.py | 35 +- superset/db_engine_specs/postgres.py | 9 +- superset/exceptions.py | 6 +- superset/extensions/api.py | 215 + superset/extensions/discovery.py | 69 + superset/extensions/exceptions.py | 48 + superset/extensions/local_extensions_watcher.py | 112 + .../development.in => superset/extensions/types.py | 23 +- superset/extensions/utils.py | 219 + superset/{views/health.py => extensions/view.py} | 25 +- superset/initialization/__init__.py | 62 + superset/jinja_context.py | 77 +- superset/models/core.py | 69 +- superset/models/dashboard.py | 3 +- superset/models/helpers.py | 13 +- superset/models/sql_lab.py | 10 +- superset/result_set.py | 30 +- superset/security/manager.py | 13 +- superset/sql/parse.py | 29 +- superset/sqllab/validators.py | 8 +- superset/superset_typing.py | 2 +- superset/templates/head_custom_extra.html | 25 + superset/templates/superset/spa.html | 39 +- superset/templates/tail_js_custom_extra.html | 25 + superset/themes/schemas.py | 58 +- superset/themes/utils.py | 33 + superset/translations/uk/LC_MESSAGES/messages.po | 152 +- superset/utils/core.py | 168 +- superset/utils/jinja_template_validator.py | 133 + superset/utils/pandas.py | 69 + superset/utils/screenshots.py | 9 +- superset/utils/version.py | 115 + superset/utils/webdriver.py | 109 +- superset/views/base.py | 150 +- superset/views/core.py | 33 +- superset/views/dashboard/views.py | 9 +- superset/views/datasource/utils.py | 51 +- superset/views/health.py | 14 +- tests/integration_tests/celery_tests.py | 3 +- tests/integration_tests/charts/api_tests.py | 57 +- tests/integration_tests/charts/commands_tests.py | 6 +- tests/integration_tests/dashboards/api_tests.py | 133 +- .../integration_tests/dashboards/commands_tests.py | 21 +- .../dashboards/test_theme_integration.py | 142 +- tests/integration_tests/databases/api_tests.py | 190 +- .../databases/commands/upload_test.py | 11 +- .../integration_tests/databases/commands_tests.py | 22 +- tests/integration_tests/datasets/api_tests.py | 123 +- tests/integration_tests/datasets/commands_tests.py | 16 +- .../datasource/test_validate_expression_api.py | 37 +- tests/integration_tests/datasource_tests.py | 9 +- .../db_engine_specs/base_engine_spec_tests.py | 4 + tests/integration_tests/model_tests.py | 5 +- .../queries/saved_queries/commands_tests.py | 4 +- tests/integration_tests/query_context_tests.py | 2 +- tests/integration_tests/result_set_tests.py | 2 +- .../commands/databases/csv_reader_test.py | 555 +++ tests/unit_tests/commands/databases/tables_test.py | 16 + tests/unit_tests/commands/dataset/update_test.py | 462 +- tests/unit_tests/datasets/commands/export_test.py | 6 +- tests/unit_tests/datasource/dao_tests.py | 10 +- .../utils/test_replace_verbose_with_column.py | 83 + tests/unit_tests/db_engine_specs/test_bigquery.py | 90 +- tests/unit_tests/db_engine_specs/test_doris.py | 4 +- tests/unit_tests/jinja_context_test.py | 131 + tests/unit_tests/models/sql_lab_test.py | 4 +- tests/unit_tests/result_set_test.py | 21 + tests/unit_tests/sql/parse_tests.py | 71 +- tests/unit_tests/sql/test_hive_dialect.py | 65 + .../unit_tests/sql/test_impala_dialect.py | 15 +- tests/unit_tests/themes/test_utils.py | 38 + tests/unit_tests/utils/screenshot_test.py | 47 + tests/unit_tests/utils/test_core.py | 40 + tests/unit_tests/utils/test_date_parsing.py | 256 ++ .../utils/test_jinja_template_validator.py | 91 + .../utils/test_screenshot_exception_handling.py | 126 + tests/unit_tests/utils/webdriver_test.py | 263 ++ 689 files changed, 39248 insertions(+), 10154 deletions(-) create mode 100644 .github/workflows/showtime-cleanup.yml create mode 100644 .github/workflows/showtime-trigger.yml rename .github/workflows/{superset-cli.yml => superset-app-cli.yml} (96%) create mode 100644 .github/workflows/superset-extensions-cli.yml copy docs/README.md => CHANGELOG/4.1.4.md (59%) create mode 100644 docs/components/chart-components/bar-chart.md create mode 100644 docs/components/index.md create mode 100644 docs/components/layout-components/grid.md create mode 100644 docs/components/test.mdx create mode 100644 docs/components/ui-components/button.mdx create mode 100644 docs/components/versions.json create mode 100644 docs/components_versions.json create mode 100644 docs/developer_portal/api/frontend.md create mode 100644 docs/developer_portal/architecture/overview.md create mode 100644 docs/developer_portal/cli/overview.md create mode 100644 docs/developer_portal/examples/index.md create mode 100644 docs/developer_portal/getting-started/index.md create mode 100644 docs/developer_portal/index.md copy superset-frontend/src/components/Chart/types.ts => docs/developer_portal/sidebars.js (55%) create mode 100644 docs/developer_portal/versions.json create mode 100644 docs/developer_portal_versions.json create mode 100644 docs/scripts/manage-versions.mjs create mode 100644 docs/sidebarComponents.js copy superset-frontend/src/components/Chart/types.ts => docs/sidebarTutorials.js (56%) copy superset-frontend/src/setup/setupExtensions.ts => docs/src/components/Button.jsx (81%) create mode 100644 docs/src/components/StorybookWrapper.jsx create mode 100644 docs/src/theme/DocVersionBadge/index.js copy superset-frontend/src/visualizations/TimeTable/FormattedNumber.tsx => docs/src/theme/DocVersionBadge/styles.module.css (62%) create mode 100644 docs/src/theme/DocVersionBanner/index.js copy superset-frontend/src/visualizations/TimeTable/FormattedNumber.tsx => docs/src/theme/DocVersionBanner/styles.module.css (58%) create mode 100644 docs/src/webpack.extend.ts create mode 100644 docs/tutorials_versions.json copy docs/{docs => versioned_docs/version-6.0.0}/api.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/alerts-reports.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/async-queries-celery.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/cache.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/configuring-superset.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/configuration/country-map-tools.mdx copy docs/{docs => versioned_docs/version-6.0.0}/configuration/databases.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/event-logging.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/importing-exporting-datasources.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/map-tiles.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/networking-settings.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/sql-templating.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/theming.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/timezones.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/contributing.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/development.mdx (99%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/guidelines.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/howtos.mdx (99%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/misc.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/contributing/resources.mdx copy docs/{docs => versioned_docs/version-6.0.0}/faq.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/architecture.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/docker-builds.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/docker-compose.mdx (99%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/installation-methods.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/kubernetes.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/pypi.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/upgrading-superset.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/intro.md copy docs/{docs => versioned_docs/version-6.0.0}/quickstart.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/security/cves.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/security/security.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/creating-your-first-dashboard.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/exploring-data.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/issue-codes.mdx (100%) create mode 100644 docs/versioned_sidebars/version-6.0.0-sidebars.json create mode 100644 docs/versions-config.json create mode 100644 docs/versions.json create mode 100644 superset-core/.gitignore copy docs/README.md => superset-core/CHANGELOG.md (78%) copy LICENSE.txt => superset-core/LICENSE.txt (100%) create mode 100644 superset-core/README.md create mode 100644 superset-core/pyproject.toml copy {superset/advanced_data_type => superset-core/src/superset_core}/__init__.py (100%) copy requirements/development.in => superset-core/src/superset_core/api/__init__.py (81%) copy {superset/advanced_data_type => superset-core/src/superset_core/api/types}/__init__.py (100%) create mode 100644 superset-core/src/superset_core/api/types/models.py copy superset/sqllab/validators.py => superset-core/src/superset_core/api/types/query.py (55%) create mode 100644 superset-core/src/superset_core/api/types/rest_api.py copy {superset/advanced_data_type => superset-core/src/superset_core/extensions}/__init__.py (100%) create mode 100644 superset-core/src/superset_core/extensions/types.py copy docs/README.md => superset-extensions-cli/CHANGELOG.md (78%) copy LICENSE.txt => superset-extensions-cli/LICENSE.txt (100%) create mode 100644 superset-extensions-cli/README.md create mode 100644 superset-extensions-cli/pyproject.toml copy {superset/advanced_data_type => superset-extensions-cli/src/superset_extensions_cli}/__init__.py (100%) create mode 100644 superset-extensions-cli/src/superset_extensions_cli/cli.py copy requirements/development.in => superset-extensions-cli/src/superset_extensions_cli/constants.py (88%) create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/backend/pyproject.toml.j2 create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/extension.json.j2 create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/frontend/package.json.j2 copy superset/sqllab/validators.py => superset-extensions-cli/src/superset_extensions_cli/utils.py (61%) create mode 100644 superset-extensions-cli/tests/README.md copy {superset/advanced_data_type => superset-extensions-cli/tests}/__init__.py (100%) create mode 100644 superset-extensions-cli/tests/conftest.py create mode 100644 superset-extensions-cli/tests/test_cli_build.py create mode 100644 superset-extensions-cli/tests/test_cli_bundle.py create mode 100644 superset-extensions-cli/tests/test_cli_dev.py create mode 100644 superset-extensions-cli/tests/test_cli_init.py create mode 100644 superset-extensions-cli/tests/test_cli_validate.py create mode 100644 superset-extensions-cli/tests/test_templates.py create mode 100644 superset-extensions-cli/tests/test_utils.py create mode 100644 superset-extensions-cli/tests/utils.py create mode 100644 superset-frontend/packages/superset-core/.babelrc.json copy docs/README.md => superset-frontend/packages/superset-core/CHANGELOG.md (78%) create mode 100644 superset-frontend/packages/superset-core/README.md create mode 100644 superset-frontend/packages/superset-core/package.json copy superset-frontend/{plugins/plugin-chart-handlebars/src/consts.ts => packages/superset-core/src/api/authentication.ts} (50%) create mode 100644 superset-frontend/packages/superset-core/src/api/commands.ts create mode 100644 superset-frontend/packages/superset-core/src/api/contributions.ts create mode 100644 superset-frontend/packages/superset-core/src/api/core.ts create mode 100644 superset-frontend/packages/superset-core/src/api/environment.ts create mode 100644 superset-frontend/packages/superset-core/src/api/extensions.ts create mode 100644 superset-frontend/packages/superset-core/src/api/index.ts create mode 100644 superset-frontend/packages/superset-core/src/api/sqlLab.ts copy superset-frontend/{src/visualizations/TimeTable/types.d.ts => packages/superset-core/src/index.ts} (95%) create mode 100644 superset-frontend/packages/superset-core/tsconfig.json create mode 100644 superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.test.tsx delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/ConfirmStatusChange/ConfirmStatusChange.test.jsx create mode 100644 superset-frontend/packages/superset-ui-core/src/components/ConfirmStatusChange/ConfirmStatusChange.test.tsx create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Loading/index.test.tsx copy superset-frontend/{src/components/Datasource => packages/superset-ui-core/src/components/Popconfirm}/index.tsx (73%) create mode 100644 superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx create mode 100644 superset-frontend/packages/superset-ui-core/src/components/assets/images/loading.svg create mode 100644 superset-frontend/packages/superset-ui-core/test/components/Icons/AsyncIcon.integration.test.tsx rename superset-frontend/src/components/Datasource/{ => ChangeDatasourceModal}/ChangeDatasourceModal.test.jsx (98%) rename superset-frontend/src/components/Datasource/{ChangeDatasourceModal.tsx => ChangeDatasourceModal/index.tsx} (99%) rename superset-frontend/src/components/Datasource/{ => DatasourceModal}/DatasourceModal.test.jsx (99%) rename superset-frontend/src/components/Datasource/{DatasourceModal.tsx => DatasourceModal/index.tsx} (98%) rename superset-frontend/src/components/Datasource/{ => components/CollectionTable}/CollectionTable.test.tsx (96%) rename superset-frontend/src/components/Datasource/{CollectionTable.tsx => components/CollectionTable/index.tsx} (99%) rename superset-frontend/src/components/Datasource/{ => components/DatasourceEditor}/DatasourceEditor.jsx (94%) create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DashboardLinksExternal/DashboardLinksExternal.test.tsx create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DashboardLinksExternal/index.tsx create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DatasetUsageTab/DatasetUsageTab.test.tsx create mode 100644 superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DatasetUsageTab/index.tsx copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/components/Datasource/components/DatasourceEditor/components}/index.ts (85%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => components/Datasource/components/DatasourceEditor/index.ts} (94%) rename superset-frontend/src/components/Datasource/{ => components/DatasourceEditor/tests}/DatasourceEditor.test.jsx (99%) rename superset-frontend/src/components/Datasource/{ => components/DatasourceEditor/tests}/DatasourceEditorCurrency.test.jsx (99%) rename superset-frontend/src/components/Datasource/{ => components/DatasourceEditor/tests}/DatasourceEditorRTL.test.jsx (100%) rename superset-frontend/src/components/Datasource/{ => components/Field}/Field.test.tsx (98%) rename superset-frontend/src/components/Datasource/{Field.tsx => components/Field/index.tsx} (100%) rename superset-frontend/src/components/Datasource/{Fieldset.tsx => components/Fieldset/index.tsx} (96%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/components/Datasource/components}/index.ts (78%) rename superset-frontend/src/components/Datasource/{index.tsx => index.ts} (100%) rename superset-frontend/src/components/Datasource/{utils.js => utils/index.js} (100%) rename superset-frontend/src/components/Datasource/{ => utils}/utils.test.tsx (99%) create mode 100644 superset-frontend/src/components/Modal/CollapsibleModalSection.test.tsx create mode 100644 superset-frontend/src/components/Modal/CollapsibleModalSection.tsx create mode 100644 superset-frontend/src/components/Modal/ModalFormField.test.tsx create mode 100644 superset-frontend/src/components/Modal/ModalFormField.tsx create mode 100644 superset-frontend/src/components/Modal/StandardModal.test.tsx create mode 100644 superset-frontend/src/components/Modal/StandardModal.tsx copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/components/Modal}/index.ts (64%) create mode 100644 superset-frontend/src/components/Modal/useModalValidation.test.ts create mode 100644 superset-frontend/src/components/Modal/useModalValidation.tsx copy superset-frontend/src/{setup/setupExtensions.ts => core/authentication.ts} (72%) create mode 100644 superset-frontend/src/core/commands.ts create mode 100644 superset-frontend/src/core/core.ts create mode 100644 superset-frontend/src/core/environment.ts copy superset-frontend/src/{visualizations/TimeTable/FormattedNumber.tsx => core/extensions.ts} (63%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/core}/index.ts (82%) create mode 100644 superset-frontend/src/core/sqlLab.ts copy superset-frontend/src/{components/Chart/types.ts => core/utils.ts} (54%) create mode 100644 superset-frontend/src/dashboard/components/ColorSchemeSelect.tsx delete mode 100644 superset-frontend/src/dashboard/components/CssEditor/CssEditor.test.tsx delete mode 100644 superset-frontend/src/dashboard/components/CssEditor/index.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/BasicInfoSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/BasicInfoSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/CertificationSection.tsx copy superset-frontend/{plugins/plugin-chart-handlebars/src/consts.ts => src/dashboard/components/PropertiesModal/sections/RefreshSection.tsx} (53%) create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.tsx copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/dashboard/components/PropertiesModal/sections}/index.ts (67%) create mode 100644 superset-frontend/src/dashboard/components/RefreshFrequency/RefreshFrequencySelect.tsx copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/dashboard/components/RefreshFrequency}/index.ts (83%) delete mode 100644 superset-frontend/src/dashboard/components/RefreshIntervalModal.test.tsx rename superset-frontend/src/dashboard/components/gridComponents/{ => Chart}/Chart.jsx (96%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Chart}/Chart.test.jsx (99%) copy superset-frontend/src/{setup/setupExtensions.ts => dashboard/components/gridComponents/Chart/index.js} (89%) rename superset-frontend/src/dashboard/components/gridComponents/{ => ChartHolder}/ChartHolder.test.tsx (98%) rename superset-frontend/src/dashboard/components/gridComponents/{ => ChartHolder}/ChartHolder.tsx (100%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/ChartHolder/index.ts} (95%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Column}/Column.jsx (100%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Column}/Column.test.jsx (99%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/Column/index.js} (93%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Divider}/Divider.jsx (93%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Divider}/Divider.test.jsx (97%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images/index.ts => src/dashboard/components/gridComponents/Divider/index.js} (93%) create mode 100644 superset-frontend/src/dashboard/components/gridComponents/DynamicComponent/DynamicComponent.test.tsx rename superset-frontend/src/dashboard/components/gridComponents/{ => DynamicComponent}/DynamicComponent.tsx (84%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/DynamicComponent/index.ts} (94%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Header}/Header.jsx (96%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Header}/Header.test.jsx (98%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/Header/index.js} (93%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Markdown}/Markdown.jsx (100%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Markdown}/Markdown.test.jsx (99%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images/index.ts => src/dashboard/components/gridComponents/Markdown/index.js} (93%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Row}/Row.jsx (98%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Row}/Row.test.jsx (69%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/Row/index.js} (94%) delete mode 100644 superset-frontend/src/dashboard/components/gridComponents/Tab.test.jsx rename superset-frontend/src/dashboard/components/gridComponents/{ => Tab}/Tab.jsx (96%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Tab}/Tab.test.tsx (99%) rename superset-frontend/src/{setup/setupExtensions.ts => dashboard/components/gridComponents/Tab/index.js} (88%) delete mode 100644 superset-frontend/src/dashboard/components/gridComponents/Tabs.test.jsx rename superset-frontend/src/dashboard/components/gridComponents/{ => Tabs}/Tabs.jsx (84%) rename superset-frontend/src/dashboard/components/gridComponents/{ => Tabs}/Tabs.test.tsx (87%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/gridComponents/Tabs/index.js} (94%) create mode 100644 superset-frontend/src/dashboard/components/gridComponents/TabsRenderer/TabsRenderer.test.tsx create mode 100644 superset-frontend/src/dashboard/components/gridComponents/TabsRenderer/TabsRenderer.tsx copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/dashboard/components/gridComponents/TabsRenderer}/index.ts (86%) copy superset-frontend/src/{dashboard/components/BuilderComponentPane/BuilderComponentPane.test.tsx => extensions/ExtensionPlaceholder.test.tsx} (50%) copy superset-frontend/{plugins/plugin-chart-table/src/consts.ts => src/extensions/ExtensionPlaceholder.tsx} (68%) create mode 100644 superset-frontend/src/extensions/ExtensionsContext.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsContext.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.test.ts copy superset-frontend/{plugins/plugin-chart-table/src/consts.ts => src/extensions/ExtensionsContextUtils.ts} (65%) create mode 100644 superset-frontend/src/extensions/ExtensionsList.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsList.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsManager.test.ts create mode 100644 superset-frontend/src/extensions/ExtensionsManager.ts create mode 100644 superset-frontend/src/extensions/ExtensionsStartup.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsStartup.tsx delete mode 100644 superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/UsageTab.test.tsx delete mode 100644 superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx copy superset-frontend/{packages/superset-ui-core/src/components/Loading/types.ts => src/setup/setupCodeOverrides.ts} (65%) delete mode 100644 superset-frontend/src/visualizations/TimeTable/SparklineCell.tsx delete mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.jsx create mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/FormattedNumber/FormattedNumber.test.tsx copy superset-frontend/src/visualizations/TimeTable/{ => components/FormattedNumber}/FormattedNumber.tsx (71%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/FormattedNumber/index.ts} (94%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/LeftCell/LeftCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/LeftCell/LeftCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/LeftCell/index.ts} (95%) copy superset-frontend/{packages/superset-ui-core/src/components/Loading/types.ts => src/visualizations/TimeTable/components/LeftCell/mustache.d.ts} (80%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/Sparkline/Sparkline.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/Sparkline/Sparkline.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/Sparkline/index.ts} (95%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/SparklineCell/SparklineCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/SparklineCell/SparklineCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/SparklineCell/index.ts} (94%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/ValueCell/ValueCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/ValueCell/ValueCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/ValueCell/index.ts} (95%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/components}/index.ts (74%) create mode 100644 superset-frontend/src/visualizations/TimeTable/config/controlPanel/controlPanel.test.ts rename superset-frontend/src/visualizations/TimeTable/{controlPanel.js => config/controlPanel/controlPanel.ts} (93%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => config/controlPanel/index.ts} (94%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/config}/index.ts (83%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/config/transformProps}/index.ts (88%) create mode 100644 superset-frontend/src/visualizations/TimeTable/config/transformProps/transformProps.test.ts rename superset-frontend/src/visualizations/TimeTable/{ => config/transformProps}/transformProps.ts (84%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images/index.ts => src/visualizations/TimeTable/constants.ts} (92%) create mode 100644 superset-frontend/src/visualizations/TimeTable/types.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/colorUtils/colorUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/colorUtils/colorUtils.ts copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/colorUtils/index.ts} (94%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils}/index.ts (77%) rename superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/numberUtils/index.ts} (94%) copy superset-frontend/{plugins/plugin-chart-handlebars/src/consts.ts => src/visualizations/TimeTable/utils/numberUtils/numberUtils.test.ts} (53%) copy superset-frontend/{packages/superset-ui-core/src/components/Loading/types.ts => src/visualizations/TimeTable/utils/numberUtils/numberUtils.ts} (65%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils/rowProcessing}/index.ts (93%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/rowProcessing/rowProcessing.test.ts rename superset-frontend/src/visualizations/TimeTable/{FormattedNumber.tsx => utils/rowProcessing/rowProcessing.ts} (63%) copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils/sortUtils}/index.ts (93%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sortUtils/sortUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sortUtils/sortUtils.ts copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils/sparklineDataUtils}/index.ts (81%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineDataUtils/sparklineDataUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineDataUtils/sparklineDataUtils.ts copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils/sparklineHelpers}/index.ts (84%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineHelpers/sparklineHelpers.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineHelpers/sparklineHelpers.ts copy superset-frontend/{packages/superset-ui-core/src/components/assets/images => src/visualizations/TimeTable/utils/valueCalculations}/index.ts (83%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/valueCalculations/valueCalculations.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/valueCalculations/valueCalculations.ts copy superset/{advanced_data_type => core}/__init__.py (100%) copy superset/{advanced_data_type => core/api}/__init__.py (100%) copy superset/{advanced_data_type => core/api/types}/__init__.py (100%) create mode 100644 superset/core/api/types/models.py copy requirements/development.in => superset/core/api/types/query.py (67%) copy superset/{sqllab/validators.py => core/api/types/rest_api.py} (59%) create mode 100644 superset/extensions/api.py create mode 100644 superset/extensions/discovery.py create mode 100644 superset/extensions/exceptions.py create mode 100644 superset/extensions/local_extensions_watcher.py copy requirements/development.in => superset/extensions/types.py (71%) create mode 100644 superset/extensions/utils.py copy superset/{views/health.py => extensions/view.py} (60%) create mode 100644 superset/templates/head_custom_extra.html create mode 100644 superset/templates/tail_js_custom_extra.html create mode 100644 superset/utils/jinja_template_validator.py create mode 100644 superset/utils/pandas.py create mode 100644 superset/utils/version.py create mode 100644 tests/unit_tests/datasource/utils/test_replace_verbose_with_column.py create mode 100644 tests/unit_tests/sql/test_hive_dialect.py copy requirements/development.in => tests/unit_tests/sql/test_impala_dialect.py (70%) create mode 100644 tests/unit_tests/utils/test_date_parsing.py create mode 100644 tests/unit_tests/utils/test_jinja_template_validator.py create mode 100644 tests/unit_tests/utils/test_screenshot_exception_handling.py create mode 100644 tests/unit_tests/utils/webdriver_test.py