-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathmanager.py
More file actions
34 lines (23 loc) · 924 Bytes
/
manager.py
File metadata and controls
34 lines (23 loc) · 924 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from nodes.node import Node
from typing import List
class NodeManager:
nodes: List[Node]
def __init__(self, nodes: List[Node]):
if not isinstance(nodes, list):
raise ValueError("nodes must be a List of Nodes")
self.nodes = nodes.copy()
def __len__(self):
return len(self.nodes)
def __getitem__(self, index):
return self.nodes[index]
def remove(self, node: Node):
if node not in self.nodes:
raise ValueError("Node is not in the list of nodes")
self.nodes.remove(node)
def remove_cascade(self, node: Node):
if node not in self.nodes:
raise ValueError("Node is not in the list of nodes")
children = [n for n in self.nodes if n.parent == node.id]
for child in children:
self.remove_cascade(child)
self.nodes.remove(node)