Claude Code
dfd3f7b316
ci(lint): enforce no function-body imports (PLC0415) with targeted ignores
...
Follow-up to #40231 (merged), where a reviewer flagged a function-body
`from datetime import datetime, timedelta` instead of a top-of-file
import. Adds a `ruff-import-placement` pre-commit hook running
`ruff check --select PLC0415 --preview --no-fix`.
Per @rusackas's pushback on the first cut of this PR — which spammed
2,657 `# noqa: PLC0415` annotations across ~410 files without fixing
anything — this revision is a much smaller surface area:
1. **Per-file-ignores** for whole directories where function-body
imports are a deliberate pattern, not an oversight:
- `superset/cli/**` and `scripts/**`: subcommand-deferred imports
keep heavy modules out of the CLI startup path.
- `superset/tasks/**`: Celery task bodies defer imports of the
modules they orchestrate.
- `superset/migrations/versions/**`: Alembic migrations interact
with model state at runtime, not at module load.
- `superset/mcp_service/**`: MCP tools lazy-load resources on
invocation so the server can register many tools without paying
their import cost at startup.
- `superset/db_engine_specs/**`: engine specs defer driver imports
so optional DB drivers don't have to be installed.
- `superset/initialization/__init__.py`, `superset/extensions/__init__.py`,
`superset/app.py`: the app-factory and extension wiring are
intentionally full of circular-import workarounds.
- `tests/**`: test files routinely defer imports for fixture
isolation; the rule still applies to production code.
2. **Per-line `# noqa: PLC0415`** on the 259 remaining genuine
circular-import sites (security/manager.py, sql/execution/executor.py,
semantic_layers/labels.py, tags/core.py, core_api_injection.py, etc.).
These are foundational modules where moving the imports up would
actually break things.
Net result: ~410 files / 2,657 grandfathered → ~73 files / 259 actual
noqa annotations. The rule still catches every new function-body
import outside the explicitly-allowed directories.
Also: silences a pre-existing C901 on `mcp_service/sql_lab/tool/execute_sql.py`
that fires under newer local ruff but not CI's pinned ruff 0.9.7 — blocks
the local pre-commit run otherwise.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 13:55:14 -07:00
Vitor Avila
d40a5cad5d
fix(OAuth2): Re-query the OAuth2 token to avoid stale reference ( #40071 )
2026-05-18 13:07:54 -03:00
Evan Rusackas
3a9c54a672
fix(date_parser): suppress noisy parsedatetime DEBUG logs ( #33365 ) ( #40144 )
...
Co-authored-by: Claude Code <noreply@anthropic.com >
2026-05-17 19:58:08 -07:00
Elizabeth Thompson
8d2b655c22
fix(reports): narrow spinner checks to viewport and tighten exception handling ( #39895 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-15 13:35:07 -07:00
Mehmet Salih Yavuz
8b0e63b58c
fix(rls): prevent double-apply when converting physical dataset to virtual ( #39725 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 18:05:48 +03:00
Mafi
01224007da
fix(mixed-timeseries): preserve all-NaN metric columns after pivot when Jinja evaluates to NULL ( #40005 )
...
Co-authored-by: Matt Fitzgerald <matt.fitzgerald@preset.io >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-14 07:46:34 -03:00
Ville Brofeldt
af4dc3a9aa
fix(re-encrypt): handle non-id PKs and make command idempotent ( #40079 )
2026-05-12 17:59:52 -07:00
Andy
a6ad0bf169
fix(re-encrypt-secrets): use db.Model.metadata to discover encrypted … ( #39390 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-11 21:16:41 -07:00
Beto Dealmeida
cb53745d43
feat: semantic layer extension ( #37815 )
2026-05-05 12:07:46 -04:00
Sam Firke
c2725e86f3
fix(markdown): Allow "target" attribute ( #39868 )
2026-05-04 18:27:43 -04:00
Vitor Avila
86eb6176d1
fix: Enforce per-user caching on legacy API endpoint ( #39789 )
2026-04-30 18:04:33 -03:00
Elizabeth Thompson
f0d521dfc2
fix(reports): poll for spinner absence instead of snapshotting loading elements ( #39579 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 22:03:43 -03:00
Joao Amaral
e10918307c
fix(db): Add MariaDB DDL fix for NOCYCLE syntax ( #37582 )
2026-04-22 19:01:20 -04:00
Vitor Avila
191337e08d
fix(db oauth2): Improve OAuth2 flow ( #39499 )
2026-04-21 11:54:52 -03:00
Beto Dealmeida
5fb89b865d
fix(oauth2): silence lock acquisition errors on token refresh ( #39463 )
...
Co-authored-by: Beto Dealmeida <beto@preset.io >
2026-04-20 18:08:33 -04:00
Alexandru Soare
ffcc6e8b63
fix(MCP): fix MCP logs ( #39159 )
2026-04-15 15:57:04 +03:00
Amin Ghadersohi
68067d7f44
fix(mcp): handle OAuth-authenticated databases in execute_sql ( #39166 )
2026-04-09 15:47:00 -04:00
Daniel Vaz Gaspar
5815665cc6
feat: role/user CRUD events and login/logout tracking in the action log ( #39121 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-09 15:55:25 +01:00
Elizabeth Thompson
587fe4af63
fix(reports): propagate PlaywrightTimeout so execution transitions to ERROR state ( #39176 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-08 11:00:03 -07:00
Beto Dealmeida
a854fa60a2
feat: apply RLS conservatively ( #38683 )
2026-03-17 10:20:09 -04:00
Yuriy Krasilnikov
09e9c6a522
fix(embedded): prevent double RLS application in virtual datasets ( #37395 )
2026-03-12 14:12:59 +01:00
Beto Dealmeida
03ad1789f0
feat(alerts/reports): external URL warning ( #35021 )
2026-03-06 11:57:03 -05:00
Antonio Rivero
20cc3345d8
chore(playwright): Using warning for timeouts ( #38441 )
2026-03-05 14:15:10 +01:00
Vitor Avila
8c9efe5659
feat: support for import/export masked_encrypted_extra (backend) ( #38077 )
2026-03-04 11:26:28 -08:00
Đỗ Trọng Hải
27d54f8421
fix(build/backend): migrate to deps-free pygeohash with pre-built wheels at runtime ( #37524 )
...
Signed-off-by: hainenber <dotronghai96@gmail.com >
2026-03-04 11:24:43 -08:00
Michael S. Molina
19f949276c
refactor(config): SIGNAL_CACHE_CONFIG → DISTRIBUTED_COORDINATION_CONFIG ( #38395 )
2026-03-04 09:40:21 -08:00
Vitor Avila
fa34609952
feat: Support OAuth2 single-use refresh tokens ( #38364 )
2026-03-03 16:07:15 -03:00
Amin Ghadersohi
01d5245cd2
fix: silence deprecation warnings causing noisy production logs ( #38128 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 10:55:00 -08:00
Amin Ghadersohi
985c3d12a1
fix(screenshots): downgrade screenshot timeout logs from ERROR to WARNING ( #38130 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 10:03:07 +01:00
Ujjwaljain16
2d44f52ad1
fix(encryption): resolve SECRET_KEY lazily to fix silent re-encrypt-secrets failures ( #37982 )
2026-02-20 14:10:09 -08:00
Türker Ziya Ercin
440602ef34
fix(utils): datetime_to_epoch function is fixed to timezone aware epoch ( #37979 )
2026-02-15 22:36:18 +07:00
Ville Brofeldt
59dd2fa385
feat: add global task framework ( #36368 )
2026-02-09 10:45:56 -08:00
Jamile Celento
2dfc770b0f
fix(native-filters): update TEMPORAL_RANGE filter subject when Time Column filter is applied ( #36985 )
2026-02-04 12:37:17 +03:00
Beto Dealmeida
5d20dc57d7
feat(oauth2): add PKCE support for database OAuth2 authentication ( #37067 )
2026-01-30 23:28:10 -05:00
Vitor Avila
6043e7e7e3
fix: more DB OAuth2 fixes ( #37398 )
2026-01-30 21:11:26 -03:00
Daniel Vaz Gaspar
290bcc1dbb
feat(cache): use configurable hash algorithm for flask-caching ( #37361 )
2026-01-26 10:19:51 -08:00
Vitor Avila
cc972cad5a
fix: DB OAuth2 fixes ( #37350 )
2026-01-22 01:51:48 -03:00
Richard Fogaca Nienkotter
f4474b2e3e
feat: Dynamic currency ( #36416 )
2026-01-16 21:58:41 -08:00
Alexandru Soare
81fdc2bd0e
feat(dates): adding handling for first of ( #37098 )
2026-01-15 19:48:54 +02:00
amaannawab923
4f444ae1d2
feat(ag-grid): Server Side Filtering for Column Level Filters ( #35683 )
2026-01-12 19:25:07 +05:30
Jean Massucatto
459b4cb23d
perf(date_parser): bound regex quantifiers for deterministic parsing performance ( #36983 )
2026-01-12 12:52:19 +03:00
Beto Dealmeida
14c0cad0ba
chore: remove deprecated function ( #37021 )
2026-01-09 14:52:53 -05:00
Kamil Gabryjelski
f3407d7a56
chore: Close playwright browser gracefully ( #36537 )
2025-12-18 17:30:22 +01:00
Daniel Vaz Gaspar
bb22eb1ca8
feat: add option for hash algorithms ( #35621 )
...
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com >
2025-12-09 16:59:07 +00:00
Elizabeth Thompson
b35b1d7633
fix: add subdirectory deployment support for app icon and reports urls ( #35098 )
...
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Daniel Gaspar <danielvazgaspar@gmail.com >
2025-12-08 16:06:08 -08:00
Beto Dealmeida
482c674a0f
chore: improve types ( #36367 )
2025-12-04 13:51:35 -05:00
Beto Dealmeida
16e6452b8c
feat: Explorable protocol ( #36245 )
2025-12-04 13:18:34 -05:00
Beto Dealmeida
c458f99dd4
chore: cleanup ssh tunnel ( #34388 )
2025-12-03 14:26:35 -05:00
Amin Ghadersohi
06a8f4df02
feat(datasets): add datetime format detection to dataset columns ( #36150 )
...
Co-authored-by: Claude Code <claude@anthropic.com >
2025-11-25 14:25:24 -08:00
Beto Dealmeida
aca18fff99
fix: double computation of contribution_totals ( #36226 )
2025-11-25 14:35:55 -05:00