Initial Checks
Description
Title
model_construct() can leave __pydantic_private__ unset when model_post_init is user-defined, causing pickle.dumps() to crash in BaseModel.__getstate__
Environment
- pydantic==2.12.5
- Python 3.13
Minimal Repro
import pickle
from pydantic import BaseModel
class M(BaseModel):
x: int
def model_post_init(self, context):
# user-defined post-init that does not touch private attrs
pass
m = M.model_construct(x=1)
print(hasattr(m, "__pydantic_private__")) # False in this scenario
pickle.dumps(m) # AttributeError
### Example Code
```Python
Python, Pydantic & OS Version
pydantic version: 2.12.5
pydantic-core version: 2.41.5
pydantic-core build: profile=release pgo=false
python version: 3.13.3 (main, Apr 9 2025, 04:04:49) [MSC v.1943 64 bit (AMD64)]
platform: Windows-11-10.0.26200-SP0
related packages: email-validator-2.3.0 fastapi-0.128.0 pydantic-extra-types-2.11.0 pydantic-settings-2.12.0 typing_extensions-4.15.0
commit: unknown
Initial Checks
Description
Title
model_construct()can leave__pydantic_private__unset whenmodel_post_initis user-defined, causingpickle.dumps()to crash inBaseModel.__getstate__Environment
Minimal Repro
Python, Pydantic & OS Version