This is an automated email from the ASF dual-hosted git repository. beto pushed a change to branch gsheets-improvement in repository https://gitbox.apache.org/repos/asf/superset.git
omit 00d302d710 feat: improve GSheets OAuth2 add b12f515185 fix: re-enable cypress checks (#32008) add 568f6d958b fix: Revert "fix: re-enable cypress checks" (#32045) add aa67525b70 fix(fe/explore): prevent runtime error when editing Dataset-origin Chart with empty title (#32031) add 3f46bcf142 chore: Skip the creation of secondary perms during catalog migrations (#32043) add f73d61a597 feat(sqllab): Replace FilterableTable by AgGrid Table (#29900) add 5fc11fb706 chore: Add more database-related tests (follow up to #31948) (#32054) add 1c1494d3e0 fix(DatePicker): Increase z-index over Modal (#32061) add 468bb5f47a refactor(Radio): Upgrade Radio Component to Ant Design 5 (#32004) add 101d3fa78d chore: Re-enable asnyc event API tests (#32062) add c590e90c87 feat(sqllab): improve table metadata UI (#32051) add 7db0589340 fix(thumbnail cache): Enabling force parameter on screenshot/thumbnail cache (#31757) add 1064ad5d58 fix: enforce `ALERT_REPORTS_MAX_CUSTOM_SCREENSHOT_WIDTH` (#32053) add 9e5876dc17 feat: add connector for Parseable (#32052) add cde2d49c95 fix(datepicker): Full width datepicker on filter value select (#32064) add 0cd0fcdecb fix(ci): ephemeral env, handle different label, create comment (#32040) add 386aa93e24 fix: Histogram examples config (#32122) add 8984f88a3e chore(timeseries charts): adjust legend width by padding (#32030) add 9aa8b09505 docs: incorrect psycopg2 package in k8s install instructions (#31999) add 53d944d013 fix: No virtual environment when running Docker translation compiler (#32133) add c64018d421 fix: Local tarball Docker container is missing zstd dependency (#32135) add c7c3b1b0e9 fix: move oauth2 capture to `get_sqla_engine` (#32137) add ea5879bf2b fix(releasing): fix borked SVN-based image building process (#32151) add 6ed9dae2f7 fix(migrations): Handle no params in time comparison migration (#32155) add acf91e1f60 docs: fix typo in docker compose (#32171) add e8990f4a36 fix: ScreenshotCachePayload serialization (#32156) add 649a0dec6c feat: add TDengine.py driver to db_engine (#32041) add 205cff3a94 feat: Add parseJson Handlebars Helper to Support Processing Nested JSON Data (#31998) add 5a8488af36 fix(docker): Docker python-translation-build (#32163) add e97eb71a52 chore(deps): bump less from 4.2.1 to 4.2.2 in /docs (#32085) add 389aae270b chore: add query context data tests (#32157) add c5f4a7f302 feat: Add parseJson Handlebars Helper to Support Processing Nested JSON Data (#31998) add f9f8c5d07a fix(sqllab): correct URL format for SQL Lab permalinks (#32154) add f3e7c64de6 fix(virtual dataset sync): Sync virtual dataset columns when changing the SQL query (#30903) add 38c46fcafd docs(typo): PostgresQL corrected to PostgreSQL (#32188) add bcc61bd933 refactor(Dropdown): Migrate Dropdown to Ant Design 5 (#31972) add 2770bc0865 fix(sqllab): correct URL format for SQL Lab permalinks (#32154) add a144464506 fix: Adds an entry to UPDATING.md about DISABLE_LEGACY_DATASOURCE_EDITOR (#32185) add 06f8f8e608 fix: TDengine move tdengine.png to databases/ subfolder (#32176) add 0030f46d2d refactor(Popover): Upgrade Popover to Antd5 (#31973) add 0f6bd5ea83 fix: handlebars html and css templates reset on dataset update (#32195) add f01493277f docs(docker-compose): remove extra backticks (#32206) add 8d1fb9c82d fix: false negative on critical security related to eslint-plugin-translation-vars (#32018) add 1c3ec21e0f chore: migrating easy-to-migrate AntD vanilla components (#32010) add a78968c68e chore(ci): consolidate Node version reference in CI to associated `.nvmrc` (#32192) add 60bbd72028 feat(dropdown accessibility): Wrap dropdown triggers with buttons for accessibility (#32189) add 60424c4ccd chore(ci): fix ephemeral env null issue number (#32220) add 31d6f5a639 chore(ci): fix ephemeral env null issue number (v2) (#32221) add eec54affc3 fix: hidrate datasetsStatus (#32211) add 3160607aaf docs: Permissions 'can this form get on UserInfoEditView' and 'can this form get on UserInfoEditView' are not associated with Aplha and Gamma by default (#32180) add db70c7912c chore(fe): migrate 4 Enzyme-based tests to RTL (#31634) add 650fa5ccfb fix(SaveDatasetModal): repairs field alignment in the SaveDatasetModal component (#32222) add d3b854a833 fix: set `Rich tooltip` -> 'Show percentage' to false by default (#32212) add 319a860f23 chore: Working toward killing enzyme and cleaning up test noise. (#32207) add 937d40cdde fix(sqllab): close the table tab (#32224) add af3589fe91 fix(Scope): Correct issue where filters appear out of scope when sort is unchecked. (#32115) add 21348c418a chore(backend): replace insecure `shortid` usage for native filter migration with native `uuid` Python implementation (#32235) add 52563d3eea fix: Update 'Last modified' time when modifying RLS rules (#32227) add 5867b87680 docs: adding notes about using uv instead of raw pip (#32239) add 15fbb195e9 fix: remove sort values on stacked totals (#31333) add 2c583d1584 feat: recursive metric definitions (#32228) add ad057324b7 fix: upgrade to 3.11.11-slim-bookworm to address critical vulnerabilities (#32240) add 9c7835a244 docs(api): Improve api documentation for dashboard endpoints(filter_state, permalink, embedded) (#32142) add 9da30956c0 fix(Datasource): handle undefined datasource_type in fetchSyncedColumns (#32218) add fa09d8187a chore(deps): bump cryptography from 43.0.3 to 44.0.1 (#32236) add ffe9244458 fix: Decimal values for Histogram bins (#32253) add 460aec7bc9 build(fe/dev-deps): remove unused `esbuild` dev deps (#32243) add 321d105c42 chore(deps): bump dompurify from 3.2.3 to 3.2.4 in /superset-frontend (#32270) add dcc9628f31 fix(viz/table): selected column not shown in Conditional Formatting popover (#32272) add 734f8ed4c3 fix(sec): resolve Dependabot security alerts (#32274) add 093135ff30 chore(be/deps): add comments for un-greppable Python dependencies (#32259) add 878bcbd8c7 chore(deps-dev): bump @babel/preset-env from 7.26.0 to 7.26.7 in /superset-frontend (#32103) add e061116032 chore(deps-dev): bump typescript from 5.7.2 to 5.7.3 in /docs (#32090) add de2bce6f47 chore(tests): Trying to kill enzyme, part 2 (more RTL!) (#32226) add b269d920a9 chore(code owners): adding @mistercrunch to cypress/e2e code owners (#32316) add e422e3c620 feat(type-checking): Add type-checking pre-commit hooks (#32261) add d5a5bd46d2 fix: keep the tab order (#30888) add e74efd3072 chore(deps-dev): bump @docusaurus/module-type-aliases from 3.6.3 to 3.7.0 in /docs (#32088) add f9a43921c5 chore(deps): bump core-js from 3.39.0 to 3.40.0 in /superset-frontend/packages/superset-ui-demo (#32066) add 2d8892958e docs: various enhancements across `/docs` workspace (#31921) add b09bfd7889 chore(docs): Add RIADVICE to companies using Superset (#32326) add 6900bc1855 chore(readme): updating video on Readme page. (#32319) add 9dcf788f47 chore(deps): bump @docsearch/react from 3.8.2 to 3.9.0 in /docs (#32327) add b207f0616d chore(deps): bump antd from 5.22.7 to 5.24.1 in /docs (#32329) add bb46dd93be chore(deps): bump swagger-ui-react from 5.18.2 to 5.19.0 in /docs (#32330) add 42a3c523ae fix: Download as PDF fails due to cache error (#32332) add 7ce1a3445c fix: oauth2 trino (#31993) add c27aee2b14 chore(duckdb): Bump duckdb-engine, duckdb versions (#32302) add f820f9a976 chore(build): remove Lodash filter and noop usage in `superset-frontend` (#32341) add 422a07b382 fix: revert "fix: remove sort values on stacked totals (#31333)" (#32337) add 88cf2d5c39 fix(fe/dashboard-list): display modifier info for `Last modified` data (#32035) add 5140250421 ci(type-checking): run type-checking-frontend hook sequentially (#32323) add b06a9edfd6 chore(docs): Fix typo in security.mdx (#32349) add 2c37ddb2f6 fix(roles): Add SqlLabPermalinkRestApi as default sqlab roles. (#32284) add 4c4b5e8c64 fix(SSHTunnelForm): make the password tooltip visible (#32356) add ace8a3adb7 refactor(DatabaseSelector): Changes the imported types from antd-4 to antd-5 (#32314) add 22fe985cfc fix(firebolt): allow backslach escape for single quotes (#32350) add 0f07d78e01 fix(docker): Configure nginx for consistent port mapping and hot reloading (#32362) add c583eec4c7 fix(eslint-hook): ensure eslint hook receives arguments (#32333) add 90651dfe3e fix(dev/ci): pre-commit fixes galore (#32352) add bc02f05613 feat(number-format): adds memory data transfer rates in binary and decimal format (#32264) add b43e2ac8f4 chore(tests): converting enzyme to RTL, part 3 (#32363) add 8dcae810d4 fix: clickhouse-connect engine SSH parameter (#32348) add b0dac046e6 refactor(DrillDetailTableControls): Upgrade DrillDetailTableControls component to Ant Design 5 (#32313) add 83071d0e5f fix: ensure metric_macro expands templates (#32344) add 00883c395c feat: allow importing encrypted_extra (#32339) add 883c8cef2a feat: improve GSheets OAuth2 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 (00d302d710) \ N -- N -- N refs/heads/gsheets-improvement (883c8cef2a) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. No new revisions were added by this update. Summary of changes: .github/CODEOWNERS | 2 +- .github/workflows/embedded-sdk-release.yml | 2 +- .github/workflows/embedded-sdk-test.yml | 2 +- .github/workflows/ephemeral-env.yml | 67 +- .github/workflows/pre-commit.yml | 19 +- .github/workflows/release.yml | 10 +- .github/workflows/superset-applitool-cypress.yml | 3 +- .../workflows/superset-applitools-storybook.yml | 5 +- .github/workflows/superset-docs-deploy.yml | 4 +- .github/workflows/superset-docs-verify.yml | 4 +- .github/workflows/superset-e2e.yml | 2 +- .github/workflows/superset-translations.yml | 2 +- .github/workflows/tech-debt.yml | 2 +- .gitignore | 1 + .pre-commit-config.yaml | 50 +- Dockerfile | 12 +- README.md | 4 +- RELEASING/Dockerfile.from_local_tarball | 6 +- RELEASING/Dockerfile.from_svn_tarball | 19 +- RELEASING/changelog.py | 11 +- RESOURCES/INTHEWILD.md | 1 + RESOURCES/STANDARD_ROLES.md | 16 +- UPDATING.md | 5 +- docker/nginx/nginx.conf | 6 + docker/pythonpath_dev/superset_config.py | 2 +- .../webpack.config.js => docs/.eslintrc.js | 52 +- docs/README.md | 2 +- docs/babel.config.js | 1 + docs/docs/api.mdx | 1 - docs/docs/configuration/databases.mdx | 37 + docs/docs/configuration/setup-ssh-tunneling.mdx | 6 - docs/docs/contributing/howtos.mdx | 8 +- docs/docs/contributing/misc.mdx | 6 +- docs/docs/faq.mdx | 2 +- docs/docs/installation/architecture.mdx | 2 +- docs/docs/installation/docker-compose.mdx | 3 +- docs/docs/installation/kubernetes.mdx | 9 +- docs/docs/security/security.mdx | 2 +- .../{docusaurus.config.js => docusaurus.config.ts} | 199 +- docs/package.json | 30 +- docs/sidebars.js | 52 +- docs/src/components/SectionHeader.tsx | 2 +- docs/src/pages/community.tsx | 40 +- docs/src/pages/index.tsx | 11 +- docs/src/resources/data.js | 5 + docs/src/styles/custom.css | 12 + docs/src/styles/main.less | 3 +- docs/src/theme/DocItem/index.js | 12 +- docs/src/utils.js | 2 +- docs/static/.htaccess | 2 - docs/static/img/databases/tdengine.png | Bin 0 -> 32453 bytes docs/static/script/matomo.js | 1 + docs/tsconfig.json | 2 +- docs/yarn.lock | 4681 ++++++++++++-------- package-lock.json | 46 + package.json | 6 + pyproject.toml | 16 +- requirements/base.in | 2 +- requirements/base.txt | 8 +- requirements/development.txt | 16 +- scripts/cancel_github_workflows.py | 2 +- scripts/check-type.js | 260 ++ .../entrypoints/docker-ci.sh => scripts/eslint.sh | 20 +- {docs => superset-embedded-sdk}/.nvmrc | 0 superset-embedded-sdk/package-lock.json | 51 +- superset-embedded-sdk/package.json | 1 + superset-frontend/.eslintrc.js | 14 +- .../cypress/e2e/dashboard/_skip.controls.test.ts | 10 +- .../cypress/e2e/dashboard/drillby.test.ts | 5 +- .../cypress/e2e/dashboard/drilltodetail.test.ts | 5 +- .../e2e/dashboard/horizontalFilterBar.test.ts | 12 +- .../cypress-base/cypress/e2e/dashboard/utils.ts | 6 +- .../cypress-base/cypress/e2e/explore/chart.test.js | 22 +- .../cypress/e2e/explore/control.test.ts | 4 +- .../explore/visualizations/download_chart.test.js | 6 +- .../cypress-base/cypress/e2e/sqllab/tabs.test.ts | 4 +- .../cypress-base/cypress/support/directories.ts | 10 +- superset-frontend/cypress-base/package-lock.json | 101 +- superset-frontend/cypress-base/package.json | 3 +- .../eslint-plugin-i18n-strings}/index.js | 0 .../no-template-vars.test.js | 0 .../eslint-plugin-i18n-strings}/package.json | 2 +- .../eslint-plugin-theme-colors/colors.js | 0 .../eslint-plugin-theme-colors/index.js | 0 .../eslint-plugin-theme-colors/package.json | 0 superset-frontend/jest.config.js | 1 + superset-frontend/package-lock.json | 3864 +--------------- superset-frontend/package.json | 25 +- .../src/components/SQLPopover.tsx | 6 +- .../src/sections/chartTitle.tsx | 2 +- .../superset-ui-chart-controls/src/types.ts | 13 + .../src/utils/D3Formatting.ts | 8 + .../factories/createMemoryFormatter.ts | 61 +- .../superset-ui-core/src/query/types/Metric.ts | 4 +- .../superset-ui-core/src/ui-overrides/types.ts | 11 + .../chart-composition/legend/WithLegend.test.tsx | 54 +- .../chart/components/ChartDataProvider.test.tsx | 432 +- .../test/chart/components/SuperChart.test.tsx | 456 +- .../test/chart/components/SuperChartCore.test.tsx | 165 +- .../test/chart/components/reactify.test.tsx | 24 +- .../factories/createMemoryFormatter.test.ts | 48 + .../packages/superset-ui-demo/package.json | 4 +- .../shared/components/ResizableChartDemo.tsx | 17 +- .../storybook/shared/components/ResizablePanel.tsx | 4 +- .../LegacyPluginChartChord.stories.tsx | 2 +- .../CountryMap.stories.tsx | 16 +- .../BoxPlot/NVD3BoxPlot.stories.tsx | 4 +- .../plugin-chart-echarts/Gauge/Gauge.stories.tsx | 2 +- .../plugin-chart-echarts/Graph/Graph.stories.tsx | 2 +- .../plugin-chart-echarts/Radar/Radar.stories.tsx | 2 +- .../Timeseries/Timeseries.stories.tsx | 16 +- .../Waterfall/Waterfall.stories.tsx | 8 +- .../PivotTable.stories.tsx | 10 +- .../plugins/plugin-chart-table/Table.stories.tsx | 2 +- .../stories/plugins/plugin-chart-table/testData.ts | 6 +- .../stories/superset-ui-color/RenderPalettes.tsx | 16 +- .../NumberFormat.stories.tsx | 16 +- .../stories/superset-ui-style/Theme.stories.tsx | 11 +- .../superset-ui-time-format/TimeFormat.stories.tsx | 19 +- .../src/layers/Screengrid/Screengrid.tsx | 3 +- .../plugins/legacy-preset-chart-nvd3/package.json | 2 +- .../src/Histogram/controlPanel.tsx | 57 +- .../src/Histogram/transformProps.ts | 37 +- .../plugin-chart-echarts/src/Histogram/types.ts | 2 + .../src/Timeseries/transformProps.ts | 1 + .../plugins/plugin-chart-echarts/src/controls.tsx | 2 +- .../src/utils/eventHandlers.ts | 3 +- .../plugin-chart-echarts/src/utils/series.ts | 22 +- .../test/BigNumber/transformProps.test.ts | 2 +- .../plugins/plugin-chart-handlebars/README.md | 23 + .../src/components/Handlebars/HandlebarsViewer.tsx | 13 + .../src/plugin/controls/handlebarTemplate.tsx | 41 +- .../src/plugin/controls/style.tsx | 1 + .../plugin-chart-table/src/controlPanel.tsx | 2 +- superset-frontend/spec/helpers/shim.tsx | 2 +- superset-frontend/spec/helpers/testing-library.tsx | 1 + superset-frontend/spec/helpers/theming.ts | 19 +- superset-frontend/src/GlobalStyles.tsx | 14 +- superset-frontend/src/SqlLab/actions/sqlLab.js | 40 +- .../src/SqlLab/actions/sqlLab.test.js | 72 +- .../AceEditorWrapper/AceEditorWrapper.test.tsx | 19 +- .../AceEditorWrapper/useKeywords.test.ts | 2 + .../src/SqlLab/components/App/index.tsx | 2 +- .../QueryLimitSelect/QueryLimitSelect.test.tsx | 8 +- .../SqlLab/components/QueryLimitSelect/index.tsx | 53 +- .../components/QueryTable/QueryTable.test.tsx | 71 +- .../SqlLab/components/ResultSet/ResultSet.test.tsx | 44 +- .../SaveDatasetActionButton.test.tsx | 3 +- .../components/SaveDatasetActionButton/index.tsx | 30 +- .../SaveDatasetModal/SaveDatasetModal.test.tsx | 4 +- .../SqlLab/components/SaveDatasetModal/index.tsx | 20 +- .../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 8 +- .../ShareSqlLabQuery/ShareSqlLabQuery.test.tsx | 14 +- .../src/SqlLab/components/ShowSQL/index.tsx | 12 +- .../SqlLab/components/SouthPane/SouthPane.test.tsx | 31 +- .../src/SqlLab/components/SouthPane/index.tsx | 95 +- .../SqlLab/components/SqlEditor/SqlEditor.test.tsx | 43 +- .../src/SqlLab/components/SqlEditor/index.tsx | 14 +- .../SqlEditorLeftBar/SqlEditorLeftBar.test.tsx | 72 +- .../SqlLab/components/SqlEditorLeftBar/index.tsx | 11 +- .../SqlEditorTabHeader/SqlEditorTabHeader.test.tsx | 2 +- .../SqlLab/components/SqlEditorTabHeader/index.tsx | 6 +- .../components/TableElement/TableElement.test.tsx | 12 +- .../components/TablePreview/TablePreview.test.tsx | 173 + .../src/SqlLab/components/TablePreview/index.tsx | 429 ++ superset-frontend/src/SqlLab/fixtures.ts | 5 +- .../src/SqlLab/reducers/getInitialState.test.ts | 10 +- .../src/SqlLab/reducers/getInitialState.ts | 7 +- superset-frontend/src/SqlLab/reducers/sqlLab.js | 50 +- superset-frontend/src/SqlLab/types.ts | 2 +- .../src/components/Alert/Alert.test.tsx | 8 +- .../AlteredSliceTag/AlteredSliceTag.test.jsx | 4 +- .../src/components/AuditInfo/ModifiedInfo.test.tsx | 11 +- superset-frontend/src/components/Button/index.tsx | 2 +- .../src/components/Card/Card.test.tsx | 13 +- .../CertifiedBadge/CertifiedBadge.test.tsx | 8 +- .../Chart/ChartContextMenu/ChartContextMenu.tsx | 42 +- .../Chart/DrillBy/DrillByMenuItems.test.tsx | 66 +- .../components/Chart/DrillBy/DrillByMenuItems.tsx | 35 +- .../components/Chart/DrillBy/DrillByModal.test.tsx | 10 +- .../Chart/DrillBy/useDisplayModeToggle.tsx | 28 +- .../Chart/DrillBy/useDrillByBreadcrumbs.test.ts | 3 +- .../Chart/DrillBy/useResultsTableView.test.ts | 9 +- .../DrillDetail/DrillDetailMenuItems.test.tsx | 9 +- .../Chart/DrillDetail/DrillDetailMenuItems.tsx | 27 +- .../Chart/DrillDetail/DrillDetailModal.test.tsx | 3 +- .../DrillDetailTableControls.stories.tsx} | 22 +- .../DrillDetail/DrillDetailTableControls.test.tsx | 6 +- .../Chart/DrillDetail/DrillDetailTableControls.tsx | 37 +- .../components/Chart/MenuItemWithTruncation.tsx | 9 +- .../src/components/Collapse/Collapse.test.tsx | 161 +- .../CopyToClipboard/CopyToClipboard.test.tsx | 8 +- .../DatabaseSelector/DatabaseSelector.test.tsx | 6 +- .../src/components/DatabaseSelector/index.tsx | 2 +- .../src/components/Datasource/DatasourceEditor.jsx | 136 +- .../Datasource/DatasourceEditor.test.jsx | 10 +- .../components/Datasource/DatasourceModal.test.jsx | 20 +- .../src/components/Datasource/DatasourceModal.tsx | 277 +- .../src/components/Datasource/utils.js | 102 + .../src/components/DatePicker/index.tsx | 12 +- .../components/DeleteModal/DeleteModal.test.tsx | 3 +- .../src/components/Dropdown/Dropdown.stories.tsx | 6 +- .../src/components/Dropdown/index.tsx | 27 +- .../src/components/DropdownButton/index.tsx | 97 +- .../DropdownContainer/DropdownContainer.test.tsx | 3 +- .../src/components/DropdownContainer/index.tsx | 20 +- .../DropdownSelectableIcon.stories.tsx | 56 - .../DropdownSelectableIcon.test.tsx | 98 - .../components/DropdownSelectableIcon/index.tsx | 177 - .../DynamicEditableTitle.test.tsx | 3 +- .../ErrorMessage/DatabaseErrorMessage.test.tsx | 3 +- .../ErrorMessageWithStackTrace.test.tsx | 3 +- .../FrontendNetworkErrorMessage.test.tsx | 3 +- .../ErrorMessage/InvalidSQLErrorMessage.test.tsx | 51 +- .../ErrorMessage/MarshmallowErrorMessage.test.tsx | 32 +- .../ErrorMessage/OAuth2RedirectMessage.test.tsx | 19 +- .../ErrorMessage/ParameterErrorMessage.test.tsx | 3 +- .../ErrorMessage/TimeoutErrorMessage.test.tsx | 3 +- .../src/components/FacePile/FacePile.test.tsx | 7 +- .../src/components/FaveStar/FaveStar.test.tsx | 3 +- .../FilterableTable/FilterableTable.test.tsx | 41 +- .../src/components/FilterableTable/index.tsx | 251 +- .../FlashProvider/FlashProvider.test.tsx | 9 +- .../src/components/Form/LabeledErrorBoundInput.tsx | 3 +- .../src/components/GridTable/GridTable.test.tsx | 66 + .../src/components/GridTable/Header.test.tsx | 109 + .../src/components/GridTable/Header.tsx | 200 + .../src/components/GridTable/HeaderMenu.test.tsx | 266 ++ .../src/components/GridTable/HeaderMenu.tsx | 247 ++ .../components/GridTable/constants.ts} | 7 +- .../src/components/GridTable/index.tsx | 241 + .../src/components/Icons/AntdEnhanced.tsx | 16 + .../IndeterminateCheckbox.test.tsx | 8 +- .../src/components/ListView/CardSortSelect.tsx | 1 + .../components/ListView/CrossLinksTooltip.test.tsx | 8 +- .../src/components/ListView/ListView.test.jsx | 433 +- .../src/components/ListView/ListView.tsx | 4 +- .../ListViewCard/ListViewCard.stories.tsx | 10 +- .../src/components/Loading/Loading.test.tsx | 3 +- superset-frontend/src/components/Menu/index.tsx | 27 +- .../components/MetadataBar/MetadataBar.test.tsx | 8 +- .../components/ModalTrigger/ModalTrigger.test.tsx | 8 +- .../PageHeaderWithActions.test.tsx | 3 +- .../src/components/PageHeaderWithActions/index.tsx | 10 +- .../src/components/Pagination/Ellipsis.test.tsx | 3 +- .../src/components/Pagination/Item.test.tsx | 3 +- .../src/components/Pagination/Next.test.tsx | 3 +- .../src/components/Pagination/Prev.test.tsx | 3 +- .../src/components/Pagination/Wrapper.test.tsx | 19 +- .../src/components/Popover/Popover.stories.tsx | 15 +- .../src/components/Popover/Popover.test.tsx | 22 +- .../src/components/Popover/Popover.tsx | 27 - superset-frontend/src/components/Popover/index.tsx | 14 +- .../PopoverDropdown/PopoverDropdown.test.tsx | 3 +- .../src/components/PopoverDropdown/index.tsx | 10 +- .../PopoverSection/PopoverSection.test.tsx | 3 +- .../src/components/Radio/Radio.stories.tsx | 149 +- superset-frontend/src/components/Radio/index.tsx | 80 +- .../components/RefreshLabel/RefreshLabel.test.tsx | 3 +- .../src/components/Select/AsyncSelect.test.tsx | 2 +- .../src/components/Select/Select.test.tsx | 2 +- .../cell-renderers/ActionCell/ActionCell.test.tsx | 3 +- .../Table/cell-renderers/ActionCell/index.tsx | 4 +- .../cell-renderers/ButtonCell/ButtonCell.test.tsx | 3 +- .../header-renderers/HeaderWithRadioGroup.tsx | 24 +- .../src/components/Table/utils/utils.test.ts | 15 +- .../TableSelector/TableSelector.test.tsx | 112 +- .../src/components/TableView/TableView.test.tsx | 3 +- superset-frontend/src/components/Tags/Tag.test.tsx | 3 +- superset-frontend/src/components/Tags/Tag.tsx | 21 +- .../TimezoneSelector.DaylightSavingTime.test.tsx | 8 +- .../TimezoneSelector/TimezoneSelector.test.tsx | 8 +- .../src/components/Tooltip/Tooltip.test.tsx | 3 +- superset-frontend/src/components/Tooltip/index.tsx | 26 +- .../TooltipParagraph/TooltipParagraph.test.tsx | 8 +- superset-frontend/src/components/index.ts | 17 +- .../src/dashboard/actions/dashboardState.test.js | 2 +- superset-frontend/src/dashboard/actions/hydrate.js | 3 +- .../components/AddSliceCard/AddSliceCard.test.tsx | 9 +- .../components/CssEditor/CssEditor.test.tsx | 8 +- .../src/dashboard/components/CssEditor/index.tsx | 6 +- .../src/dashboard/components/Dashboard.test.jsx | 314 +- .../DashboardBuilder/DashboardBuilder.test.tsx | 9 +- .../DashboardBuilder/DashboardBuilder.tsx | 8 - .../EmbeddedModal/EmbeddedModal.test.tsx | 1 - .../DetailsPanel/DetailsPanel.test.tsx | 8 +- .../components/FiltersBadge/DetailsPanel/index.tsx | 60 +- .../FilterIndicator/FilterIndicator.test.tsx | 3 +- .../dashboard/components/Header/Header.test.tsx | 8 +- .../HeaderActionsDropdown.test.tsx | 260 -- .../src/dashboard/components/Header/index.jsx | 180 +- .../src/dashboard/components/Header/types.ts | 5 +- .../index.tsx => useHeaderActionsDropdownMenu.tsx} | 339 +- .../PropertiesModal/PropertiesModal.test.tsx | 502 ++- .../PublishedStatus/PublishedStatus.test.tsx | 3 +- .../components/RefreshIntervalModal.test.tsx | 21 +- .../src/dashboard/components/SliceAdder.test.tsx | 349 +- .../components/SliceHeader/SliceHeader.test.tsx | 3 +- .../SliceHeaderControls.test.tsx | 36 +- .../components/SliceHeaderControls/index.tsx | 38 +- .../URLShortLinkButton/URLShortLinkButton.test.tsx | 3 +- .../src/dashboard/components/dnd/DragDroppable.jsx | 5 +- .../components/dnd/DragDroppable.test.jsx | 252 +- .../components/filterscope/FilterScope.test.tsx | 58 +- .../components/gridComponents/ChartHolder.test.tsx | 2 +- .../components/gridComponents/Column.test.jsx | 4 +- .../components/gridComponents/Divider.test.jsx | 16 +- .../components/gridComponents/Header.test.jsx | 79 +- .../components/gridComponents/Markdown.test.jsx | 387 +- .../components/gridComponents/Row.test.jsx | 4 +- .../components/gridComponents/Tab.test.jsx | 108 +- .../components/gridComponents/Tab.test.tsx | 2 +- .../components/gridComponents/Tabs.test.tsx | 8 +- .../new/DraggableNewComponent.test.jsx | 58 +- .../components/gridComponents/new/NewTabs.test.jsx | 13 +- .../DownloadMenuItems/DownloadAsImage.test.tsx | 14 +- .../menu/DownloadMenuItems/DownloadAsImage.tsx | 12 +- .../menu/DownloadMenuItems/DownloadAsPdf.test.tsx | 14 +- .../menu/DownloadMenuItems/DownloadAsPdf.tsx | 12 +- .../DownloadMenuItems/DownloadMenuItems.test.tsx | 12 +- .../DownloadMenuItems/DownloadScreenshot.test.tsx | 8 +- .../components/menu/DownloadMenuItems/index.tsx | 51 +- .../dashboard/components/menu/HoverMenu.test.tsx | 3 +- .../components/menu/MarkdownModeDropdown.tsx | 1 + .../menu/ShareMenuItems/ShareMenuItems.test.tsx | 9 +- .../components/menu/ShareMenuItems/index.tsx | 16 +- .../FilterBar/ActionButtons/ActionButtons.test.tsx | 14 +- .../FilterBar/CrossFilters/CrossFilterTag.test.tsx | 3 +- .../CrossFilters/CrossFilterTitle.test.tsx | 41 +- .../ScopingModal/ChartsScopingListPanel.test.tsx | 8 +- .../ScopingModal/ScopingModal.test.tsx | 2 +- .../nativeFilters/FilterBar/FilterBar.test.tsx | 3 +- .../FilterBarSettings/FilterBarSettings.test.tsx | 94 +- .../FilterBar/FilterBarSettings/index.tsx | 76 +- .../FilterConfigurationLink.test.tsx | 18 +- .../FilterBar/FilterConfigurationLink/index.tsx | 65 +- .../useFilterConfigModal.tsx | 82 + .../FilterControls/FilterDivider.test.tsx | 3 +- .../nativeFilters/FilterBar/Header/Header.test.tsx | 3 +- .../nativeFilters/FilterBar/Header/index.tsx | 3 - .../nativeFilters/FilterCard/FilterCard.test.tsx | 3 +- .../nativeFilters/FilterCard/NameRow.tsx | 15 +- .../components/nativeFilters/FilterCard/index.tsx | 10 +- .../FiltersConfigModal/FilterConfigPane.test.tsx | 2 +- .../FiltersConfigForm/ColumnSelect.test.tsx | 8 +- .../FilterScope/FilterScope.test.tsx | 116 +- .../__tests__/TreeInitialization.test.tsx | 80 + .../FilterScope/__tests__/TreeSelection.test.tsx | 124 + .../FilterScope/__tests__/utils.tsx | 85 + .../FiltersConfigForm/FiltersConfigForm.tsx | 36 +- .../FiltersConfigForm/getControlItemsMap.test.tsx | 3 +- .../FiltersConfigModal/FiltersConfigModal.test.tsx | 2 +- .../components/nativeFilters/state.test.ts | 126 + .../dashboard/components/nativeFilters/state.ts | 25 +- .../src/dashboard/hooks/useDownloadScreenshot.ts | 184 + superset-frontend/src/dashboard/styles.ts | 32 +- .../src/explore/actions/datasourcesActions.ts | 13 +- .../src/explore/actions/exploreActions.ts | 16 + .../src/explore/components/Control.test.tsx | 7 +- .../components/ControlPanelsContainer.test.tsx | 3 +- .../CopyToClipboardButton.test.tsx | 8 +- .../DataTableControl/FilterInput.test.tsx | 3 +- .../explore/components/DataTableControl/index.tsx | 33 +- .../DataTablesPane/test/DataTablesPane.test.tsx | 4 +- .../test/ResultsPaneOnDashboard.test.tsx | 2 +- .../DataTablesPane/test/SamplesPane.test.tsx | 2 +- .../DatasourcePanel/DatasourcePanel.test.tsx | 96 +- .../ExploreChartHeader/ExploreChartHeader.test.tsx | 184 +- .../components/ExploreChartHeader/index.jsx | 53 +- .../ExploreChartPanel/ExploreChartPanel.test.jsx | 10 +- .../ExploreViewContainer.test.tsx | 8 +- .../ExportToCSVDropdown.test.tsx | 3 +- .../components/ExportToCSVDropdown/index.tsx | 10 +- .../PropertiesModal/PropertiesModal.test.tsx | 84 +- .../RowCountLabel/RowCountLabel.test.tsx | 3 +- .../RunQueryButton/RunQueryButton.test.tsx | 3 +- .../AnnotationLayer.test.tsx | 10 +- .../controls/AnnotationLayerControl/index.tsx | 8 +- .../components/controls/BoundsControl.test.jsx | 8 +- .../components/controls/CheckboxControl.test.tsx | 8 +- .../CollectionControl/CollectionControl.test.tsx | 3 +- .../ColorSchemeControl/ColorSchemeControl.test.tsx | 8 +- .../FormattingPopover.tsx | 4 +- .../controls/ConditionalFormattingControl/types.ts | 2 +- .../ContourControl/ContourPopoverTrigger.tsx | 6 +- .../ControlPopover/ControlPopover.test.tsx | 22 +- .../controls/ControlPopover/ControlPopover.tsx | 67 +- .../DatasourceControl/DatasourceControl.test.jsx | 12 +- .../DatasourceControl/DatasourceControl.test.tsx | 9 +- .../controls/DatasourceControl/index.jsx | 14 +- .../controls/DateFilterControl/DateFilterLabel.tsx | 23 +- .../DateFilterControl/components/CalendarFrame.tsx | 18 +- .../DateFilterControl/components/CommonFrame.tsx | 18 +- .../components/CurrentCalendarFrame.tsx | 25 +- .../DateFilterControl/components/CustomFrame.tsx | 15 +- .../DateFilterControl/tests/AdvancedFrame.test.tsx | 3 +- .../DateFilterControl/tests/CalendarFrame.test.tsx | 8 +- .../tests/CurrentCalendarFrame.test.tsx | 3 +- .../DateFilterControl/tests/CustomFrame.test.tsx | 186 +- .../tests/DateFilterLabel.test.tsx | 3 +- .../controls/DateFilterControl/utils/constants.ts | 13 +- .../ColumnSelectPopover.test.tsx | 28 +- .../ColumnSelectPopoverTrigger.tsx | 6 +- .../DndColumnSelect.test.tsx | 10 +- .../DndMetricSelect.test.tsx | 4 +- .../DndColumnSelectControl/DndSelectLabel.test.tsx | 3 +- .../DndColumnSelectControl/Option.test.tsx | 115 +- .../AdhocFilterControl/AdhocFilterControl.test.jsx | 146 - .../AdhocFilterControl/AdhocFilterControl.test.tsx | 154 + .../AdhocFilterEditPopover.test.jsx | 180 +- ...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 28 +- .../AdhocFilterEditPopoverSqlTabContent.test.tsx | 22 +- .../AdhocFilterOption/AdhocFilterOption.test.tsx | 8 +- .../AdhocFilterPopoverTrigger.test.tsx | 3 +- .../AdhocFilterPopoverTrigger/index.tsx | 6 +- .../utils/useDatePickerInAdhocfilter.test.ts | 19 +- .../FixedOrMetricControl.test.tsx | 3 +- .../LayerConfigsControl/LayerConfigsControl.tsx | 4 +- .../controls/MapViewControl/MapViewControl.tsx | 5 +- .../MapViewControl/MapViewPopoverContent.tsx | 3 +- .../AdhocMetricEditPopover.test.jsx | 125 - .../AdhocMetricEditPopover.test.tsx | 8 +- .../AdhocMetricEditPopoverTitle.test.tsx | 4 +- .../MetricControl/AdhocMetricOption.test.jsx | 8 +- .../MetricControl/AdhocMetricPopoverTrigger.tsx | 6 +- .../MetricControl/FilterDefinitionOption.test.jsx | 21 +- .../MetricControl/MetricDefinitionOption.test.tsx | 3 +- .../controls/MetricControl/MetricsControl.test.jsx | 20 +- .../OptionControls/OptionControls.test.tsx | 40 +- .../SelectAsyncControl/SelectAsyncControl.test.tsx | 3 +- .../components/controls/SelectControl.test.jsx | 2 +- .../components/controls/TextAreaControl.jsx | 61 +- .../controls/TextControl/TextControl.test.tsx | 8 +- .../components/controls/TimeOffsetControl.test.tsx | 13 +- .../components/controls/TimeOffsetControl.tsx | 4 - .../TimeSeriesColumnControl.test.tsx | 3 +- .../controls/TimeSeriesColumnControl/index.jsx | 4 +- .../components/controls/ViewportControl.test.jsx | 3 +- .../VizTypeControl/VizTypeControl.test.jsx | 68 +- .../VizTypeControl/VizTypeControl.test.tsx | 2 +- .../controls/withAsyncVerification.test.tsx | 64 +- .../DashboardsSubMenu.test.tsx | 10 +- .../useExploreAdditionalActionsMenu/index.jsx | 52 +- .../exploreUtils/getSimpleSQLExpression.test.ts | 8 + .../src/explore/reducers/exploreReducer.js | 18 + .../src/features/alerts/AlertReportModal.test.tsx | 8 +- .../src/features/alerts/AlertReportModal.tsx | 18 +- .../alerts/components/NotificationMethod.test.tsx | 2 +- .../features/allEntities/AllEntitiesTable.test.tsx | 3 +- .../annotationLayers/AnnotationLayerModal.test.jsx | 8 +- .../features/annotations/AnnotationModal.test.jsx | 8 +- .../src/features/charts/ChartCard.tsx | 11 +- .../cssTemplates/CssTemplateModal.test.jsx | 8 +- .../src/features/dashboards/DashboardCard.tsx | 11 +- .../DatabaseConnectionForm/EncryptedField.tsx | 14 +- .../OAuth2ClientField.test.tsx | 19 +- .../databases/DatabaseModal/SSHTunnelForm.tsx | 10 +- .../DatabaseModal/SSHTunnelSwitch.test.tsx | 3 +- .../databases/DatabaseModal/index.test.tsx | 696 ++- .../src/features/databases/DatabaseModal/index.tsx | 4 +- .../UploadDataModel/UploadDataModal.test.tsx | 17 +- .../EditDataset/UsageTab/UsageTab.test.tsx | 12 +- .../AddDataset/LeftPanel/LeftPanel.test.tsx | 8 +- superset-frontend/src/features/datasets/types.ts | 24 +- .../src/features/home/ActivityTable.test.tsx | 8 +- .../src/features/home/ChartTable.test.tsx | 8 +- superset-frontend/src/features/home/ChartTable.tsx | 3 +- .../src/features/home/DashboardTable.test.tsx | 362 +- .../src/features/home/DashboardTable.tsx | 6 +- .../src/features/home/EmptyState.test.tsx | 27 +- .../src/features/home/LanguagePicker.test.tsx | 3 +- superset-frontend/src/features/home/Menu.test.tsx | 3 +- .../src/features/home/RightMenu.test.tsx | 10 +- superset-frontend/src/features/home/RightMenu.tsx | 2 + .../src/features/home/SavedQueries.test.tsx | 10 +- .../src/features/home/SavedQueries.tsx | 67 +- .../src/features/home/SubMenu.test.tsx | 3 +- .../features/queries/QueryPreviewModal.test.tsx | 4 +- .../queries/SavedQueryPreviewModal.test.jsx | 6 +- .../HeaderReportDropdown/index.test.tsx | 74 +- .../ReportModal/HeaderReportDropdown/index.tsx | 132 +- .../reports/ReportModal/ReportModal.test.tsx | 8 +- .../src/features/reports/ReportModal/index.tsx | 40 +- .../src/features/reports/ReportModal/styles.tsx | 4 - .../features/rls/RowLevelSecurityModal.test.tsx | 33 +- superset-frontend/src/features/tags/TagCard.tsx | 11 +- .../components/Select/SelectFilterPlugin.test.tsx | 3 +- superset-frontend/src/hooks/apiResources/sqlLab.ts | 4 +- superset-frontend/src/hooks/apiResources/tables.ts | 10 +- .../pages/AlertReportList/AlertReportList.test.jsx | 208 +- .../AnnotationLayerList.test.jsx | 180 +- .../pages/AnnotationList/AnnotationList.test.jsx | 10 +- .../src/pages/ChartCreation/ChartCreation.test.tsx | 8 +- .../src/pages/ChartList/ChartList.test.jsx | 325 +- .../pages/CssTemplateList/CssTemplateList.test.jsx | 181 +- .../src/pages/DashboardList/DashboardList.test.jsx | 290 +- .../src/pages/DashboardList/index.tsx | 5 +- .../src/pages/DatabaseList/DatabaseList.test.jsx | 12 +- .../src/pages/DatasetList/DatasetList.test.tsx | 16 +- ...nLogList.test.jsx => ExecutionLogList.test.tsx} | 49 +- superset-frontend/src/pages/Home/Home.test.tsx | 22 +- .../QueryHistoryList/QueryHistoryList.test.tsx | 12 +- .../RowLevelSecurityList.test.tsx | 5 +- .../pages/SavedQueryList/SavedQueryList.test.jsx | 478 +- superset-frontend/src/setup/setupFormatters.ts | 10 +- superset-frontend/src/types/TagType.ts | 1 + .../src/types/{ace-builds.ts => ace-builds.d.ts} | 0 .../react-syntax-highlighter.d.ts} | 29 +- superset-websocket/package-lock.json | 47 + superset-websocket/package.json | 1 + superset-websocket/tsconfig.json | 2 +- superset/charts/api.py | 117 +- superset/charts/schemas.py | 18 +- superset/cli/thumbnails.py | 2 +- superset/commands/database/tables.py | 6 + superset/commands/report/execute.py | 26 +- superset/common/db_query_status.py | 16 +- superset/config.py | 11 + superset/connectors/sqla/models.py | 2 +- superset/dashboards/api.py | 263 +- superset/dashboards/filter_state/api.py | 74 + superset/dashboards/permalink/api.py | 69 + superset/dashboards/schemas.py | 9 +- superset/databases/api.py | 13 +- superset/databases/schemas.py | 8 +- superset/datasets/api.py | 9 +- superset/db_engine_specs/base.py | 5 +- superset/db_engine_specs/clickhouse.py | 18 +- superset/db_engine_specs/couchbase.py | 2 +- superset/db_engine_specs/databricks.py | 5 +- superset/db_engine_specs/duckdb.py | 2 +- superset/db_engine_specs/hana.py | 5 +- superset/db_engine_specs/hive.py | 5 +- superset/db_engine_specs/oracle.py | 5 +- .../db_engine_specs/{crate.py => parseable.py} | 46 +- superset/db_engine_specs/presto.py | 2 +- superset/db_engine_specs/snowflake.py | 2 +- superset/db_engine_specs/tdengine.py | 57 + superset/db_engine_specs/trino.py | 4 +- superset/embedded/api.py | 32 +- .../Age_distribution_of_respondents.yaml | 13 +- .../How_much_do_you_expect_to_earn_0_-_100k.yaml | 48 +- .../Last_Year_Income_Distribution.yaml | 7 +- superset/jinja_context.py | 46 +- superset/migrations/shared/catalogs.py | 11 +- superset/migrations/shared/native_filters.py | 17 +- ...b56500de1855_add_uuid_column_to_import_mixin.py | 2 +- ...14-38_a9422eeaae74_new_dataset_models_take_2.py | 10 +- ...9123a_update_charts_with_old_time_comparison.py | 8 + superset/models/core.py | 31 +- superset/models/slice.py | 4 +- superset/queries/api.py | 3 +- superset/row_level_security/schemas.py | 2 +- superset/security/manager.py | 2 + superset/sql/dialects/firebolt.py | 5 +- superset/sql_lab.py | 2 +- superset/sqllab/api.py | 11 +- superset/sqllab/permalink/api.py | 2 +- superset/tags/api.py | 7 +- superset/tasks/thumbnails.py | 15 +- superset/utils/core.py | 16 +- superset/utils/oauth2.py | 18 +- superset/utils/pandas_postprocessing/histogram.py | 3 +- superset/utils/screenshots.py | 226 +- superset/utils/webdriver.py | 10 +- superset/views/sqllab.py | 10 +- superset/viz.py | 3 +- tests/integration_tests/async_events/api_tests.py | 9 +- tests/integration_tests/celery_tests.py | 14 +- tests/integration_tests/cli_tests.py | 6 +- tests/integration_tests/conftest.py | 2 +- tests/integration_tests/core_tests.py | 2 +- tests/integration_tests/dashboards/api_tests.py | 85 +- tests/integration_tests/databases/api_tests.py | 151 +- tests/integration_tests/datasets/api_tests.py | 4 +- tests/integration_tests/datasource_tests.py | 2 +- .../db_engine_specs/base_engine_spec_tests.py | 3 +- .../7e67aecbf3f1_chart_ds_constraint__tests.py | 2 +- ...update_charts_with_old_time_comparison__test.py | 12 + .../fb13d49b72f9_better_filters__tests.py | 2 +- tests/integration_tests/reports/scheduler_tests.py | 4 +- tests/integration_tests/security_tests.py | 2 + tests/integration_tests/sql_lab/commands_tests.py | 11 +- .../sql_lab/permalink/api_tests.py | 22 + tests/integration_tests/sqllab_tests.py | 96 +- tests/integration_tests/tags/api_tests.py | 2 +- tests/integration_tests/thumbnails_tests.py | 27 +- .../commands/databases/excel_reader_test.py | 2 +- .../commands/databases/importers}/__init__.py | 0 .../commands/databases/importers/v1}/__init__.py | 0 .../databases/importers/v1/command_test.py | 50 + tests/unit_tests/commands/databases/tables_test.py | 28 +- tests/unit_tests/commands/report/execute_test.py | 115 + .../common/test_query_context_processor.py | 238 + tests/unit_tests/connectors/sqla/models_test.py | 11 +- tests/unit_tests/databases/api_test.py | 59 + tests/unit_tests/datasets/api_tests.py | 3 +- tests/unit_tests/datasets/commands/export_test.py | 2 +- tests/unit_tests/db_engine_specs/test_gsheets.py | 101 +- tests/unit_tests/db_engine_specs/test_mssql.py | 47 +- tests/unit_tests/db_engine_specs/test_ocient.py | 6 +- .../{test_crate.py => test_parseable.py} | 32 +- .../unit_tests/db_engine_specs/test_tdengine.py | 25 +- tests/unit_tests/fixtures/dataframes.py | 4 +- tests/unit_tests/jinja_context_test.py | 194 +- .../unit_tests/migrations/shared/catalogs_test.py | 250 ++ tests/unit_tests/models/core_test.py | 154 +- .../pandas_postprocessing/test_histogram.py | 48 +- tests/unit_tests/sql/parse_tests.py | 21 + tests/unit_tests/utils/screenshot_test.py | 194 + 610 files changed, 17072 insertions(+), 14206 deletions(-) copy superset-embedded-sdk/webpack.config.js => docs/.eslintrc.js (55%) delete mode 100644 docs/docs/configuration/setup-ssh-tunneling.mdx rename docs/{docusaurus.config.js => docusaurus.config.ts} (74%) create mode 100644 docs/static/img/databases/tdengine.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100755 scripts/check-type.js copy docker/entrypoints/docker-ci.sh => scripts/eslint.sh (71%) copy {docs => superset-embedded-sdk}/.nvmrc (100%) rename superset-frontend/{tools/eslint-plugin-translation-vars => eslint-rules/eslint-plugin-i18n-strings}/index.js (100%) rename superset-frontend/{tools/eslint-plugin-translation-vars => eslint-rules/eslint-plugin-i18n-strings}/no-template-vars.test.js (100%) rename superset-frontend/{tools/eslint-plugin-translation-vars => eslint-rules/eslint-plugin-i18n-strings}/package.json (87%) rename superset-frontend/{tools => eslint-rules}/eslint-plugin-theme-colors/colors.js (100%) rename superset-frontend/{tools => eslint-rules}/eslint-plugin-theme-colors/index.js (100%) rename superset-frontend/{tools => eslint-rules}/eslint-plugin-theme-colors/package.json (100%) create mode 100644 superset-frontend/src/SqlLab/components/TablePreview/TablePreview.test.tsx create mode 100644 superset-frontend/src/SqlLab/components/TablePreview/index.tsx copy superset-frontend/src/{visualizations/dashboardComponents/ExampleComponent/index.ts => components/Chart/DrillDetail/DrillDetailTableControls.stories.tsx} (67%) delete mode 100644 superset-frontend/src/components/DropdownSelectableIcon/DropdownSelectableIcon.stories.tsx delete mode 100644 superset-frontend/src/components/DropdownSelectableIcon/DropdownSelectableIcon.test.tsx delete mode 100644 superset-frontend/src/components/DropdownSelectableIcon/index.tsx create mode 100644 superset-frontend/src/components/GridTable/GridTable.test.tsx create mode 100644 superset-frontend/src/components/GridTable/Header.test.tsx create mode 100644 superset-frontend/src/components/GridTable/Header.tsx create mode 100644 superset-frontend/src/components/GridTable/HeaderMenu.test.tsx create mode 100644 superset-frontend/src/components/GridTable/HeaderMenu.tsx copy superset-frontend/{plugins/legacy-plugin-chart-country-map/src/geojson.d.ts => src/components/GridTable/constants.ts} (89%) create mode 100644 superset-frontend/src/components/GridTable/index.tsx delete mode 100644 superset-frontend/src/components/Popover/Popover.tsx delete mode 100644 superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/HeaderActionsDropdown.test.tsx rename superset-frontend/src/dashboard/components/Header/{HeaderActionsDropdown/index.tsx => useHeaderActionsDropdownMenu.tsx} (53%) create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterConfigurationLink/useFilterConfigModal.tsx create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/__tests__/TreeInitialization.test.tsx create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/__tests__/TreeSelection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/__tests__/utils.tsx create mode 100644 superset-frontend/src/dashboard/components/nativeFilters/state.test.ts create mode 100644 superset-frontend/src/dashboard/hooks/useDownloadScreenshot.ts delete mode 100644 superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/AdhocFilterControl.test.jsx create mode 100644 superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/AdhocFilterControl.test.tsx delete mode 100644 superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.jsx rename superset-frontend/src/pages/ExecutionLogList/{ExecutionLogList.test.jsx => ExecutionLogList.test.tsx} (69%) rename superset-frontend/src/types/{ace-builds.ts => ace-builds.d.ts} (100%) copy superset-frontend/src/{dashboard/components/nativeFilters/FilterCard/types.ts => types/react-syntax-highlighter.d.ts} (60%) copy superset/db_engine_specs/{crate.py => parseable.py} (56%) create mode 100644 superset/db_engine_specs/tdengine.py copy {superset/advanced_data_type => tests/unit_tests/commands/databases/importers}/__init__.py (100%) copy {superset/advanced_data_type => tests/unit_tests/commands/databases/importers/v1}/__init__.py (100%) create mode 100644 tests/unit_tests/commands/databases/importers/v1/command_test.py create mode 100644 tests/unit_tests/common/test_query_context_processor.py copy tests/unit_tests/db_engine_specs/{test_crate.py => test_parseable.py} (60%) copy superset/daos/exceptions.py => tests/unit_tests/db_engine_specs/test_tdengine.py (65%) create mode 100644 tests/unit_tests/utils/screenshot_test.py