From 323055c486c3c415a29cb686d173b983a3b0ea80 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Tue, 29 Sep 2026 22:02:20 +0300 Subject: [PATCH] fix(typing): resolve mypy errors in api.routes.controller.templates --- gns3server/api/routes/controller/templates.py | 20 ++++++++++--------- gns3server/db/repositories/images.py | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/gns3server/api/routes/controller/templates.py b/gns3server/api/routes/controller/templates.py index 84d55d693..3c35eea16 100644 --- a/gns3server/api/routes/controller/templates.py +++ b/gns3server/api/routes/controller/templates.py @@ -27,7 +27,7 @@ import logging log = logging.getLogger(__name__) from fastapi import APIRouter, Request, HTTPException, Depends, Response, status, Query -from typing import List, Optional +from typing import Any, List, Optional, Union from uuid import UUID from gns3server import schemas @@ -43,7 +43,9 @@ from .dependencies.authentication import get_current_active_user from .dependencies.rbac import has_privilege from .dependencies.database import get_repository -responses = {404: {"model": schemas.ErrorMessage, "description": "Could not find template"}} +responses: dict[int | str, dict[str, Any]] = { + 404: {"model": schemas.ErrorMessage, "description": "Could not find template"} +} router = APIRouter(responses=responses) @@ -57,7 +59,7 @@ router = APIRouter(responses=responses) async def create_template( template_create: schemas.TemplateCreate, templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)), -) -> schemas.Template: +) -> dict: """ Create a new template. @@ -80,7 +82,7 @@ async def get_template( request: Request, response: Response, templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)), -) -> schemas.Template: +) -> Union[dict, Response]: """ Return a template. @@ -108,7 +110,7 @@ async def update_template( template_id: UUID, template_update: schemas.TemplateUpdate, templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)), -) -> schemas.Template: +) -> dict: """ Update a template. @@ -125,7 +127,7 @@ async def delete_template( template_id: UUID, prune_images: Optional[bool] = False, templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)), - images_repo: RbacRepository = Depends(get_repository(ImagesRepository)), + images_repo: ImagesRepository = Depends(get_repository(ImagesRepository)), rbac_repo: RbacRepository = Depends(get_repository(RbacRepository)), ) -> None: """ @@ -155,7 +157,7 @@ async def delete_template( if str(template.template_id) != str(template_id) ] if other_templates: - template_names = ", ".join([template.name for template in other_templates]) + template_names = ", ".join([str(template.name) for template in other_templates]) raise ControllerError(f"Image '{image.path}' is used by one or more templates: {template_names}") if referenced_filenames is None: @@ -193,7 +195,7 @@ async def get_templates( templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)), current_user: schemas.User = Depends(get_current_active_user), tags: Optional[List[str]] = Query(None, description="Filter by tags (e.g. tags=vendor:cisco&tags=model:7200)"), -) -> List[schemas.Template]: +) -> List[dict]: """ Return all templates. @@ -244,7 +246,7 @@ async def get_templates( ) async def duplicate_template( template_id: UUID, templates_repo: TemplatesRepository = Depends(get_repository(TemplatesRepository)) -) -> schemas.Template: +) -> dict: """ Duplicate a template. diff --git a/gns3server/db/repositories/images.py b/gns3server/db/repositories/images.py index 69c3aa4fc..5f9b35520 100644 --- a/gns3server/db/repositories/images.py +++ b/gns3server/db/repositories/images.py @@ -79,7 +79,7 @@ class ImagesRepository(BaseRepository): result = await self._db_session.execute(query) return list(result.scalars().all()) - async def get_image_templates(self, image_id: int) -> Optional[List[models.Template]]: + async def get_image_templates(self, image_id: int) -> List[models.Template]: """ Get all templates that an image belongs to. """