Skip to content

Commit d89c79c

Browse files
committed
anyOf
1 parent e964b8d commit d89c79c

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

jsonschema/_validators.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,24 @@ def anyOf_draft4(validator, anyOf, instance, schema):
382382
)
383383

384384

385+
def anyOf_draft6(validator, anyOf, instance, schema):
386+
all_errors = []
387+
for index, subschema in enumerate(anyOf):
388+
if subschema == True: # FIXME: Messages
389+
subschema = {}
390+
elif subschema == False:
391+
subschema = {"not": {}}
392+
errs = list(validator.descend(instance, subschema, schema_path=index))
393+
if not errs:
394+
break
395+
all_errors.extend(errs)
396+
else:
397+
yield ValidationError(
398+
"%r is not valid under any of the given schemas" % (instance,),
399+
context=all_errors,
400+
)
401+
402+
385403
def not_(validator, not_schema, instance, schema):
386404
if validator.is_valid(instance, not_schema):
387405
yield ValidationError(

jsonschema/validators.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,11 @@ def extend(validator, validators, version=None):
240240
u"additionalItems": _validators.additionalItems,
241241
u"additionalProperties": _validators.additionalProperties,
242242
u"allOf": _validators.allOf_draft6,
243+
u"anyOf": _validators.anyOf_draft6,
243244
u"items": _validators.items,
245+
u"maxLength": _validators.maxLength,
244246
u"maximum": _validators.maximum,
247+
u"minLength": _validators.minLength,
245248
u"minimum": _validators.minimum,
246249
u"not": _validators.not_,
247250
u"properties": _validators.properties,

0 commit comments

Comments
 (0)