From 21ce578e9043f58dbaf499405be1ef4c4989459e Mon Sep 17 00:00:00 2001 From: Moctar Date: Sat, 6 Dec 2025 21:56:54 +0000 Subject: [PATCH] Fxing circular imports causing 'FastapiEndpoint' not recognized --- fastapi/models/fastapi_endpoint_demo.py | 13 +++++++++++-- fastapi/routers/demo_router.py | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fastapi/models/fastapi_endpoint_demo.py b/fastapi/models/fastapi_endpoint_demo.py index cf3df84c1..d18c9940a 100644 --- a/fastapi/models/fastapi_endpoint_demo.py +++ b/fastapi/models/fastapi_endpoint_demo.py @@ -11,12 +11,17 @@ from fastapi import APIRouter, Depends, HTTPException, status from fastapi.security import APIKeyHeader + from ..dependencies import ( authenticated_partner_from_basic_auth_user, authenticated_partner_impl, odoo_env, ) -from ..routers import demo_router, demo_router_doc + +# Add imports for TYPE_CHECKING +from typing import TYPE_CHECKING +if TYPE_CHECKING: + from ..routers import demo_router, demo_router_doc class FastapiEndpoint(models.Model): @@ -32,6 +37,8 @@ class FastapiEndpoint(models.Model): def _get_fastapi_routers(self) -> list[APIRouter]: if self.app == "demo": + # Import here to avoid circular import + from ..routers import demo_router return [demo_router] return super()._get_fastapi_routers() @@ -73,6 +80,8 @@ def _get_app(self): def _prepare_fastapi_app_params(self) -> dict[str, Any]: params = super()._prepare_fastapi_app_params() if self.app == "demo": + # Import here to avoid circular import + from ..routers import demo_router_doc tags_metadata = params.get("openapi_tags", []) or [] tags_metadata.append({"name": "demo", "description": demo_router_doc}) params["openapi_tags"] = tags_metadata @@ -101,4 +110,4 @@ def api_key_based_authenticated_partner_impl( raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect API Key" ) - return partner + return partner \ No newline at end of file diff --git a/fastapi/routers/demo_router.py b/fastapi/routers/demo_router.py index 36450057a..425b055f3 100644 --- a/fastapi/routers/demo_router.py +++ b/fastapi/routers/demo_router.py @@ -83,7 +83,7 @@ async def who_ami( dependencies=[Depends(authenticated_partner)], ) async def endpoint_app_info( - endpoint: Annotated[FastapiEndpoint, Depends(fastapi_endpoint)], + endpoint: Annotated["FastapiEndpoint", Depends(fastapi_endpoint)], ) -> DemoEndpointAppInfo: """Returns the current endpoint configuration""" # This method show you how to get access to current endpoint configuration