Skip to content

Commit 84ca7a4

Browse files
butvinmclaude
andcommitted
Fix required fields inconsistently rendering defaults (#3048)
__set_validate_default_on_fields set validate_default=True on fields with model references without checking field.required, causing required model-ref fields to render defaults while required scalar fields didn't. Skip required fields (unless use_default_with_required) so all required fields consistently have no defaults rendered. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent af51cd7 commit 84ca7a4

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

src/datamodel_code_generator/parser/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2177,6 +2177,8 @@ def __set_validate_default_on_fields( # noqa: PLR6301
21772177
if isinstance(model, Enum):
21782178
continue
21792179
for model_field in model.fields:
2180+
if model_field.required and not model_field.use_default_with_required:
2181+
continue
21802182
if model_field.default is None or model_field.default is UNDEFINED:
21812183
continue
21822184
if isinstance(model_field.default, Member):

tests/data/expected/main/graphql/pydantic_v2_empty_list_default.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ class Container(BaseModel):
2626

2727

2828
class PodSpec(BaseModel):
29-
container_list: list[Container] = Field([], validate_default=True)
30-
container_list_or_none: list[Container | None] = Field([], validate_default=True)
29+
container_list: list[Container]
30+
container_list_or_none: list[Container | None]
3131
container_or_none_list_or_none: list[Container | None] | None = Field(
3232
[], validate_default=True
3333
)

0 commit comments

Comments
 (0)