mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
Correct path in nested models (#437)
* Correct path in nested models * History * Fix code review
This commit is contained in:
committed by
Samuel Colvin
parent
caaa16ee71
commit
fa65a07a0c
@@ -8,6 +8,7 @@ v0.21.1 (unreleased)
|
||||
* add ``IPv{4,6,Any}Network`` and ``IPv{4,6,Any}Interface`` types from ``ipaddress`` stdlib, #333 by @pilosus
|
||||
* add docs for ``datetime`` types, #386 by @pilosus
|
||||
* fix to schema generation in dataclass-based models, #408 by @pilosus
|
||||
* fix path in nested models #437, by @kataev
|
||||
|
||||
|
||||
v0.21.0 (2019-03-15)
|
||||
|
||||
@@ -93,7 +93,11 @@ def flatten_errors(
|
||||
for error in errors:
|
||||
if isinstance(error, ErrorWrapper):
|
||||
if isinstance(error.exc, ValidationError):
|
||||
yield from flatten_errors(error.exc.raw_errors, loc=error.loc)
|
||||
if loc is not None:
|
||||
error_loc = loc + error.loc
|
||||
else:
|
||||
error_loc = error.loc
|
||||
yield from flatten_errors(error.exc.raw_errors, loc=error_loc)
|
||||
else:
|
||||
yield error.dict(loc_prefix=loc)
|
||||
elif isinstance(error, list):
|
||||
|
||||
@@ -243,3 +243,21 @@ x
|
||||
x
|
||||
field required (type=value_error.missing)"""
|
||||
)
|
||||
|
||||
|
||||
def test_nested_error():
|
||||
class NestedModel3(BaseModel):
|
||||
x: str
|
||||
|
||||
class NestedModel2(BaseModel):
|
||||
data2: List[NestedModel3]
|
||||
|
||||
class NestedModel1(BaseModel):
|
||||
data1: List[NestedModel2]
|
||||
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
NestedModel1(data1=[{'data2': [{'y': 1}]}])
|
||||
|
||||
expected = [{'loc': ('data1', 0, 'data2', 0, 'x'), 'msg': 'field required', 'type': 'value_error.missing'}]
|
||||
|
||||
assert exc_info.value.errors() == expected
|
||||
|
||||
Reference in New Issue
Block a user