DAG¶
Soft implementation of a Direct Acyclic Graph (DAG)
Nota Bene: It is NOT fully checked if valid (i.e. some cycle can be introduced)!
- class DIRAC.Core.Utilities.DAG.DAG¶
Bases:
object
a Direct Acyclic Graph (DAG)
Represented as a dictionary whose keys are nodes, and values are sets holiding their dependencies
- __init__()¶
Defines graph variable holding the dag representation
- addEdge(fromNode, toNode)¶
add an edge (checks if both nodes exist)
- addNode(node)¶
add a node to graph
- Parameters
node (object) – Any type of object - if not hashable, it will be converted to a frozenset
- getIndexNodes()¶
Return a list of index nodes
- getList()¶
Returns a list out of the DAG, if possible
- DIRAC.Core.Utilities.DAG.checkNode(node)¶
Returns a hashable version of node
- DIRAC.Core.Utilities.DAG.makeFrozenSet(ob)¶
Makes a hash from a dictionary, list, tuple or set to any level, that contains only other hashable types (including any lists, tuples, sets, and dictionaries).
- DIRAC.Core.Utilities.DAG.unHashNode(node)¶
Returns a dict or list, if node is frozenset