(self, *, error_store: ErrorStore, data, many: bool)
| 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, |
no test coverage detected