Python Update Fixes Hidden Defaults That Could Break Your Apps
If you code in Python, this update could save you from frustrating bugs.
A recent change means defaults for omitted Query, Header, Cookie, and Form parameters and model fields are no longer treated as user input. Defaults are not validated unless validate_default=True is enabled.
If validators need to run for omitted values, enable default validation with Field(validate_default=True) for model fields or Query(validate_default=True) for individual parameters; Body(validate_default=True) is now honored too. For parameter models, applying a default no longer marks a field as explicitly set, so model_dump(exclude_unset=True) excludes it.
Default factories run once, and validation errors no longer include injected defaults in input. Omitted boolean form fields still become False and count as explicitly set.
- Defaults in Python forms and models are no longer automatically validated unless you enable it.
- If you rely on defaults being checked, you must update your code to avoid bugs.
- This update makes data handling more predictable but requires developers to adapt.
Why It Matters
For developers, this means potential code changes to keep apps working correctly.