$ cat fastapi/week/2026-08-24.log
the week in review · Aug 24 – Aug 30, 2026
Pydantic fixes serializer exclusion bug, preps core speed leap
This week Pydantic shipped a critical serializer fix, advanced a pydantic-core performance overhaul, and refined schema generation, while FastAPI and SQLModel kept pace with CI and dependency updates.
Pydantic fixed a subtle serializer exclusion bug [1] where the include/exclude filters were dropped when a plain serializer wasn't called, causing serialization to ignore the filters. The serialization now respects the intended field selection in all paths.
A broader performance initiative took shape: schema gathering logic moves to pydantic-core [6], FieldInfo construction gets faster [5], and the build now uses maturin's `--pgo` option [7]. According to the briefings, "Pydantic Core Is Poised For A Speed Leap," driven by these changes.
Pydantic 2.13.5 shipped GC fixes and smart union counting, plus signature reflection now honors `validate_by_alias` [2]. Validation JSON schemas now correctly exclude serialization temporal formats [4] and reflect `str_min_length`/`str_max_length` config [3]. New support for `frozendict` [8] and as defaultdict factories [9] expands type coverage.
FastAPI and SQLModel both bumped `setup-uv` to 10.0.1 [10][11] and Typer to 0.26.1 [12][13], while SQLModel deprecated `min_items` and updated release notes [14].
References
- [1] Do not drop include/exclude if serializer wasn't called (#13702) ↗ pydantic/pydantic
- [2] Support `populate_by_name` in `@validate_call` ↗ pydantic/pydantic
- [3] Reflect `str_min_length` and `str_max_length` config in the JSON schema ↗ pydantic/pydantic
- [4] Don't apply serialization temporal formats to validation JSON schemas ↗ pydantic/pydantic
- [5] Improve permormance of `FieldInfo` construction ↗ pydantic/pydantic
- [6] Move schema gathering logic to `pydantic-core` ↗ pydantic/pydantic
- [7] Use maturin `--pgo` option ↗ pydantic/pydantic
- [8] Add support for `frozendict` type ↗ pydantic/pydantic
- [9] Allow `dict`, `frozendict` and `frozenset` as `defaultdict` default factories ↗ pydantic/pydantic
- [10] ⬆️ Bump `setup-uv` action to `10.0.1` ↗ fastapi/fastapi
- [11] ⬆️ Bump `setup-uv` action to `10.0.1` ↗ tiangolo/sqlmodel
- [12] ⬆️ Bump Typer min version to 0.26.1 ↗ fastapi/fastapi
- [13] ⬆️ Bump Typer min version to `0.26.1` ↗ tiangolo/sqlmodel
- [14] 📝 Update release notes ↗ tiangolo/sqlmodel
$ ls fastapi/week/ # the briefings behind this review