Skip to content

feat: bump SQLAlchemy to 2.0 and flask-sqlalchemy to 3.1.1 - #42803

Merged
rusackas merged 36 commits into
masterfrom
experiment/sqla2-full-bump
Aug 13, 2026
Merged

feat: bump SQLAlchemy to 2.0 and flask-sqlalchemy to 3.1.1#42803
rusackas merged 36 commits into
masterfrom
experiment/sqla2-full-bump

Conversation

@rusackas

@rusackas rusackas commented Aug 5, 2026

Copy link
Copy Markdown
Member

SUMMARY

Bumps SQLAlchemy from 1.4.54 to 2.0.51 and flask-sqlalchemy from <3.0 to 3.1.1, completing step 6 of discussion #40273's migration battle plan (steps 1-5, the deprecation-warning cleanup, already merged). Supersedes the flask-sqlalchemy 3.0.5 intermediate step attempted and reverted in #42542 by going straight to the real target version instead.

Started from a cherry-pick of @mikebridge's test/verify-sqlalchemy-continuum branch (backend-relevant hunks only), then root-caused and fixed everything real CI turned up on top of that, across several rounds:

Core session-scoping bug (the actual cause of #42542's break): Flask-SQLAlchemy 3.x scopes db.session by Flask app-context object identity instead of thread identity. Superset's code and test fixtures widely assume one shared session per thread across nested app.app_context() blocks. Fixed by restoring thread-scoped db.session under FSA 3.x and guarding the Celery AppContextTask wrapper's app_context() push with has_app_context() so eager-mode task execution reuses the caller's session instead of silently splitting into a second one.

Other SQLAlchemy 1.4→2.0 breaks fixed along the way:

  • MetaData(bind=) removed; load_only() needs real ORM attributes, not strings; raw Row["key"] string indexing removed (in older migration scripts)
  • connection.rollback() added after pessimistic_connection_handling's pool-checkout health-check SELECT, since 2.0's autobegin now leaves that SELECT's transaction open
  • Several missing db.session.add() calls that used to work via implicit session tracking (report-schedule fixtures, DashboardDAO.copy_dashboard, Explore-save-to-new-dashboard)
  • RowLevelSecurityFilter.filter_type no longer rendered as a native PG enum
  • db.session.bind is now None under 2.0 in some contexts; switched to get_bind()
  • Password double-encoding, now that URL.render_as_string() encodes itself
  • Presto/Trino TIMESTAMP/DATE literal rendering
  • SQLite test engines: 2.0 changed file-based SQLite's default pool from NullPool to QueuePool, which could hand a pooled connection to a different thread than the one that opened it — reintroducing a check_same_thread violation in the GTF task framework's deferred-flush timer thread. Pinned NullPool back for the test config specifically (production config's check_same_thread=false is unaffected).
  • session.query(Model).get(id) migrated to session.get(Model, id) at the remaining 9 call sites (2.0 deprecation), plus matching test-mock updates

Also updates two migration scripts (2018-07-26_..._add_implicit_tags, 2022-04-01_..._new_dataset_models_take_2) to Mapped[]-typed relationship annotations, and removes the now-obsolete SQLALCHEMY_WARN_20 pytest.ini filter lines.

Full context: discussion #40273, step 6.

Closes #39278 — that PR's approach (Flask 3.x via the flask-sqlalchemy 3.0.5 intermediate step, staying on SQLAlchemy 1.4) is superseded by this PR jumping straight to the real 2.0 target and fixing the underlying session-scoping bug that made the intermediate step unsafe in the first place.

TESTING INSTRUCTIONS

Verified with real CI (not just local): Python-Integration (test-postgres/test-mysql/test-sqlite) and Python-Unit (11793 passed, 4 skipped, 2 xfailed) both green, along with the full remaining CI matrix.

ADDITIONAL INFORMATION

  • Has associated issue
  • Required feature flags:
  • Changes UI
  • Includes DB Migration
  • Introduces new feature or API
  • Removes existing feature or API

@github-actions github-actions Bot added preset-io risk:db-migration PRs that require a DB migration labels Aug 5, 2026
@rusackas
rusackas force-pushed the experiment/sqla2-full-bump branch from d209bf3 to 4f31f32 Compare August 5, 2026 18:44
@rusackas rusackas changed the title experiment: full SQLAlchemy 2.0 + flask-sqlalchemy 3.1.1 bump (DO NOT MERGE) feat: full SQLAlchemy 2.0 + flask-sqlalchemy 3.1.1 bump (DO NOT MERGE) Aug 5, 2026
@netlify

netlify Bot commented Aug 5, 2026

Copy link
Copy Markdown

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 1b60041
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a7d151eaab1200008d95816
😎 Deploy Preview https://deploy-preview-42803--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@pull-request-size pull-request-size Bot added size/L and removed size/M labels Aug 6, 2026
@github-actions github-actions Bot added the api Related to the REST API label Aug 6, 2026
@pull-request-size pull-request-size Bot added size/XL and removed size/L labels Aug 6, 2026
@codecov

codecov Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 67.18750% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 66.42%. Comparing base (0c2f919) to head (1b60041).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
superset/tasks/manager.py 25.00% 1 Missing and 2 partials ⚠️
superset/db_engine_specs/databricks.py 0.00% 2 Missing ⚠️
superset/extensions/__init__.py 60.00% 2 Missing ⚠️
superset/models/sql_types/presto_sql_types.py 60.00% 2 Missing ⚠️
superset/cli/export_example.py 0.00% 1 Missing ⚠️
superset/commands/importers/v1/examples.py 0.00% 1 Missing ⚠️
superset/db_engine_specs/clickhouse.py 0.00% 1 Missing ⚠️
superset/db_engine_specs/couchbase.py 0.00% 1 Missing ⚠️
superset/db_engine_specs/databend.py 0.00% 1 Missing ⚠️
superset/db_engine_specs/duckdb.py 0.00% 1 Missing ⚠️
... and 6 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #42803      +/-   ##
==========================================
- Coverage   66.63%   66.42%   -0.22%     
==========================================
  Files        2866     2863       -3     
  Lines      162576   162330     -246     
  Branches    37461    37370      -91     
==========================================
- Hits       108340   107822     -518     
- Misses      52146    52418     +272     
  Partials     2090     2090              
Flag Coverage Δ
hive 38.23% <23.43%> (-0.02%) ⬇️
mysql 57.89% <54.68%> (-0.01%) ⬇️
postgres 57.92% <54.68%> (-0.02%) ⬇️
presto 40.19% <23.43%> (-0.02%) ⬇️
python 59.32% <65.62%> (-0.01%) ⬇️
sqlite 57.56% <57.81%> (-0.01%) ⬇️
unit 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rusackas
rusackas marked this pull request as ready for review August 7, 2026 00:45
@dosubot dosubot Bot added change:backend Requires changing the backend dependencies:python risk:breaking-change Issues or PRs that will introduce breaking changes labels Aug 7, 2026

@bito-code-review bito-code-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #64e76a

Actionable Suggestions - 1
  • superset-core/pyproject.toml - 1
    • SQLAlchemy 2.0 Query.get() deprecation · Line 48-48
Additional Suggestions - 6
  • superset/tasks/manager.py - 3
    • Test coverage gap for app context · Line 262-262
      The code change is correct and follows the established pattern used in `superset/tasks/context.py`. However, the test suite lacks coverage for the `has_app_context()` behavior when the `app` parameter is provided and an app context already exists. Add a test that patches `has_app_context` to return True while passing a non-None `app` to verify the DB query executes without redundant context creation.
    • Test coverage gap for callback context · Line 465-465
      The pattern `if app and not has_app_context():` is consistent with existing usage in `superset/tasks/context.py` (lines 260, 479, 555, 643). Consider adding test coverage for the case where `app` is provided and `has_app_context()` returns True.
    • Test coverage gap for abort polling · Line 663-663
      The pattern `if app and not has_app_context():` is consistent with established codebase conventions. Add test coverage for the has_app_context() behavior path to ensure the abort listener correctly handles existing app contexts.
  • superset/tasks/context.py - 1
    • Inconsistent app context pattern · Line 260-263
      Timer callback `_deferred_flush` uses the old pattern (direct `with` statement) while the three other sites (lines 479, 555, 643) use the new `nullcontext()` pattern. For consistency, apply the same fix here.
  • superset/migrations/versions/2026-08-06_16-09_befa892fa3ad_merge_databend_sslmode_migration_with_.py - 2
    • Missing type annotation on upgrade · Line 30-31
      Add explicit `-> None` return type annotation to `upgrade()` per project typing standards. Also add a docstring explaining this is a merge migration (e.g., 'Merge migration combining databend sslmode and pivot-table-percent-display restore merges.')
    • Missing type annotation on downgrade · Line 34-35
      Add explicit `-> None` return type annotation to `downgrade()` per project typing standards. Also add a docstring explaining this merge migration's downgrade behavior.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • requirements/development.txt - 2
    • CWE-703: SQLAlchemy 2.0 Breaking Change · Line 312-312
    • CWE-703: SQLAlchemy 2.0 Breaking Change (duplicate) · Line 978-978
Review Details
  • Files reviewed - 42 · Commit Range: a7d9bde..b4a1029
    • pyproject.toml
    • pytest.ini
    • requirements/base.txt
    • requirements/development.txt
    • superset-core/pyproject.toml
    • superset/connectors/sqla/models.py
    • superset/daos/dashboard.py
    • superset/databases/utils.py
    • superset/db_engine_specs/base.py
    • superset/db_engine_specs/clickhouse.py
    • superset/db_engine_specs/couchbase.py
    • superset/db_engine_specs/databend.py
    • superset/db_engine_specs/databricks.py
    • superset/db_engine_specs/duckdb.py
    • superset/db_engine_specs/snowflake.py
    • superset/extensions/__init__.py
    • superset/initialization/__init__.py
    • superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py
    • superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py
    • superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py
    • superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py
    • superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py
    • superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py
    • superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py
    • superset/migrations/versions/2026-08-06_16-09_befa892fa3ad_merge_databend_sslmode_migration_with_.py
    • superset/models/core.py
    • superset/models/sql_types/presto_sql_types.py
    • superset/tasks/context.py
    • superset/tasks/manager.py
    • superset/utils/core.py
    • superset/views/core.py
    • tests/integration_tests/charts/api_tests.py
    • tests/integration_tests/dashboards/api_tests.py
    • tests/integration_tests/dashboards/soft_delete_tests.py
    • tests/integration_tests/datasource_tests.py
    • tests/integration_tests/db_engine_specs/hive_tests.py
    • tests/integration_tests/db_engine_specs/presto_tests.py
    • tests/integration_tests/model_tests.py
    • tests/integration_tests/superset_test_config.py
    • tests/integration_tests/versioning/id_reuse_tests.py
    • tests/unit_tests/db_engine_specs/test_snowflake.py
    • tests/unit_tests/db_engine_specs/test_trino.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-core/pyproject.toml
Comment thread superset/extensions/__init__.py
@bito-code-review

bito-code-review Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #1edaf1

Actionable Suggestions - 0
Review Details
  • Files reviewed - 17 · Commit Range: b4a1029..bc56ecb
    • tests/unit_tests/extensions/test_sqlalchemy.py
    • tests/unit_tests/databases/filters_test.py
    • tests/unit_tests/sql_lab_test.py
    • tests/unit_tests/mcp_service/dashboard/tool/test_dashboard_generation.py
    • superset/cli/export_example.py
    • superset/commands/dataset/duplicate.py
    • superset/commands/importers/v1/examples.py
    • superset/commands/sql_lab/estimate.py
    • superset/daos/dataset.py
    • superset/mcp_service/chart/preview_utils.py
    • superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py
    • superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py
    • superset/security/manager.py
    • tests/unit_tests/commands/dataset/test_duplicate.py
    • tests/unit_tests/commands/importers/v1/examples_test.py
    • tests/unit_tests/commands/sql_lab/test_estimate.py
    • tests/unit_tests/mcp_service/chart/tool/test_get_chart_data.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #98fd42

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: bc56ecb..81d896f
    • tests/integration_tests/sql_lab/api_tests.py
    • tests/integration_tests/sql_lab/commands_tests.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

rusackas and others added 6 commits August 10, 2026 04:40
session.query(Model).get(id) at superset/commands/sql_lab/estimate.py
was migrated to db.session.get(Database, id) in bc56ecb, but the
integration-test mocks in tests/integration_tests/sql_lab/ still
patched the old session.query().get() chain shape, so
QueryEstimationCommand picked up an auto-generated MagicMock instead
of the fixture and failed test-mysql/postgres/sqlite. Same mock-shape
fix already applied to the unit-test sibling in the same commit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…bump

Notes the breaking dependency change for downstream consumers: custom
db_engine_specs or extensions that touch SQLAlchemy internals directly
should check the 1.4->2.0 migration guide, and the optional connector
extras still capped below their own SQLAlchemy-2.0-only releases
(either pending #42891 or blocked entirely on upstream) keep pulling
1.4-line dialect versions until their own caps move.
…ier merge

d7cecc48bd55 and befa892fa3ad were both independently-created merge
migrations reconciling the exact same two divergent parents
(4f145192b583, c4a1b8e2d739) -- one from this branch's own earlier
"merge divergent heads" commit, one from master's own concurrent fix
(#42878). Master converged on d7cecc48bd55 as canonical; merging
master into this branch left both in the same chain, producing two
alembic heads and breaking every job that runs `superset db upgrade`
(docker-build, test-postgres/mysql/sqlite, E2E, Presto/Hive, CLI
tests).

Drops the redundant befa892fa3ad, which nothing else references.
Verified locally: `flask db heads` reports exactly one head
(d7cecc48bd55, matching master), and a real `superset db upgrade`
against a fresh sqlite db runs the full chain cleanly end to end.
The shillelagh ProgrammingError message embeds a version-specific
sqlalche.me/e/<version>/... doc link; normalize it before comparing so
the test doesn't need updating on every SQLAlchemy minor bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A prior rebase merge conflict resolution accidentally reverted the
sqlglot minimum version bump from #42772, dropping the pyproject.toml
constraint back to >=30.12.0. Restore >=30.14.0 to match master; the
locked version (30.15.0) already satisfies this and is unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…r SQLAlchemy 2.0 (#42891)

Co-authored-by: Claude Code <noreply@anthropic.com>
@rusackas
rusackas force-pushed the experiment/sqla2-full-bump branch from 3134fed to ffac9bd Compare August 10, 2026 11:51
@github-actions github-actions Bot removed the github_actions Pull requests that update GitHub Actions code label Aug 10, 2026
Comment thread superset/databases/utils.py
@bito-code-review

bito-code-review Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #0b6a38

Actionable Suggestions - 0
Additional Suggestions - 2
  • superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py - 2
    • Type annotation consistency mismatch · Line 54-54
      The return type annotation `Mapped[int | None]` uses PEP 604 union syntax, but the same `AuditMixinNullable.created_by_fk` method in `superset/models/helpers.py` line 831 uses `Mapped[Optional[int]]`. This creates inconsistency within the same codebase. Align with the established pattern in the main models.
    • Type annotation consistency mismatch · Line 63-63
      The return type annotation `Mapped[int | None]` uses PEP 604 union syntax, but the same `AuditMixinNullable.changed_by_fk` method in `superset/models/helpers.py` line 840 uses `Mapped[Optional[int]]`. This creates inconsistency within the same codebase. Align with the established pattern in the main models.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • pyproject.toml - 1
  • superset-core/pyproject.toml - 1
    • Missing flask-sqlalchemy dependency · Line 48-48
  • tests/unit_tests/db_engine_specs/test_trino.py - 1
Review Details
  • Files reviewed - 60 · Commit Range: c1c5bc3..ffac9bd
    • pyproject.toml
    • pytest.ini
    • requirements/base.txt
    • requirements/development.txt
    • superset-core/pyproject.toml
    • superset/cli/export_example.py
    • superset/commands/dataset/duplicate.py
    • superset/commands/importers/v1/examples.py
    • superset/commands/sql_lab/estimate.py
    • superset/connectors/sqla/models.py
    • superset/daos/dashboard.py
    • superset/daos/dataset.py
    • superset/databases/utils.py
    • superset/db_engine_specs/base.py
    • superset/db_engine_specs/clickhouse.py
    • superset/db_engine_specs/couchbase.py
    • superset/db_engine_specs/databend.py
    • superset/db_engine_specs/databricks.py
    • superset/db_engine_specs/duckdb.py
    • superset/db_engine_specs/snowflake.py
    • superset/extensions/__init__.py
    • superset/initialization/__init__.py
    • superset/mcp_service/chart/preview_utils.py
    • superset/migrations/versions/2018-07-26_11-10_c82ee8a39623_add_implicit_tags.py
    • superset/migrations/versions/2020-01-08_01-17_e96dbf2cfef0_datasource_cluster_fk.py
    • superset/migrations/versions/2020-04-24_10-46_e557699a813e_add_tables_relation_to_row_level_.py
    • superset/migrations/versions/2020-09-15_18-22_e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py
    • superset/migrations/versions/2020-09-24_12-04_3fbbc6e8d654_fix_data_access_permissions_for_virtual_.py
    • superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py
    • superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py
    • superset/migrations/versions/2021-02-18_09-13_c501b7c653a3_add_missing_uuid_column.py
    • superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py
    • superset/models/core.py
    • superset/models/sql_types/presto_sql_types.py
    • superset/security/manager.py
    • superset/tasks/context.py
    • superset/tasks/manager.py
    • superset/utils/core.py
    • superset/views/core.py
    • tests/integration_tests/charts/api_tests.py
    • tests/integration_tests/dashboards/api_tests.py
    • tests/integration_tests/dashboards/soft_delete_tests.py
    • tests/integration_tests/datasource_tests.py
    • tests/integration_tests/db_engine_specs/hive_tests.py
    • tests/integration_tests/db_engine_specs/presto_tests.py
    • tests/integration_tests/model_tests.py
    • tests/integration_tests/sql_lab/api_tests.py
    • tests/integration_tests/sql_lab/commands_tests.py
    • tests/integration_tests/superset_test_config.py
    • tests/integration_tests/versioning/id_reuse_tests.py
    • tests/unit_tests/commands/dataset/test_duplicate.py
    • tests/unit_tests/commands/importers/v1/examples_test.py
    • tests/unit_tests/commands/sql_lab/test_estimate.py
    • tests/unit_tests/databases/filters_test.py
    • tests/unit_tests/db_engine_specs/test_snowflake.py
    • tests/unit_tests/db_engine_specs/test_trino.py
    • tests/unit_tests/extensions/test_sqlalchemy.py
    • tests/unit_tests/mcp_service/chart/tool/test_get_chart_data.py
    • tests/unit_tests/mcp_service/dashboard/tool/test_dashboard_generation.py
    • tests/unit_tests/sql_lab_test.py
  • Files skipped - 1
    • UPDATING.md - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

rusackas and others added 3 commits August 10, 2026 08:18
Only get_table_metadata's get_columns() call is guarded against
NoSuchTableError now, so a NoSuchTableError raised later while reflecting
foreign keys, indexes, or the table comment for a table that's confirmed
to exist propagates normally instead of being misread as a missing table.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added the github_actions Pull requests that update GitHub Actions code label Aug 10, 2026
@bito-code-review

bito-code-review Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #5feccc

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: ffac9bd..abea0d3
    • superset/databases/utils.py
  • Files skipped - 3
    • .github/workflows/generate-FOSSA-report.yml - Reason: Filter setting
    • .github/workflows/license-check.yml - Reason: Filter setting
    • .github/workflows/superset-docs-deploy.yml - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@sha174n sha174n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the SQLAlchemy 2.0 / flask-sqlalchemy 3.1.1 compatibility changes — the session scopefunc restoration, the query().get() -> session.get() swaps, the enum native_enum=False alignment, and the URL/password rendering changes all preserve existing behavior. LGTM.

@rusackas rusackas moved this to Work in Progress in Apache Superset 7.0 Aug 12, 2026
Superset Dev and others added 2 commits August 12, 2026 10:27
…ll-bump

# Conflicts:
#	requirements/base.txt
#	requirements/development.txt
#	superset/commands/sql_lab/estimate.py
#	tests/integration_tests/sql_lab/api_tests.py
#	tests/integration_tests/sql_lab/commands_tests.py
#	tests/unit_tests/commands/sql_lab/test_estimate.py
sniffio/sortedcontainers were pinned via trio, which is no longer a
resolved dependency; sqlalchemy now pulls greenlet directly. Ran
./scripts/uv-pip-compile.sh to bring requirements/*.txt back in sync.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bito-code-review

bito-code-review Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #1a89e9

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: abea0d3..e70453b
    • requirements/base.txt
    • requirements/development.txt
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas
rusackas merged commit 8014f78 into master Aug 13, 2026
67 of 69 checks passed
@rusackas
rusackas deleted the experiment/sqla2-full-bump branch August 13, 2026 02:55
@github-project-automation github-project-automation Bot moved this from Work in Progress to Lazy Consensus Reached in Apache Superset 7.0 Aug 13, 2026
@bito-code-review

Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped – PR Already Merged

Bito scheduled an automatic review for this pull request, but the review was skipped because this PR was merged before the review could be run.
No action is needed if you didn't intend to review it. To get a review, you can type /review in a comment and save it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api Related to the REST API change:backend Requires changing the backend github_actions Pull requests that update GitHub Actions code preset-io risk:breaking-change Issues or PRs that will introduce breaking changes risk:db-migration PRs that require a DB migration size/XL

Projects

Status: Lazy Consensus Reached

Development

Successfully merging this pull request may close these issues.

7 participants