App deps check
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from typing import Union, Type, Callable
|
||||
from typing import Union, Type, Callable, Self
|
||||
|
||||
from cpl.core.log.logger import Logger
|
||||
from cpl.core.log.logger_abc import LoggerABC
|
||||
@@ -15,12 +15,17 @@ class ServiceCollection:
|
||||
_modules: dict[str, Callable] = {}
|
||||
|
||||
@classmethod
|
||||
def with_module(cls, func: Callable, name: str = None):
|
||||
def with_module(cls, func: Callable, name: str = None) -> type[Self]:
|
||||
cls._modules[func.__name__ if name is None else name] = func
|
||||
return cls
|
||||
|
||||
def __init__(self):
|
||||
self._service_descriptors: list[ServiceDescriptor] = []
|
||||
self._loaded_modules: set[str] = set()
|
||||
|
||||
@property
|
||||
def loaded_modules(self) -> set[str]:
|
||||
return self._loaded_modules
|
||||
|
||||
def _add_descriptor(self, service: Union[type, object], lifetime: ServiceLifetimeEnum, base_type: Callable = None):
|
||||
found = False
|
||||
@@ -45,15 +50,15 @@ class ServiceCollection:
|
||||
|
||||
return self
|
||||
|
||||
def add_singleton(self, service_type: T, service: Service = None):
|
||||
def add_singleton(self, service_type: T, service: Service = None) -> Self:
|
||||
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service)
|
||||
return self
|
||||
|
||||
def add_scoped(self, service_type: T, service: Service = None):
|
||||
def add_scoped(self, service_type: T, service: Service = None) -> Self:
|
||||
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.scoped, service)
|
||||
return self
|
||||
|
||||
def add_transient(self, service_type: T, service: Service = None):
|
||||
def add_transient(self, service_type: T, service: Service = None) -> Self:
|
||||
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.transient, service)
|
||||
return self
|
||||
|
||||
@@ -62,7 +67,7 @@ class ServiceCollection:
|
||||
ServiceProviderABC.set_global_provider(sp)
|
||||
return sp
|
||||
|
||||
def add_module(self, module: str | object):
|
||||
def add_module(self, module: str | object) -> Self:
|
||||
if not isinstance(module, str):
|
||||
module = module.__name__
|
||||
|
||||
@@ -70,7 +75,10 @@ class ServiceCollection:
|
||||
raise ValueError(f"Module {module} not found")
|
||||
|
||||
self._modules[module](self)
|
||||
if module not in self._loaded_modules:
|
||||
self._loaded_modules.add(module)
|
||||
return self
|
||||
|
||||
def add_logging(self):
|
||||
def add_logging(self) -> Self:
|
||||
self.add_transient(LoggerABC, Logger)
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user