MCPcopy Create free account
hub / github.com/bhowiebkr/PyFlowGraph / execute

Method execute

src/commands/create_group_command.py:45–95  ·  view source on GitHub ↗

Create the group and add to graph.

(self)

Source from the content-addressed store, hash-verified

43 self.group_properties["creation_timestamp"] = datetime.now().isoformat()
44
45 def execute(self) -> bool:
46 """Create the group and add to graph."""
47 try:
48 # Import here to avoid circular imports - try different import paths
49 Group = self._get_group_class()
50 if not Group:
51 self._show_error("Failed to import Group class. Please check your installation.")
52 return False
53
54 # Validate that all member nodes exist
55 member_nodes = self._get_member_nodes()
56 if len(member_nodes) != len(self.group_properties["member_node_uuids"]):
57 self._show_error(f"Some member nodes not found. Expected {len(self.group_properties['member_node_uuids'])}, found {len(member_nodes)}. Cannot create group.")
58 return False
59
60 # Create the group
61 self.created_group = Group(
62 name=self.group_properties["name"],
63 member_node_uuids=self.group_properties["member_node_uuids"]
64 )
65
66 # Set properties
67 self.created_group.uuid = self.group_uuid
68 self.created_group.description = self.group_properties.get("description", "")
69 self.created_group.creation_timestamp = self.group_properties["creation_timestamp"]
70 self.created_group.padding = self.group_properties.get("padding", 20.0)
71
72 # Auto-size if requested
73 if self.group_properties.get("auto_size", True):
74 self.created_group.calculate_bounds_from_members(self.node_graph)
75
76 # Add to graph first (needed for connection analysis)
77 self.node_graph.addItem(self.created_group)
78
79 # Store reference in node graph groups list
80 if not hasattr(self.node_graph, 'groups'):
81 self.node_graph.groups = []
82
83 # Check if group is already in the list to prevent duplicates
84 if self.created_group not in self.node_graph.groups:
85 self.node_graph.groups.append(self.created_group)
86
87 # Groups no longer generate interface pins - they keep original connections
88
89 print(f"Created group '{self.created_group.name}' with {len(self.created_group.member_node_uuids)} members")
90 self._mark_executed()
91 return True
92
93 except Exception as e:
94 self._show_error(f"Failed to create group: {str(e)}")
95 return False
96
97 def undo(self) -> bool:
98 """Remove the created group."""

Callers 5

redoMethod · 0.95
executeMethod · 0.95
test_command_executeMethod · 0.95
test_command_undoMethod · 0.95
test_command_redoMethod · 0.95

Calls 6

_get_group_classMethod · 0.95
_show_errorMethod · 0.95
_get_member_nodesMethod · 0.95
GroupClass · 0.90
_mark_executedMethod · 0.80

Tested by 3

test_command_executeMethod · 0.76
test_command_undoMethod · 0.76
test_command_redoMethod · 0.76