Skip to content

Commit e964b8d

Browse files
committed
allOf
1 parent dbf44ad commit e964b8d

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

jsonschema/_validators.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ def type(validator, types, instance, schema):
291291
yield ValidationError(_utils.types_msg(instance, types))
292292

293293

294-
def properties_draft4(validator, properties, instance, schema):
294+
def properties(validator, properties, instance, schema):
295295
if not validator.is_type(instance, "object"):
296296
return
297297

@@ -306,7 +306,7 @@ def properties_draft4(validator, properties, instance, schema):
306306
yield error
307307

308308

309-
def required_draft4(validator, required, instance, schema):
309+
def required(validator, required, instance, schema):
310310
if not validator.is_type(instance, "object"):
311311
return
312312
for property in required:
@@ -328,12 +328,22 @@ def maxProperties_draft4(validator, mP, instance, schema):
328328
yield ValidationError("%r has too many properties" % (instance,))
329329

330330

331-
def allOf(validator, allOf, instance, schema):
331+
def allOf_draft4(validator, allOf, instance, schema):
332332
for index, subschema in enumerate(allOf):
333333
for error in validator.descend(instance, subschema, schema_path=index):
334334
yield error
335335

336336

337+
def allOf_draft6(validator, allOf, instance, schema):
338+
for index, subschema in enumerate(allOf):
339+
if subschema == True: # FIXME: Messages
340+
subschema = {}
341+
elif subschema == False:
342+
subschema = {"not": {}}
343+
for error in validator.descend(instance, subschema, schema_path=index):
344+
yield error
345+
346+
337347
def oneOf_draft4(validator, oneOf, instance, schema):
338348
subschemas = enumerate(oneOf)
339349
all_errors = []
@@ -372,7 +382,7 @@ def anyOf_draft4(validator, anyOf, instance, schema):
372382
)
373383

374384

375-
def not_draft4(validator, not_schema, instance, schema):
385+
def not_(validator, not_schema, instance, schema):
376386
if validator.is_valid(instance, not_schema):
377387
yield ValidationError(
378388
"%r is not allowed for %r" % (not_schema, instance)

jsonschema/validators.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def extend(validator, validators, version=None):
206206
u"$ref": _validators.ref,
207207
u"additionalItems": _validators.additionalItems,
208208
u"additionalProperties": _validators.additionalProperties,
209-
u"allOf": _validators.allOf,
209+
u"allOf": _validators.allOf_draft4,
210210
u"anyOf": _validators.anyOf_draft4,
211211
u"dependencies": _validators.dependencies,
212212
u"enum": _validators.enum,
@@ -221,12 +221,12 @@ def extend(validator, validators, version=None):
221221
u"minProperties": _validators.minProperties_draft4,
222222
u"minimum": _validators.minimum,
223223
u"multipleOf": _validators.multipleOf,
224-
u"not": _validators.not_draft4,
224+
u"not": _validators.not_,
225225
u"oneOf": _validators.oneOf_draft4,
226226
u"pattern": _validators.pattern,
227227
u"patternProperties": _validators.patternProperties,
228-
u"properties": _validators.properties_draft4,
229-
u"required": _validators.required_draft4,
228+
u"properties": _validators.properties,
229+
u"required": _validators.required,
230230
u"type": _validators.type,
231231
u"uniqueItems": _validators.uniqueItems,
232232
},
@@ -239,7 +239,13 @@ def extend(validator, validators, version=None):
239239
validators={
240240
u"additionalItems": _validators.additionalItems,
241241
u"additionalProperties": _validators.additionalProperties,
242+
u"allOf": _validators.allOf_draft6,
242243
u"items": _validators.items,
244+
u"maximum": _validators.maximum,
245+
u"minimum": _validators.minimum,
246+
u"not": _validators.not_,
247+
u"properties": _validators.properties,
248+
u"required": _validators.required,
243249
u"type": _validators.type,
244250
},
245251
version="draft6",

0 commit comments

Comments
 (0)