From 1c753aaaea7b1277e7bb5ceef57314bb17a2afb3 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Thu, 26 Nov 2020 11:55:55 +0100 Subject: [PATCH] Added logic to create application --- src/sh_edraft/configuration/__init__.py | 1 + src/sh_edraft/configuration/base/__init__.py | 1 + src/sh_edraft/hosting/application_host.py | 15 ++++++---- .../hosting/base/application_base.py | 16 ++++++++++ src/sh_edraft/hosting/hosting_environment.py | 9 +++--- .../service/base/service_provider_base.py | 4 --- src/sh_edraft/service/service_provider.py | 4 +++ src/tests_dev/__init__.py | 0 src/tests_dev/main.py | 30 +++++++++++++++++++ 9 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 src/sh_edraft/hosting/base/application_base.py create mode 100644 src/tests_dev/__init__.py create mode 100644 src/tests_dev/main.py diff --git a/src/sh_edraft/configuration/__init__.py b/src/sh_edraft/configuration/__init__.py index 10389a5b..0aaef2f3 100644 --- a/src/sh_edraft/configuration/__init__.py +++ b/src/sh_edraft/configuration/__init__.py @@ -20,6 +20,7 @@ __version__ = '2020.12.5' from collections import namedtuple # imports: +from .configuration import Configuration VersionInfo = namedtuple('VersionInfo', 'major minor micro') version_info = VersionInfo(major=2020, minor=12, micro=5) diff --git a/src/sh_edraft/configuration/base/__init__.py b/src/sh_edraft/configuration/base/__init__.py index b6b73bcd..a9585439 100644 --- a/src/sh_edraft/configuration/base/__init__.py +++ b/src/sh_edraft/configuration/base/__init__.py @@ -20,6 +20,7 @@ __version__ = '2020.12.5' from collections import namedtuple # imports: +from .configuration_base import ConfigurationBase from .configuration_model_base import ConfigurationModelBase VersionInfo = namedtuple('VersionInfo', 'major minor micro') diff --git a/src/sh_edraft/hosting/application_host.py b/src/sh_edraft/hosting/application_host.py index 0316a2f2..f0f611f2 100644 --- a/src/sh_edraft/hosting/application_host.py +++ b/src/sh_edraft/hosting/application_host.py @@ -1,17 +1,20 @@ from datetime import datetime +from sh_edraft.hosting.hosting_environment import HostingEnvironment from sh_edraft.hosting.base.application_host_base import ApplicationHostBase from sh_edraft.hosting.base.environment_base import EnvironmentBase +from sh_edraft.service.base import ServiceProviderBase from sh_edraft.service.service_provider import ServiceProvider class ApplicationHost(ApplicationHostBase): - def __init__(self, name: str, env: EnvironmentBase): + def __init__(self, name: str, args: list[str]): ApplicationHostBase.__init__(self) self._name: str = name - self._environment: EnvironmentBase = env + self._environment = HostingEnvironment() + self._args: list[str] = args self._services = ServiceProvider(self) self._start_time: datetime = datetime.now() self._end_time: datetime = datetime.now() @@ -24,10 +27,6 @@ class ApplicationHost(ApplicationHostBase): def environment(self) -> EnvironmentBase: return self._environment - @property - def services(self): - return self._services - @property def end_time(self) -> datetime: return self._end_time @@ -47,3 +46,7 @@ class ApplicationHost(ApplicationHostBase): @property def date_time_now(self) -> datetime: return datetime.now() + + @property + def services(self) -> ServiceProviderBase: + return self._services diff --git a/src/sh_edraft/hosting/base/application_base.py b/src/sh_edraft/hosting/base/application_base.py new file mode 100644 index 00000000..96997c6b --- /dev/null +++ b/src/sh_edraft/hosting/base/application_base.py @@ -0,0 +1,16 @@ +from abc import ABC, abstractmethod + + +class ApplicationBase(ABC): + + @abstractmethod + def __init__(self): pass + + @abstractmethod + def create_configuration(self): pass + + @abstractmethod + def create_services(self): pass + + @abstractmethod + def main(self): pass diff --git a/src/sh_edraft/hosting/hosting_environment.py b/src/sh_edraft/hosting/hosting_environment.py index c771cf81..763ef5cc 100644 --- a/src/sh_edraft/hosting/hosting_environment.py +++ b/src/sh_edraft/hosting/hosting_environment.py @@ -1,14 +1,16 @@ +from typing import Optional + from sh_edraft.hosting.base.environment_base import EnvironmentBase from sh_edraft.hosting.model.environment_name import EnvironmentName class HostingEnvironment(EnvironmentBase): - def __init__(self, name: EnvironmentName, crp: str): + def __init__(self, name: EnvironmentName = None, crp: str = None): EnvironmentBase.__init__(self) - self._name = name - self._content_root_path = crp + self._name: Optional[EnvironmentName] = name + self._content_root_path: Optional[str] = crp @property def name(self) -> EnvironmentName: @@ -17,4 +19,3 @@ class HostingEnvironment(EnvironmentBase): @property def content_root_path(self) -> str: return self._content_root_path - diff --git a/src/sh_edraft/service/base/service_provider_base.py b/src/sh_edraft/service/base/service_provider_base.py index 9deb0918..fe5e0f91 100644 --- a/src/sh_edraft/service/base/service_provider_base.py +++ b/src/sh_edraft/service/base/service_provider_base.py @@ -11,10 +11,6 @@ class ServiceProviderBase(ServiceBase): def __init__(self): ServiceBase.__init__(self) - self._transient_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} - self._scoped_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} - self._singleton_services: dict[Type[ServiceBase], ServiceBase] = {} - @property @abstractmethod def config(self): pass diff --git a/src/sh_edraft/service/service_provider.py b/src/sh_edraft/service/service_provider.py index 2467ec46..5c5b0819 100644 --- a/src/sh_edraft/service/service_provider.py +++ b/src/sh_edraft/service/service_provider.py @@ -16,6 +16,10 @@ class ServiceProvider(ServiceProviderBase): self._app_host: ApplicationHostBase = app_host self._config = Configuration() + self._transient_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} + self._scoped_services: dict[Type[ServiceBase], Type[ServiceBase]] = {} + self._singleton_services: dict[Type[ServiceBase], ServiceBase] = {} + @property def config(self): return self._config diff --git a/src/tests_dev/__init__.py b/src/tests_dev/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/tests_dev/main.py b/src/tests_dev/main.py new file mode 100644 index 00000000..1b9c7cd1 --- /dev/null +++ b/src/tests_dev/main.py @@ -0,0 +1,30 @@ +import sys + +from sh_edraft.hosting import ApplicationHost +from sh_edraft.hosting.base.application_base import ApplicationBase + + +class Program(ApplicationBase): + + def __init__(self): + ApplicationBase.__init__(self) + + self._app_host = ApplicationHost('CPL_DEV_Test', sys.argv) + self._config = self._app_host.services.config + self._services = self._app_host.services + + def create_configuration(self): + self._config.create() + + def create_services(self): + self._services.create() + + def main(self): + print('RUN') + + +if __name__ == '__main__': + program = Program() + program.create_configuration() + program.create_services() + program.main()