Skip to content

Commit 87a033c

Browse files
committed
Update typing and add typing tests
1 parent 109dd8b commit 87a033c

File tree

6 files changed

+29
-8
lines changed

6 files changed

+29
-8
lines changed

src/dependency_injector/providers.pyi

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,10 @@ class DependenciesContainer(Object):
158158

159159

160160
class Callable(Provider[T]):
161-
def __init__(self, provides: Optional[_Callable[..., T]] = None, *args: Injection, **kwargs: Injection) -> None: ...
161+
def __init__(self, provides: Optional[Union[_Callable[..., T], str]] = None, *args: Injection, **kwargs: Injection) -> None: ...
162162
@property
163163
def provides(self) -> Optional[_Callable[..., T]]: ...
164-
def set_provides(self, provides: Optional[_Callable[..., T]]) -> Callable[T]: ...
164+
def set_provides(self, provides: Optional[Union[_Callable[..., T], str]]) -> Callable[T]: ...
165165
@property
166166
def args(self) -> Tuple[Injection]: ...
167167
def add_args(self, *args: Injection) -> Callable[T]: ...
@@ -283,12 +283,12 @@ class Configuration(Object[Any]):
283283

284284
class Factory(Provider[T]):
285285
provided_type: Optional[Type]
286-
def __init__(self, provides: Optional[_Callable[..., T]] = None, *args: Injection, **kwargs: Injection) -> None: ...
286+
def __init__(self, provides: Optional[Union[_Callable[..., T], str]] = None, *args: Injection, **kwargs: Injection) -> None: ...
287287
@property
288288
def cls(self) -> Type[T]: ...
289289
@property
290290
def provides(self) -> Optional[_Callable[..., T]]: ...
291-
def set_provides(self, provides: Optional[_Callable[..., T]]) -> Factory[T]: ...
291+
def set_provides(self, provides: Optional[Union[_Callable[..., T], str]]) -> Factory[T]: ...
292292
@property
293293
def args(self) -> Tuple[Injection]: ...
294294
def add_args(self, *args: Injection) -> Factory[T]: ...
@@ -326,12 +326,12 @@ class FactoryAggregate(Aggregate[T]):
326326

327327
class BaseSingleton(Provider[T]):
328328
provided_type = Optional[Type]
329-
def __init__(self, provides: Optional[_Callable[..., T]] = None, *args: Injection, **kwargs: Injection) -> None: ...
329+
def __init__(self, provides: Optional[Union[_Callable[..., T], str]] = None, *args: Injection, **kwargs: Injection) -> None: ...
330330
@property
331331
def cls(self) -> Type[T]: ...
332332
@property
333333
def provides(self) -> Optional[_Callable[..., T]]: ...
334-
def set_provides(self, provides: Optional[_Callable[..., T]]) -> BaseSingleton[T]: ...
334+
def set_provides(self, provides: Optional[Union[_Callable[..., T], str]]) -> BaseSingleton[T]: ...
335335
@property
336336
def args(self) -> Tuple[Injection]: ...
337337
def add_args(self, *args: Injection) -> BaseSingleton[T]: ...
@@ -377,7 +377,7 @@ class AbstractSingleton(BaseSingleton[T]):
377377

378378

379379
class SingletonDelegate(Delegate):
380-
def __init__(self, factory: BaseSingleton): ...
380+
def __init__(self, singleton: BaseSingleton): ...
381381

382382

383383
class List(Provider[_List]):
@@ -410,7 +410,7 @@ class Resource(Provider[T]):
410410
@overload
411411
def __init__(self, provides: Optional[_Callable[..., _Coroutine[Injection, Injection, T]]] = None, *args: Injection, **kwargs: Injection) -> None: ...
412412
@overload
413-
def __init__(self, provides: Optional[_Callable[..., T]] = None, *args: Injection, **kwargs: Injection) -> None: ...
413+
def __init__(self, provides: Optional[Union[_Callable[..., T], str]] = None, *args: Injection, **kwargs: Injection) -> None: ...
414414
@property
415415
def provides(self) -> Optional[_Callable[..., Any]]: ...
416416
def set_provides(self, provides: Optional[Any]) -> Resource[T]: ...

tests/typing/callable.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,7 @@ async def _async9() -> None:
6666
provider11 = providers.Callable[Animal](Cat)
6767
provides11: Optional[Callable[..., Animal]] = provider11.provides
6868
assert provides11 is Cat
69+
70+
# Test 12: to check string imports
71+
provider12: providers.Callable[dict] = providers.Callable("builtins.dict")
72+
provider12.set_provides("builtins.dict")

tests/typing/coroutine.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ async def _coro() -> None:
99
# Test 1: to check the return type
1010
provider1 = providers.Coroutine(_coro)
1111
var1: Coroutine = provider1()
12+
13+
# Test 2: to check string imports
14+
provider2: providers.Coroutine[None] = providers.Coroutine("_coro")
15+
provider2.set_provides("_coro")

tests/typing/factory.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,7 @@ async def _async11() -> None:
9999
assert issubclass(provided_cls13, Animal)
100100
provided_provides13: Optional[Callable[..., Animal]] = provider13.provides
101101
assert provided_provides13 is not None and provided_provides13() == Cat()
102+
103+
# Test 14: to check string imports
104+
provider14: providers.Factory[dict] = providers.Factory("builtins.dict")
105+
provider14.set_provides("builtins.dict")

tests/typing/resource.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,8 @@ async def shutdown(self, resource: Optional[List[int]]) -> None:
9797
async def _provide8() -> None:
9898
var1: List[int] = await provider8() # type: ignore
9999
var2: List[int] = await provider8.async_()
100+
101+
102+
# Test 9: to check string imports
103+
provider9: providers.Resource[dict] = providers.Resource("builtins.dict")
104+
provider9.set_provides("builtins.dict")

tests/typing/singleton.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,7 @@ async def _async13() -> None:
8989
assert issubclass(provided_cls15, Animal)
9090
provided_provides15: Optional[Callable[..., Animal]] = provider15.provides
9191
assert provided_provides15 is not None and provided_provides15() == Cat()
92+
93+
# Test 16: to check string imports
94+
provider16: providers.Singleton[dict] = providers.Singleton("builtins.dict")
95+
provider16.set_provides("builtins.dict")

0 commit comments

Comments
 (0)