diff --git a/gns3server/agent/gns3_copilot/skills/loader.py b/gns3server/agent/gns3_copilot/skills/loader.py
index aaad14e51..bfe8fa8b1 100644
--- a/gns3server/agent/gns3_copilot/skills/loader.py
+++ b/gns3server/agent/gns3_copilot/skills/loader.py
@@ -31,7 +31,6 @@ Supports loading injection skills and device/feature skills.
"""
import logging
-import os
from pathlib import Path
from typing import Any, Dict
diff --git a/gns3server/agent/gns3_copilot/tools_v2/config_tools_nornir.py b/gns3server/agent/gns3_copilot/tools_v2/config_tools_nornir.py
index 79cd175f5..d16ef714c 100644
--- a/gns3server/agent/gns3_copilot/tools_v2/config_tools_nornir.py
+++ b/gns3server/agent/gns3_copilot/tools_v2/config_tools_nornir.py
@@ -51,7 +51,7 @@ from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
# Import custom Netmiko device types for GNS3 emulation
# This registers gns3_huawei_telnet_ce and other custom device types
# NOTE: Must be imported BEFORE any Nornir operations to ensure device types are registered
-from gns3server.agent.gns3_copilot.utils import custom_netmiko, get_device_ports_from_topology
+from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
from gns3server.agent.gns3_copilot.utils.command_filter import (
filter_forbidden_commands,
)
diff --git a/gns3server/agent/gns3_copilot/tools_v2/display_tools_nornir.py b/gns3server/agent/gns3_copilot/tools_v2/display_tools_nornir.py
index 428170794..c7526f2c0 100644
--- a/gns3server/agent/gns3_copilot/tools_v2/display_tools_nornir.py
+++ b/gns3server/agent/gns3_copilot/tools_v2/display_tools_nornir.py
@@ -51,7 +51,7 @@ from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
# Import custom Netmiko device types for GNS3 emulation
# This registers gns3_huawei_telnet_ce and other custom device types
# NOTE: Must be imported BEFORE any Nornir operations to ensure device types are registered
-from gns3server.agent.gns3_copilot.utils import custom_netmiko, get_device_ports_from_topology
+from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
from gns3server.agent.gns3_copilot.utils.command_filter import (
filter_forbidden_commands,
)
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 e1ce51fa6..2148106e7 100644
--- a/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py
+++ b/gns3server/agent/gns3_copilot/tools_v2/vpcs_tools_netmiko.py
@@ -51,7 +51,7 @@ from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
# Import custom Netmiko device types for GNS3 emulation
# This registers gns3_vpcs_telnet and other custom device types
# NOTE: Must be imported BEFORE any Nornir operations to ensure device types are registered
-from gns3server.agent.gns3_copilot.utils import custom_netmiko, get_device_ports_from_topology
+from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
# Explicitly register VPCS device type to ensure it is available
try:
@@ -585,7 +585,6 @@ class VPCSCommands(BaseTool):
if __name__ == "__main__":
# Example usage
- import sys
command_groups = json.dumps(
{
diff --git a/gns3server/agent/gns3_copilot/utils/custom_netmiko/tests/test_vpcs_telnet.py b/gns3server/agent/gns3_copilot/utils/custom_netmiko/tests/test_vpcs_telnet.py
index 36b173db7..d0c66f821 100644
--- a/gns3server/agent/gns3_copilot/utils/custom_netmiko/tests/test_vpcs_telnet.py
+++ b/gns3server/agent/gns3_copilot/utils/custom_netmiko/tests/test_vpcs_telnet.py
@@ -426,7 +426,6 @@ IP/MASK : 192.168.1.20/24"""
def test_send_command_calls_strip_ansi(self):
"""Test that send_command calls _strip_ansi_codes."""
- from unittest.mock import patch
instance = self.VPCSTelnet.__new__(self.VPCSTelnet)
diff --git a/gns3server/agent/web_wireshark/manage_wireshark.py b/gns3server/agent/web_wireshark/manage_wireshark.py
index 02445f477..82ea6274e 100755
--- a/gns3server/agent/web_wireshark/manage_wireshark.py
+++ b/gns3server/agent/web_wireshark/manage_wireshark.py
@@ -73,7 +73,6 @@ import json
import logging
import os
import sys
-from typing import Optional
from gns3server.utils.uuid_validator import validate_uuid
diff --git a/gns3server/api/routes/compute/compute.py b/gns3server/api/routes/compute/compute.py
index cd750edb9..e83424cf6 100644
--- a/gns3server/api/routes/compute/compute.py
+++ b/gns3server/api/routes/compute/compute.py
@@ -19,26 +19,22 @@
API routes for compute.
"""
-import os
from functools import lru_cache
-from typing import List, Optional
+from typing import List
from uuid import UUID
import cpuinfo
import psutil
-from fastapi import APIRouter, Body, HTTPException, Response, status
-from fastapi.encoders import jsonable_encoder
+from fastapi import APIRouter, HTTPException, status
-from gns3server import schemas
from gns3server.compute.port_manager import PortManager
from gns3server.compute.project_manager import ProjectManager
from gns3server.compute.qemu import Qemu
from gns3server.compute.virtualbox import VirtualBox
from gns3server.compute.vmware import VMware
-from gns3server.config import Config
from gns3server.utils.cpu_percent import CpuPercent
from gns3server.utils.interfaces import interfaces
-from gns3server.utils.path import get_default_project_directory, is_safe_path
+from gns3server.utils.path import get_default_project_directory
from gns3server.version import __version__
router = APIRouter()
diff --git a/gns3server/api/routes/compute/images.py b/gns3server/api/routes/compute/images.py
index 966063cc8..beb2e9582 100644
--- a/gns3server/api/routes/compute/images.py
+++ b/gns3server/api/routes/compute/images.py
@@ -22,7 +22,7 @@ import os
import urllib.parse
from typing import List
-from fastapi import APIRouter, Body, HTTPException, Request, Response, status
+from fastapi import APIRouter, Body, HTTPException, Request, status
from fastapi.responses import FileResponse
from gns3server.compute.docker import Docker
diff --git a/gns3server/api/routes/compute/projects.py b/gns3server/api/routes/compute/projects.py
index 0ab1caa1f..89b25b6b7 100644
--- a/gns3server/api/routes/compute/projects.py
+++ b/gns3server/api/routes/compute/projects.py
@@ -30,12 +30,11 @@ log = logging.getLogger()
from typing import List
from uuid import UUID
-from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status
+from fastapi import APIRouter, Depends, HTTPException, Query, Request, status
from fastapi.encoders import jsonable_encoder
from fastapi.responses import FileResponse
from gns3server import schemas
-from gns3server.compute.base_manager import BaseManager
from gns3server.compute.project import Project
from gns3server.compute.project_manager import ProjectManager
from gns3server.utils.path import is_safe_path
diff --git a/gns3server/api/routes/compute/qemu_nodes.py b/gns3server/api/routes/compute/qemu_nodes.py
index 1f5574654..17bcb3ca2 100644
--- a/gns3server/api/routes/compute/qemu_nodes.py
+++ b/gns3server/api/routes/compute/qemu_nodes.py
@@ -28,7 +28,6 @@ from fastapi.encoders import jsonable_encoder
from fastapi.responses import StreamingResponse
from gns3server import schemas
-from gns3server.compute import qemu
from gns3server.compute.qemu import Qemu
from gns3server.compute.qemu.qemu_vm import QemuVM
diff --git a/gns3server/api/routes/controller/controller.py b/gns3server/api/routes/controller/controller.py
index 25999bdd9..e1f03b7e3 100644
--- a/gns3server/api/routes/controller/controller.py
+++ b/gns3server/api/routes/controller/controller.py
@@ -19,7 +19,7 @@ import logging
import os
import signal
import time
-from typing import Dict, List
+from typing import Dict
import psutil
from fastapi import APIRouter, Depends, FastAPI, Request, WebSocket, WebSocketDisconnect, status
diff --git a/gns3server/api/routes/controller/links.py b/gns3server/api/routes/controller/links.py
index 6d805d4ae..b7fa2b40d 100644
--- a/gns3server/api/routes/controller/links.py
+++ b/gns3server/api/routes/controller/links.py
@@ -18,7 +18,6 @@
API routes for links.
"""
-import asyncio
import logging
import os
from typing import Any, List, Union
diff --git a/gns3server/api/routes/controller/netmiko.py b/gns3server/api/routes/controller/netmiko.py
index 3e71d67c8..770d0cc4b 100644
--- a/gns3server/api/routes/controller/netmiko.py
+++ b/gns3server/api/routes/controller/netmiko.py
@@ -63,7 +63,7 @@ def _load_netmiko_device_types() -> schemas.NetmikoDeviceTypeList:
# imported them yet); failures are logged by the package itself, do not
# fail the whole endpoint.
try:
- from gns3server.agent.gns3_copilot.utils import custom_netmiko
+ pass
except Exception as e:
log.warning(f"Could not register GNS3-copilot custom Netmiko drivers: {e}")
diff --git a/gns3server/api/routes/controller/templates.py b/gns3server/api/routes/controller/templates.py
index 4263acede..cacb67fe9 100644
--- a/gns3server/api/routes/controller/templates.py
+++ b/gns3server/api/routes/controller/templates.py
@@ -28,7 +28,7 @@ log = logging.getLogger(__name__)
from typing import Any, List, Optional, Union
from uuid import UUID
-from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status
+from fastapi import APIRouter, Depends, Query, Request, Response, status
from gns3server import schemas
from gns3server.controller import Controller
diff --git a/gns3server/api/routes/controller/users.py b/gns3server/api/routes/controller/users.py
index 1ba9a2eff..d072e4009 100644
--- a/gns3server/api/routes/controller/users.py
+++ b/gns3server/api/routes/controller/users.py
@@ -23,7 +23,7 @@ import logging
from typing import List, Optional
from uuid import UUID
-from fastapi import APIRouter, Depends, HTTPException, Response, status
+from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
import gns3server.db.models as models
diff --git a/gns3server/compute/builtin/nodes/ethernet_hub.py b/gns3server/compute/builtin/nodes/ethernet_hub.py
index 8fa5b29f6..a9314c9a4 100644
--- a/gns3server/compute/builtin/nodes/ethernet_hub.py
+++ b/gns3server/compute/builtin/nodes/ethernet_hub.py
@@ -14,7 +14,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import asyncio
import logging
from ...base_node import BaseNode
diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py
index 4c33c311f..0503c3c7d 100644
--- a/gns3server/compute/docker/docker_vm.py
+++ b/gns3server/compute/docker/docker_vm.py
@@ -39,14 +39,13 @@ from gns3server.utils.asyncio import monitor_process, wait_for_file_creation, wa
from gns3server.utils.asyncio.raw_command_server import AsyncioRawCommandServer
from gns3server.utils.asyncio.ssh_server import AsyncioSSHServer
from gns3server.utils.asyncio.telnet_server import AsyncioTelnetServer
-from gns3server.utils.get_resource import get_resource
from gns3server.utils.hostname import is_rfc1123_hostname_valid
from ..adapters.ethernet_adapter import EthernetAdapter
from ..base_node import BaseNode
from ..error import ImageMissingError
from ..nios.nio_udp import NIOUDP
-from .docker_error import DockerError, DockerHttp304Error, DockerHttp404Error, DockerHttp409Error
+from .docker_error import DockerError, DockerHttp404Error, DockerHttp409Error
log = logging.getLogger(__name__)
diff --git a/gns3server/compute/docker/iol_docker_vm.py b/gns3server/compute/docker/iol_docker_vm.py
index 070195e6b..b8e30ec36 100644
--- a/gns3server/compute/docker/iol_docker_vm.py
+++ b/gns3server/compute/docker/iol_docker_vm.py
@@ -48,7 +48,6 @@ import shutil
from gns3server.compute.adapters.ethernet_adapter import EthernetAdapter
from gns3server.compute.docker.docker_error import DockerError, DockerHttp404Error
-from gns3server.compute.docker.docker_vm import DockerVM
from gns3server.compute.docker.vendor_docker_vm import VendorDockerVM
from gns3server.compute.iou.utils.iou_export import nvram_export
from gns3server.compute.iou.utils.iou_import import nvram_import
diff --git a/gns3server/compute/dynamips/hypervisor.py b/gns3server/compute/dynamips/hypervisor.py
index c528c3e6f..1216499e8 100644
--- a/gns3server/compute/dynamips/hypervisor.py
+++ b/gns3server/compute/dynamips/hypervisor.py
@@ -22,7 +22,6 @@ import asyncio
import logging
import os
import subprocess
-import sys
from gns3server.utils.asyncio import wait_for_process_termination
diff --git a/gns3server/compute/dynamips/nios/nio.py b/gns3server/compute/dynamips/nios/nio.py
index 3b4c74969..a611014b4 100644
--- a/gns3server/compute/dynamips/nios/nio.py
+++ b/gns3server/compute/dynamips/nios/nio.py
@@ -19,7 +19,6 @@ Base interface for Dynamips Network Input/Output (NIO) module ("nio").
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L451
"""
-import asyncio
import logging
from ..dynamips_error import DynamipsError
diff --git a/gns3server/compute/dynamips/nios/nio_generic_ethernet.py b/gns3server/compute/dynamips/nios/nio_generic_ethernet.py
index 679c8bc60..b77e65f50 100644
--- a/gns3server/compute/dynamips/nios/nio_generic_ethernet.py
+++ b/gns3server/compute/dynamips/nios/nio_generic_ethernet.py
@@ -18,7 +18,6 @@
Interface for generic Ethernet NIOs (PCAP library).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_linux_ethernet.py b/gns3server/compute/dynamips/nios/nio_linux_ethernet.py
index b85eb4b81..591a187a9 100644
--- a/gns3server/compute/dynamips/nios/nio_linux_ethernet.py
+++ b/gns3server/compute/dynamips/nios/nio_linux_ethernet.py
@@ -18,7 +18,6 @@
Interface for Linux Ethernet NIOs (Linux only).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_null.py b/gns3server/compute/dynamips/nios/nio_null.py
index d47170329..26a77ff84 100644
--- a/gns3server/compute/dynamips/nios/nio_null.py
+++ b/gns3server/compute/dynamips/nios/nio_null.py
@@ -18,7 +18,6 @@
Interface for dummy NIOs (mostly for tests).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_tap.py b/gns3server/compute/dynamips/nios/nio_tap.py
index 47ac30494..b8fbed8ce 100644
--- a/gns3server/compute/dynamips/nios/nio_tap.py
+++ b/gns3server/compute/dynamips/nios/nio_tap.py
@@ -18,7 +18,6 @@
Interface for TAP NIOs (UNIX based OSes only).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_udp.py b/gns3server/compute/dynamips/nios/nio_udp.py
index 4419bf71f..a9ba056e5 100644
--- a/gns3server/compute/dynamips/nios/nio_udp.py
+++ b/gns3server/compute/dynamips/nios/nio_udp.py
@@ -18,7 +18,6 @@
Interface for UDP NIOs.
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_unix.py b/gns3server/compute/dynamips/nios/nio_unix.py
index 37fbc0858..39bbdc774 100644
--- a/gns3server/compute/dynamips/nios/nio_unix.py
+++ b/gns3server/compute/dynamips/nios/nio_unix.py
@@ -18,7 +18,6 @@
Interface for UNIX NIOs (Unix based OSes only).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nios/nio_vde.py b/gns3server/compute/dynamips/nios/nio_vde.py
index c44787a46..3c26cee82 100644
--- a/gns3server/compute/dynamips/nios/nio_vde.py
+++ b/gns3server/compute/dynamips/nios/nio_vde.py
@@ -18,7 +18,6 @@
Interface for VDE (Virtual Distributed Ethernet) NIOs (Unix based OSes only).
"""
-import asyncio
import logging
import uuid
diff --git a/gns3server/compute/dynamips/nodes/atm_switch.py b/gns3server/compute/dynamips/nodes/atm_switch.py
index 0c4591399..b6d55b523 100644
--- a/gns3server/compute/dynamips/nodes/atm_switch.py
+++ b/gns3server/compute/dynamips/nodes/atm_switch.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual ATM switch module ("atmsw").
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L593
"""
-import asyncio
import logging
import re
diff --git a/gns3server/compute/dynamips/nodes/bridge.py b/gns3server/compute/dynamips/nodes/bridge.py
index 57b74e5e2..82baf36f1 100644
--- a/gns3server/compute/dynamips/nodes/bridge.py
+++ b/gns3server/compute/dynamips/nodes/bridge.py
@@ -19,8 +19,6 @@ Interface for Dynamips NIO bridge module ("nio_bridge").
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L538
"""
-import asyncio
-
from .device import Device
diff --git a/gns3server/compute/dynamips/nodes/c1700.py b/gns3server/compute/dynamips/nodes/c1700.py
index 7ead2f8df..0f609c78a 100644
--- a/gns3server/compute/dynamips/nodes/c1700.py
+++ b/gns3server/compute/dynamips/nodes/c1700.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 1700 instances module ("c1700")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L428
"""
-import asyncio
import logging
from ..adapters.c1700_mb_1fe import C1700_MB_1FE
diff --git a/gns3server/compute/dynamips/nodes/c2600.py b/gns3server/compute/dynamips/nodes/c2600.py
index 89159f57d..d22ff6b31 100644
--- a/gns3server/compute/dynamips/nodes/c2600.py
+++ b/gns3server/compute/dynamips/nodes/c2600.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 2600 instances module ("c2600")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L404
"""
-import asyncio
import logging
from ..adapters.c2600_mb_1e import C2600_MB_1E
diff --git a/gns3server/compute/dynamips/nodes/c2691.py b/gns3server/compute/dynamips/nodes/c2691.py
index 94a6bc499..26c267aa9 100644
--- a/gns3server/compute/dynamips/nodes/c2691.py
+++ b/gns3server/compute/dynamips/nodes/c2691.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 2691 instances module ("c2691")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L387
"""
-import asyncio
import logging
from ..adapters.gt96100_fe import GT96100_FE
diff --git a/gns3server/compute/dynamips/nodes/c3600.py b/gns3server/compute/dynamips/nodes/c3600.py
index 87f4bc55f..ef9f5f9e2 100644
--- a/gns3server/compute/dynamips/nodes/c3600.py
+++ b/gns3server/compute/dynamips/nodes/c3600.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 3600 instances module ("c3600")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L366
"""
-import asyncio
import logging
from ..adapters.leopard_2fe import Leopard_2FE
diff --git a/gns3server/compute/dynamips/nodes/c3725.py b/gns3server/compute/dynamips/nodes/c3725.py
index 73f73831e..16986be1f 100644
--- a/gns3server/compute/dynamips/nodes/c3725.py
+++ b/gns3server/compute/dynamips/nodes/c3725.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 3725 instances module ("c3725")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L346
"""
-import asyncio
import logging
from ..adapters.gt96100_fe import GT96100_FE
diff --git a/gns3server/compute/dynamips/nodes/c3745.py b/gns3server/compute/dynamips/nodes/c3745.py
index 74ed2d1b7..a268a1d81 100644
--- a/gns3server/compute/dynamips/nodes/c3745.py
+++ b/gns3server/compute/dynamips/nodes/c3745.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 3745 instances module ("c3745")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L326
"""
-import asyncio
import logging
from ..adapters.gt96100_fe import GT96100_FE
diff --git a/gns3server/compute/dynamips/nodes/c7200.py b/gns3server/compute/dynamips/nodes/c7200.py
index 3cf37b44c..c1957ec5c 100644
--- a/gns3server/compute/dynamips/nodes/c7200.py
+++ b/gns3server/compute/dynamips/nodes/c7200.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Cisco 7200 instances module ("c7200")
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L294
"""
-import asyncio
import logging
from ..adapters.c7200_io_fe import C7200_IO_FE
diff --git a/gns3server/compute/dynamips/nodes/ethernet_switch.py b/gns3server/compute/dynamips/nodes/ethernet_switch.py
index 78af98783..770f83bee 100644
--- a/gns3server/compute/dynamips/nodes/ethernet_switch.py
+++ b/gns3server/compute/dynamips/nodes/ethernet_switch.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Ethernet switch module ("ethsw").
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L558
"""
-import asyncio
import logging
from gns3server.utils import parse_version
diff --git a/gns3server/compute/dynamips/nodes/frame_relay_switch.py b/gns3server/compute/dynamips/nodes/frame_relay_switch.py
index 5bed4fa17..71bd1e77c 100644
--- a/gns3server/compute/dynamips/nodes/frame_relay_switch.py
+++ b/gns3server/compute/dynamips/nodes/frame_relay_switch.py
@@ -19,7 +19,6 @@ Interface for Dynamips virtual Frame-Relay switch module.
http://github.com/GNS3/dynamips/blob/master/README.hypervisor#L642
"""
-import asyncio
import logging
from ..dynamips_error import DynamipsError
diff --git a/gns3server/compute/dynamips/nodes/router.py b/gns3server/compute/dynamips/nodes/router.py
index 809fab8d9..e479a291e 100644
--- a/gns3server/compute/dynamips/nodes/router.py
+++ b/gns3server/compute/dynamips/nodes/router.py
@@ -27,7 +27,6 @@ import logging
import os
import re
import shutil
-import sys
import time
log = logging.getLogger(__name__)
diff --git a/gns3server/compute/project.py b/gns3server/compute/project.py
index 3e4296110..713f221c5 100644
--- a/gns3server/compute/project.py
+++ b/gns3server/compute/project.py
@@ -27,7 +27,6 @@ from fastapi import HTTPException, status
from gns3server.compute.compute_error import ComputeError, ComputeForbiddenError, ComputeNotFoundError
-from ..config import Config
from ..utils.asyncio import wait_run_in_executor
from ..utils.path import check_path_allowed, get_default_project_directory
from .notification_manager import NotificationManager
diff --git a/gns3server/compute/virtualbox/virtualbox_vm.py b/gns3server/compute/virtualbox/virtualbox_vm.py
index 729455d3d..d5d747503 100644
--- a/gns3server/compute/virtualbox/virtualbox_vm.py
+++ b/gns3server/compute/virtualbox/virtualbox_vm.py
@@ -25,7 +25,6 @@ import os
import re
import shlex
import shutil
-import sys
import tempfile
import uuid
import xml.etree.ElementTree as ET
diff --git a/gns3server/controller/udp_link.py b/gns3server/controller/udp_link.py
index 1a543bcd3..2763c48e7 100644
--- a/gns3server/controller/udp_link.py
+++ b/gns3server/controller/udp_link.py
@@ -19,7 +19,7 @@
import asyncio
import logging
-from gns3server.utils.packet_filter_validation import FilterValidationError, validate_bpf_syntax
+from gns3server.utils.packet_filter_validation import validate_bpf_syntax
from .controller_error import ControllerError, ControllerNotFoundError
from .link import _UNSET, Link
diff --git a/gns3server/db/repositories/api_keys.py b/gns3server/db/repositories/api_keys.py
index 2f53824cb..4a82b8242 100644
--- a/gns3server/db/repositories/api_keys.py
+++ b/gns3server/db/repositories/api_keys.py
@@ -15,14 +15,12 @@
# along with this program. If not, see .
import logging
-from datetime import datetime, timezone
from typing import List, Optional, cast
from uuid import UUID
from sqlalchemy import delete, func, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
-from sqlalchemy.orm import selectinload
import gns3server.db.models as models
diff --git a/gns3server/db/repositories/templates.py b/gns3server/db/repositories/templates.py
index 591a72be7..cd3dec706 100644
--- a/gns3server/db/repositories/templates.py
+++ b/gns3server/db/repositories/templates.py
@@ -28,7 +28,6 @@ from sqlalchemy.orm import selectinload
from sqlalchemy.orm.session import make_transient
import gns3server.db.models as models
-from gns3server import schemas
from gns3server.controller.controller_error import ControllerNotFoundError
from gns3server.utils.image_inventory import image_lock
diff --git a/gns3server/db/tasks.py b/gns3server/db/tasks.py
index efa191762..bf10fa2f8 100644
--- a/gns3server/db/tasks.py
+++ b/gns3server/db/tasks.py
@@ -27,7 +27,6 @@ from alembic.util.exc import CommandError
from fastapi import FastAPI
from pydantic import ValidationError
from sqlalchemy import event
-from sqlalchemy.engine import Engine
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
diff --git a/gns3server/db_migrations/versions/7ceeddd9c9a8_init.py b/gns3server/db_migrations/versions/7ceeddd9c9a8_init.py
index 05570706e..15e187474 100644
--- a/gns3server/db_migrations/versions/7ceeddd9c9a8_init.py
+++ b/gns3server/db_migrations/versions/7ceeddd9c9a8_init.py
@@ -6,9 +6,6 @@ Create Date: 2023-01-11 08:55:25.116126
"""
-import sqlalchemy as sa
-from alembic import op
-
# revision identifiers, used by Alembic.
revision = "7ceeddd9c9a8"
down_revision = None
diff --git a/gns3server/main.py b/gns3server/main.py
index 5692fab79..70ed5ea47 100644
--- a/gns3server/main.py
+++ b/gns3server/main.py
@@ -32,8 +32,6 @@ import os
import resource
import sys
-import gns3server.utils.get_resource
-
def daemonize():
"""
diff --git a/gns3server/schemas/controller/computes.py b/gns3server/schemas/controller/computes.py
index 95eb09ecb..3db2656cc 100644
--- a/gns3server/schemas/controller/computes.py
+++ b/gns3server/schemas/controller/computes.py
@@ -18,7 +18,7 @@ import uuid
from enum import Enum
from typing import Any, List, Optional, Union
-from pydantic import BaseModel, ConfigDict, Field, SecretStr, field_validator, model_validator
+from pydantic import BaseModel, ConfigDict, Field, SecretStr, model_validator
from .base import DateTimeModelMixin
from .nodes import NodeType
diff --git a/gns3server/services/computes.py b/gns3server/services/computes.py
index c8d2b33fe..ab328ca04 100644
--- a/gns3server/services/computes.py
+++ b/gns3server/services/computes.py
@@ -23,7 +23,6 @@ from gns3server import schemas
from gns3server.controller import Controller
from gns3server.controller.controller_error import (
ControllerBadRequestError,
- ControllerForbiddenError,
ControllerNotFoundError,
)
from gns3server.db.repositories.computes import ComputesRepository
diff --git a/gns3server/utils/asyncio/input_stream.py b/gns3server/utils/asyncio/input_stream.py
index 90a3398b5..8268bf202 100644
--- a/gns3server/utils/asyncio/input_stream.py
+++ b/gns3server/utils/asyncio/input_stream.py
@@ -6,7 +6,6 @@ Parser for VT100 input stream.
import re
-import six
from prompt_toolkit.key_binding.input_processor import KeyPress
from prompt_toolkit.keys import Keys
diff --git a/gns3server/utils/asyncio/pool.py b/gns3server/utils/asyncio/pool.py
index 659222f6d..124038c5c 100644
--- a/gns3server/utils/asyncio/pool.py
+++ b/gns3server/utils/asyncio/pool.py
@@ -16,7 +16,6 @@
# along with this program. If not, see .
import asyncio
-import sys
class Pool:
diff --git a/gns3server/utils/asyncio/raw_command_server.py b/gns3server/utils/asyncio/raw_command_server.py
index 87e0dbb05..6bda6cc73 100644
--- a/gns3server/utils/asyncio/raw_command_server.py
+++ b/gns3server/utils/asyncio/raw_command_server.py
@@ -16,9 +16,7 @@
import asyncio
import asyncio.subprocess
-import copy
import logging
-import re
log = logging.getLogger(__name__)
diff --git a/gns3server/utils/packet_filter_validation.py b/gns3server/utils/packet_filter_validation.py
index 29febb2fb..39f994016 100644
--- a/gns3server/utils/packet_filter_validation.py
+++ b/gns3server/utils/packet_filter_validation.py
@@ -4,7 +4,7 @@ Packet filter parameter validation utilities.
import logging
import subprocess
-from typing import Any, Dict, List, Optional
+from typing import Any, Dict, List
log = logging.getLogger(__name__)
diff --git a/scripts/welcome.py b/scripts/welcome.py
index 9e9dc4c84..d9ecd21a0 100644
--- a/scripts/welcome.py
+++ b/scripts/welcome.py
@@ -25,7 +25,7 @@ import time
import urllib.request
from json import loads as convert
-from dialog import Dialog, PythonDialogBug
+from dialog import Dialog
class Welcome_dialog:
diff --git a/tests/agent/mcp/test_device_tools.py b/tests/agent/mcp/test_device_tools.py
index 07339cb5b..f44ebdae9 100644
--- a/tests/agent/mcp/test_device_tools.py
+++ b/tests/agent/mcp/test_device_tools.py
@@ -8,7 +8,6 @@ device_config_send / device_show_run / vpcs_config_set.
import json
from unittest.mock import MagicMock, patch
-import pytest
VPCS_MOD = "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko"
diff --git a/tests/agent/mcp/test_tool_params.py b/tests/agent/mcp/test_tool_params.py
index 05c7de063..e2287f8e1 100644
--- a/tests/agent/mcp/test_tool_params.py
+++ b/tests/agent/mcp/test_tool_params.py
@@ -10,8 +10,6 @@ This catches issues like:
"""
import ast
-import os
-import sys
from pathlib import Path
import pytest
diff --git a/tests/api/routes/compute/test_compute.py b/tests/api/routes/compute/test_compute.py
index 433b908c6..02925a5da 100644
--- a/tests/api/routes/compute/test_compute.py
+++ b/tests/api/routes/compute/test_compute.py
@@ -21,8 +21,6 @@ from fastapi import FastAPI, status
from httpx import AsyncClient
from gns3server.compute.project import Project
-from gns3server.config import Config
-from gns3server.schemas.config import ServerSettings
from gns3server.version import __version__
pytestmark = pytest.mark.asyncio
diff --git a/tests/api/routes/compute/test_dynamips_nodes.py b/tests/api/routes/compute/test_dynamips_nodes.py
index 60ea6acf6..8e77972fd 100644
--- a/tests/api/routes/compute/test_dynamips_nodes.py
+++ b/tests/api/routes/compute/test_dynamips_nodes.py
@@ -16,7 +16,6 @@
import os
import stat
-import sys
from unittest.mock import patch
import pytest
diff --git a/tests/api/routes/compute/test_ethernet_switch_nodes.py b/tests/api/routes/compute/test_ethernet_switch_nodes.py
index 7930b6bb4..b942876c3 100644
--- a/tests/api/routes/compute/test_ethernet_switch_nodes.py
+++ b/tests/api/routes/compute/test_ethernet_switch_nodes.py
@@ -22,7 +22,7 @@ from fastapi import FastAPI, status
from httpx import AsyncClient
from gns3server.compute.project import Project
-from tests.utils import AsyncioMagicMock, asyncio_patch
+from tests.utils import asyncio_patch
# The builtin Ethernet switch talks to uBridge (brctl/bridge modules) instead of
# the Dynamips hypervisor. These are the seams we stub so the routes can be
diff --git a/tests/api/routes/compute/test_notifications.py b/tests/api/routes/compute/test_notifications.py
index b0636d99c..752afdaf8 100644
--- a/tests/api/routes/compute/test_notifications.py
+++ b/tests/api/routes/compute/test_notifications.py
@@ -15,12 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import json
-
-import pytest
-
-from gns3server.compute.notification_manager import NotificationManager
-
# @pytest.mark.asyncio
# async def test_notification_ws(compute_api):
diff --git a/tests/api/routes/compute/test_projects.py b/tests/api/routes/compute/test_projects.py
index 30866aaa6..5d2c50cf2 100644
--- a/tests/api/routes/compute/test_projects.py
+++ b/tests/api/routes/compute/test_projects.py
@@ -16,7 +16,6 @@
import os
import uuid
-from unittest.mock import patch
import pytest
from fastapi import FastAPI, status
@@ -241,7 +240,6 @@ class TestBatchNIOEdgeCases:
Dynamips.create_nio is async (returns a coroutine) unlike the sync
base version. The batch handler must await it.
"""
- import asyncio as _asyncio
import inspect
class _FakeDynamips:
diff --git a/tests/api/routes/controller/test_acl.py b/tests/api/routes/controller/test_acl.py
index e8f015a7a..8cbb19655 100644
--- a/tests/api/routes/controller/test_acl.py
+++ b/tests/api/routes/controller/test_acl.py
@@ -21,7 +21,6 @@ from fastapi import FastAPI, status
from httpx import AsyncClient
from sqlalchemy.ext.asyncio import AsyncSession
-from gns3server.controller import Controller
from gns3server.db.repositories.rbac import RbacRepository
from gns3server.db.repositories.users import UsersRepository
from gns3server.schemas.controller.rbac import ACECreate
diff --git a/tests/api/routes/controller/test_templates.py b/tests/api/routes/controller/test_templates.py
index 34e60ef2d..932d0a9d4 100644
--- a/tests/api/routes/controller/test_templates.py
+++ b/tests/api/routes/controller/test_templates.py
@@ -17,7 +17,6 @@
import json
import os
-import shutil
import unittest.mock
import uuid
from pathlib import Path
diff --git a/tests/api/routes/test_index.py b/tests/api/routes/test_index.py
index 8a99c0d54..2fe907418 100644
--- a/tests/api/routes/test_index.py
+++ b/tests/api/routes/test_index.py
@@ -21,8 +21,6 @@ import pytest
from fastapi import FastAPI, status
from httpx import AsyncClient
-from gns3server.controller import Controller
-from gns3server.utils.get_resource import get_resource
from gns3server.version import __version__
pytestmark = pytest.mark.asyncio
diff --git a/tests/compute/dynamips/test_dynamips_manager.py b/tests/compute/dynamips/test_dynamips_manager.py
index 2d39592bf..7926e379a 100644
--- a/tests/compute/dynamips/test_dynamips_manager.py
+++ b/tests/compute/dynamips/test_dynamips_manager.py
@@ -18,7 +18,6 @@
import os
import tempfile
import uuid
-from unittest.mock import patch
import pytest
import pytest_asyncio
diff --git a/tests/compute/qemu/test_qemu_manager.py b/tests/compute/qemu/test_qemu_manager.py
index bab61bf17..da4e7e7a2 100644
--- a/tests/compute/qemu/test_qemu_manager.py
+++ b/tests/compute/qemu/test_qemu_manager.py
@@ -18,12 +18,11 @@ import os
import platform
import stat
import sys
-from unittest.mock import MagicMock, patch
+from unittest.mock import patch
import pytest
from gns3server.compute.qemu import Qemu
-from gns3server.compute.qemu.qemu_error import QemuError
from tests.utils import asyncio_patch
diff --git a/tests/compute/virtualbox/test_virtualbox_manager.py b/tests/compute/virtualbox/test_virtualbox_manager.py
index 4e60da7da..5aa1ddb28 100644
--- a/tests/compute/virtualbox/test_virtualbox_manager.py
+++ b/tests/compute/virtualbox/test_virtualbox_manager.py
@@ -18,7 +18,6 @@
import os
import stat
import tempfile
-from unittest.mock import patch
import pytest
import pytest_asyncio
diff --git a/tests/controller/test_controller.py b/tests/controller/test_controller.py
index 355576d3f..0914c5d3d 100644
--- a/tests/controller/test_controller.py
+++ b/tests/controller/test_controller.py
@@ -20,7 +20,7 @@ import json
import os
import socket
import uuid
-from unittest.mock import MagicMock, patch
+from unittest.mock import MagicMock
import pytest
from watchdog.events import DirCreatedEvent, FileCreatedEvent
diff --git a/tests/controller/test_gns3vm.py b/tests/controller/test_gns3vm.py
index d9832e4f5..f0f03a0d2 100644
--- a/tests/controller/test_gns3vm.py
+++ b/tests/controller/test_gns3vm.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import sys
import pytest
from pydantic import SecretStr
diff --git a/tests/controller/test_project.py b/tests/controller/test_project.py
index 3a5d3b175..4c87119fb 100644
--- a/tests/controller/test_project.py
+++ b/tests/controller/test_project.py
@@ -24,7 +24,6 @@ from uuid import uuid4
import pytest
import pytest_asyncio
-from gns3server.config import Config
from gns3server.controller.controller_error import (
ComputeConflictError,
ControllerError,
diff --git a/tests/controller/test_project_open.py b/tests/controller/test_project_open.py
index f3830bee3..bc3fe83fd 100644
--- a/tests/controller/test_project_open.py
+++ b/tests/controller/test_project_open.py
@@ -20,9 +20,7 @@ import os
import pytest
-from gns3server.controller.compute import Compute
from gns3server.controller.project import Project
-from tests.utils import asyncio_patch
@pytest.fixture
diff --git a/tests/controller/test_rbac.py b/tests/controller/test_rbac.py
index 6dd3b7dd2..4ea0de736 100644
--- a/tests/controller/test_rbac.py
+++ b/tests/controller/test_rbac.py
@@ -18,7 +18,6 @@
import uuid
import pytest
-import pytest_asyncio
from fastapi import FastAPI, status
from httpx import AsyncClient
from httpx_ws.transport import ASGIWebSocketTransport
diff --git a/tests/controller/test_snapshot.py b/tests/controller/test_snapshot.py
index 4e4a1a4a5..c180eb957 100644
--- a/tests/controller/test_snapshot.py
+++ b/tests/controller/test_snapshot.py
@@ -17,7 +17,7 @@
import os
from unittest import mock
-from unittest.mock import MagicMock, patch
+from unittest.mock import MagicMock
from uuid import uuid4
import pytest
diff --git a/tests/utils/asyncio/test_embed_shell.py b/tests/utils/asyncio/test_embed_shell.py
index 930151e10..8b2e48bc1 100644
--- a/tests/utils/asyncio/test_embed_shell.py
+++ b/tests/utils/asyncio/test_embed_shell.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import asyncio
# from gns3server.utils.asyncio.embed_shell import EmbedShell
diff --git a/tests/utils/test_images.py b/tests/utils/test_images.py
index 404540337..43568076b 100644
--- a/tests/utils/test_images.py
+++ b/tests/utils/test_images.py
@@ -17,7 +17,6 @@
import os
import sys
import threading
-from unittest.mock import patch
import pytest