@make_certifier()<EOL>def certify_dict_schema(<EOL>value, schema=None, key_certifier=None, value_certifier=None, required=None, allow_extra=None,<EOL>):
if key_certifier is not None or value_certifier is not None:<EOL><INDENT>for key, val in value.items():<EOL><INDENT>if key_certifier is not None:<EOL><INDENT>key_certifier(key)<EOL><DEDENT>if value_certifier is not None:<EOL><INDENT>value_certifier(val)<EOL><DEDENT><DEDENT><DEDENT>if schema:<EOL><INDENT>if not isinstance(schema, dict):<EOL><INDENT>raise CertifierParamError(<EOL>name='<STR_LIT>',<EOL>value=schema,<EOL>)<EOL><DEDENT>for key, certifier in schema.items():<EOL><INDENT>if key not in value:<EOL><INDENT>raise CertifierValueError(<EOL>message="<STR_LIT>".format(<EOL>key=key),<EOL>required=required,<EOL>)<EOL><DEDENT>val = value[key]<EOL>certifier(value=val)<EOL><DEDENT>if not allow_extra and set(schema) != set(value):<EOL><INDENT>values = set(value) - set(schema)<EOL>raise CertifierValueError(<EOL>message="<STR_LIT>".format(<EOL>unexpected=values),<EOL>value=values,<EOL>required=required,<EOL>)<EOL><DEDENT><DEDENT>
Certify the dictionary schema.

:param dict|Mapping|MutableMapping value:
    The mapping value to certify against the schema.
:param object schema:
    The schema to validate with.
:param callable key_certifier:
    A certifier to use on the dictionary's keys.
:param callable value_certifier:
    A certifier to use on the dictionary's values.
:param bool required:
    Whether the value can't be `None`. Defaults to True.
:param bool allow_extra:
    Set to `True` to ignore extra keys.
:return:
    The certified mapping
:rtype:
    dict|Mapping|MutableMapping