Skip to content

Commit 5272d59

Browse files
authored
Merge branch 'master' into sc-111332-time-column-single-point
2 parents 76df474 + 38ba4a6 commit 5272d59

34 files changed

Lines changed: 1312 additions & 144 deletions

.github/workflows/generate-FOSSA-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
persist-credentials: false
3838
submodules: recursive
3939
- name: Setup Java
40-
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
40+
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
4141
with:
4242
distribution: "temurin"
4343
java-version: "11"

.github/workflows/license-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
persist-credentials: false
2424
submodules: recursive
2525
- name: Setup Java
26-
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
26+
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
2727
with:
2828
distribution: "temurin"
2929
java-version: "11"

.github/workflows/superset-docs-deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
node-version-file: "./docs/.nvmrc"
7777
- name: Setup Python
7878
uses: ./.github/actions/setup-backend/
79-
- uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
79+
- uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0
8080
with:
8181
distribution: "zulu"
8282
java-version: "21"

UPDATING.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,33 @@ One caveat on turning soft delete back off: objects archived while it was on are
5252
**resurrected** into normal listings, since the rows were never removed — an
5353
emergency stop rather than a clean rollback.
5454

55+
### Version history is on by default
56+
57+
`VERSION_HISTORY` and `ENABLE_VERSIONING_CAPTURE` now both ship **on**. Every
58+
save of a chart, dashboard, or dataset writes version rows, and the version
59+
history panel appears on Explore and Dashboard pages. The two flip together
60+
deliberately: a panel with capture off renders an empty "No history yet" that
61+
misrepresents the entity as unchanged.
62+
63+
**What operators should expect:**
64+
65+
- **Storage growth.** Capture writes shadow rows per save, so the metadata
66+
database grows with edit volume. The `version_history.prune_old_versions`
67+
beat task removes rows whose transaction is older than
68+
`SUPERSET_VERSION_HISTORY_RETENTION_DAYS` (default 30). A deployment that
69+
replaces `CELERY_CONFIG` rather than inheriting it must carry both the
70+
`superset.tasks.version_history_retention` import and the beat entry; a
71+
startup warning names whichever is absent.
72+
- **`PUT` responses change shape.** Entity updates now return populated
73+
`old_version_uuid` / `new_version_uuid` fields and an `ETag` header, which
74+
were null or absent while capture was off.
75+
76+
`ENABLE_VERSIONING_CAPTURE` is **retained permanently** as an operational
77+
kill-switch — not removed with the rollout toggles. Setting it to a falsy value
78+
stops capture within a restart, without a revert-and-redeploy. Unlike the
79+
soft-delete toggle, turning it off is a clean stop: existing version rows remain
80+
readable and no entity state is altered.
81+
5582
### Scheduled report execution now enforces one application deadline
5683

5784
Scheduled report (not alert) executions are now governed by a single
@@ -481,7 +508,7 @@ Entity version history (the `version_transaction` / `*_version` shadow tables th
481508
|---|---|---|
482509
| `SUPERSET_VERSION_HISTORY_RETENTION_DAYS` | `30` | Version rows whose owning `version_transaction.issued_at` is older than this many days are pruned. Each entity's live row (`end_transaction_id IS NULL`) is always preserved, as are the live rows of its children and associations; closed historical rows (including the baseline) age out. Set to `0` or a negative value to disable pruning. |
483510

484-
The task ships in the default `CeleryConfig` (both the `superset.tasks.version_history_retention` import and the beat entry). A deployment that overrides `CELERY_CONFIG` without the beat entry logs a startup warning. When the override explicitly defines `imports`, a missing retention module is also reported; an absent `imports` setting is not diagnosed because Celery may register tasks through `include`, autodiscovery, or worker startup imports. Retention only prunes whatever history exists — capture itself is gated separately by `ENABLE_VERSIONING_CAPTURE` (ships off).
511+
The task ships in the default `CeleryConfig` (both the `superset.tasks.version_history_retention` import and the beat entry). A deployment that overrides `CELERY_CONFIG` without the beat entry logs a startup warning. When the override explicitly defines `imports`, a missing retention module is also reported; an absent `imports` setting is not diagnosed because Celery may register tasks through `include`, autodiscovery, or worker startup imports. Retention only prunes whatever history exists — capture itself is gated separately by `ENABLE_VERSIONING_CAPTURE`, which now ships on.
485512

486513
### Deletion retention (soft-deleted entities are eventually purged)
487514

@@ -491,7 +518,7 @@ Purging is **live by default** (`SOFT_DELETE_PURGE_DRY_RUN=False`), so the reten
491518

492519
Deployments that replace the default `CELERY_CONFIG` must ensure workers register `superset.tasks.deletion_retention` and schedule the `deletion_retention.purge_soft_deleted` task themselves. The shipped Docker development config uses `imports` and includes both entries. While `SOFT_DELETE` is statically enabled, a missing beat entry logs a startup warning; when the override explicitly defines `imports`, a missing purge module is also reported.
493520

494-
Operators can immediately erase a specific entity for compliance (GDPR) via `superset deletion-retention force-purge --uuid <uuid>`; this applies legacy hard-delete semantics — a live chart referencing a force-purged dataset is left without a datasource until re-pointed (the chart is not modified), and it purges the named entity even when it was never soft-deleted. Every purge writes an immutable, content-free audit record to the new `purge_audit_log` table that survives the entity it names: the **scheduled** purge fails closed (an entity whose audit row cannot be written is skipped and retried next run), while **force-purge** proceeds even if the audit write fails — the operator is present and deletion outranks audit for a compliance erasure.
521+
Operators can immediately erase a specific entity for compliance (GDPR) via `superset deletion-retention force-purge --uuid <uuid>`; this applies legacy hard-delete semantics — a live chart referencing a force-purged dataset is left without a datasource until re-pointed (the chart is not modified), and it purges the named entity even when it was never soft-deleted. Every scheduled evaluation writes a provisional, content-free record to the new `purge_audit_log` table before the cascade starts. Meaningful retained outcomes survive the entity they name. Consecutive scheduled evaluations with the same blocked outcome suppress only the redundant current provisional record; completed outcomes, outcome transitions, and every force-purge attempt remain independent and immutable. The **scheduled** purge fails closed when its provisional record cannot be written, while **force-purge** proceeds even if the audit write fails — the operator is present and deletion outranks audit for a compliance erasure. Operators can monitor `deletion_retention.blocked_audit_suppressed` and `deletion_retention.blocked_audit_dedupe_fallback` to verify suppression and fail-safe fallback behavior without changing the existing blocked-workload gauge.
495522

496523
### Recently Archived view and permanent delete (purge) endpoints
497524

docs/admin_docs/configuration/async-queries-celery.mdx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ celery --app=superset.tasks.celery_app:app beat
5454

5555
To setup a result backend, you need to pass an instance of a derivative of `BaseCache` (`from
5656
flask_caching.backends.base import BaseCache`) to the RESULTS_BACKEND configuration key in your
57-
superset_config.py. You can use Memcached, Redis, S3 (https://pypi.python.org/pypi/s3werkzeugcache),
58-
memory or the file system (in a single server-type setup or for testing), or to write your own
57+
superset_config.py. You can use Memcached, Redis, S3, MinIO, memory
58+
or the file system (in a single server-type setup or for testing), or to write your own
5959
caching interface. Your `superset_config.py` may look something like:
6060

6161
```python
@@ -89,6 +89,12 @@ issues arise. Please clear your existing results cache store when upgrading an e
8989
- SQL Lab will _only run your queries asynchronously if_ you enable **Asynchronous Query Execution**
9090
in your database settings (Sources > Databases > Edit record).
9191

92+
- In order to use dedicated results backend, additional python libraries must be installed. These libraries can be installed using pip.
93+
- [redis-py](https://pypi.org/project/redis/) for Redis.
94+
- [pylibmc](https://pypi.org/project/pylibmc/) for memcached
95+
- [s3werkzeugcache](https://pypi.python.org/pypi/s3werkzeugcache) for S3
96+
- [minio-flask-cache](https://github.com/greggailly/minio-flask-cache) for MinIO or other S3 compatible service
97+
9298
## Celery Flower
9399

94100
Flower is a web based tool for monitoring the Celery cluster which you can install from pip:

docs/admin_docs/configuration/cache.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ fail-fast behavior ensures operators are immediately aware of infrastructure iss
1515

1616
Superset uses [Flask-Caching](https://flask-caching.readthedocs.io/) for caching purposes.
1717
Flask-Caching supports various caching backends, including Redis (recommended), Memcached,
18-
SimpleCache (in-memory), or the local filesystem.
19-
[Custom cache backends](https://flask-caching.readthedocs.io/en/latest/#custom-cache-backends)
20-
are also supported.
18+
SimpleCache (in-memory), MinIO/S3, or the local filesystem.
19+
[Custom cache backends](https://flask-caching.readthedocs.io/en/latest/#custom-cache-backends) are also supported.
2120

2221
Caching can be configured by providing dictionaries in
2322
`superset_config.py` that comply with [the Flask-Caching config specifications](https://flask-caching.readthedocs.io/en/latest/#configuring-flask-caching).
@@ -47,6 +46,7 @@ In order to use dedicated cache stores, additional python libraries must be inst
4746
- For Redis: we recommend the [redis](https://pypi.python.org/pypi/redis) Python package
4847
- Memcached: we recommend using [pylibmc](https://pypi.org/project/pylibmc/) client library as
4948
`python-memcached` does not handle storing binary data correctly.
49+
- MinIO (S3): we recommend using the [minio-flask-cache](https://github.com/greggailly/minio-flask-cache) package
5050

5151
These libraries can be installed using pip.
5252

docs/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@
6262
"@superset-ui/core": "^0.20.4",
6363
"@swc/core": "^1.15.47",
6464
"antd": "^6.5.2",
65-
"baseline-browser-mapping": "^2.11.7",
65+
"baseline-browser-mapping": "^2.11.8",
6666
"caniuse-lite": "^1.0.30001806",
67-
"docusaurus-plugin-openapi-docs": "^5.1.2",
68-
"docusaurus-theme-openapi-docs": "^5.1.2",
67+
"docusaurus-plugin-openapi-docs": "^5.1.3",
68+
"docusaurus-theme-openapi-docs": "^5.1.3",
6969
"js-yaml": "^5.2.2",
7070
"json-bigint": "^1.0.0",
7171
"prism-react-renderer": "^2.4.1",

docs/static/feature-flags.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@
107107
},
108108
{
109109
"name": "VERSION_HISTORY",
110-
"default": false,
110+
"default": true,
111111
"lifecycle": "development",
112-
"description": "Enables the version history panel on Explore and Dashboard pages. History only accrues while ``ENABLE_VERSIONING_CAPTURE`` is also on; with capture off the panel renders but stays empty."
112+
"description": "Enables the version history panel on Explore and Dashboard pages. History only accrues while ``ENABLE_VERSIONING_CAPTURE`` is also on; with capture off the panel renders but stays empty, so the two ship with matching defaults and should be changed together."
113113
}
114114
],
115115
"testing": [

docs/yarn.lock

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6453,10 +6453,10 @@ base64-js@^1.3.1, base64-js@^1.5.1:
64536453
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
64546454
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
64556455

6456-
baseline-browser-mapping@^2.10.38, baseline-browser-mapping@^2.11.7, baseline-browser-mapping@^2.9.19:
6457-
version "2.11.7"
6458-
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.7.tgz#65b41243f29d2cca7b5d72ca6e9b8285df1ed975"
6459-
integrity sha512-APw5YuIQAg6L9w4sHDI6j26DGFJI6RpYOhnkMPdC9lWbkKvsyPHzDsve1yd73lk21yz7Y09Kci8B2Pp9FonzWA==
6456+
baseline-browser-mapping@^2.10.38, baseline-browser-mapping@^2.11.8, baseline-browser-mapping@^2.9.19:
6457+
version "2.11.8"
6458+
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.8.tgz#42eb5ffc99fd89ca8bf30e31557b487063eec86f"
6459+
integrity sha512-zAgkquC2WYF0PIc6XbNYkA2uuxxFavzgmX61R+dHDUa558V8Ejf8ozTZFR6QzM24RWu4kBcRkhJ5kpz77j9fnQ==
64606460

64616461
batch@0.6.1:
64626462
version "0.6.1"
@@ -7938,10 +7938,10 @@ doctrine@^2.1.0:
79387938
dependencies:
79397939
esutils "^2.0.2"
79407940

7941-
docusaurus-plugin-openapi-docs@^5.1.2:
7942-
version "5.1.2"
7943-
resolved "https://registry.yarnpkg.com/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-5.1.2.tgz#1ef66a26d80e2a3baf4caae4e72a0dcf85c6d608"
7944-
integrity sha512-xlgl/8+2iqSQWdhTJay0lfXqWduaGVTYrn+9i+uT3Uk5gkeDjfQOIVnHGnIHfKg0pUjIm008fvEQVAxk3TvgaQ==
7941+
docusaurus-plugin-openapi-docs@^5.1.3:
7942+
version "5.1.3"
7943+
resolved "https://registry.yarnpkg.com/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-5.1.3.tgz#b8cd5f8451aaf881deb1a744a8295685f1681865"
7944+
integrity sha512-HnpblSBdXoR39VNTIW9zWERUsMJxXOpvdQoBKyaTkUBPwCM48Z76+ndo2yO2vADq+EhWjJlfxL1DUzCrgNjThQ==
79457945
dependencies:
79467946
"@apidevtools/json-schema-ref-parser" "^15.3.3"
79477947
"@redocly/openapi-core" "^2.25.2"
@@ -7959,10 +7959,10 @@ docusaurus-plugin-openapi-docs@^5.1.2:
79597959
swagger2openapi "^7.0.8"
79607960
xml-formatter "^3.6.6"
79617961

7962-
docusaurus-theme-openapi-docs@^5.1.2:
7963-
version "5.1.2"
7964-
resolved "https://registry.yarnpkg.com/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-5.1.2.tgz#8591e3be971920c5eb347b9aab4bac77db5c7c31"
7965-
integrity sha512-uJx+a4qHmpOnl+e7YzsPJSga6d6TLGEVZZPtI7KkzC/PgG7bS8E4P8hknvWqmAEahxhLWEb8izIA3up/0g9RwA==
7962+
docusaurus-theme-openapi-docs@^5.1.3:
7963+
version "5.1.3"
7964+
resolved "https://registry.yarnpkg.com/docusaurus-theme-openapi-docs/-/docusaurus-theme-openapi-docs-5.1.3.tgz#e23644a63785352abbc76e42760c0dfdff3669e1"
7965+
integrity sha512-npbD1QahtjAEmrOet/86i5fTmcJX4/rPhVT+c0qKjm7StUNbyqjwchSVBQuU1rB69T51JOA9TpT/y6QcB9Xjvw==
79667966
dependencies:
79677967
"@hookform/error-message" "^2.0.1"
79687968
"@reduxjs/toolkit" "^2.8.2"
@@ -7973,7 +7973,7 @@ docusaurus-theme-openapi-docs@^5.1.2:
79737973
crypto-js "^4.2.0"
79747974
file-saver "^2.0.5"
79757975
lodash "^4.17.21"
7976-
pako "^2.1.0"
7976+
pako "^3.0.1"
79777977
path-browserify "^1.0.1"
79787978
postman-code-generators "^2.0.0"
79797979
postman-collection "^5.0.2"
@@ -7988,7 +7988,7 @@ docusaurus-theme-openapi-docs@^5.1.2:
79887988
rehype-raw "^7.0.0"
79897989
remark-gfm "4.0.1"
79907990
sass "^1.89.2"
7991-
sass-loader "^16.0.5"
7991+
sass-loader "^17.0.0"
79927992
unist-util-visit "^5.0.0"
79937993
url "^0.11.4"
79947994
xml-formatter "^3.6.6"
@@ -10949,9 +10949,9 @@ merge2@^1.3.0, merge2@^1.4.1:
1094910949
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1095010950

1095110951
mermaid@>=11.6.0:
10952-
version "11.16.0"
10953-
resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.16.0.tgz#dc946bc84bde9d093ba14940d49df1d9f7d8c32f"
10954-
integrity sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==
10952+
version "11.16.1"
10953+
resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.16.1.tgz#57ae2342f6c45b967113b04c9258430bdd057ee8"
10954+
integrity sha512-TQsq6u22fAn3rek5VOubrhKPo1g5hwC3FXUN9hiyupTckcYiGuuKGkNQrKYwGJkXUxZdojwRG46gsSCFZMDp4g==
1095510955
dependencies:
1095610956
"@braintree/sanitize-url" "^7.1.2"
1095710957
"@iconify/utils" "^3.0.2"
@@ -12290,10 +12290,10 @@ package-manager-detector@^1.3.0:
1229012290
resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.7.0.tgz#0a6d6d3856627b8ac9331f95fc891ea81247aafd"
1229112291
integrity sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==
1229212292

12293-
pako@^2.1.0:
12294-
version "2.2.0"
12295-
resolved "https://registry.yarnpkg.com/pako/-/pako-2.2.0.tgz#246b9d4c841a8d308e484c0d03786651b143e63a"
12296-
integrity sha512-zJq6RP/5q+TO2OpFV3FHzlPnFjmkb7Nc99a5SNjJE+uu/PkpChs+NIZSSzbBoD+6kjiISXjfYdwj1ZRQ81dz/w==
12293+
pako@^3.0.1:
12294+
version "3.0.1"
12295+
resolved "https://registry.yarnpkg.com/pako/-/pako-3.0.1.tgz#3156f8fa86e3cc2ae5a36369475b14d4f05696ce"
12296+
integrity sha512-GupotUUI0mlhugKjUs4bjOwLt3nrehy9Ys2dxC0GtgVef5cnKggkDMmf2bq2poCCuVXopWPmqsc9VDT2iJUy+w==
1229712297

1229812298
param-case@^3.0.4:
1229912299
version "3.0.4"
@@ -14182,12 +14182,10 @@ safe-regex-test@^1.1.0:
1418214182
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1418314183
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1418414184

14185-
sass-loader@^16.0.5:
14186-
version "16.0.8"
14187-
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.8.tgz#b7eef3b7947b32e2988dd760a2f7f0d547838e6b"
14188-
integrity sha512-hcov4ZwZJIGbEuyNr9EmiTmZueyrxSToE6GOzoZnq5JM7ecRO7ttyvilPn+VmRsqiP16+VYZzVnGZj/hzZgKBA==
14189-
dependencies:
14190-
neo-async "^2.6.2"
14185+
sass-loader@^17.0.0:
14186+
version "17.0.0"
14187+
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-17.0.0.tgz#8f4f8864d834c1abb18f0f3d2bc653bbf29dde2a"
14188+
integrity sha512-0Ybm8ohBQ9LcrycVrFQp/KQBNX5a3Wda9/smS0mE/xLffzEnwvV8nykOzrbiSWNzTE3IB/jiXx8O4QmDPG2+Gw==
1419114189

1419214190
sass@^1.89.2:
1419314191
version "1.101.0"

pyproject.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,19 @@ dependencies = [
6868
# not just a connection-pool quirk. Needs dedicated investigation, not a
6969
# driver-compat-prep bump; revisit alongside the actual SQLAlchemy 2.0
7070
# core bump (discussion #40273, step 6).
71-
"flask-sqlalchemy>=2.5.1, <3.0",
71+
"flask-sqlalchemy>=2.5.1, <4.0",
7272
"flask-wtf>=1.3.0, <2.0",
7373
"geopy",
7474
"greenlet<=3.5.4, >=3.5.4",
7575
"gunicorn>=26.0.0, <27; sys_platform != 'win32'",
7676
"hashids>=1.3.1, <2",
7777
# holidays>=0.45 required for security fix
78-
"holidays>=0.99, <1",
78+
"holidays>=0.101, <1",
7979
"humanize",
8080
"isodate",
8181
"jsonpath-ng>=1.8.0, <2",
8282
"Mako>=1.2.2",
83-
"markdown>=3.10.2",
83+
"markdown>=3.10.3",
8484
# marshmallow 4 compatibility: see superset/marshmallow_compatibility.py for a
8585
# Flask-AppBuilder workaround. Tracking issue:
8686
# https://github.com/apache/superset/issues/33162
@@ -108,10 +108,10 @@ dependencies = [
108108
"pyarrow>=24.0.0, <26", # before upgrading pyarrow, check that all db dependencies support this, see e.g. https://github.com/apache/superset/pull/34693
109109
"pyyaml>=6.0.3, <7.0.0",
110110
"PyJWT>=2.4.0, <3.0",
111-
"redis>=5.0.0, <9.0",
111+
"redis>=8.1.0, <9.0",
112112
"rison>=2.0.1, <3.0",
113113
"selenium>=4.46.0, <5.0",
114-
"shillelagh[gsheetsapi]>=1.4.4, <2.0",
114+
"shillelagh[gsheetsapi]>=1.4.5, <2.0",
115115
"sshtunnel>=0.4.0, <0.5",
116116
"simplejson>=4.1.1",
117117
"slack_sdk>=3.43.0, <4",
@@ -131,7 +131,7 @@ dependencies = [
131131

132132
[project.optional-dependencies]
133133

134-
athena = ["pyathena[pandas]>=3.35.2, <4"]
134+
athena = ["pyathena[pandas]>=3.35.4, <4"]
135135
# No SQLAlchemy 2.0 support anywhere in this dialect's ecosystem today: our
136136
# own preset-io/sqlalchemy-aurora-data-api fork is dead since 2021, and the
137137
# more active community fork (cloud-utils/sqlalchemy-aurora-data-api) has an
@@ -143,7 +143,7 @@ bigquery = [
143143
# 1.17.1 is likely the final release: googleapis/python-bigquery-sqlalchemy
144144
# was archived 2026-05-16. Both 1.17.0 and 1.17.1 support SQLAlchemy 1.4/2.0.
145145
"sqlalchemy-bigquery>=1.17.1",
146-
"google-cloud-bigquery>=3.42.2",
146+
"google-cloud-bigquery>=3.42.3",
147147
]
148148
clickhouse = ["clickhouse-connect>=1.6.0, <2.0"]
149149
cockroachdb = ["cockroachdb>=0.3.5, <0.4"]
@@ -204,7 +204,7 @@ fastmcp = [
204204
firebird = ["sqlalchemy-firebird>=0.8.0, <2.0.0"]
205205
firebolt = ["firebolt-sqlalchemy>=1.1.2, <2"]
206206
gevent = ["gevent>=26.7.0"]
207-
gsheets = ["shillelagh[gsheetsapi]>=1.4.4, <2"]
207+
gsheets = ["shillelagh[gsheetsapi]>=1.4.5, <2"]
208208
hana = ["hdbcli==2.29.25", "sqlalchemy_hana==3.0.3"]
209209
hive = [
210210
"pyhive[hive_pure_sasl]>=0.7.0",
@@ -249,7 +249,7 @@ redshift = ["sqlalchemy-redshift>=0.8.1, <0.9"]
249249
# to the newest 1.4-only release for now. Bump to >=2.0.0 in lockstep with
250250
# Superset's own SQLAlchemy 2.0 core bump (discussion #40273), not before.
251251
risingwave = ["sqlalchemy-risingwave>=1.4.1, <2.0.0"]
252-
shillelagh = ["shillelagh[all]>=1.4.4, <2"]
252+
shillelagh = ["shillelagh[all]>=1.4.5, <2"]
253253
singlestore = ["sqlalchemy-singlestoredb>=1.2.1, <2"]
254254
snowflake = ["snowflake-sqlalchemy>=1.11.0, <2"]
255255
sqlite = ["syntaqlite>=0.7.0,<0.8.0"]

0 commit comments

Comments
 (0)