MCPcopy Index your code
hub / github.com/LabPy/lantz / _solve_dependencies

Function _solve_dependencies

lantz/driver.py:470–494  ·  view source on GitHub ↗

Solve a dependency graph. :param dependencies: dependency dictionary. For each key, the value is an iterable indicating its dependencies. :param all_members: If provided :return: list of sets, each containing independent task only dependent of the p

(dependencies, all_members=None)

Source from the content-addressed store, hash-verified

468
469
470def _solve_dependencies(dependencies, all_members=None):
471 """Solve a dependency graph.
472
473 :param dependencies: dependency dictionary. For each key, the value is
474 an iterable indicating its dependencies.
475 :param all_members: If provided
476 :return: list of sets, each containing independent task only dependent of the
477 previous set in the list.
478
479 """
480 d = dict((key, set(value)) for key, value in dependencies.items())
481 if all_members:
482 d.update({key: set() for key in all_members if key not in d})
483 r = []
484 while d:
485 # values not in keys (items without dep)
486 t = set(i for v in d.values() for i in v) - set(d.keys())
487 # and keys without value (items without dep)
488 t.update(k for k, v in d.items() if not v)
489 # can be done right away
490 r.append(t)
491 # and cleaned up
492 d = dict(((k, v - t) for k, v in d.items() if v))
493
494 return r
495
496
497def initialize_many(drivers, register_finalizer=True,

Callers 2

initialize_manyFunction · 0.85
finalize_manyFunction · 0.85

Calls 5

updateMethod · 0.80
setFunction · 0.50
itemsMethod · 0.45
valuesMethod · 0.45
keysMethod · 0.45

Tested by

no test coverage detected