Closed Wauplin closed 4 years ago
Plan is :
resource_type
Literal
str
from_dict
pydantic.ValidationError
To reproduce issue :
issue.json
{ "resourceType": "HealthcareService", "id": "example", "contained": [ { "resourceType": "", "id": "DenBurg", "description": "Großraum Denburg", "mode": "instance", "physicalType": { "coding": [ { "code": "area", "display": "Area" } ] } } ] }
script.py
import json from pathlib import Path from pydantic_fhir import r4 data = json.load(Path("issue.json").open()) r4.from_dict(data)
Stacktrace :
Traceback (most recent call last): File "script.py", line 8, in <module> r4.from_dict(data) File "/home/projects/skalar/fhirzeug/pydantic-fhir/pydantic_fhir/r4.py", line 54302, in from_dict return RESOURCE_TYPE_MAP[dict_["resourceType"]](**dict_) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/main.py", line 344, in __init__ values, fields_set, validation_error = validate_model(__pydantic_self__.__class__, data) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/main.py", line 900, in validate_model v_, errors_ = field.validate(value, values, loc=field.alias, cls=cls_) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 575, in validate v, errors = self._validate_sequence_like(v, values, loc, cls) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 606, in _validate_sequence_like r, ee = self._validate_singleton(v_, values, v_loc, cls) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 712, in _validate_singleton value, error = field.validate(v, values, loc=loc, cls=cls) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 564, in validate v, errors = self._validate_singleton(v, values, loc, cls) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 719, in _validate_singleton return self._apply_validators(v, values, loc, cls, self.validators) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/fields.py", line 726, in _apply_validators v = validator(cls, v, values, self, self.model_config) File "/home/.cache/pypoetry/virtualenvs/pydantic-fhir-XG3S17Ik-py3.6/lib/python3.6/site-packages/pydantic/class_validators.py", line 278, in <lambda> return lambda cls, v, values, field, config: validator(cls, v) File "/home/projects/skalar/fhirzeug/pydantic-fhir/pydantic_fhir/r4.py", line 8519, in resource_factory return from_dict(value) File "/home/projects/skalar/fhirzeug/pydantic-fhir/pydantic_fhir/r4.py", line 54302, in from_dict return RESOURCE_TYPE_MAP[dict_["resourceType"]](**dict_) KeyError: 'resourceType'
Plan is :
resource_type
attribute as aLiteral
constant (instead ofstr
)from_dict
throw apydantic.ValidationError
if key is not present.To reproduce issue :
issue.json
script.py
Stacktrace :