allow plugins to override fragments

This commit is contained in:
Brian Coca 2017-03-30 13:26:59 -04:00 committed by Brian Coca
parent 25019fe70c
commit eb78da68dd

View file

@ -77,17 +77,17 @@ def add_fragments(doc, filename):
raise Exception("missing options in fragment (%s), possibly misformatted?: %s" % (fragment_name, filename))
for key, value in fragment.items():
if key not in doc:
doc[key] = value
else:
if key in doc:
# assumes both structures have same type
if isinstance(doc[key], MutableMapping):
doc[key].update(value)
value.update(doc[key])
elif isinstance(doc[key], MutableSet):
doc[key].add(value)
value.add(doc[key])
elif isinstance(doc[key], MutableSequence):
doc[key] = sorted(frozenset(doc[key] + value))
value = sorted(frozenset(value + doc[key]))
else:
raise Exception("Attempt to extend a documentation fragement (%s) of unknown type: %s" % (fragment_name, filename))
doc[key] = value
def get_docstring(filename, verbose=False):