Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions nodes/manager.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Create here the NodeManager Class

from typing import List
from nodes.node import Node

class NodeManager:
pass
nodes: List[Node]

def __init__(self, nodes:List[Node]) -> None:
if not isinstance(nodes, list):
raise ValueError("nodes must be a list of Node")

self.nodes = nodes.copy()

def __len__(self) -> int:
return len(self.nodes)

def __getitem__(self, index:int) -> Node:
return self.nodes[index]

def remove(self, node:Node) -> None:
if node not in self.nodes:
raise ValueError("node not found in nodes list")
self.nodes.remove(node)

def remove_cascade(self, node:Node) -> None:
if node not in self.nodes:
raise ValueError("node not found in nodes list")
children = [n for n in self.nodes if n.parent == node.id]
for child in children:
self.remove_cascade(child)
self.nodes.remove(node)
18 changes: 17 additions & 1 deletion nodes/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,20 @@


class Node:
pass
id : int
parent : int

def __init__(self, id: int, parent: int) -> None:
if not isinstance(id,int):
raise ValueError("id must be an integer")
if not isinstance(parent, int):
raise ValueError("parent must be an integer")
if parent >= id:
raise ValueError("parent must be less than id")

self.id = id
self.parent = parent

def __repr__(self) -> str:
return f"Node({self.id},{self.parent})"