in model_card_toolkit/base_model_card_field.py [0:0]
def _from_json(self, json_dict: Dict[str, Any],
field: "BaseModelCardField") -> "BaseModelCardField":
"""Parses a JSON dictionary into the current object."""
for subfield_key, subfield_json_value in json_dict.items():
if subfield_key.startswith(validation.SCHEMA_VERSION_STRING):
continue
elif not hasattr(field, subfield_key):
raise ValueError(
"BaseModelCardField %s has no such field named '%s.'" %
(field, subfield_key))
elif isinstance(subfield_json_value, dict):
subfield_value = self._from_json(
subfield_json_value, getattr(field, subfield_key))
elif isinstance(subfield_json_value, list):
subfield_value = []
for item in subfield_json_value:
if isinstance(item, dict):
new_object = field.__annotations__[subfield_key].__args__[0]() # pytype: disable=attribute-error
subfield_value.append(self._from_json(item, new_object))
else: # if primitive
subfield_value.append(item)
else:
subfield_value = subfield_json_value
setattr(field, subfield_key, subfield_value)
return field