Skip to content

Commit a288bbe

Browse files
committed
Add providers.Factory
1 parent c01e032 commit a288bbe

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

pif/providers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,19 @@ def __call__(self) -> T:
5858
if self._result is UNSET:
5959
self._result = self._func(*self._args, **self._kwargs)
6060
return self._result
61+
62+
63+
class Factory[T](Provider):
64+
"""
65+
Generate a new instance every call.
66+
"""
67+
68+
__slots__ = ("_func", "_args", "_kwargs", "_depends")
69+
70+
def __init__(self, func: Callable[[...], T], *args, **kwargs):
71+
self._func = func
72+
self._args = args
73+
self._kwargs = kwargs
74+
75+
def __call__(self) -> T:
76+
return self._func(*self._args, **self._kwargs)

0 commit comments

Comments
 (0)