@make_certifier()<EOL>def certify_iterable_schema(value, schema=None, required=True):
if schema is not None:<EOL><INDENT>if len(schema) != len(value):<EOL><INDENT>raise CertifierValueError(<EOL>"<STR_LIT>".format(<EOL>extra=len(value) - len(schema)),<EOL>value=value,<EOL>required=required,<EOL>)<EOL><DEDENT>for index, certifier in enumerate(schema):<EOL><INDENT>try:<EOL><INDENT>certifier(value=value[index])<EOL><DEDENT>except CertifierError as exc:<EOL><INDENT>six.raise_from(<EOL>CertifierValueError(<EOL>message="<STR_LIT>".format(<EOL>index=index, value=value[index]),<EOL>value=value,<EOL>required=required,<EOL>),<EOL>exc,<EOL>)<EOL><DEDENT><DEDENT><DEDENT>
Certify an iterable against a schema.

:param iterable value:
    The iterable to certify against the schema.
:param iterable schema:
    The schema to use
:param bool required:
    Whether the value can't be `None`. Defaults to True.
:return:
    The validated iterable.
:rtype:
    iterable