python
runtime_error
ai_generated
true
PydanticDeprecatedSince20: `__fields__` is deprecated; use `model_fields` instead. Deprecated in Pydantic V2.0 to be removed in V3.0.
ID: python/pydantic-v2-model-fields-deprecated
80%Fix Rate
86%Confidence
0Evidence
2024-01-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 2.x | active | — | — | — |
Root Cause
Code written for Pydantic v1 accesses model.__fields__ or .dict()/.json() which are deprecated in v2 in favor of model_fields, model_dump(), model_dump_json().
generic中文
为 Pydantic v1 编写的代码访问 model.__fields__ 或 .dict()/.json(),这些在 v2 中已弃用,应改用 model_fields、model_dump()、model_dump_json()。
Workarounds
-
95% success
Replace attribute access: # v1 for name, field in User.__fields__.items(): ... # v2 for name, field in User.model_fields.items(): ...
-
95% success
Replace serialization methods: obj.dict() -> obj.model_dump() obj.json() -> obj.model_dump_json() obj.parse_obj(d) -> obj.model_validate(d)
Dead Ends
Common approaches that don't work:
-
65% fail
Hides the deprecation but the code still breaks when upgrading to v3 or when stderr is treated as failure in CI.
-
75% fail
Conflicts with libraries (FastAPI 0.100+, LangChain) that require v2, causing install errors.