python-dependency-injector icon indicating copy to clipboard operation
python-dependency-injector copied to clipboard

providers.Resource is missing overload for AbstractContextManager and AbstractAsyncContextManager

Open leonarduschen opened this issue 2 months ago • 3 comments

# main.py

from collections.abc import Iterator
from contextlib import contextmanager
from typing import reveal_type

from dependency_injector import containers, providers


@contextmanager
def _get_my_int() -> Iterator[int]:
    print("Enter context")
    yield 1


class Container(containers.DeclarativeContainer):
    get_my_int = providers.Resource(_get_my_int)


container = Container()
my_int = container.get_my_int()
reveal_type(my_int)

Running python main.py:

Enter context
Runtime type is 'int'

Running mypy main.py

main.py:20: note: Revealed type is "contextlib._GeneratorContextManager[builtins.int, None, None]"
Success: no issues found in 1 source file

leonarduschen avatar Oct 08 '25 01:10 leonarduschen