From 67f68c9676cdaa1d044d2d2c46a30903ad840caa Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 05:00:48 +0000 Subject: [PATCH 1/2] fix(typing): resolve mypy errors in agent.gns3_copilot.tools_v2.packet_analysis_tool --- gns3server/agent/gns3_copilot/tools_v2/packet_analysis_tool.py | 3 ++- pyproject.toml | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gns3server/agent/gns3_copilot/tools_v2/packet_analysis_tool.py b/gns3server/agent/gns3_copilot/tools_v2/packet_analysis_tool.py index b9c35d141..c5f30bf79 100644 --- a/gns3server/agent/gns3_copilot/tools_v2/packet_analysis_tool.py +++ b/gns3server/agent/gns3_copilot/tools_v2/packet_analysis_tool.py @@ -143,7 +143,8 @@ class PacketAnalysisTool(BaseTool): stderr=subprocess.DEVNULL, text=True, ) - tshark.stdout.close() + if tshark.stdout is not None: + tshark.stdout.close() stdout, _ = grep.communicate(timeout=30) tshark.wait(timeout=5) except Exception as e: diff --git a/pyproject.toml b/pyproject.toml index 5f0789a77..8b3471880 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -310,7 +310,6 @@ module = [ "gns3server.agent.gns3_copilot.tools_v2.gns3_start_node", # 3 "gns3server.agent.gns3_copilot.tools_v2.gns3_stop_node", # 3 "gns3server.agent.gns3_copilot.tools_v2.gns3_suspend_node", # 3 - "gns3server.agent.gns3_copilot.tools_v2.packet_analysis_tool", # 1 "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko", # 9 "gns3server.agent.gns3_copilot.utils.custom_netmiko.scripts.list_netmiko_telnet_devices", # 1 "gns3server.agent.gns3_copilot.utils.message_converters", # 2 From f8144494f61a22330728a50cc3e04d650ddcea01 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Mon, 28 Sep 2026 06:11:09 +0000 Subject: [PATCH 2/2] fix(typing): resolve mypy errors in agent.gns3_copilot.tools_v2.vpcs_tools_netmiko --- .../agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py | 8 ++++---- pyproject.toml | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py b/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py index 3a8789cda..1315730c7 100644 --- a/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py +++ b/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py @@ -68,7 +68,7 @@ try: # CRITICAL: Update netmiko.ssh_dispatcher platforms lists import importlib - sd = importlib.import_module("netmiko.ssh_dispatcher") + sd: Any = importlib.import_module("netmiko.ssh_dispatcher") # Recalculate platforms lists to include custom device types sd.platforms = list(sd.CLASS_MAPPER.keys()) @@ -179,7 +179,7 @@ class VPCSCommands(BaseTool): # Validate input device_configs_list, project_id = self._validate_tool_input(tool_input) - if isinstance(device_configs_list, list) and len(device_configs_list) > 0 and "error" in device_configs_list[0]: + if len(device_configs_list) > 0 and "error" in device_configs_list[0]: return device_configs_list # Create a mapping of device names to their commands @@ -386,7 +386,7 @@ class VPCSCommands(BaseTool): def _prepare_device_hosts_data( self, device_configs_list: list[dict[str, Any]], - project_id: str, + project_id: str | None, jwt_token: str | None = None, url: str | None = None, ) -> dict[str, dict[str, Any]]: @@ -415,7 +415,7 @@ class VPCSCommands(BaseTool): device_ports = get_device_ports_from_topology(device_names, project_id=project_id, jwt_token=jwt_token, url=url) # Build Nornir inventory hosts data - hosts_data = {} + hosts_data: dict[str, Any] = {} for device_name in device_names: if device_name not in device_ports: logger.error("Device '%s' not found in topology", device_name) diff --git a/pyproject.toml b/pyproject.toml index 8b3471880..80399d488 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -310,7 +310,6 @@ module = [ "gns3server.agent.gns3_copilot.tools_v2.gns3_start_node", # 3 "gns3server.agent.gns3_copilot.tools_v2.gns3_stop_node", # 3 "gns3server.agent.gns3_copilot.tools_v2.gns3_suspend_node", # 3 - "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko", # 9 "gns3server.agent.gns3_copilot.utils.custom_netmiko.scripts.list_netmiko_telnet_devices", # 1 "gns3server.agent.gns3_copilot.utils.message_converters", # 2 "gns3server.agent.gns3_copilot.utils.parse_tool_content", # 1