From b95e22ecb3b5ffc5234d877d2a79195b04dd7e81 Mon Sep 17 00:00:00 2001 From: Leonardus Chen Date: Mon, 8 Dec 2025 14:02:10 +0700 Subject: [PATCH] Replace Coroutine typevar T with T_Any and retrofit assert_type on coroutine --- src/dependency_injector/providers.pyi | 2 +- tests/typing/coroutine.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index 8ba2e98d..29248d3e 100644 --- a/src/dependency_injector/providers.pyi +++ b/src/dependency_injector/providers.pyi @@ -197,7 +197,7 @@ class AbstractCallable(Callable[T]): class CallableDelegate(Delegate): def __init__(self, callable: Callable) -> None: ... -class Coroutine(Callable[T]): ... +class Coroutine(Callable[T_Any]): ... class DelegatedCoroutine(Coroutine[T]): ... class AbstractCoroutine(Coroutine[T]): diff --git a/tests/typing/coroutine.py b/tests/typing/coroutine.py index e6234077..190d771a 100644 --- a/tests/typing/coroutine.py +++ b/tests/typing/coroutine.py @@ -1,4 +1,5 @@ -from typing import Awaitable, Coroutine +from typing import Awaitable, Coroutine, Any +from typing_extensions import assert_type from dependency_injector import providers @@ -8,8 +9,10 @@ async def _coro() -> None: ... # Test 1: to check the return type provider1 = providers.Coroutine(_coro) -var1: Awaitable[None] = provider1() +var1 = provider1() +assert_type(var1, Coroutine[Any, Any, None]) # type: ignore[unused-coroutine] # Test 2: to check string imports -provider2: providers.Coroutine[None] = providers.Coroutine("_coro") +provider2 = providers.Coroutine("_coro") provider2.set_provides("_coro") +assert_type(provider2, providers.Coroutine[Any])