mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-01-31 03:36:41 +03:00
Implement add_injection() for Callable, Factory & Singleton providers
This commit is contained in:
parent
e2044cb560
commit
a29508cb7a
|
@ -76,8 +76,10 @@ class Callable(Provider):
|
|||
|
||||
self.provides = provides
|
||||
|
||||
self.args = _parse_args_injections(args)
|
||||
self.kwargs = _parse_kwargs_injections(args, kwargs)
|
||||
self.args = tuple()
|
||||
self.kwargs = tuple()
|
||||
|
||||
self.add_injections(*args, **kwargs)
|
||||
|
||||
super(Callable, self).__init__()
|
||||
|
||||
|
@ -89,6 +91,18 @@ class Callable(Provider):
|
|||
"""
|
||||
return self.args + self.kwargs
|
||||
|
||||
def add_injections(self, *args, **kwargs):
|
||||
"""Add provider injections.
|
||||
|
||||
:param args: Tuple of injections.
|
||||
:type args: tuple
|
||||
|
||||
:param kwargs: Dictionary of injections.
|
||||
:type kwargs: dict
|
||||
"""
|
||||
self.args += _parse_args_injections(args)
|
||||
self.kwargs += _parse_kwargs_injections(args, kwargs)
|
||||
|
||||
def _provide(self, *args, **kwargs):
|
||||
"""Return provided instance.
|
||||
|
||||
|
|
|
@ -106,13 +106,8 @@ class Factory(Callable):
|
|||
raise Error('{0} can provide only {1} instances'.format(
|
||||
self.__class__, self.__class__.provided_type))
|
||||
|
||||
self.attributes = tuple(injection
|
||||
for injection in args
|
||||
if is_attribute_injection(injection))
|
||||
|
||||
self.methods = tuple(injection
|
||||
for injection in args
|
||||
if is_method_injection(injection))
|
||||
self.attributes = tuple()
|
||||
self.methods = tuple()
|
||||
|
||||
super(Factory, self).__init__(provides, *args, **kwargs)
|
||||
|
||||
|
@ -126,6 +121,25 @@ class Factory(Callable):
|
|||
"""
|
||||
return self.args + self.kwargs + self.attributes + self.methods
|
||||
|
||||
def add_injections(self, *args, **kwargs):
|
||||
"""Add provider injections.
|
||||
|
||||
:param args: Tuple of injections.
|
||||
:type args: tuple
|
||||
|
||||
:param kwargs: Dictionary of injections.
|
||||
:type kwargs: dict
|
||||
"""
|
||||
self.attributes += tuple(injection
|
||||
for injection in args
|
||||
if is_attribute_injection(injection))
|
||||
|
||||
self.methods += tuple(injection
|
||||
for injection in args
|
||||
if is_method_injection(injection))
|
||||
|
||||
super(Factory, self).add_injections(*args, **kwargs)
|
||||
|
||||
def _provide(self, *args, **kwargs):
|
||||
"""Return provided instance.
|
||||
|
||||
|
|
|
@ -11,6 +11,12 @@ Development version
|
|||
-------------------
|
||||
- No features.
|
||||
|
||||
1.17.0
|
||||
------
|
||||
- Add ``add_injections()`` method to ``Callable``, ``DelegatedCallable``,
|
||||
``Factory``, ``DelegatedFactory``, ``Singleton`` and ``DelegatedSingleton``
|
||||
providers.
|
||||
|
||||
1.16.8
|
||||
------
|
||||
- Fix some typos in introduction section of documentation.
|
||||
|
|
Loading…
Reference in New Issue
Block a user