ATLAS Offline Software
Loading...
Searching...
No Matches
defects_dump_graph Namespace Reference

Classes

class  Node

Functions

dict[str, Nodebuild_tree (Mapping[str, DefectLogic] all_logic)
 walk (Node node, set[Node] visited, bool visit_primary, TextIO fd)
 dump_visited (TextIO fd, Node current_node, set[Node] nodes, Mapping[Union[str, int], str] descs, bool parents)
 build_dependency_graph (str output_dir, Node node, Mapping[Union[str, int], str] descs)
 build_parent_tree (str output_dir, Node node, Mapping[Union[str, int], str] descs)
 render_all_flags (str output_dir, dict[str, Node] all_nodes, Mapping[Union[str, int], str] descs)
 main ()

Variables

str DEPENDSON_DIR = "dependson"

Function Documentation

◆ build_dependency_graph()

defects_dump_graph.build_dependency_graph ( str output_dir,
Node node,
Mapping[Union[str, int], str] descs )

Definition at line 115 of file defects_dump_graph.py.

115def build_dependency_graph(output_dir: str, node: Node, descs: Mapping[Union[str, int], str]):
116
117 with open("%s/%s.dot" % (output_dir, node.name), "w") as fd:
118 print(f"strict digraph {node.name} {{", file=fd)
119 print("rankdir=LR;\n", file=fd)
120
121 visited = set()
122
123 for parent in sorted(node.parents, key=Node.get_name):
124 print(f"{parent.name} -> {node.name}", file=fd)
125 visited.add(parent)
126
127 walk(node, visited, node.has_primary_children, fd)
128
129 dump_visited(fd, node, visited, descs, parents=False)
130
131 print("}", file=fd)
132
void print(char *figname, TCanvas *c1)
STL class.

◆ build_parent_tree()

defects_dump_graph.build_parent_tree ( str output_dir,
Node node,
Mapping[Union[str, int], str] descs )

Definition at line 133 of file defects_dump_graph.py.

133def build_parent_tree(output_dir: str, node: Node, descs: Mapping[Union[str, int], str]):
134
135 visited = set([node])
136
137 with open(f"{output_dir}/{DEPENDSON_DIR}/{node.name}.dot", "w") as fd:
138 def walk_parents(node):
139 visited.add(node)
140 for parent in node.parents:
141 print(f"{parent.name} -> {node.name}", file=fd)
142 walk_parents(parent)
143
144 print(f"strict digraph {node.name} {{", file=fd)
145 print("rankdir=LR;\n", file=fd)
146
147 walk_parents(node)
148
149 dump_visited(fd, node, visited, descs, parents=True)
150
151 print("}", file=fd)
152

◆ build_tree()

dict[str, Node] defects_dump_graph.build_tree ( Mapping[str, DefectLogic] all_logic)

Definition at line 65 of file defects_dump_graph.py.

65def build_tree(all_logic: Mapping[str, DefectLogic]) -> dict[str, Node]:
66
67 all_nodes: dict[str, Node] = {}
68
69 def make_primary(current_logic: str) -> Node:
70 if current_logic in all_nodes:
71 return all_nodes[current_logic]
72 all_nodes[current_logic] = node = Node(current_logic)
73 return node
74
75 def explore_virtual(current_logic: str) -> Node:
76 if current_logic in all_nodes:
77 return all_nodes[current_logic]
78
79 this_logic = all_logic[current_logic]
80 all_nodes[current_logic] = node = Node(current_logic)
81
82 for name in this_logic.clauses:
83 if name in all_logic:
84 child = explore_virtual(name)
85 else:
86 child = make_primary(name)
87
88 child.parents.add(node)
89 node.children.add(child)
90
91 return node
92
93 for name in all_logic:
94 explore_virtual(name)
95
96 return all_nodes
97

◆ dump_visited()

defects_dump_graph.dump_visited ( TextIO fd,
Node current_node,
set[Node] nodes,
Mapping[Union[str, int], str] descs,
bool parents )

Definition at line 106 of file defects_dump_graph.py.

107 descs: Mapping[Union[str, int], str], parents: bool):
108 for node in sorted(nodes, key=Node.get_name):
109 at_current_node = node.name == current_node.name
110 description = descs.get(node.name, node.name)
111 # Line breaks in defect descriptions mess up the svg generation
112 description = description.replace('\n', ' ')
113 print(node.dot(at_current_node, description, parents), file=fd)
114

◆ main()

defects_dump_graph.main ( )

Definition at line 163 of file defects_dump_graph.py.

163def main():
164
165 parser = ArgumentParser(description="Dump defect viewer information")
166
167 parser.add_argument("-t", "--tag", default="HEAD", help="Defect tag")
168 parser.add_argument("-o", "--output", default=".", help="Directory to dump files")
169
170 args = parser.parse_args()
171
172 # Instantiate the Defect DB
173 db = DefectsDB(tag=args.tag)
174
175 descs = db.all_defect_descriptions
176
177 # Build node objects
178 all_nodes = build_tree(db.virtual_defect_logics)
179
180 # Write outputs
181 output_dir = "%s/%s" % (args.output, args.tag)
182 render_all_flags(output_dir, all_nodes, descs)
183
int main()
Definition hello.cxx:18

◆ render_all_flags()

defects_dump_graph.render_all_flags ( str output_dir,
dict[str, Node] all_nodes,
Mapping[Union[str, int], str] descs )

Definition at line 153 of file defects_dump_graph.py.

153def render_all_flags(output_dir: str, all_nodes: dict[str, Node], descs: Mapping[Union[str, int], str]):
154
155 path = "%s/%s" % (output_dir, DEPENDSON_DIR)
156 if not isdir(path):
157 makedirs(path)
158
159 for _, node in sorted(all_nodes.items()):
160 build_dependency_graph(output_dir, node, descs)
161 build_parent_tree(output_dir, node, descs)
162

◆ walk()

defects_dump_graph.walk ( Node node,
set[Node] visited,
bool visit_primary,
TextIO fd )

Definition at line 98 of file defects_dump_graph.py.

98def walk(node: Node, visited: set[Node], visit_primary: bool, fd: TextIO):
99 visited.add(node)
100
101 for subnode in sorted(node.children, key=Node.get_name):
102 if subnode.virtual or (subnode.primary and visit_primary):
103 print(f"{node.name} -> {subnode.name}", file=fd)
104 walk(subnode, visited, visit_primary, fd)
105

Variable Documentation

◆ DEPENDSON_DIR

str defects_dump_graph.DEPENDSON_DIR = "dependson"

Definition at line 11 of file defects_dump_graph.py.