|
|
@ -143,10 +143,16 @@ def inherit_parents(obj):
|
|
|
|
# iterate through the parents first, and then overwrite with the settings
|
|
|
|
# iterate through the parents first, and then overwrite with the settings
|
|
|
|
# from the child.
|
|
|
|
# from the child.
|
|
|
|
for p in map(inherit_parents, parents) + [obj]:
|
|
|
|
for p in map(inherit_parents, parents) + [obj]:
|
|
|
|
for key in ('type', 'title', 'required', 'description'):
|
|
|
|
# child blats out type, title and description
|
|
|
|
|
|
|
|
for key in ('type', 'title', 'description'):
|
|
|
|
if p.get(key):
|
|
|
|
if p.get(key):
|
|
|
|
result[key] = p[key]
|
|
|
|
result[key] = p[key]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# other fields get merged
|
|
|
|
|
|
|
|
for key in ('required', ):
|
|
|
|
|
|
|
|
if p.get(key):
|
|
|
|
|
|
|
|
result.setdefault(key, []).extend(p[key])
|
|
|
|
|
|
|
|
|
|
|
|
for key in ('properties', 'additionalProperties', 'patternProperties'):
|
|
|
|
for key in ('properties', 'additionalProperties', 'patternProperties'):
|
|
|
|
if p.get(key):
|
|
|
|
if p.get(key):
|
|
|
|
result.setdefault(key, OrderedDict()).update(p[key])
|
|
|
|
result.setdefault(key, OrderedDict()).update(p[key])
|
|
|
|