From ab7ff7da936e822c43cc1bc1e87ed43c645dfdf8 Mon Sep 17 00:00:00 2001 From: edraft Date: Wed, 17 Sep 2025 20:54:21 +0200 Subject: [PATCH] Made startup/app extensions static --- .../cpl/application/abc/application_extension_abc.py | 5 ++--- src/cpl-application/cpl/application/abc/startup_abc.py | 9 ++++----- .../cpl/application/abc/startup_extension_abc.py | 9 ++++----- .../cpl/application/application_builder.py | 8 +++----- tests/custom/database/src/startup.py | 8 ++++---- tests/custom/general/src/general/startup.py | 10 +++++----- tests/custom/general/src/general/test_extension.py | 5 ++--- .../general/src/general/test_startup_extension.py | 10 ++++------ 8 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/cpl-application/cpl/application/abc/application_extension_abc.py b/src/cpl-application/cpl/application/abc/application_extension_abc.py index 3292db3e..e4b36d43 100644 --- a/src/cpl-application/cpl/application/abc/application_extension_abc.py +++ b/src/cpl-application/cpl/application/abc/application_extension_abc.py @@ -4,8 +4,7 @@ from cpl.dependency import ServiceProviderABC class ApplicationExtensionABC(ABC): - @abstractmethod - def __init__(self): ... + @staticmethod @abstractmethod - def run(self, services: ServiceProviderABC): ... + def run(services: ServiceProviderABC): ... diff --git a/src/cpl-application/cpl/application/abc/startup_abc.py b/src/cpl-application/cpl/application/abc/startup_abc.py index 24612d81..e5edc604 100644 --- a/src/cpl-application/cpl/application/abc/startup_abc.py +++ b/src/cpl-application/cpl/application/abc/startup_abc.py @@ -6,15 +6,14 @@ from cpl.dependency.service_collection import ServiceCollection class StartupABC(ABC): r"""ABC for the startup class""" + @staticmethod @abstractmethod - def __init__(self): ... - - @abstractmethod - def configure_configuration(self): + def configure_configuration(): r"""Creates configuration of application""" + @staticmethod @abstractmethod - def configure_services(self, service: ServiceCollection): + def configure_services(service: ServiceCollection): r"""Creates service provider Parameter: diff --git a/src/cpl-application/cpl/application/abc/startup_extension_abc.py b/src/cpl-application/cpl/application/abc/startup_extension_abc.py index e0efb0ac..c0827605 100644 --- a/src/cpl-application/cpl/application/abc/startup_extension_abc.py +++ b/src/cpl-application/cpl/application/abc/startup_extension_abc.py @@ -6,15 +6,14 @@ from cpl.dependency import ServiceCollection class StartupExtensionABC(ABC): r"""ABC for startup extension classes""" + @staticmethod @abstractmethod - def __init__(self): ... - - @abstractmethod - def configure_configuration(self): + def configure_configuration(): r"""Creates configuration of application""" + @staticmethod @abstractmethod - def configure_services(self, services: ServiceCollection): + def configure_services(services: ServiceCollection): r"""Creates service provider Parameter: services: :class:`cpl.dependency.service_collection` diff --git a/src/cpl-application/cpl/application/application_builder.py b/src/cpl-application/cpl/application/application_builder.py index 74010897..37ff65fa 100644 --- a/src/cpl-application/cpl/application/application_builder.py +++ b/src/cpl-application/cpl/application/application_builder.py @@ -35,7 +35,7 @@ class ApplicationBuilder: return self._services.build() def use_startup(self, startup: Type[StartupABC]) -> "ApplicationBuilder": - self._startup = startup() + self._startup = startup return self def use_extension( @@ -50,8 +50,7 @@ class ApplicationBuilder: return self def build(self) -> ApplicationABC: - for ex in self._startup_extensions: - extension = ex() + for extension in self._startup_extensions: Host.run(extension.configure_configuration) Host.run(extension.configure_services, self._services) @@ -59,8 +58,7 @@ class ApplicationBuilder: Host.run(self._startup.configure_configuration) Host.run(self._startup.configure_services, self._services) - for ex in self._app_extensions: - extension = ex() + for extension in self._app_extensions: Host.run(extension.run, self.service_provider) return self._app(self.service_provider) diff --git a/tests/custom/database/src/startup.py b/tests/custom/database/src/startup.py index 137a7698..74f75761 100644 --- a/tests/custom/database/src/startup.py +++ b/tests/custom/database/src/startup.py @@ -16,15 +16,15 @@ from model.user_dao import UserDao class Startup(StartupABC): - def __init__(self): - StartupABC.__init__(self) - async def configure_configuration(self): + @staticmethod + async def configure_configuration(): Configuration.add_json_file(f"appsettings.json") Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json") Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) - async def configure_services(self, services: ServiceCollection): + @staticmethod + async def configure_services(services: ServiceCollection): services.add_module(mysql) services.add_module(auth) services.add_module(permission) diff --git a/tests/custom/general/src/general/startup.py b/tests/custom/general/src/general/startup.py index 59f8cc83..5ba00057 100644 --- a/tests/custom/general/src/general/startup.py +++ b/tests/custom/general/src/general/startup.py @@ -1,22 +1,22 @@ from cpl import mail from cpl.application.abc import StartupABC from cpl.core.configuration import Configuration -from cpl.dependency import ServiceCollection, ServiceProviderABC from cpl.core.environment import Environment from cpl.core.pipes import IPAddressPipe +from cpl.dependency import ServiceCollection from test_service import TestService class Startup(StartupABC): - def __init__(self): - StartupABC.__init__(self) - def configure_configuration(selft): + @staticmethod + def configure_configuration(): Configuration.add_json_file(f"appsettings.json") Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json") Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True) - def configure_services(self, services: ServiceCollection): + @staticmethod + def configure_services(services: ServiceCollection): services.add_logging() services.add_module(mail) services.add_transient(IPAddressPipe) diff --git a/tests/custom/general/src/general/test_extension.py b/tests/custom/general/src/general/test_extension.py index fdee87bc..86b23a48 100644 --- a/tests/custom/general/src/general/test_extension.py +++ b/tests/custom/general/src/general/test_extension.py @@ -4,8 +4,7 @@ from cpl.dependency import ServiceProviderABC class TestExtension(ApplicationExtensionABC): - def __init__(self): - ApplicationExtensionABC.__init__(self) - def run(self, services: ServiceProviderABC): + @staticmethod + def run(services: ServiceProviderABC): Console.write_line("Hello World from App Extension") diff --git a/tests/custom/general/src/general/test_startup_extension.py b/tests/custom/general/src/general/test_startup_extension.py index 5ecdb61b..9c14ad32 100644 --- a/tests/custom/general/src/general/test_startup_extension.py +++ b/tests/custom/general/src/general/test_startup_extension.py @@ -1,16 +1,14 @@ from cpl.application.abc import StartupExtensionABC -from cpl.core.configuration import Configuration from cpl.core.console import Console from cpl.dependency import ServiceCollection -from cpl.core.environment import Environment class TestStartupExtension(StartupExtensionABC): - def __init__(self): - StartupExtensionABC.__init__(self) - def configure_configuration(self): + @staticmethod + def configure_configuration(): Console.write_line("config") - def configure_services(self, services: ServiceCollection): + @staticmethod + def configure_services(services: ServiceCollection): Console.write_line("services")