summaryrefslogtreecommitdiff
path: root/docs/faq.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/faq.rst')
-rw-r--r--docs/faq.rst26
1 files changed, 17 insertions, 9 deletions
diff --git a/docs/faq.rst b/docs/faq.rst
index dd2523e..6d039b1 100644
--- a/docs/faq.rst
+++ b/docs/faq.rst
@@ -25,18 +25,26 @@ started:
from jsonschema import Draft4Validator, validators
- def set_defaults(validator, properties, instance, schema):
- Draft4Validator.VALIDATORS["properties"](
- validator, properties, instance, schema,
+ def extend_with_default(validator_class):
+ validate_properties = validator_class.VALIDATORS["properties"]
+
+ def set_defaults(validator, properties, instance, schema):
+ for error in validate_properties(
+ validator, properties, instance, schema,
+ ):
+ yield error
+
+ for property, subschema in properties.iteritems():
+ if "default" in subschema:
+ instance.setdefault(property, subschema["default"])
+
+ return validators.extend(
+ validator_class, {"properties" : set_defaults},
)
- for property, subschema in properties.iteritems():
- if "default" in subschema:
- instance.setdefault(property, subschema["default"])
- DefaultValidatingDraft4Validator = validators.extend(
- Draft4Validator, {"properties" : set_defaults},
- )
+ DefaultValidatingDraft4Validator = extend_with_default(Draft4Validator)
+
See the above-linked document for more info on how this works, but basically,
it just extends the :validator:`properties` validator on a