diff --git a/pyserve/_wsgi_wrapper.py b/pyserve/_wsgi_wrapper.py index e5d0168..d2af9de 100644 --- a/pyserve/_wsgi_wrapper.py +++ b/pyserve/_wsgi_wrapper.py @@ -11,7 +11,9 @@ The WSGI app path is passed via environment variables: import importlib import os -from typing import Any, Callable +from typing import Any, Callable, Optional + +WSGI_ADAPTER: Optional[str] = None try: from a2wsgi import WSGIMiddleware @@ -27,7 +29,7 @@ except ImportError: WSGI_ADAPTER = None -def _load_wsgi_app() -> Callable: +def _load_wsgi_app() -> Callable[..., Any]: app_path = os.environ.get("PYSERVE_WSGI_APP") is_factory = os.environ.get("PYSERVE_WSGI_FACTORY", "0") == "1" @@ -51,8 +53,9 @@ def _load_wsgi_app() -> Callable: raise RuntimeError(f"Module '{module_name}' has no attribute '{attr_name}'") if is_factory: - return app_or_factory() - return app_or_factory + result: Callable[..., Any] = app_or_factory() + return result + return app_or_factory # type: ignore[return-value] def _create_asgi_app() -> Any: diff --git a/pyserve/extensions.py b/pyserve/extensions.py index cba5bdb..e099956 100644 --- a/pyserve/extensions.py +++ b/pyserve/extensions.py @@ -223,7 +223,7 @@ class ExtensionManager: try: from .process_extension import ProcessOrchestrationExtension - self.extension_registry["process_orchestration"] = ProcessOrchestrationExtension # type: ignore + self.extension_registry["process_orchestration"] = ProcessOrchestrationExtension except ImportError: pass # Optional dependency diff --git a/pyserve/server.py b/pyserve/server.py index f1ae8e7..0e037c0 100644 --- a/pyserve/server.py +++ b/pyserve/server.py @@ -152,9 +152,10 @@ class PyServeServer: def _create_app(self) -> None: from contextlib import asynccontextmanager + from typing import AsyncIterator @asynccontextmanager - async def lifespan(app: Starlette): + async def lifespan(app: Starlette) -> AsyncIterator[None]: await self._load_async_extensions() logger.info("Async extensions loaded") yield