specs: speed up traversal by avoiding redundant canonicalization

This commit is contained in:
Todd Gamblin 2021-02-13 00:57:41 -08:00 committed by Greg Becker
parent bb60dbd2ad
commit fd12cba18b

View File

@ -1382,7 +1382,16 @@ def traverse_edges(self, visited=None, d=0, deptype='all',
cover = kwargs.get('cover', 'nodes')
direction = kwargs.get('direction', 'children')
order = kwargs.get('order', 'pre')
deptype = dp.canonical_deptype(deptype)
# we don't want to run canonical_deptype every time through
# traverse, because it is somewhat expensive. This ensures we
# canonicalize only once.
canonical_deptype = kwargs.get("canonical_deptype", None)
if canonical_deptype is None:
deptype = dp.canonical_deptype(deptype)
kwargs["canonical_deptype"] = deptype
else:
deptype = canonical_deptype
# Make sure kwargs have legal values; raise ValueError if not.
def validate(name, val, allowed_values):