Skip to content

Commit 8711650

Browse files
committed
#782: Load dependencies from legacy validators
1 parent bb60663 commit 8711650

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

jsonschema/_legacy_validators.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,30 @@ def dependencies_draft3(validator, dependencies, instance, schema):
2727
yield ValidationError(message % (each, property))
2828

2929

30+
def dependencies_draft4_draft6_draft7(validator, dependencies, instance, schema):
31+
"""
32+
The dependencies keyword has been deprecated since draft 2019-09 and has been split into dependentRequired
33+
and dependentSchemas.
34+
"""
35+
if not validator.is_type(instance, "object"):
36+
return
37+
38+
for property, dependency in dependencies.items():
39+
if property not in instance:
40+
continue
41+
42+
if validator.is_type(dependency, "array"):
43+
for each in dependency:
44+
if each not in instance:
45+
message = "%r is a dependency of %r"
46+
yield ValidationError(message % (each, property))
47+
else:
48+
for error in validator.descend(
49+
instance, dependency, schema_path=property,
50+
):
51+
yield error
52+
53+
3054
def disallow_draft3(validator, disallow, instance, schema):
3155
for disallowed in _utils.ensure_list(disallow):
3256
if validator.is_valid(instance, {"type": [disallowed]}):

jsonschema/_validators.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -301,30 +301,6 @@ def maxLength(validator, mL, instance, schema):
301301
yield ValidationError("%r is too long" % (instance,))
302302

303303

304-
def dependencies(validator, dependencies, instance, schema):
305-
"""
306-
The dependencies keyword has been deprecated since draft 2019-09 and has been split into dependentRequired
307-
and dependentSchemas.
308-
"""
309-
if not validator.is_type(instance, "object"):
310-
return
311-
312-
for property, dependency in dependencies.items():
313-
if property not in instance:
314-
continue
315-
316-
if validator.is_type(dependency, "array"):
317-
for each in dependency:
318-
if each not in instance:
319-
message = "%r is a dependency of %r"
320-
yield ValidationError(message % (each, property))
321-
else:
322-
for error in validator.descend(
323-
instance, dependency, schema_path=property,
324-
):
325-
yield error
326-
327-
328304
def dependentRequired(validator, dependentRequired, instance, schema):
329305
"""
330306
Split from dependencies

jsonschema/validators.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ def extend(validator, validators=(), version=None, type_checker=None):
336336
u"additionalProperties": _validators.additionalProperties,
337337
u"allOf": _validators.allOf,
338338
u"anyOf": _validators.anyOf,
339-
u"dependencies": _validators.dependencies,
339+
u"dependencies": _legacy_validators.dependencies_draft4_draft6_draft7,
340340
u"enum": _validators.enum,
341341
u"format": _validators.format,
342342
u"items": _legacy_validators.items_draft3_draft4,
@@ -373,7 +373,7 @@ def extend(validator, validators=(), version=None, type_checker=None):
373373
u"anyOf": _validators.anyOf,
374374
u"const": _validators.const,
375375
u"contains": _legacy_validators.contains_draft6_draft7,
376-
u"dependencies": _validators.dependencies,
376+
u"dependencies": _legacy_validators.dependencies_draft4_draft6_draft7,
377377
u"enum": _validators.enum,
378378
u"exclusiveMaximum": _validators.exclusiveMaximum,
379379
u"exclusiveMinimum": _validators.exclusiveMinimum,
@@ -412,7 +412,7 @@ def extend(validator, validators=(), version=None, type_checker=None):
412412
u"anyOf": _validators.anyOf,
413413
u"const": _validators.const,
414414
u"contains": _legacy_validators.contains_draft6_draft7,
415-
u"dependencies": _validators.dependencies,
415+
u"dependencies": _legacy_validators.dependencies_draft4_draft6_draft7,
416416
u"enum": _validators.enum,
417417
u"exclusiveMaximum": _validators.exclusiveMaximum,
418418
u"exclusiveMinimum": _validators.exclusiveMinimum,

0 commit comments

Comments
 (0)