🐛 Fix list convertor with an empty list default factory #1350
Merged
tiangolo merged 6 commits intofastapi:masterfrom Sep 23, 2025
Merged
🐛 Fix list convertor with an empty list default factory #1350tiangolo merged 6 commits intofastapi:masterfrom
tiangolo merged 6 commits intofastapi:masterfrom
Conversation
7 tasks
tiangolo
approved these changes
Sep 23, 2025
Member
tiangolo
left a comment
There was a problem hiding this comment.
Nice, thank you! I'll release this in 0.19.2 in a bit 🚀
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixing the regression that happened after #1018, recently released as v0.19.1.
In v0.19.0, this was the original code for the
internal_converor:The author in #1018 changed that to:
which made the (new) tests succeed, but had some typing issues.
valueshould optionally beNone(the fact that we didn't account for that was the reason for the bug that #1018 was solving).Then
mypy(understandably) needed a guarantee thatvaluewasn'tNoneby the final statement. Because of this, I rewrote the fix in #1018 tobut this was a mistake and has caused a new bug as reported in #1349. I've written a new unit test to cover that bug in this PR, and now propose to revert this code to a solution in the middle:
comparing this to the original code from v0.19.0, the only thing that changes is the
(value is None) orpart. This seems a much cleaner and much less error-prone suggestion than what we eventually had in #1018.