MCPcopy
hub / github.com/marshmallow-code/marshmallow / _invoke_field_validators

Method _invoke_field_validators

src/marshmallow/schema.py:1125–1173  ·  view source on GitHub ↗
(self, *, error_store: ErrorStore, data, many: bool)

Source from the content-addressed store, hash-verified

1123 )
1124
1125 def _invoke_field_validators(self, *, error_store: ErrorStore, data, many: bool):
1126 for attr_name, _, validator_kwargs in self._hooks[VALIDATES]:
1127 validator = getattr(self, attr_name)
1128
1129 field_names = validator_kwargs["field_names"]
1130
1131 for field_name in field_names:
1132 try:
1133 field_obj = self.fields[field_name]
1134 except KeyError as error:
1135 if field_name in self.declared_fields:
1136 continue
1137 raise ValueError(f'"{field_name}" field does not exist.') from error
1138
1139 data_key = (
1140 field_obj.data_key if field_obj.data_key is not None else field_name
1141 )
1142 do_validate = functools.partial(validator, data_key=data_key)
1143
1144 if many:
1145 for idx, item in enumerate(data):
1146 try:
1147 value = item[field_obj.attribute or field_name]
1148 except KeyError:
1149 pass
1150 else:
1151 validated_value = self._call_and_store(
1152 getter_func=do_validate,
1153 data=value,
1154 field_name=data_key,
1155 error_store=error_store,
1156 index=(idx if self.opts.index_errors else None),
1157 )
1158 if validated_value is missing:
1159 item.pop(field_name, None)
1160 else:
1161 try:
1162 value = data[field_obj.attribute or field_name]
1163 except KeyError:
1164 pass
1165 else:
1166 validated_value = self._call_and_store(
1167 getter_func=do_validate,
1168 data=value,
1169 field_name=data_key,
1170 error_store=error_store,
1171 )
1172 if validated_value is missing:
1173 data.pop(field_name, None)
1174
1175 def _invoke_schema_validators(
1176 self,

Callers 1

_do_loadMethod · 0.95

Calls 2

_call_and_storeMethod · 0.95
popMethod · 0.80

Tested by

no test coverage detected