From 268d56c3480beb5207014df79c3335d5deb0a72a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 14 Mar 2021 16:25:11 +0100 Subject: [PATCH] Added comments to dependency_injection --- src/cpl/dependency_injection/service_abc.py | 6 +- .../dependency_injection/service_provider.py | 9 +++ .../service_provider_abc.py | 64 ++++++++++++++++--- 3 files changed, 70 insertions(+), 9 deletions(-) diff --git a/src/cpl/dependency_injection/service_abc.py b/src/cpl/dependency_injection/service_abc.py index 6b79e64d..a0da1277 100644 --- a/src/cpl/dependency_injection/service_abc.py +++ b/src/cpl/dependency_injection/service_abc.py @@ -4,4 +4,8 @@ from abc import ABC, abstractmethod class ServiceABC(ABC): @abstractmethod - def __init__(self): pass + def __init__(self): + """ + ABC to represent a service + """ + pass diff --git a/src/cpl/dependency_injection/service_provider.py b/src/cpl/dependency_injection/service_provider.py index c1afd29c..b9d1f2e2 100644 --- a/src/cpl/dependency_injection/service_provider.py +++ b/src/cpl/dependency_injection/service_provider.py @@ -14,6 +14,10 @@ from cpl.environment.environment_abc import ApplicationEnvironmentABC class ServiceProvider(ServiceProviderABC): def __init__(self, app_runtime: ApplicationRuntimeABC): + """ + Service for service providing + :param app_runtime: + """ ServiceProviderABC.__init__(self) self._app_runtime: ApplicationRuntimeABC = app_runtime self._database_context: Optional[DatabaseContextABC] = None @@ -23,6 +27,11 @@ class ServiceProvider(ServiceProviderABC): self._singleton_services: dict[Type[ServiceABC], Callable[ServiceABC], ServiceABC] = {} def _create_instance(self, service: Union[Callable[ServiceABC], ServiceABC]) -> Callable[ServiceABC]: + """ + Creates an instance of given type + :param service: + :return: + """ sig = signature(service.__init__) params = [] for param in sig.parameters.items(): diff --git a/src/cpl/dependency_injection/service_provider_abc.py b/src/cpl/dependency_injection/service_provider_abc.py index 059dd6f3..6ab46110 100644 --- a/src/cpl/dependency_injection/service_provider_abc.py +++ b/src/cpl/dependency_injection/service_provider_abc.py @@ -9,25 +9,73 @@ from cpl.dependency_injection.service_abc import ServiceABC class ServiceProviderABC(ABC): @abstractmethod - def __init__(self): pass + def __init__(self): + """ + ABC for service providing + """ + pass @abstractmethod - def add_db_context(self, db_context: Type[DatabaseContextABC]): pass + def add_db_context(self, db_context: Type[DatabaseContextABC]): + """ + Adds database context + :param db_context: + :return: + """ + pass @abstractmethod - def get_db_context(self) -> Callable[DatabaseContextABC]: pass + def get_db_context(self) -> Callable[DatabaseContextABC]: + """" + Returns database context + :return Callable[DatabaseContextABC]: + """ + pass @abstractmethod - def add_transient(self, service_type: Type, service: Callable = None): pass + def add_transient(self, service_type: Type, service: Callable = None): + """ + Adds a service with transient lifetime + :param service_type: + :param service: + :return: + """ + pass @abstractmethod - def add_scoped(self, service_type: Type, service: Callable = None): pass + def add_scoped(self, service_type: Type, service: Callable = None): + """ + Adds a service with scoped lifetime + :param service_type: + :param service: + :return: + """ + pass @abstractmethod - def add_singleton(self, service_type: Type, service: Callable = None): pass + def add_singleton(self, service_type: Type, service: Callable = None): + """ + Adds a service with singleton lifetime + :param service_type: + :param service: + :return: + """ + pass @abstractmethod - def get_service(self, instance_type: Type) -> Callable[ServiceABC]: pass + def get_service(self, instance_type: Type) -> Callable[ServiceABC]: + """ + Returns instance of given type + :param instance_type: + :return: + """ + pass @abstractmethod - def remove_service(self, instance_type: type): pass + def remove_service(self, instance_type: type): + """ + Removes service + :param instance_type: + :return: + """ + pass