8000 Keep values of private attributes set within `model_post_init` in subclasses by alexmojaki · Pull Request #7775 · pydantic/pydantic · GitHub
[go: up one dir, main page]

Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
remove early return
  • Loading branch information
alexmojaki committed Oct 11, 2023
commit 217f6b97c15378d7a92dad63117e0194283bd42a
15 changes: 7 additions & 8 deletions pydantic/_internal/_model_construction.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,14 +259,13 @@ def init_private_attributes(self: BaseModel, __context: Any) -> None:
self: The BaseModel instance.
__context: The context.
"""
if getattr(self, '__pydantic_private__', None) is not None:
return
pydantic_private = {}
for name, private_attr in self.__private_attributes__.items():
default = private_attr.get_default()
if default is not PydanticUndefined:
pydantic_private[name] = default
object_setattr(self, '__pydantic_private__', pydantic_private)
if getattr(self, '__pydantic_private__', None) is None:
pydantic_private = {}
for name, private_attr in self.__private_attributes__.items():
default = private_attr.get_default()
if default is not PydanticUndefined:
pydantic_private[name] = default
object_setattr(self, '__pydantic_private__', pydantic_private)


def get_model_post_init(namespace: dict[str, Any], bases: tuple[type[Any], ...]) -> Callable[..., Any] | None:
Expand Down
0