8000 Relax check for validated data in default factory utils (#10909) · pydantic/pydantic@bff29ab · GitHub
[go: up one dir, main page]

Skip to content

Commit bff29ab

Browse files
sydney-runkleViicos
andcommitted
Relax check for validated data in default factory utils (#10909)
Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com>
1 parent 00bbb91 commit bff29ab

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

pydantic/fields.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,9 @@ def deprecation_message(self) -> str | None:
570570
return self.deprecated if isinstance(self.deprecated, str) else self.deprecated.message
571571

572572
@overload
573-
def get_default(self, *, call_default_factory: Literal[True], validated_data: dict[str, Any]) -> Any: ...
573+
def get_default(
574+
self, *, call_default_factory: Literal[True], validated_data: dict[str, Any] | None = None
575+
) -> Any: ...
574576

575577
@overload
576578
def get_default(self, *, call_default_factory: Literal[False] = ...) -> Any: ...
@@ -592,9 +594,11 @@ def get_default(self, *, call_default_factory: bool = False, validated_data: dic
592594
if self.default_factory is None:
593595
return _utils.smart_deepcopy(self.default)
594596
elif call_default_factory:
595-
if validated_data is None:
596-
raise ValueError("'validated_data' must be provided if 'call_default_factory' is True.")
597597
if _fields.takes_validated_data_argument(self.default_factory):
598+
if validated_data is None:
599+
raise ValueError(
600+
"The default factory requires the 'validated_data' argument, which was not provided when calling 'get_default'."
601+
)
598602
return self.default_factory(validated_data)
599603
else:
600604
fac = cast(Callable[[], Any], self.default_factory) # Pyright doesn't narrow correctly

0 commit comments

Comments
 (0)
0