style: sort imports in remaining tests and scripts

This commit is contained in:
Mark Paronyan 2026-09-30 20:51:25 +03:00
parent 6d16d923c7
commit 83e7fbe63b
22 changed files with 68 additions and 65 deletions

View File

@ -27,11 +27,11 @@ Usage:
python3 scripts/extract_mermaid.py docs/implemented/ my_svgs/
"""
import re
import os
import sys
import subprocess
import argparse
import os
import re
import subprocess
import sys
# Chrome binary path discovery
PUPPETEER_CACHE = os.environ.get(

View File

@ -20,8 +20,8 @@
import json
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
from gns3server.api.server import app
from gns3server.api.server import app
if __name__ == "__main__":
with open("../docs/openapi.json", "w") as fd:

View File

@ -15,15 +15,16 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import configparser
import locale
import re
import os
import re
import subprocess
import sys
import time
import subprocess
import configparser
from json import loads as convert
import urllib.request
from json import loads as convert
from dialog import Dialog, PythonDialogBug

View File

@ -6,9 +6,9 @@ device_config_send / device_show_run / vpcs_config_set.
"""
import json
from unittest.mock import MagicMock, patch
import pytest
from unittest.mock import MagicMock, patch
VPCS_MOD = "gns3server.agent.gns3_copilot.tools_v2.vpcs_tools_netmiko"

View File

@ -5,9 +5,9 @@ Tests that handlers correctly transform tool parameters into HTTP calls.
"""
import json
from unittest.mock import MagicMock, patch
import pytest
from unittest.mock import MagicMock, patch
def _mock_conn(json_result=None):
@ -222,6 +222,7 @@ class TestNode:
def test_create_batch_preserves_submission_order(self, ctx):
import time
from gns3server.agent.gns3_copilot.gns3_client.api_handlers import create_node_handler
with patch(f"{AH}._get_connector") as m:
@ -249,6 +250,7 @@ class TestNode:
def test_create_batch_default_names_created_sequentially(self, ctx):
import threading
import time
from gns3server.agent.gns3_copilot.gns3_client.api_handlers import create_node_handler
def _run(nodes_param):
@ -502,6 +504,7 @@ class TestLink:
def test_create_batch_preserves_submission_order(self, ctx):
import time
from gns3server.agent.gns3_copilot.gns3_client.api_handlers import create_link_handler
with patch(f"{AH}._get_connector") as m:

View File

@ -27,7 +27,6 @@ Tests for the shared GNS3 REST client layer (gns3_copilot.gns3_client):
import pytest
# ── project_inventory ────────────────────────────────────────────────────
@ -131,8 +130,8 @@ def test_device_ports_prefer_netmiko_field_over_tag(monkeypatch):
the tag stays as fallback when the field is missing.
"""
pytest.importorskip("jwt", reason="ai-features extras not installed")
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
from gns3server.agent.gns3_copilot import gns3_client
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
class _FakeTopology:
def _run(self, project_id=None, jwt_token=None, url=None):
@ -164,8 +163,8 @@ def test_device_ports_prefer_netmiko_field_over_tag(monkeypatch):
def test_device_ports_error_without_any_device_type(monkeypatch):
pytest.importorskip("jwt", reason="ai-features extras not installed")
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
from gns3server.agent.gns3_copilot import gns3_client
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
class _FakeTopology:
def _run(self, project_id=None, jwt_token=None, url=None):
@ -193,8 +192,8 @@ def test_device_ports_inject_default_credentials(monkeypatch):
keep inheriting from the group.
"""
pytest.importorskip("jwt", reason="ai-features extras not installed")
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
from gns3server.agent.gns3_copilot import gns3_client
from gns3server.agent.gns3_copilot.utils import get_gns3_device_port
class _FakeTopology:
def _run(self, project_id=None, jwt_token=None, url=None):

View File

@ -301,9 +301,9 @@ class TestReloadSkillsValidation:
"""
def test_invalid_injection_skill_is_dropped(self, tmp_path, monkeypatch):
from gns3server.config import Config
from gns3server.agent.gns3_copilot.skills import registry
from gns3server.agent.gns3_copilot.skills.manager import SkillsManager
from gns3server.config import Config
# SkillsManager derives its local path from <config_dir>/skills
injection_dir = tmp_path / "skills" / "injection"

View File

@ -1,35 +1,35 @@
import base64
import configparser
import os
import platform
import resource
import shutil
import stat
import sys
import tempfile
import uuid
from pathlib import Path
from typing import Any, AsyncGenerator
from unittest.mock import MagicMock, patch
import pytest
import asyncio
import pytest_asyncio
import tempfile
import shutil
import sys
import os
import uuid
import configparser
import base64
import stat
import resource
import platform
from fastapi import FastAPI
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from httpx import AsyncClient
from httpx_ws.transport import ASGIWebSocketTransport
from unittest.mock import MagicMock, patch
from pathlib import Path
from typing import AsyncGenerator, Any
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from gns3server.controller import Controller
from gns3server.config import Config
from gns3server import schemas
from gns3server.api.routes.controller.dependencies.database import get_db_session
from gns3server.compute import MODULES
from gns3server.compute.port_manager import PortManager
from gns3server.compute.project_manager import ProjectManager
from gns3server.db.models import Base, User, Compute
from gns3server.db.repositories.users import UsersRepository
from gns3server.config import Config
from gns3server.controller import Controller
from gns3server.db.models import Base, Compute, User
from gns3server.db.repositories.computes import ComputesRepository
from gns3server.api.routes.controller.dependencies.database import get_db_session
from gns3server import schemas
from gns3server.db.repositories.users import UsersRepository
from gns3server.schemas.controller.computes import Protocol
from gns3server.services import auth_service
from gns3server.services.authentication import DEFAULT_JWT_SECRET_KEY

View File

@ -6,10 +6,10 @@ This test connects to an already running GNS3 server and measures
the response time of the GET /projects endpoint.
"""
import asyncio
import time
import argparse
import asyncio
import sys
import time
import uuid
from pathlib import Path

View File

@ -10,12 +10,12 @@ Usage:
python telnet_race_condition_test.py --host 127.0.0.1 --port 2000 --connections 10
"""
import asyncio
import argparse
import asyncio
import logging
import sys
import time
from typing import List, Optional
import sys
# Configure logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")

View File

@ -17,13 +17,12 @@
import configparser
import os
import pytest
from gns3server.config import Config
from gns3server.config import ConfigConflictError
from gns3server.config import ServerConfig
import pytest
from pydantic import ValidationError
from gns3server.config import Config, ConfigConflictError, ServerConfig
def load_config(tmpdir, settings):
"""

View File

@ -16,13 +16,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import pytest
import locale
import tempfile
import pytest
from gns3server.config import Config
from gns3server.main import parse_arguments as parse
from gns3server.server import Server
from gns3server.config import Config
def test_locale_check():

View File

@ -21,13 +21,13 @@
#
# Read tests/topologies/README.rst for documentation
import os
import json
import pytest
import os
import shutil
import pytest
from gns3server.controller.topology import load_topology, GNS3_FILE_FORMAT_REVISION
from gns3server.controller.topology import GNS3_FILE_FORMAT_REVISION, load_topology
from gns3server.version import __version__
topologies_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "topologies")

View File

@ -14,9 +14,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import asyncio
import io
import types
import asyncio
import unittest.mock

View File

@ -6,7 +6,6 @@ import pytest
from gns3server.utils.asyncio.ssh_server import AsyncioSSHServer
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------

View File

@ -16,9 +16,10 @@
import asyncio
import pytest
from gns3server.utils.asyncio import wait_run_in_executor, subprocess_check_output, locking
from gns3server.utils.asyncio import locking, subprocess_check_output, wait_run_in_executor
@pytest.mark.asyncio

View File

@ -15,10 +15,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import pytest
import asyncio
from unittest.mock import MagicMock
import pytest
from gns3server.utils.file_watcher import FileWatcher

View File

@ -17,12 +17,12 @@
import os
import sys
import threading
import pytest
from unittest.mock import patch
import pytest
from gns3server.utils import force_unix_path
from gns3server.utils.images import md5sum, remove_checksum, images_directories, list_images
from gns3server.utils.images import images_directories, list_images, md5sum, remove_checksum
def test_images_directories(tmpdir, config):

View File

@ -14,15 +14,14 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
import socket
import collections
import socket
import sys
from unittest.mock import patch
import psutil
from gns3server.utils.interfaces import interfaces, is_interface_up, has_netmask
from gns3server.utils.interfaces import has_netmask, interfaces, is_interface_up
# psutil returns snicaddr namedtuples; mirror that shape for the mocks below.
snicaddr = collections.namedtuple("snicaddr", ["family", "address", "netmask", "broadcast", "ptp"])

View File

@ -14,8 +14,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import time
import asyncio
import time
import pytest

View File

@ -3,11 +3,12 @@ Unit tests for packet filter validation.
"""
import pytest
from gns3server.utils.packet_filter_validation import (
validate_filter_parameters,
validate_all_filters,
filter_inactive_filters,
FilterValidationError,
filter_inactive_filters,
validate_all_filters,
validate_filter_parameters,
)

View File

@ -16,8 +16,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import pytest
import pytest
from fastapi import HTTPException
from gns3server.utils.path import check_path_allowed, get_default_project_directory