$ cat fastapi/week/2026-09-21.log
the week in review · Sep 21 – Sep 27, 2026
SQLModel 0.0.47 adds Postgres, MySQL, MariaDB support
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
The same week's 0.0.45 made UTC datetimes the default, a breaking change to every existing timestamp field.
0.0.45 tiangolo/sqlmodel
by github-actions[bot]
This is the breaking one. `datetime` fields now use `UTCDateTime`, a custom type based on `DateTime(timezone=True)`, so the release notes say it requires aware datetime parameters. Naive datetimes you write into models and comparisons against them need auditing before you take the upgrade.
✨ Add direct support for PostgreSQL, MySQL, and MariaDB, include in CI tests tiangolo/sqlmodel
The database backends the project had left to SQLAlchemy users to wire up are now first-class, and they run in CI rather than only in production. If you support SQLite in tests and Postgres in production, that split is narrower now. Shipped as 0.0.47.
🐛 Fix timedelta arithmetic with UTC datetime fields tiangolo/sqlmodel
Timedelta arithmetic against UTC datetime fields broke when those fields switched to UTCDateTime; the fix landed in 0.0.46. Upgrade straight to 0.0.47 rather than stopping at 0.0.45.
🐛 Fix SQLAlchemy type handling in `Field` tiangolo/sqlmodel
Narrows `sa_type` to SQLAlchemy type classes and instances instead of the broader positional Column argument type, superseding an earlier PR that had identified the runtime/type-annotation mismatch. Type checkers get a more accurate signature; nothing changes at runtime.
Do not mutate `model_config` attribute pydantic/pydantic
The project stopped mutating the `model_config` attribute. Pydantic's own change summary flags it as a theoretical breaking change that still needs blogpost documentation, so code that reads back a mutated config after model creation is the case to check.
Add support for `multiple_of` constraint in `fraction` and `timedelta` core schemas pydantic/pydantic
`multiple_of` now works on `fraction` and `timedelta` core schemas, closing the gap where the constraint applied to numeric types but not these two. Declare the constraint on the field and it is enforced.
Catch `OverflowError` during `ByteSize` validation (#13850) pydantic/pydantic
ByteSize validation no longer propagates an `OverflowError` from values too large to represent. Slightly wider acceptance surface, one fewer exception class to catch.
♻️ Replace the dataclass_transform shim with typing_extensions tiangolo/sqlmodel
Alongside: the hand-written `dataclass_transform` shim is gone in favor of `typing_extensions`, a PyPy 8.0.0 test failure is fixed, and the Mkdocs social plugin is removed for flaky font fetches in CI.
$ ls fastapi/week/ # the briefings behind this review
Keep up with FastAPI & Pydantic in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.
Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.