@@ -58,10 +58,11 @@ def __init__(self, definition, resolver=None, formats={}):
58
58
('minProperties' , self .generate_min_properties ),
59
59
('maxProperties' , self .generate_max_properties ),
60
60
('required' , self .generate_required ),
61
+ # Check dependencies before properties generates default values.
62
+ ('dependencies' , self .generate_dependencies ),
61
63
('properties' , self .generate_properties ),
62
64
('patternProperties' , self .generate_pattern_properties ),
63
65
('additionalProperties' , self .generate_additional_properties ),
64
- ('dependencies' , self .generate_dependencies ),
65
66
))
66
67
67
68
@property
@@ -559,16 +560,19 @@ def generate_dependencies(self):
559
560
"""
560
561
self .create_variable_is_dict ()
561
562
with self .l ('if {variable}_is_dict:' ):
562
- self . create_variable_keys ()
563
+ isEmpty = True
563
564
for key , values in self ._definition ["dependencies" ].items ():
564
565
if values == [] or values is True :
565
566
continue
566
- with self .l ('if "{}" in {variable}_keys:' , self .e (key )):
567
+ isEmpty = False
568
+ with self .l ('if "{}" in {variable}:' , self .e (key )):
567
569
if values is False :
568
570
self .exc ('{} in {name} must not be there' , key , rule = 'dependencies' )
569
571
elif isinstance (values , list ):
570
572
for value in values :
571
- with self .l ('if "{}" not in {variable}_keys :' , self .e (value )):
573
+ with self .l ('if "{}" not in {variable}:' , self .e (value )):
572
574
self .exc ('{name} missing dependency {} for {}' , self .e (value ), self .e (key ), rule = 'dependencies' )
573
575
else :
574
576
self .generate_func_code_block (values , self ._variable , self ._variable_name , clear_variables = True )
577
+ if isEmpty :
578
+ self .l ('pass' )
0 commit comments