def validate(self, value=None, model=None, context=None):
errors = []<EOL>for validator in self.validators:<EOL><INDENT>if value is None and not isinstance(validator, Required):<EOL><INDENT>continue<EOL><DEDENT>error = validator.run(<EOL>value=value,<EOL>model=model,<EOL>context=context if self.use_context else None<EOL>)<EOL>if error:<EOL><INDENT>errors.append(error)<EOL><DEDENT><DEDENT>return errors<EOL>
Sequentially apply each validator to value and collect errors.

:param value: a value to validate
:param model: parent entity
:param context: validation context, usually parent entity
:return: list of errors (if any)