Skip to content

fix: annotate scalar_one results for SQLAlchemy 2.1 typing - #100

Closed
kcrmin wants to merge 1 commit into
developfrom
fix/sqlalchemy-2-1-mypy
Closed

kcrmin wants to merge 1 commit into
developfrom
fix/sqlalchemy-2-1-mypy

Conversation

@kcrmin

@kcrmin kcrmin commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

Superseded by #102.

SQLAlchemy 2.1.0 (2026-09-24) is within the declared sqlalchemy>=2.0,<3.0
range and types Result with PEP 646 variadic generics. Under the pinned
mypy 2.3.0 that makes three bare `.scalar_one()` assignments fail gate2
with [var-annotated]:

- src/backtest_engine/backtest_request_intake.py: latest
- tests/persistence/test_money_precision.py: stored_text
- tests/persistence/test_runtime_no_ddl.py: exists

Declare the SQL result types explicitly (bigint COALESCE -> int,
numeric::text -> str, IS NOT NULL -> bool). mypy does not verify these
against the query; they were checked against the schema by hand.

Verified on CPython 3.12.13: mypy is clean on SQLAlchemy 2.1.6 and 2.0.55,
ruff check/format pass, and the Docker suite passes on 2.1.6 (241 passed,
0 skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant