Compare commits

...

14 Commits

Author SHA1 Message Date
Evan Rusackas
37b233ad73 databases.mdx entry 2025-01-03 11:46:46 -07:00
helenosheaa
13b4f144f3 feat: engine spec 2025-01-03 11:44:46 -07:00
helenosheaa
6927b87c1a docs: add influxdb 3.0 to driver list 2025-01-03 11:44:46 -07:00
helenosheaa
a9b5870089 feat: influxdb mdx 2025-01-03 11:44:06 -07:00
dependabot[bot]
ddd964e49a chore(deps-dev): bump eslint-plugin-jest-dom from 3.6.5 to 5.5.0 in /superset-frontend (#31217)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
2024-12-20 14:45:07 -07:00
dependabot[bot]
a275a86d12 chore(deps): bump antd from 5.22.2 to 5.22.5 in /docs (#31541)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:43:51 -07:00
dependabot[bot]
1c99f399c2 chore(deps): bump prism-react-renderer from 2.4.0 to 2.4.1 in /docs (#31536)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:42:54 -07:00
dependabot[bot]
c38c7a29fd build(deps): bump find-my-way and @applitools/eyes-cypress in /superset-frontend/cypress-base (#30322)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:42:15 -07:00
dependabot[bot]
0fde78cb17 build(deps-dev): update @types/lodash requirement from ^4.17.7 to ^4.17.13 in /superset-frontend/packages/superset-ui-core (#30789)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2024-12-20 14:38:52 -07:00
dependabot[bot]
5df3317ad0 chore(deps-dev): bump @types/lodash from 4.17.7 to 4.17.13 in /superset-websocket (#31523)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:38:33 -07:00
dependabot[bot]
e88c4e1100 chore(deps-dev): bump @types/rison from 0.0.9 to 0.1.0 in /superset-frontend (#31546)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:37:57 -07:00
dependabot[bot]
d85bb8b6a0 chore(deps): bump react-reverse-portal from 2.1.1 to 2.1.2 in /superset-frontend (#31557)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-20 14:35:53 -07:00
Maxime Beauchemin
fd9c2b399e fix: install uv in docker-bootstrap (#31588) 2024-12-20 13:22:53 -08:00
Sam Firke
e8daa63d7e fix(docs): get quickstart guide working again (#31583) 2024-12-20 13:11:25 -08:00
35 changed files with 1451 additions and 757 deletions

View File

@@ -18,6 +18,9 @@
set -eo pipefail
# UV may not be installed in older images
pip install uv
# Make python interactive
if [ "$DEV_MODE" == "true" ]; then
echo "Reinstalling the app in editable mode"

View File

@@ -66,6 +66,7 @@ are compatible with Superset.
| [Hologres](/docs/configuration/databases#hologres) | `pip install psycopg2` | `postgresql+psycopg2://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
| [IBM Db2](/docs/configuration/databases#ibm-db2) | `pip install ibm_db_sa` | `db2+ibm_db://` |
| [IBM Netezza Performance Server](/docs/configuration/databases#ibm-netezza-performance-server) | `pip install nzalchemy` | `netezza+nzpy://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
| [InfluxDB 3.0](/docs/databases/influxdb3) | `pip install flightsql-dbapi` | `datafusion+flightsql://{host}:443?token=<influxdb-token>&bucket-name=<bucket-name>`
| [MySQL](/docs/configuration/databases#mysql) | `pip install mysqlclient` | `mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
| [OceanBase](/docs/configuration/databases#oceanbase) | `pip install oceanbase_py` | `oceanbase://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
| [Oracle](/docs/configuration/databases#oracle) | `pip install cx_Oracle` | `oracle://` |

View File

@@ -0,0 +1,18 @@
---
title: InfluxDB 3.0
hide_title: true
sidebar_position: 25
version: 1
---
## InfluxDB 3.0
The [flightsql-dbapi](https://pypi.org/project/flightsql-dbapi/) provides a DB API 2 interface and SQLAlchemy Dialect for Flight SQL that interacts with [InfluxDB 3.0](https://www.influxdata.com/products/influxdb-overview/). The primary SQLAlchemy Dialect provided by flightsql-dbapi targets the DataFusion SQL execution engine.
### DSN to connect InfluxDB 3.0 to Superset
```
datafusion+flightsql://host:443?token=<influxdb-token>&bucket-name=<bucket-name>
```
This [wiki](https://github.com/influxdata/flightsql-dbapi/wiki/InfluxDB-IOx) gives you more hints on how to use this package.

View File

@@ -121,6 +121,13 @@ Here various release tags, github SHA, and latest `master` can be referenced by
Refer to the docker-related documentation to learn more about existing tags you can point to
from Docker Hub.
:::note
For option #2 and #3, we recommend checking out the release tag from the better repository
(ie: `git checkout 4.0.0`) for more guaranteed results. This ensures that the `docker-compose.*.yml`
configurations and that the mounted `docker/` scripts are in sync with the image you are
looking to fire up.
:::
## `docker compose` tips & configuration
:::caution

View File

@@ -31,6 +31,9 @@ $ git clone https://github.com/apache/superset
# Enter the repository you just cloned
$ cd superset
# Set the repo to the state associated with the latest official version
$ git checkout tags/4.1.1
# Fire up Superset using Docker Compose
$ docker compose -f docker-compose-image-tag.yml up
```

View File

@@ -29,14 +29,14 @@
"@saucelabs/theme-github-codeblock": "^0.3.0",
"@superset-ui/style": "^0.14.23",
"@svgr/webpack": "^8.1.0",
"antd": "^5.22.2",
"antd": "^5.22.5",
"buffer": "^6.0.3",
"clsx": "^2.1.1",
"docusaurus-plugin-less": "^2.0.2",
"file-loader": "^6.2.0",
"less": "^4.2.1",
"less-loader": "^11.0.0",
"prism-react-renderer": "^2.4.0",
"prism-react-renderer": "^2.4.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-github-btn": "^1.4.0",

View File

@@ -286,10 +286,10 @@
dependencies:
"@ctrl/tinycolor" "^3.6.1"
"@ant-design/cssinjs-utils@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.1.tgz#57abb43671023f937348bd33442862c60ac8e8b2"
integrity sha512-2HAiyGGGnM0es40SxdszeQAU5iWp41wBIInq+ONTCKjlSKOrzQfnw4JDtB8IBmqE6tQaEKwmzTP2LGdt5DSwYQ==
"@ant-design/cssinjs-utils@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.3.tgz#5dd79126057920a6992d57b38dd84e2c0b707977"
integrity sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==
dependencies:
"@ant-design/cssinjs" "^1.21.0"
"@babel/runtime" "^7.23.2"
@@ -320,7 +320,7 @@
resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz#ed2be7fb4d82ac7e1d45a54a5b06d6cecf8be6f6"
integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==
"@ant-design/icons@^5.5.1", "@ant-design/icons@^5.5.2":
"@ant-design/icons@^5.5.2":
version "5.5.2"
resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-5.5.2.tgz#c4567943cc2b7c6dbe9cae68c06ffa35f755dc0d"
integrity sha512-xc53rjVBl9v2BqFxUjZGti/RfdDeA8/6KYglmInM2PNqSXc/WfuGDTifJI/ZsokJK0aeKvOIbXc9y2g8ILAhEA==
@@ -2218,17 +2218,17 @@
classnames "^2.3.2"
rc-util "^5.24.4"
"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.2.5":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-2.2.5.tgz#5ebe383e563e667b3fa24b6b32afedbab378a92e"
integrity sha512-F1EJ4KjFpGAHAjuKvOyZB/6IZDkVx0bHl0M4fQM5wXcmm7lgTgVSSnR3bXwdmS6jOJGHOqfDxIJW3WUvwMIXhQ==
"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.2.6":
version "2.2.6"
resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-2.2.6.tgz#bfe6602313b3fadd659687746511f813299d5ea4"
integrity sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==
dependencies:
"@babel/runtime" "^7.23.2"
"@rc-component/portal" "^1.1.0"
classnames "^2.3.2"
rc-motion "^2.0.0"
rc-resize-observer "^1.3.1"
rc-util "^5.38.0"
rc-util "^5.44.0"
"@saucelabs/theme-github-codeblock@^0.3.0":
version "0.3.0"
@@ -3455,15 +3455,15 @@ ansi-styles@^6.1.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
antd@^5.22.2:
version "5.22.2"
resolved "https://registry.yarnpkg.com/antd/-/antd-5.22.2.tgz#9f5d38c09685c018c368329f1a1107d5417536d6"
integrity sha512-vihhiJbm9VG3d6boUeD1q2MXMax+qBrXhgqCEC+45v8iGUF6m4Ct+lFiCW4oWaN3EABOsbVA6Svy3Rj/QkQFKw==
antd@^5.22.5:
version "5.22.5"
resolved "https://registry.yarnpkg.com/antd/-/antd-5.22.5.tgz#e959381faca86c984cc853a0ab5cb3f140178336"
integrity sha512-+0UP8w+ULVv2OIzCDVz7j6I0UfH6mMLHSWO6qzpBc+9psOoVQLRbyAE21XnZM/eGrt2MNsEDL5fmlhXL/V8JyQ==
dependencies:
"@ant-design/colors" "^7.1.0"
"@ant-design/cssinjs" "^1.21.1"
"@ant-design/cssinjs-utils" "^1.1.1"
"@ant-design/icons" "^5.5.1"
"@ant-design/cssinjs-utils" "^1.1.3"
"@ant-design/icons" "^5.5.2"
"@ant-design/react-slick" "~1.1.2"
"@babel/runtime" "^7.25.7"
"@ctrl/tinycolor" "^3.6.1"
@@ -3471,7 +3471,7 @@ antd@^5.22.2:
"@rc-component/mutate-observer" "^1.1.0"
"@rc-component/qrcode" "~1.0.0"
"@rc-component/tour" "~1.15.1"
"@rc-component/trigger" "^2.2.5"
"@rc-component/trigger" "^2.2.6"
classnames "^2.5.1"
copy-to-clipboard "^3.3.3"
dayjs "^1.11.11"
@@ -3480,33 +3480,33 @@ antd@^5.22.2:
rc-collapse "~3.9.0"
rc-dialog "~9.6.0"
rc-drawer "~7.2.0"
rc-dropdown "~4.2.0"
rc-field-form "~2.5.1"
rc-dropdown "~4.2.1"
rc-field-form "~2.7.0"
rc-image "~7.11.0"
rc-input "~1.6.3"
rc-input "~1.6.4"
rc-input-number "~9.3.0"
rc-mentions "~2.17.0"
rc-menu "~9.16.0"
rc-motion "^2.9.3"
rc-motion "^2.9.4"
rc-notification "~5.6.2"
rc-pagination "~4.3.0"
rc-picker "~4.8.1"
rc-pagination "~5.0.0"
rc-picker "~4.8.3"
rc-progress "~4.0.0"
rc-rate "~2.13.0"
rc-resize-observer "^1.4.0"
rc-resize-observer "^1.4.1"
rc-segmented "~2.5.0"
rc-select "~14.16.3"
rc-select "~14.16.4"
rc-slider "~11.1.7"
rc-steps "~6.0.1"
rc-switch "~4.1.0"
rc-table "~7.48.1"
rc-table "~7.49.0"
rc-tabs "~15.4.0"
rc-textarea "~1.8.2"
rc-tooltip "~6.2.1"
rc-tree "~5.10.1"
rc-tree-select "~5.24.4"
rc-tree-select "~5.24.5"
rc-upload "~4.8.1"
rc-util "^5.43.0"
rc-util "^5.44.2"
scroll-into-view-if-needed "^3.1.0"
throttle-debounce "^5.0.2"
@@ -8080,10 +8080,10 @@ pretty-time@^1.1.0:
resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==
prism-react-renderer@^2.3.0, prism-react-renderer@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz#c5ea692029c2f8b3fd04f63662d04ffd4eaf10a0"
integrity sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==
prism-react-renderer@^2.3.0, prism-react-renderer@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz#ac63b7f78e56c8f2b5e76e823a976d5ede77e35f"
integrity sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==
dependencies:
"@types/prismjs" "^1.26.0"
clsx "^2.0.0"
@@ -8315,20 +8315,20 @@ rc-drawer@~7.2.0:
rc-motion "^2.6.1"
rc-util "^5.38.1"
rc-dropdown@~4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.2.0.tgz#c6052fcfe9c701487b141e411cdc277dc7c6f061"
integrity sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==
rc-dropdown@~4.2.0, rc-dropdown@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.2.1.tgz#44729eb2a4272e0353d31ac060da21e606accb1c"
integrity sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==
dependencies:
"@babel/runtime" "^7.18.3"
"@rc-component/trigger" "^2.0.0"
classnames "^2.2.6"
rc-util "^5.17.0"
rc-util "^5.44.1"
rc-field-form@~2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-2.5.1.tgz#30f3c529f86aec6af27589052df9c66cec94ceb4"
integrity sha512-33hunXwynQJyeae7LS3hMGTXNeRBjiPyPYgB0824EbmLHiXC1EBGyUwRh6xjLRy9c+en5WARYN0gJz5+JAqwig==
rc-field-form@~2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-2.7.0.tgz#22413e793f35bfc1f35b0ec462774d7277f5a399"
integrity sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==
dependencies:
"@babel/runtime" "^7.18.0"
"@rc-component/async-validator" "^5.0.3"
@@ -8357,10 +8357,10 @@ rc-input-number@~9.3.0:
rc-input "~1.6.0"
rc-util "^5.40.1"
rc-input@~1.6.0, rc-input@~1.6.3:
version "1.6.3"
resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.6.3.tgz#f1708fc3d5e68f95cb20faeb3eed1df8543cd444"
integrity sha512-wI4NzuqBS8vvKr8cljsvnTUqItMfG1QbJoxovCgL+DX4eVUcHIjVwharwevIxyy7H/jbLryh+K7ysnJr23aWIA==
rc-input@~1.6.0, rc-input@~1.6.4:
version "1.6.4"
resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.6.4.tgz#08d91460f6b75b3fa5294154e89775784c233129"
integrity sha512-lBZhfRD4NSAUW0zOKLUeI6GJuXkxeZYi0hr8VcJgJpyTNOvHw1ysrKWAHcEOAAHj7guxgmWYSi6xWrEdfrSAsA==
dependencies:
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
@@ -8391,14 +8391,14 @@ rc-menu@~9.16.0:
rc-overflow "^1.3.1"
rc-util "^5.27.0"
rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0, rc-motion@^2.9.3:
version "2.9.3"
resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.3.tgz#b1bdaf816f1ccb3e4b3b0c531c3037a59286379e"
integrity sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==
rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0, rc-motion@^2.9.4:
version "2.9.5"
resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.5.tgz#12c6ead4fd355f94f00de9bb4f15df576d677e0c"
integrity sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==
dependencies:
"@babel/runtime" "^7.11.1"
classnames "^2.2.1"
rc-util "^5.43.0"
rc-util "^5.44.0"
rc-notification@~5.6.2:
version "5.6.2"
@@ -8420,19 +8420,19 @@ rc-overflow@^1.3.1, rc-overflow@^1.3.2:
rc-resize-observer "^1.0.0"
rc-util "^5.37.0"
rc-pagination@~4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-4.3.0.tgz#c6022f820aa3a45fd734ae33a2915d39597dce1d"
integrity sha512-UubEWA0ShnroQ1tDa291Fzw6kj0iOeF26IsUObxYTpimgj4/qPCWVFl18RLZE+0Up1IZg0IK4pMn6nB3mjvB7g==
rc-pagination@~5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-5.0.0.tgz#7633e1f0ff372ad78c03e86bcef78b660374d196"
integrity sha512-QjrPvbAQwps93iluvFM62AEYglGYhWW2q/nliQqmvkTi4PXP4HHoh00iC1Sa5LLVmtWQHmG73fBi2x6H6vFHRg==
dependencies:
"@babel/runtime" "^7.10.1"
classnames "^2.3.2"
rc-util "^5.38.0"
rc-picker@~4.8.1:
version "4.8.2"
resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-4.8.2.tgz#8865c72a1fd8266a38f9b5efc9e7bd00ca89a1e6"
integrity sha512-I6Nn4ngkRskSD//rsXDvjlEQ8CzX9kPQrUIb7+qTY49erJaa3/oKJWmi6JIxo/A7gy59phNmPTdhKosAa/NrQQ==
rc-picker@~4.8.3:
version "4.8.3"
resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-4.8.3.tgz#06cffd5a2201fc8d274e12f7ee32ea8ba6f3f60f"
integrity sha512-hJ45qoEs4mfxXPAJdp1n3sKwADul874Cd0/HwnsEOE60H+tgiJUGgbOD62As3EG/rFVNS5AWRfBCDJJfmRqOVQ==
dependencies:
"@babel/runtime" "^7.24.7"
"@rc-component/trigger" "^2.0.0"
@@ -8459,14 +8459,14 @@ rc-rate@~2.13.0:
classnames "^2.2.5"
rc-util "^5.0.1"
rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc"
integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==
rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0, rc-resize-observer@^1.4.1:
version "1.4.3"
resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz#4fd41fa561ba51362b5155a07c35d7c89a1ea569"
integrity sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==
dependencies:
"@babel/runtime" "^7.20.7"
classnames "^2.2.1"
rc-util "^5.38.0"
rc-util "^5.44.1"
resize-observer-polyfill "^1.5.1"
rc-segmented@~2.5.0:
@@ -8479,10 +8479,10 @@ rc-segmented@~2.5.0:
rc-motion "^2.4.4"
rc-util "^5.17.0"
rc-select@~14.16.2, rc-select@~14.16.3:
version "14.16.3"
resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.16.3.tgz#cd5395ef724d693a8f782ddd7bcc6253c31c65a9"
integrity sha512-51+j6s3fJJJXB7E+B6W1hM4Tjzv1B/Decooz9ilgegDBt3ZAth1b/xMwYCTrT5BbG2e53XACQsyDib2+3Ro1fg==
rc-select@~14.16.2, rc-select@~14.16.4:
version "14.16.4"
resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.16.4.tgz#a98840c4cfb96e263c750e59334ea0a2862e04fc"
integrity sha512-jP6qf7+vjnxGvPpfPWbGYfFlSl3h8L2XcD4O7g2GYXmEeBC0mw+nPD7i++OOE8v3YGqP8xtYjRKAWCMLfjgxlw==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/trigger" "^2.1.1"
@@ -8519,10 +8519,10 @@ rc-switch@~4.1.0:
classnames "^2.2.1"
rc-util "^5.30.0"
rc-table@~7.48.1:
version "7.48.1"
resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.48.1.tgz#16ee3d82fa17284628d7883933b5d481238ea013"
integrity sha512-Z4mDKjWg+xz/Ezdw6ivWcbqRpaJ0QfCORRoRrlrw65KSGZLK8OcTdacH22/fyGb8L4It/0/9qcMm8VrVAk/WBw==
rc-table@~7.49.0:
version "7.49.0"
resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.49.0.tgz#f5a4880d9527d2c9e42f5f721b5423e7a1ca475b"
integrity sha512-/FoPLX94muAQOxVpi1jhnpKjOIqUbT81eELQPAzSXOke4ky4oCWYUXOcVpL31ZCO90xScwVSXRd7coqtgtB1Ng==
dependencies:
"@babel/runtime" "^7.10.1"
"@rc-component/context" "^1.4.0"
@@ -8564,7 +8564,7 @@ rc-tooltip@~6.2.1:
"@rc-component/trigger" "^2.0.0"
classnames "^2.3.1"
rc-tree-select@~5.24.4:
rc-tree-select@~5.24.5:
version "5.24.5"
resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.24.5.tgz#a1bf85c7d5e4979880cfb0748bb6bab937ed3483"
integrity sha512-PnyR8LZJWaiEFw0SHRqo4MNQWyyZsyMs8eNmo68uXZWjxc7QqeWcjPPoONN0rc90c3HZqGF9z+Roz+GLzY5GXA==
@@ -8595,10 +8595,10 @@ rc-upload@~4.8.1:
classnames "^2.2.5"
rc-util "^5.2.0"
rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.40.1, rc-util@^5.41.0, rc-util@^5.43.0:
version "5.43.0"
resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.43.0.tgz#bba91fbef2c3e30ea2c236893746f3e9b05ecc4c"
integrity sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==
rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.40.1, rc-util@^5.41.0, rc-util@^5.43.0, rc-util@^5.44.0, rc-util@^5.44.1, rc-util@^5.44.2:
version "5.44.2"
resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.44.2.tgz#6bc5db0e96ebdb515eb5977a7371887e5413a6f8"
integrity sha512-uGSk3hpPBLa3/0QAcKhCjgl4SFnhQCJDLvvpoLdbR6KgDuXrujG+dQaUeUvBJr2ZWak1O/9n+cYbJiWmmk95EQ==
dependencies:
"@babel/runtime" "^7.18.3"
react-is "^18.2.0"

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@
]
},
"dependencies": {
"@applitools/eyes-cypress": "^3.44.7",
"@applitools/eyes-cypress": "^3.44.9",
"@cypress/code-coverage": "^3.10.4",
"@superset-ui/core": "^2.1.0",
"brace": "^0.11.1",

View File

@@ -119,7 +119,7 @@
"react-loadable": "^5.5.0",
"react-redux": "^7.2.9",
"react-resize-detector": "^7.1.2",
"react-reverse-portal": "^2.1.1",
"react-reverse-portal": "^2.1.2",
"react-router-dom": "^5.3.4",
"react-search-input": "^0.11.3",
"react-sortable-hoc": "^2.0.0",
@@ -210,7 +210,7 @@
"@types/react-window": "^1.8.8",
"@types/redux-localstorage": "^1.0.8",
"@types/redux-mock-store": "^1.0.6",
"@types/rison": "0.0.9",
"@types/rison": "0.1.0",
"@types/sinon": "^17.0.3",
"@types/tinycolor2": "^1.4.3",
"@types/yargs": "12 - 18",
@@ -229,7 +229,7 @@
"enzyme-adapter-react-16": "^1.15.7",
"esbuild": "^0.20.0",
"esbuild-loader": "^4.2.2",
"eslint": "^8.56.0",
"eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^7.2.0",
"eslint-import-resolver-typescript": "^3.7.0",
@@ -237,7 +237,7 @@
"eslint-plugin-file-progress": "^1.5.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.8.0",
"eslint-plugin-jest-dom": "^3.6.5",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-lodash": "^7.4.0",
"eslint-plugin-no-only-tests": "^3.3.0",
@@ -5450,7 +5450,9 @@
}
},
"node_modules/@eslint/js": {
"version": "8.56.0",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5554,11 +5556,14 @@
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"deprecated": "Use @eslint/config-array instead",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.2",
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
"minimatch": "^3.0.5"
},
@@ -5567,11 +5572,13 @@
}
},
"node_modules/@humanwhocodes/config-array/node_modules/debug": {
"version": "4.3.4",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ms": "2.1.2"
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5583,7 +5590,9 @@
}
},
"node_modules/@humanwhocodes/config-array/node_modules/ms": {
"version": "2.1.2",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
"license": "MIT"
},
@@ -5600,7 +5609,10 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
"version": "2.0.2",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"deprecated": "Use @eslint/object-schema instead",
"dev": true,
"license": "BSD-3-Clause"
},
@@ -13874,9 +13886,10 @@
"license": "MIT"
},
"node_modules/@types/rison": {
"version": "0.0.9",
"dev": true,
"license": "MIT"
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@types/rison/-/rison-0.1.0.tgz",
"integrity": "sha512-Xj7FO2KBR555nDy58tzrSPpNrShppZpPMZi5WjcNglyFEKQZwRnJLrU2U4wHs61Fl/A8gr+siO/Py04hTWLjzg==",
"dev": true
},
"node_modules/@types/scheduler": {
"version": "0.16.6",
@@ -23831,15 +23844,18 @@
}
},
"node_modules/eslint": {
"version": "8.56.0",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@eslint/js": "8.57.1",
"@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -24211,103 +24227,29 @@
}
},
"node_modules/eslint-plugin-jest-dom": {
"version": "3.6.5",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz",
"integrity": "sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.9.6",
"@testing-library/dom": "^7.28.1",
"@babel/runtime": "^7.16.3",
"requireindex": "^1.2.0"
},
"engines": {
"node": "^10.12.0 || >=12.0.0",
"node": "^12.22.0 || ^14.17.0 || >=16.0.0",
"npm": ">=6",
"yarn": ">=1"
},
"peerDependencies": {
"eslint": ">=6.8"
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/@jest/types": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
"dev": true,
"dependencies": {
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
"@types/yargs": "^15.0.0",
"chalk": "^4.0.0"
"@testing-library/dom": "^8.0.0 || ^9.0.0 || ^10.0.0",
"eslint": "^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
},
"engines": {
"node": ">= 10.14.2"
"peerDependenciesMeta": {
"@testing-library/dom": {
"optional": true
}
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/@testing-library/dom": {
"version": "7.31.2",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
"integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.10.4",
"@babel/runtime": "^7.12.5",
"@types/aria-query": "^4.2.0",
"aria-query": "^4.2.2",
"chalk": "^4.1.0",
"dom-accessibility-api": "^0.5.6",
"lz-string": "^1.4.4",
"pretty-format": "^26.6.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/@types/aria-query": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
"dev": true
},
"node_modules/eslint-plugin-jest-dom/node_modules/@types/istanbul-reports": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
"integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"dev": true,
"dependencies": {
"@types/istanbul-lib-report": "*"
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/@types/yargs": {
"version": "15.0.19",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
"integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
"dev": true,
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/pretty-format": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
"integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
"dev": true,
"dependencies": {
"@jest/types": "^26.6.2",
"ansi-regex": "^5.0.0",
"ansi-styles": "^4.0.0",
"react-is": "^17.0.1"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/eslint-plugin-jest-dom/node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
},
"node_modules/eslint-plugin-jsx-a11y": {
"version": "6.5.1",
"dev": true,
@@ -45783,8 +45725,9 @@
}
},
"node_modules/react-reverse-portal": {
"version": "2.1.1",
"license": "Apache-2.0",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/react-reverse-portal/-/react-reverse-portal-2.1.2.tgz",
"integrity": "sha512-li4puNtBmMMJhtI+IVxeSX0RvK1ft8qjPSbCih4OKQ/YUIcROc31Nmo22gv94hTx8EUfR7fzZY47RuZF2YRMdQ==",
"peerDependencies": {
"react": "^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
@@ -55766,11 +55709,11 @@
"@types/d3-time-format": "^4.0.3",
"@types/enzyme": "^3.10.18",
"@types/fetch-mock": "^7.3.8",
"@types/lodash": "^4.17.7",
"@types/lodash": "^4.17.13",
"@types/math-expression-evaluator": "^1.3.3",
"@types/node": "^22.5.4",
"@types/prop-types": "^15.7.2",
"@types/rison": "0.0.9",
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"fetch-mock": "^11.1.4",
"jest-mock-console": "^2.0.0",
@@ -55830,7 +55773,9 @@
"license": "MIT"
},
"packages/superset-ui-core/node_modules/@types/lodash": {
"version": "4.17.7",
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
"integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==",
"dev": true,
"license": "MIT"
},
@@ -61523,7 +61468,9 @@
}
},
"@eslint/js": {
"version": "8.56.0",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true
},
"@fal-works/esbuild-plugin-global-externals": {
@@ -61616,23 +61563,29 @@
}
},
"@humanwhocodes/config-array": {
"version": "0.11.14",
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"dev": true,
"requires": {
"@humanwhocodes/object-schema": "^2.0.2",
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
"minimatch": "^3.0.5"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dev": true,
"requires": {
"ms": "2.1.2"
"ms": "^2.1.3"
}
},
"ms": {
"version": "2.1.2",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
}
}
@@ -61642,7 +61595,9 @@
"dev": true
},
"@humanwhocodes/object-schema": {
"version": "2.0.2",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"dev": true
},
"@hutson/parse-repository-url": {
@@ -65930,11 +65885,11 @@
"@types/enzyme": "^3.10.18",
"@types/fetch-mock": "^7.3.8",
"@types/json-bigint": "^1.0.4",
"@types/lodash": "^4.17.7",
"@types/lodash": "^4.17.13",
"@types/math-expression-evaluator": "^1.3.3",
"@types/node": "^22.5.4",
"@types/prop-types": "^15.7.2",
"@types/rison": "0.0.9",
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"@vx/responsive": "^0.0.199",
"csstype": "^3.1.3",
@@ -65993,7 +65948,9 @@
"dev": true
},
"@types/lodash": {
"version": "4.17.7",
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
"integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==",
"dev": true
},
"d3-array": {
@@ -69517,7 +69474,9 @@
"dev": true
},
"@types/rison": {
"version": "0.0.9",
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@types/rison/-/rison-0.1.0.tgz",
"integrity": "sha512-Xj7FO2KBR555nDy58tzrSPpNrShppZpPMZi5WjcNglyFEKQZwRnJLrU2U4wHs61Fl/A8gr+siO/Py04hTWLjzg==",
"dev": true
},
"@types/scheduler": {
@@ -76254,14 +76213,16 @@
}
},
"eslint": {
"version": "8.56.0",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@eslint/js": "8.57.1",
"@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -76660,85 +76621,13 @@
}
},
"eslint-plugin-jest-dom": {
"version": "3.6.5",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz",
"integrity": "sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==",
"dev": true,
"requires": {
"@babel/runtime": "^7.9.6",
"@testing-library/dom": "^7.28.1",
"@babel/runtime": "^7.16.3",
"requireindex": "^1.2.0"
},
"dependencies": {
"@jest/types": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
"@types/yargs": "^15.0.0",
"chalk": "^4.0.0"
}
},
"@testing-library/dom": {
"version": "7.31.2",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz",
"integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/runtime": "^7.12.5",
"@types/aria-query": "^4.2.0",
"aria-query": "^4.2.2",
"chalk": "^4.1.0",
"dom-accessibility-api": "^0.5.6",
"lz-string": "^1.4.4",
"pretty-format": "^26.6.2"
}
},
"@types/aria-query": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==",
"dev": true
},
"@types/istanbul-reports": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
"integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"dev": true,
"requires": {
"@types/istanbul-lib-report": "*"
}
},
"@types/yargs": {
"version": "15.0.19",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
"integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
"dev": true,
"requires": {
"@types/yargs-parser": "*"
}
},
"pretty-format": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
"integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
"dev": true,
"requires": {
"@jest/types": "^26.6.2",
"ansi-regex": "^5.0.0",
"ansi-styles": "^4.0.0",
"react-is": "^17.0.1"
}
},
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
}
}
},
"eslint-plugin-jsx-a11y": {
@@ -89892,7 +89781,9 @@
}
},
"react-reverse-portal": {
"version": "2.1.1",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/react-reverse-portal/-/react-reverse-portal-2.1.2.tgz",
"integrity": "sha512-li4puNtBmMMJhtI+IVxeSX0RvK1ft8qjPSbCih4OKQ/YUIcROc31Nmo22gv94hTx8EUfR7fzZY47RuZF2YRMdQ==",
"requires": {}
},
"react-router": {

View File

@@ -186,7 +186,7 @@
"react-loadable": "^5.5.0",
"react-redux": "^7.2.9",
"react-resize-detector": "^7.1.2",
"react-reverse-portal": "^2.1.1",
"react-reverse-portal": "^2.1.2",
"react-router-dom": "^5.3.4",
"react-search-input": "^0.11.3",
"react-sortable-hoc": "^2.0.0",
@@ -277,7 +277,7 @@
"@types/react-window": "^1.8.8",
"@types/redux-localstorage": "^1.0.8",
"@types/redux-mock-store": "^1.0.6",
"@types/rison": "0.0.9",
"@types/rison": "0.1.0",
"@types/sinon": "^17.0.3",
"@types/tinycolor2": "^1.4.3",
"@types/yargs": "12 - 18",
@@ -304,7 +304,7 @@
"eslint-plugin-file-progress": "^1.5.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.8.0",
"eslint-plugin-jest-dom": "^3.6.5",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-lodash": "^7.4.0",
"eslint-plugin-no-only-tests": "^3.3.0",

View File

@@ -58,11 +58,11 @@
"@types/d3-time-format": "^4.0.3",
"@types/enzyme": "^3.10.18",
"@types/fetch-mock": "^7.3.8",
"@types/lodash": "^4.17.7",
"@types/lodash": "^4.17.13",
"@types/math-expression-evaluator": "^1.3.3",
"@types/node": "^22.5.4",
"@types/prop-types": "^15.7.2",
"@types/rison": "0.0.9",
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"fetch-mock": "^11.1.4",
"jest-mock-console": "^2.0.0",

View File

@@ -57,7 +57,7 @@ describe('EstimateQueryCostButton', () => {
it('renders EstimateQueryCostButton', async () => {
const { queryByText } = setup({}, mockStore(initialState));
expect(queryByText('Estimate cost')).toBeTruthy();
expect(queryByText('Estimate cost')).toBeInTheDocument();
});
it('renders label for selected query', async () => {
@@ -66,7 +66,7 @@ describe('EstimateQueryCostButton', () => {
mockStore(initialState),
);
expect(queryByText('Estimate selected query cost')).toBeTruthy();
expect(queryByText('Estimate selected query cost')).toBeInTheDocument();
});
it('renders label for selected query from unsaved', async () => {
@@ -84,7 +84,7 @@ describe('EstimateQueryCostButton', () => {
}),
);
expect(queryByText('Estimate selected query cost')).toBeTruthy();
expect(queryByText('Estimate selected query cost')).toBeInTheDocument();
});
it('renders estimation error result', async () => {
@@ -103,10 +103,10 @@ describe('EstimateQueryCostButton', () => {
}),
);
expect(queryByText('Estimate cost')).toBeTruthy();
expect(queryByText('Estimate cost')).toBeInTheDocument();
fireEvent.click(getByText('Estimate cost'));
expect(queryByText('Estimate error')).toBeTruthy();
expect(queryByText('Estimate error')).toBeInTheDocument();
});
it('renders estimation success result', async () => {
@@ -126,9 +126,9 @@ describe('EstimateQueryCostButton', () => {
}),
);
expect(queryByText('Estimate cost')).toBeTruthy();
expect(queryByText('Estimate cost')).toBeInTheDocument();
fireEvent.click(getByText('Estimate cost'));
expect(queryByText('Total cost')).toBeTruthy();
expect(queryByText('Total cost')).toBeInTheDocument();
});
});

View File

@@ -54,7 +54,7 @@ describe('ExploreCtasResultsButton', () => {
it('renders', async () => {
const { queryByText } = setup({}, mockStore(initialState));
expect(queryByText('Explore')).toBeTruthy();
expect(queryByText('Explore')).toBeInTheDocument();
});
it('visualize results', async () => {

View File

@@ -37,14 +37,14 @@ describe('ExploreResultsButton', () => {
database: { allows_subquery: true },
});
expect(queryByText('Create Chart')).toBeTruthy();
expect(queryByText('Create Chart')).toBeInTheDocument();
expect(screen.getByRole('button', { name: 'Create Chart' })).toBeEnabled();
});
it('renders disabled if subquery not allowed', async () => {
const { queryByText } = setup(jest.fn());
expect(queryByText('Create Chart')).toBeTruthy();
expect(queryByText('Create Chart')).toBeInTheDocument();
expect(screen.getByRole('button', { name: 'Create Chart' })).toBeDisabled();
});
});

View File

@@ -400,7 +400,7 @@ describe('ResultSet', () => {
name: /fetch data preview/i,
}),
).toBeVisible();
expect(screen.queryByRole('table')).toBe(null);
expect(screen.queryByRole('table')).not.toBeInTheDocument();
});
test('Async queries - renders "Refetch results" button when a query has no results', () => {
@@ -429,7 +429,7 @@ describe('ResultSet', () => {
name: /refetch results/i,
}),
).toBeVisible();
expect(screen.queryByRole('table')).toBe(null);
expect(screen.queryByRole('table')).not.toBeInTheDocument();
});
test('Async queries - renders on the first call', () => {
@@ -454,12 +454,12 @@ describe('ResultSet', () => {
screen.queryByRole('button', {
name: /fetch data preview/i,
}),
).toBe(null);
).not.toBeInTheDocument();
expect(
screen.queryByRole('button', {
name: /refetch results/i,
}),
).toBe(null);
).not.toBeInTheDocument();
});
test('should allow download as CSV when user has permission to export data', async () => {

View File

@@ -59,9 +59,9 @@ const setup = (queryEditor: QueryEditor, store?: Store) =>
describe('SqlEditorTabHeader', () => {
it('renders name', () => {
const { queryByText } = setup(defaultQueryEditor, mockStore(initialState));
expect(queryByText(defaultQueryEditor.name)).toBeTruthy();
expect(queryByText(extraQueryEditor1.name)).toBeFalsy();
expect(queryByText(extraQueryEditor2.name)).toBeFalsy();
expect(queryByText(defaultQueryEditor.name)).toBeInTheDocument();
expect(queryByText(extraQueryEditor1.name)).not.toBeInTheDocument();
expect(queryByText(extraQueryEditor2.name)).not.toBeInTheDocument();
});
it('renders name from unsaved changes', () => {
@@ -79,10 +79,10 @@ describe('SqlEditorTabHeader', () => {
},
}),
);
expect(queryByText(expectedTitle)).toBeTruthy();
expect(queryByText(defaultQueryEditor.name)).toBeFalsy();
expect(queryByText(extraQueryEditor1.name)).toBeFalsy();
expect(queryByText(extraQueryEditor2.name)).toBeFalsy();
expect(queryByText(expectedTitle)).toBeInTheDocument();
expect(queryByText(defaultQueryEditor.name)).not.toBeInTheDocument();
expect(queryByText(extraQueryEditor1.name)).not.toBeInTheDocument();
expect(queryByText(extraQueryEditor2.name)).not.toBeInTheDocument();
});
it('renders current name for unrelated unsaved changes', () => {
@@ -100,10 +100,10 @@ describe('SqlEditorTabHeader', () => {
},
}),
);
expect(queryByText(defaultQueryEditor.name)).toBeTruthy();
expect(queryByText(unrelatedTitle)).toBeFalsy();
expect(queryByText(extraQueryEditor1.name)).toBeFalsy();
expect(queryByText(extraQueryEditor2.name)).toBeFalsy();
expect(queryByText(defaultQueryEditor.name)).toBeInTheDocument();
expect(queryByText(unrelatedTitle)).not.toBeInTheDocument();
expect(queryByText(extraQueryEditor1.name)).not.toBeInTheDocument();
expect(queryByText(extraQueryEditor2.name)).not.toBeInTheDocument();
});
describe('with dropdown menus', () => {

View File

@@ -118,7 +118,9 @@ test('should removeQueryEditor', async () => {
fireEvent.click(closeButton);
}
await waitFor(() => expect(getAllByRole('tab').length).toEqual(tabCount - 1));
expect(queryByText(initialState.sqlLab.queryEditors[0].name)).toBeFalsy();
expect(
queryByText(initialState.sqlLab.queryEditors[0].name),
).not.toBeInTheDocument();
});
test('should add new query editor', async () => {
const { getAllByLabelText, getAllByRole } = setup(undefined, initialState);

View File

@@ -64,7 +64,7 @@ test('not renders tooltip on hover with hideTooltip props', async () => {
});
userEvent.hover(screen.getByText('Copy'));
const tooltip = screen.queryByRole('tooltip');
expect(tooltip).toBe(null);
expect(tooltip).not.toBeInTheDocument();
});
test('triggers onCopyEnd', async () => {

View File

@@ -50,8 +50,8 @@ describe('FilterableTable', () => {
};
const { getByText, queryByText } = render(<FilterableTable {...props} />);
expect(getByText(props.filterText)).toBeInTheDocument();
expect(queryByText('b2')).toBeFalsy();
expect(queryByText('b3')).toBeFalsy();
expect(queryByText('b2')).not.toBeInTheDocument();
expect(queryByText('b3')).not.toBeInTheDocument();
});
it('filters on a number', () => {
const props = {
@@ -60,8 +60,8 @@ describe('FilterableTable', () => {
};
const { getByText, queryByText } = render(<FilterableTable {...props} />);
expect(getByText('b2')).toBeInTheDocument();
expect(queryByText('b1')).toBeFalsy();
expect(queryByText('b3')).toBeFalsy();
expect(queryByText('b1')).not.toBeInTheDocument();
expect(queryByText('b3')).not.toBeInTheDocument();
});
});

View File

@@ -30,12 +30,12 @@ test('should render', () => {
test('should render a title when visible', () => {
render(<Popover title="Popover title" visible />);
expect(screen.getByText('Popover title')).toBeTruthy();
expect(screen.getByText('Popover title')).toBeInTheDocument();
});
test('should render some content when visible', () => {
render(<Popover content="Content sample" visible />);
expect(screen.getByText('Content sample')).toBeTruthy();
expect(screen.getByText('Content sample')).toBeInTheDocument();
});
test('it should not render a title or content when not visible', () => {

View File

@@ -113,7 +113,9 @@ test('skips select all options', async () => {
expect(
await screen.findByRole('option', { name: 'table_a' }),
).toBeInTheDocument();
expect(screen.queryByRole('option', { name: /Select All/i })).toBeFalsy();
expect(
screen.queryByRole('option', { name: /Select All/i }),
).not.toBeInTheDocument();
});
test('renders table options without Select All option', async () => {

View File

@@ -55,7 +55,7 @@ describe('AnchorLink', () => {
{ useRedux: true },
);
expect(container.querySelector(`#${props.id}`)).toBeInTheDocument();
expect(queryByRole('button')).toBe(null);
expect(queryByRole('button')).not.toBeInTheDocument();
});
it('should render short link button', () => {

View File

@@ -128,7 +128,7 @@ describe('DashboardBuilder', () => {
it('should render a DragDroppable DashboardHeader', () => {
const { queryByTestId } = setup();
const header = queryByTestId('dashboard-header-container');
expect(header).toBeTruthy();
expect(header).toBeInTheDocument();
});
it('should render a Sticky top-level Tabs if the dashboard has tabs', async () => {

View File

@@ -83,7 +83,7 @@ describe('FilterScope', () => {
render(<MockModal />);
fireEvent.click(screen.getByText('Scoping'));
fireEvent.click(screen.getByLabelText('Apply to specific panels'));
expect(screen.getByRole('tree')).not.toBe(null);
expect(screen.getByRole('tree')).toBeInTheDocument();
fireEvent.click(getTreeSwitcher(2));
fireEvent.click(screen.getByText('CHART_ID2'));
await waitFor(() =>
@@ -100,7 +100,7 @@ describe('FilterScope', () => {
render(<MockModal />);
fireEvent.click(screen.getByText('Scoping'));
fireEvent.click(screen.getByLabelText('Apply to specific panels'));
expect(screen.getByRole('tree')).not.toBe(null);
expect(screen.getByRole('tree')).toBeInTheDocument();
fireEvent.click(getTreeSwitcher(2));
fireEvent.click(screen.getByText('CHART_ID2'));
fireEvent.click(screen.getByText('tab1'));

View File

@@ -240,7 +240,7 @@ test('should not render a save dataset modal when datasource is not query or dat
render(<DatasourcePanel {...newProps} />, { useRedux: true, useDnd: true });
expect(await screen.findByText(/metrics/i)).toBeInTheDocument();
expect(screen.queryByText(/create a dataset/i)).toBe(null);
expect(screen.queryByText(/create a dataset/i)).not.toBeInTheDocument();
});
test('should render only droppable metrics and columns', async () => {

View File

@@ -159,7 +159,7 @@ test('renders chart in standalone mode', () => {
explore: { ...reduxState.explore, standalone: true },
},
});
expect(queryByTestId('standalone-app')).toBeTruthy();
expect(queryByTestId('standalone-app')).toBeInTheDocument();
});
test('generates a different form_data param when one is provided and is mounting', async () => {

View File

@@ -56,7 +56,7 @@ test('should render', async () => {
test('should display a label', async () => {
setup();
expect(await screen.findByText('Color scheme')).toBeTruthy();
expect(await screen.findByText('Color scheme')).toBeInTheDocument();
});
test('should not display an alert icon if hasCustomLabelsColor=false', async () => {

View File

@@ -547,6 +547,6 @@ describe('AdhocFilterEditPopoverSimpleTabContent Advanced data Type Test', () =>
userEvent.type(operatorValueField, '{enter}');
});
expect(screen.getByText('EQUALS')).toBeTruthy();
expect(screen.getByText('EQUALS')).toBeInTheDocument();
});
});

View File

@@ -62,7 +62,7 @@ test('should render', async () => {
test('should display a label', async () => {
setup();
expect(await screen.findByText('Test label')).toBeTruthy();
expect(await screen.findByText('Test label')).toBeInTheDocument();
});
test('should display a certification icon if saved metric is certified', async () => {
@@ -73,7 +73,7 @@ test('should display a certification icon if saved metric is certified', async (
},
});
await waitFor(() => {
expect(screen.queryByText('Test label')).toBeFalsy();
expect(screen.queryByText('Test label')).not.toBeInTheDocument();
expect(container.querySelector('.metric-option > svg')).toBeInTheDocument();
});
});

View File

@@ -484,7 +484,7 @@ test('removes ignore cache checkbox when chart is selected', async () => {
screen.queryByRole('checkbox', {
name: /ignore cache when generating report/i,
}),
).toBe(null);
).not.toBeInTheDocument();
});
test('does not show screenshot width when csv is selected', async () => {

View File

@@ -25,7 +25,7 @@
"@types/ioredis": "^4.27.8",
"@types/jest": "^29.5.14",
"@types/jsonwebtoken": "^9.0.6",
"@types/lodash": "^4.17.7",
"@types/lodash": "^4.17.13",
"@types/node": "^22.7.4",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.5.12",
@@ -1802,9 +1802,9 @@
}
},
"node_modules/@types/lodash": {
"version": "4.17.7",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
"integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
"integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==",
"dev": true
},
"node_modules/@types/node": {
@@ -7870,9 +7870,9 @@
}
},
"@types/lodash": {
"version": "4.17.7",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
"integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
"integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==",
"dev": true
},
"@types/node": {

View File

@@ -33,7 +33,7 @@
"@types/ioredis": "^4.27.8",
"@types/jest": "^29.5.14",
"@types/jsonwebtoken": "^9.0.6",
"@types/lodash": "^4.17.7",
"@types/lodash": "^4.17.13",
"@types/node": "^22.7.4",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.5.12",

View File

@@ -0,0 +1,36 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from superset.constants import TimeGrain
class Influxdb3EngineSpec():
engine = "influxdb3"
engine_name = "influxdb3"
_time_grain_expressions = {
None: "{col}",
TimeGrain.SECOND: "DATE_TRUNC('second', {col})",
TimeGrain.MINUTE: "DATE_TRUNC('minute', {col})",
TimeGrain.HOUR: "DATE_TRUNC('hour', {col})",
TimeGrain.DAY: "DATE_TRUNC('day', {col})",
TimeGrain.WEEK: "DATE_TRUNC('week', {col})",
TimeGrain.MONTH: "DATE_TRUNC('month', {col})",
TimeGrain.QUARTER: "DATE_TRUNC('quarter', {col})",
TimeGrain.YEAR: "DATE_TRUNC('year', {col})",
}