style: sort imports in compute, db and services modules

This commit is contained in:
Mark Paronyan committed 2026-10-02 12:43:26 +03:00
1 parent 38e9ddca09
commit b9cdac487c
42 files changed
+247 -256

No files matched your search

+7 -7
View File
@@ -15,18 +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/>.
from .base import Base
from .acl import ACE
from .users import User, UserGroup
from .roles import Role
from .privileges import Privilege
from .api_keys import ApiKey
from .base import Base
from .computes import Compute
from .images import Image, ImageSyncJob
from .pools import Resource, ResourcePool
from .llm_model_configs import LLMModelConfig
from .api_keys import ApiKey
from .pools import Resource, ResourcePool
from .privileges import Privilege
from .roles import Role
from .templates import (
Template,
CloudTemplate,
DockerTemplate,
DynamipsTemplate,
@@ -34,7 +32,9 @@ from .templates import (
EthernetSwitchTemplate,
IOUTemplate,
QemuTemplate,
Template,
VirtualBoxTemplate,
VMwareTemplate,
VPCSTemplate,
)
from .users import User, UserGroup
+4 -4
View File
@@ -15,12 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from sqlalchemy import Column, String, Boolean, ForeignKey, CheckConstraint
import logging
from sqlalchemy import Boolean, CheckConstraint, Column, ForeignKey, String
from sqlalchemy.orm import relationship
from .base import BaseTable, generate_uuid, GUID
import logging
from .base import GUID, BaseTable, generate_uuid
log = logging.getLogger(__name__)
+2 -2
View File
@@ -16,10 +16,10 @@
import uuid
from sqlalchemy import Column, String, Boolean, DateTime, ForeignKey, func
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, String, func
from sqlalchemy.orm import Mapped, mapped_column
from .base import BaseTable, GUID
from .base import GUID, BaseTable
class ApiKey(BaseTable):
+1 -1
View File
@@ -21,9 +21,9 @@ from typing import Optional
from fastapi.encoders import jsonable_encoder
from sqlalchemy import Column, DateTime, func, inspect
from sqlalchemy.types import TypeDecorator, CHAR, VARCHAR
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy.types import CHAR, VARCHAR, TypeDecorator
class Base(DeclarativeBase):
+2 -2
View File
@@ -15,9 +15,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/>.
from sqlalchemy import Column, String, Integer
from sqlalchemy import Column, Integer, String
from .base import BaseTable, GUID
from .base import GUID, BaseTable
class Compute(BaseTable):
+2 -3
View File
@@ -15,11 +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/>.
from sqlalchemy import Table, Column, String, ForeignKey, BigInteger, Integer, DateTime, JSON, Boolean
from sqlalchemy import JSON, BigInteger, Boolean, Column, DateTime, ForeignKey, Integer, String, Table
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import Base, BaseTable, GUID
from .base import GUID, Base, BaseTable
image_template_map = Table(
"image_template_map",
+4 -4
View File
@@ -15,12 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from sqlalchemy import Column, Boolean, ForeignKey, CheckConstraint, Index, Integer, String, text, JSON
import logging
from sqlalchemy import JSON, Boolean, CheckConstraint, Column, ForeignKey, Index, Integer, String, text
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import BaseTable, generate_uuid, GUID
import logging
from .base import GUID, BaseTable, generate_uuid
log = logging.getLogger(__name__)
+3 -4
View File
@@ -15,14 +15,13 @@
# 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 logging
import uuid
from sqlalchemy import Table, Column, String, ForeignKey
from sqlalchemy import Column, ForeignKey, String, Table
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import Base, BaseTable, generate_uuid, GUID
import logging
from .base import GUID, Base, BaseTable, generate_uuid
log = logging.getLogger(__name__)
+4 -4
View File
@@ -15,12 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from sqlalchemy import Table, Column, String, ForeignKey, event
import logging
from sqlalchemy import Column, ForeignKey, String, Table, event
from sqlalchemy.orm import relationship
from .base import Base, BaseTable, generate_uuid, GUID
import logging
from .base import GUID, Base, BaseTable, generate_uuid
log = logging.getLogger(__name__)
+3 -4
View File
@@ -15,16 +15,15 @@
# 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 logging
import uuid
from sqlalchemy import Column, String, Boolean, event
from sqlalchemy import Boolean, Column, String, event
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import BaseTable, generate_uuid, GUID
from .base import GUID, BaseTable, generate_uuid
from .privileges import privilege_role_map
import logging
log = logging.getLogger(__name__)
+2 -2
View File
@@ -19,10 +19,10 @@
import uuid
from typing import Optional
from sqlalchemy import Boolean, Column, String, Integer, Float, ForeignKey, JSON
from sqlalchemy import JSON, Boolean, Column, Float, ForeignKey, Integer, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import BaseTable, generate_uuid, GUID
from .base import GUID, BaseTable, generate_uuid
from .images import image_template_map
+4 -5
View File
@@ -15,19 +15,18 @@
# 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 logging
import uuid
from datetime import datetime
from typing import Optional
from sqlalchemy import Table, Boolean, Column, Integer, String, DateTime, ForeignKey, event
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Table, event
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import Base, BaseTable, generate_uuid, GUID
from gns3server.config import Config
from gns3server.services import auth_service
import logging
import uuid
from .base import GUID, Base, BaseTable, generate_uuid
log = logging.getLogger(__name__)
+6 -5
View File
@@ -14,18 +14,19 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from uuid import UUID
from typing import Optional, List, cast
import logging
from datetime import datetime, timezone
from sqlalchemy import select, update, delete, func
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
from .base import BaseRepository
import gns3server.db.models as models
import logging
from .base import BaseRepository
log = logging.getLogger(__name__)
+6 -6
View File
@@ -15,18 +15,18 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from typing import List, Optional, Union, cast
from uuid import UUID
from typing import Optional, List, Union
from sqlalchemy import select, update, delete
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.engine import CursorResult
from typing import cast
from .base import BaseRepository
from sqlalchemy import delete, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
import gns3server.db.models as models
from gns3server import schemas
from .base import BaseRepository
class ComputesRepository(BaseRepository):
def __init__(self, db_session: AsyncSession) -> None:
+8 -9
View File
@@ -15,23 +15,22 @@
# 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 os
import asyncio
import logging
import os
from datetime import datetime, timezone
from typing import Callable, List, Optional, cast
from typing import Optional, List, Callable, cast
from sqlalchemy import select, delete, update
from sqlalchemy import delete, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.asyncio import AsyncSession
import gns3server.db.models as models
from gns3server.utils.image_inventory import fingerprint, image_lock, normalized_path
from .base import BaseRepository
import gns3server.db.models as models
import logging
log = logging.getLogger(__name__)
@@ -73,7 +72,7 @@ class ImagesRepository(BaseRepository):
async def is_usable(self, image: models.Image) -> bool:
"""Validate a checksum candidate without trusting stale catalog/sidecar data."""
from gns3server.utils.images import inspect_image_file, InvalidImageError
from gns3server.utils.images import InvalidImageError, inspect_image_file
try:
current = await asyncio.to_thread(fingerprint, image.path)
@@ -15,16 +15,17 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from uuid import UUID
from typing import Optional, List, Dict, Any, cast
from sqlalchemy import select, update, delete, and_
from sqlalchemy.engine import CursorResult
from datetime import datetime
import logging
from datetime import datetime
from typing import Any, Dict, List, Optional, cast
from uuid import UUID
from sqlalchemy import and_, delete, select, update
from sqlalchemy.engine import CursorResult
import gns3server.db.models as models
from .base import BaseRepository
import gns3server.db.models as models
log = logging.getLogger(__name__)
+5 -5
View File
@@ -15,19 +15,19 @@
# 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 logging
from typing import List, Optional, Union, cast
from uuid import UUID
from typing import Optional, List, Union, cast
from sqlalchemy import select, update, delete
from sqlalchemy import delete, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from .base import BaseRepository
import gns3server.db.models as models
from gns3server import schemas
import logging
from .base import BaseRepository
log = logging.getLogger(__name__)
+6 -6
View File
@@ -15,20 +15,20 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from uuid import UUID
import logging
from typing import List, Optional, Union, cast
from urllib.parse import urlparse
from typing import Optional, List, Union, cast
from sqlalchemy import select, update, delete
from uuid import UUID
from sqlalchemy import delete, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from .base import BaseRepository
import gns3server.db.models as models
from gns3server import schemas
import logging
from .base import BaseRepository
log = logging.getLogger(__name__)
+6 -6
View File
@@ -15,25 +15,25 @@
# 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 logging
import os
import uuid
import logging
from typing import List, Optional, Union, cast
from uuid import UUID
from typing import List, Union, Optional, cast
from sqlalchemy import select, delete
from sqlalchemy import delete, select
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from sqlalchemy.orm.session import make_transient
from .base import BaseRepository
import gns3server.db.models as models
from gns3server import schemas
from gns3server.utils.image_inventory import image_lock
from gns3server.controller.controller_error import ControllerNotFoundError
from .base import BaseRepository
log = logging.getLogger(__name__)
TEMPLATE_TYPE_TO_MODEL = {
+5 -5
View File
@@ -15,20 +15,20 @@
# 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 logging
from typing import List, Optional, Union, cast
from uuid import UUID
from typing import Optional, List, Union, cast
from sqlalchemy import select, update, delete, func
from sqlalchemy import delete, func, select, update
from sqlalchemy.engine import CursorResult
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from .base import BaseRepository
import gns3server.db.models as models
from gns3server import schemas
from gns3server.services import auth_service
import logging
from .base import BaseRepository
log = logging.getLogger(__name__)
+12 -11
View File
@@ -15,30 +15,29 @@
# 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 logging
import os
from typing import List, Optional
import sqlalchemy as sa
from alembic import command, config
from alembic.runtime.migration import MigrationContext
from alembic.script import ScriptDirectory
from alembic.util.exc import CommandError
from fastapi import FastAPI
from pydantic import ValidationError
from typing import List, Optional
from sqlalchemy import event
from sqlalchemy.engine import Engine
from sqlalchemy.exc import SQLAlchemyError
import sqlalchemy as sa
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from alembic import command, config
from alembic.script import ScriptDirectory
from alembic.runtime.migration import MigrationContext
from alembic.util.exc import CommandError
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from gns3server import schemas
from gns3server.config import Config
from gns3server.db.repositories.computes import ComputesRepository
from gns3server.db.repositories.images import ImagesRepository
from gns3server.utils.images import read_image_info
from gns3server import schemas
from .models import Base
from gns3server.config import Config
import logging
log = logging.getLogger(__name__)
@@ -141,6 +140,7 @@ async def connect_to_db(app: FastAPI) -> None:
# Ensure the additive schema before stamping the current head.
def upgrade_inventory(connection):
from alembic.operations import Operations
from gns3server.db_migrations.versions.d9e8a2b7c401_image_inventory_reconciliation import (
upgrade,
)
@@ -230,6 +230,7 @@ async def get_user_llm_config_full(user_id: str, app: FastAPI) -> Optional[dict]
or None if not found.
"""
from uuid import UUID
from gns3server.db.repositories.llm_model_configs import LLMModelConfigsRepository
from gns3server.utils.encryption import decrypt, is_encrypted