Add .provides attribute to singleton providers

This commit is contained in:
Roman Mogylatov 2021-01-31 09:49:33 -05:00
parent 171afdad71
commit 0636f78d00
4 changed files with 2801 additions and 2722 deletions

View File

@ -7,6 +7,12 @@ that were made in every particular version.
From version 0.7.6 *Dependency Injector* framework strictly
follows `Semantic versioning`_
Development version
-------------------
- Add ``.provides`` attribute to ``Singleton`` and its subclasses.
It's a consistency change to make ``Singleton`` match ``Callable``
and ``Factory`` interfaces.
4.13.2
------
- Fix PyCharm typing warning "Expected type 'Optional[Iterable[ModuleType]]',

File diff suppressed because it is too large Load Diff

View File

@ -242,6 +242,8 @@ class BaseSingleton(Provider[T]):
@property
def cls(self) -> T: ...
@property
def provides(self) -> T: ...
@property
def args(self) -> Tuple[Injection]: ...
def add_args(self, *args: Injection) -> BaseSingleton[T]: ...
def set_args(self, *args: Injection) -> BaseSingleton[T]: ...

View File

@ -2283,7 +2283,12 @@ cdef class BaseSingleton(Provider):
@property
def cls(self):
"""Return provided type."""
return self.__instantiator.cls
return self.provides
@property
def provides(self):
"""Return provided type."""
return self.__instantiator.provides
@property
def args(self):
@ -2388,7 +2393,7 @@ cdef class BaseSingleton(Provider):
@property
def related(self):
"""Return related providers generator."""
yield from filter(is_provider, [self.__instantiator.provs])
yield from filter(is_provider, [self.__instantiator.provides])
yield from filter(is_provider, self.args)
yield from filter(is_provider, self.kwargs.values())
yield from filter(is_provider, self.attributes.values())