From 58dbd3ed1ea0aee36725132eb78ba62d9656995f Mon Sep 17 00:00:00 2001 From: edraft Date: Tue, 16 Sep 2025 20:21:33 +0200 Subject: [PATCH] Cleanup for mysql --- .../cpl/application/async_startup_abc.py | 6 +- .../async_startup_extension_abc.py | 6 +- .../cpl/application/startup_abc.py | 6 +- .../cpl/application/startup_extension_abc.py | 6 +- src/cpl-database/cpl/database/__init__.py | 22 ++++- .../cpl/database/mysql/__init__.py | 0 .../{ => mysql}/connection/__init__.py | 0 .../connection/database_connection.py | 2 +- .../connection/database_connection_abc.py | 0 .../database/{ => mysql}/context/__init__.py | 0 .../{ => mysql}/context/database_context.py | 6 +- .../context/database_context_abc.py | 0 src/cpl-dependency/cpl/dependency/__init__.py | 1 - .../cpl/dependency/service_collection.py | 41 +++++---- .../cpl/dependency/service_collection_abc.py | 90 ------------------- .../cpl/dependency/service_provider.py | 6 -- src/cpl-mail/cpl/mail/__init__.py | 15 ++-- .../cpl/translation/__init__.py | 15 ++-- tests/custom/async/src/async/startup.py | 4 +- tests/custom/database/src/model/db_context.py | 7 -- tests/custom/database/src/model/user_repo.py | 2 +- tests/custom/database/src/startup.py | 13 +-- tests/custom/di/src/di/startup.py | 4 +- tests/custom/general/src/general/startup.py | 7 +- .../src/general/test_startup_extension.py | 4 +- .../translation/src/translation/startup.py | 4 +- 26 files changed, 90 insertions(+), 177 deletions(-) create mode 100644 src/cpl-database/cpl/database/mysql/__init__.py rename src/cpl-database/cpl/database/{ => mysql}/connection/__init__.py (100%) rename src/cpl-database/cpl/database/{ => mysql}/connection/database_connection.py (95%) rename src/cpl-database/cpl/database/{ => mysql}/connection/database_connection_abc.py (100%) rename src/cpl-database/cpl/database/{ => mysql}/context/__init__.py (100%) rename src/cpl-database/cpl/database/{ => mysql}/context/database_context.py (85%) rename src/cpl-database/cpl/database/{ => mysql}/context/database_context_abc.py (100%) delete mode 100644 src/cpl-dependency/cpl/dependency/service_collection_abc.py delete mode 100644 tests/custom/database/src/model/db_context.py diff --git a/src/cpl-application/cpl/application/async_startup_abc.py b/src/cpl-application/cpl/application/async_startup_abc.py index df366926..093eeb3f 100644 --- a/src/cpl-application/cpl/application/async_startup_abc.py +++ b/src/cpl-application/cpl/application/async_startup_abc.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from cpl.dependency.service_collection_abc import ServiceCollectionABC +from cpl.dependency.service_collection import ServiceCollection class AsyncStartupABC(ABC): @@ -15,9 +15,9 @@ class AsyncStartupABC(ABC): r"""Creates configuration of application""" @abstractmethod - async def configure_services(self, service: ServiceCollectionABC): + async def configure_services(self, service: ServiceCollection): r"""Creates service provider Parameter: - services: :class:`cpl.dependency.service_collection_abc` + services: :class:`cpl.dependency.service_collection` """ diff --git a/src/cpl-application/cpl/application/async_startup_extension_abc.py b/src/cpl-application/cpl/application/async_startup_extension_abc.py index d13ebfe1..0d3e8907 100644 --- a/src/cpl-application/cpl/application/async_startup_extension_abc.py +++ b/src/cpl-application/cpl/application/async_startup_extension_abc.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod from cpl.core.configuration.configuration import Configuration -from cpl.dependency.service_collection_abc import ServiceCollectionABC +from cpl.dependency.service_collection import ServiceCollection from cpl.core.environment.environment import Environment @@ -22,10 +22,10 @@ class AsyncStartupExtensionABC(ABC): """ @abstractmethod - async def configure_services(self, service: ServiceCollectionABC, env: Environment): + async def configure_services(self, service: ServiceCollection, env: Environment): r"""Creates service provider Parameter: - services: :class:`cpl.dependency.service_collection_abc` + services: :class:`cpl.dependency.service_collection` env: :class:`cpl.core.environment.application_environment_abc` """ diff --git a/src/cpl-application/cpl/application/startup_abc.py b/src/cpl-application/cpl/application/startup_abc.py index 6aeef9c0..365221d4 100644 --- a/src/cpl-application/cpl/application/startup_abc.py +++ b/src/cpl-application/cpl/application/startup_abc.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod from cpl.core.configuration import Configuration -from cpl.dependency.service_collection_abc import ServiceCollectionABC +from cpl.dependency.service_collection import ServiceCollection from cpl.core.environment import Environment @@ -22,10 +22,10 @@ class StartupABC(ABC): """ @abstractmethod - def configure_services(self, service: ServiceCollectionABC, env: Environment): + def configure_services(self, service: ServiceCollection, env: Environment): r"""Creates service provider Parameter: - services: :class:`cpl.dependency.service_collection_abc` + services: :class:`cpl.dependency.service_collection` env: :class:`cpl.core.environment.application_environment_abc` """ diff --git a/src/cpl-application/cpl/application/startup_extension_abc.py b/src/cpl-application/cpl/application/startup_extension_abc.py index 649db522..679020f9 100644 --- a/src/cpl-application/cpl/application/startup_extension_abc.py +++ b/src/cpl-application/cpl/application/startup_extension_abc.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod from cpl.core.configuration import Configuration -from cpl.dependency.service_collection_abc import ServiceCollectionABC +from cpl.dependency.service_collection import ServiceCollection from cpl.core.environment.environment import Environment @@ -24,10 +24,10 @@ class StartupExtensionABC(ABC): """ @abstractmethod - def configure_services(self, service: ServiceCollectionABC, env: Environment): + def configure_services(self, service: ServiceCollection, env: Environment): r"""Creates service provider Parameter: - services: :class:`cpl.dependency.service_collection_abc` + services: :class:`cpl.dependency.service_collection` env: :class:`cpl.core.environment.application_environment_abc` """ diff --git a/src/cpl-database/cpl/database/__init__.py b/src/cpl-database/cpl/database/__init__.py index 1d0467c0..1d0e9173 100644 --- a/src/cpl-database/cpl/database/__init__.py +++ b/src/cpl-database/cpl/database/__init__.py @@ -1,3 +1,23 @@ -from .database_settings_name_enum import DatabaseSettingsNameEnum +from cpl.dependency import ServiceCollection as _ServiceCollection +from . import mysql from .database_settings import DatabaseSettings +from .database_settings_name_enum import DatabaseSettingsNameEnum +from .mysql.context import DatabaseContextABC, DatabaseContext from .table_abc import TableABC + + +def add_mysql(collection: _ServiceCollection): + from cpl.core.console import Console + from cpl.core.configuration import Configuration + + try: + collection.add_singleton(DatabaseContextABC, DatabaseContext) + database_context = collection.build_service_provider().get_service(DatabaseContextABC) + + db_settings: DatabaseSettings = Configuration.get(DatabaseSettings) + database_context.connect(db_settings) + except ImportError as e: + Console.error("cpl-translation is not installed", str(e)) + + +_ServiceCollection.with_module(add_mysql, mysql.__name__) diff --git a/src/cpl-database/cpl/database/mysql/__init__.py b/src/cpl-database/cpl/database/mysql/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/cpl-database/cpl/database/connection/__init__.py b/src/cpl-database/cpl/database/mysql/connection/__init__.py similarity index 100% rename from src/cpl-database/cpl/database/connection/__init__.py rename to src/cpl-database/cpl/database/mysql/connection/__init__.py diff --git a/src/cpl-database/cpl/database/connection/database_connection.py b/src/cpl-database/cpl/database/mysql/connection/database_connection.py similarity index 95% rename from src/cpl-database/cpl/database/connection/database_connection.py rename to src/cpl-database/cpl/database/mysql/connection/database_connection.py index 30b1c84f..59753b6a 100644 --- a/src/cpl-database/cpl/database/connection/database_connection.py +++ b/src/cpl-database/cpl/database/mysql/connection/database_connection.py @@ -4,7 +4,7 @@ import mysql.connector as sql from mysql.connector.abstracts import MySQLConnectionAbstract from mysql.connector.cursor import MySQLCursorBuffered -from cpl.database.connection.database_connection_abc import DatabaseConnectionABC +from cpl.database.mysql.connection.database_connection_abc import DatabaseConnectionABC from cpl.database.database_settings import DatabaseSettings from cpl.core.utils.credential_manager import CredentialManager diff --git a/src/cpl-database/cpl/database/connection/database_connection_abc.py b/src/cpl-database/cpl/database/mysql/connection/database_connection_abc.py similarity index 100% rename from src/cpl-database/cpl/database/connection/database_connection_abc.py rename to src/cpl-database/cpl/database/mysql/connection/database_connection_abc.py diff --git a/src/cpl-database/cpl/database/context/__init__.py b/src/cpl-database/cpl/database/mysql/context/__init__.py similarity index 100% rename from src/cpl-database/cpl/database/context/__init__.py rename to src/cpl-database/cpl/database/mysql/context/__init__.py diff --git a/src/cpl-database/cpl/database/context/database_context.py b/src/cpl-database/cpl/database/mysql/context/database_context.py similarity index 85% rename from src/cpl-database/cpl/database/context/database_context.py rename to src/cpl-database/cpl/database/mysql/context/database_context.py index af48558f..afe33970 100644 --- a/src/cpl-database/cpl/database/context/database_context.py +++ b/src/cpl-database/cpl/database/mysql/context/database_context.py @@ -1,9 +1,9 @@ from typing import Optional -from cpl.database.connection.database_connection import DatabaseConnection -from cpl.database.connection.database_connection_abc import DatabaseConnectionABC -from cpl.database.context.database_context_abc import DatabaseContextABC +from cpl.database.mysql.connection.database_connection import DatabaseConnection +from cpl.database.mysql.connection.database_connection_abc import DatabaseConnectionABC +from cpl.database.mysql.context.database_context_abc import DatabaseContextABC from cpl.database.database_settings import DatabaseSettings from mysql.connector.cursor import MySQLCursorBuffered diff --git a/src/cpl-database/cpl/database/context/database_context_abc.py b/src/cpl-database/cpl/database/mysql/context/database_context_abc.py similarity index 100% rename from src/cpl-database/cpl/database/context/database_context_abc.py rename to src/cpl-database/cpl/database/mysql/context/database_context_abc.py diff --git a/src/cpl-dependency/cpl/dependency/__init__.py b/src/cpl-dependency/cpl/dependency/__init__.py index e7dfcfe4..8aa7165e 100644 --- a/src/cpl-dependency/cpl/dependency/__init__.py +++ b/src/cpl-dependency/cpl/dependency/__init__.py @@ -1,7 +1,6 @@ from .scope import Scope from .scope_abc import ScopeABC from .service_collection import ServiceCollection -from .service_collection_abc import ServiceCollectionABC from .service_descriptor import ServiceDescriptor from .service_lifetime_enum import ServiceLifetimeEnum from .service_provider import ServiceProvider diff --git a/src/cpl-dependency/cpl/dependency/service_collection.py b/src/cpl-dependency/cpl/dependency/service_collection.py index 5fddccae..8d52529d 100644 --- a/src/cpl-dependency/cpl/dependency/service_collection.py +++ b/src/cpl-dependency/cpl/dependency/service_collection.py @@ -1,24 +1,26 @@ from typing import Union, Type, Callable, Optional -from cpl.database.context.database_context_abc import DatabaseContextABC -from cpl.database.database_settings import DatabaseSettings -from cpl.dependency.service_collection_abc import ServiceCollectionABC -from cpl.dependency.service_descriptor import ServiceDescriptor -from cpl.dependency.service_lifetime_enum import ServiceLifetimeEnum -from cpl.dependency.service_provider import ServiceProvider -from cpl.dependency.service_provider_abc import ServiceProviderABC from cpl.core.log.logger import Logger from cpl.core.log.logger_abc import LoggerABC from cpl.core.pipes.pipe_abc import PipeABC from cpl.core.typing import T, Service +from cpl.dependency.service_descriptor import ServiceDescriptor +from cpl.dependency.service_lifetime_enum import ServiceLifetimeEnum +from cpl.dependency.service_provider import ServiceProvider +from cpl.dependency.service_provider_abc import ServiceProviderABC -class ServiceCollection(ServiceCollectionABC): +class ServiceCollection: r"""Representation of the collection of services""" + _modules: dict[str, Callable] = {} + + @classmethod + def with_module(cls, func: Callable, name: str = None): + cls._modules[func.__name__ if name is None else name] = func + return cls + def __init__(self): - ServiceCollectionABC.__init__(self) - self._database_context: Optional[DatabaseContextABC] = None self._service_descriptors: list[ServiceDescriptor] = [] def _add_descriptor(self, service: Union[type, object], lifetime: ServiceLifetimeEnum, base_type: Callable = None): @@ -44,10 +46,19 @@ class ServiceCollection(ServiceCollectionABC): return self - def add_db_context(self, db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings): - self.add_singleton(DatabaseContextABC, db_context_type) - self._database_context = self.build_service_provider().get_service(DatabaseContextABC) - self._database_context.connect(db_settings) + def add_module(self, module: str | object): + if not isinstance(module, str): + module = module.__name__ + + if module not in self._modules: + raise ValueError(f"Module {module} not found") + + self._modules[module](self) + + # def add_mysql(self, db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings): + # self.add_singleton(DatabaseContextABC, db_context_type) + # self._database_context = self.build_service_provider().get_service(DatabaseContextABC) + # self._database_context.connect(db_settings) def add_logging(self): self.add_transient(LoggerABC, Logger) @@ -71,6 +82,6 @@ class ServiceCollection(ServiceCollectionABC): return self def build_service_provider(self) -> ServiceProviderABC: - sp = ServiceProvider(self._service_descriptors, self._database_context) + sp = ServiceProvider(self._service_descriptors) ServiceProviderABC.set_global_provider(sp) return sp diff --git a/src/cpl-dependency/cpl/dependency/service_collection_abc.py b/src/cpl-dependency/cpl/dependency/service_collection_abc.py deleted file mode 100644 index 0725fd26..00000000 --- a/src/cpl-dependency/cpl/dependency/service_collection_abc.py +++ /dev/null @@ -1,90 +0,0 @@ -from abc import abstractmethod, ABC -from typing import Type - -from cpl.database.context.database_context_abc import DatabaseContextABC -from cpl.database.database_settings import DatabaseSettings -from cpl.dependency.service_provider_abc import ServiceProviderABC -from cpl.core.typing import T, Source - - -class ServiceCollectionABC(ABC): - r"""ABC for the class :class:`cpl.dependency.service_collection.ServiceCollection`""" - - @abstractmethod - def __init__(self): - pass - - @abstractmethod - def add_db_context(self, db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings): - r"""Adds database context - - Parameter: - db_context: Type[:class:`cpl.database.context.database_context_abc.DatabaseContextABC`] - Database context - """ - - @abstractmethod - def add_logging(self): - r"""Adds the CPL internal logger""" - - @abstractmethod - def add_pipes(self): - r"""Adds the CPL internal pipes as transient""" - - def add_translation(self): - r"""Adds the CPL translation""" - raise NotImplementedError("You should install and use the cpl-translation package") - - def add_mail(self): - r"""Adds the CPL mail""" - raise NotImplementedError("You should install and use the cpl-mail package") - - @abstractmethod - def add_transient(self, service_type: T, service: T = None) -> "ServiceCollectionABC": - r"""Adds a service with transient lifetime - - Parameter: - service_type: :class:`Type` - Type of the service - service: :class:`Callable` - Object of the service - - Returns: - self: :class:`cpl.dependency.service_collection_abc.ServiceCollectionABC` - """ - - @abstractmethod - def add_scoped(self, service_type: T, service: T = None) -> "ServiceCollectionABC": - r"""Adds a service with scoped lifetime - - Parameter: - service_type: :class:`Type` - Type of the service - service: :class:`Callable` - Object of the service - - Returns: - self: :class:`cpl.dependency.service_collection_abc.ServiceCollectionABC` - """ - - @abstractmethod - def add_singleton(self, service_type: T, service: T = None) -> "ServiceCollectionABC": - r"""Adds a service with singleton lifetime - - Parameter: - service_type: :class:`Type` - Type of the service - service: :class:`Callable` - Object of the service - - Returns: - self: :class:`cpl.dependency.service_collection_abc.ServiceCollectionABC` - """ - - @abstractmethod - def build_service_provider(self) -> ServiceProviderABC: - r"""Creates instance of the service provider - - Returns: - Object of type :class:`cpl.dependency.service_provider_abc.ServiceProviderABC` - """ diff --git a/src/cpl-dependency/cpl/dependency/service_provider.py b/src/cpl-dependency/cpl/dependency/service_provider.py index bae6350e..f3c141ee 100644 --- a/src/cpl-dependency/cpl/dependency/service_provider.py +++ b/src/cpl-dependency/cpl/dependency/service_provider.py @@ -5,7 +5,6 @@ from typing import Optional from cpl.core.configuration import Configuration from cpl.core.configuration.configuration_model_abc import ConfigurationModelABC -from cpl.database.context.database_context_abc import DatabaseContextABC from cpl.core.environment import Environment from cpl.core.typing import T, R, Source from cpl.dependency.scope_abc import ScopeABC @@ -31,12 +30,10 @@ class ServiceProvider(ServiceProviderABC): def __init__( self, service_descriptors: list[ServiceDescriptor], - db_context: Optional[DatabaseContextABC], ): ServiceProviderABC.__init__(self) self._service_descriptors: list[ServiceDescriptor] = service_descriptors - self._database_context = db_context self._scope: Optional[ScopeABC] = None def _find_service(self, service_type: type) -> Optional[ServiceDescriptor]: @@ -95,9 +92,6 @@ class ServiceProvider(ServiceProviderABC): elif issubclass(parameter.annotation, Environment): params.append(Environment) - elif issubclass(parameter.annotation, DatabaseContextABC): - params.append(self._database_context) - elif issubclass(parameter.annotation, ConfigurationModelABC): params.append(Configuration.get(parameter.annotation)) diff --git a/src/cpl-mail/cpl/mail/__init__.py b/src/cpl-mail/cpl/mail/__init__.py index 8dee6c88..c2f00eb6 100644 --- a/src/cpl-mail/cpl/mail/__init__.py +++ b/src/cpl-mail/cpl/mail/__init__.py @@ -1,3 +1,4 @@ +from cpl.dependency import ServiceCollection as _ServiceCollection from .abc.email_client_abc import EMailClientABC from .email_client import EMailClient from .email_client_settings import EMailClientSettings @@ -6,21 +7,15 @@ from .email_model import EMail from .mail_logger import MailLogger -def add_mail(self): +def add_mail(collection: _ServiceCollection): from cpl.core.console import Console from cpl.core.log import LoggerABC try: - self.add_singleton(EMailClientABC, EMailClient) - self.add_transient(LoggerABC, MailLogger) + collection.add_singleton(EMailClientABC, EMailClient) + collection.add_transient(LoggerABC, MailLogger) except ImportError as e: Console.error("cpl-translation is not installed", str(e)) -def init(): - from cpl.dependency import ServiceCollection - - ServiceCollection.add_mail = add_mail - - -init() +_ServiceCollection.with_module(add_mail, __name__) diff --git a/src/cpl-translation/cpl/translation/__init__.py b/src/cpl-translation/cpl/translation/__init__.py index 6f7dcf8b..5e0604a4 100644 --- a/src/cpl-translation/cpl/translation/__init__.py +++ b/src/cpl-translation/cpl/translation/__init__.py @@ -1,10 +1,11 @@ +from cpl.dependency import ServiceCollection as _ServiceCollection from .translate_pipe import TranslatePipe from .translation_service import TranslationService from .translation_service_abc import TranslationServiceABC from .translation_settings import TranslationSettings -def add_translation(self): +def add_translation(collection: _ServiceCollection): from cpl.core.console import Console from cpl.core.pipes import PipeABC from cpl.translation.translate_pipe import TranslatePipe @@ -12,16 +13,10 @@ def add_translation(self): from cpl.translation.translation_service_abc import TranslationServiceABC try: - self.add_singleton(TranslationServiceABC, TranslationService) - self.add_transient(PipeABC, TranslatePipe) + collection.add_singleton(TranslationServiceABC, TranslationService) + collection.add_transient(PipeABC, TranslatePipe) except ImportError as e: Console.error("cpl-translation is not installed", str(e)) -def init(): - from cpl.dependency import ServiceCollection - - ServiceCollection.add_translation = add_translation - - -init() +_ServiceCollection.with_module(add_translation, __name__) diff --git a/tests/custom/async/src/async/startup.py b/tests/custom/async/src/async/startup.py index 24044f0f..16c9dda3 100644 --- a/tests/custom/async/src/async/startup.py +++ b/tests/custom/async/src/async/startup.py @@ -1,6 +1,6 @@ from cpl.application.async_startup_abc import AsyncStartupABC from cpl.core.configuration import ConfigurationABC -from cpl.dependency import ServiceProviderABC, ServiceCollectionABC +from cpl.dependency import ServiceProviderABC, ServiceCollection from cpl.core.environment import Environment @@ -13,5 +13,5 @@ class Startup(AsyncStartupABC): ) -> ConfigurationABC: return configuration - async def configure_services(self, services: ServiceCollectionABC, environment: Environment) -> ServiceProviderABC: + async def configure_services(self, services: ServiceCollection, environment: Environment) -> ServiceProviderABC: return services.build_service_provider() diff --git a/tests/custom/database/src/model/db_context.py b/tests/custom/database/src/model/db_context.py deleted file mode 100644 index d23d1bdb..00000000 --- a/tests/custom/database/src/model/db_context.py +++ /dev/null @@ -1,7 +0,0 @@ -from cpl.database import DatabaseSettings -from cpl.database.context import DatabaseContext - - -class DBContext(DatabaseContext): - def __init__(self): - DatabaseContext.__init__(self) diff --git a/tests/custom/database/src/model/user_repo.py b/tests/custom/database/src/model/user_repo.py index 123d483a..c287cf5d 100644 --- a/tests/custom/database/src/model/user_repo.py +++ b/tests/custom/database/src/model/user_repo.py @@ -1,5 +1,5 @@ from cpl.core.console import Console -from cpl.database.context import DatabaseContextABC +from cpl.database.mysql.context import DatabaseContextABC from .city_model import CityModel from .user_model import UserModel diff --git a/tests/custom/database/src/startup.py b/tests/custom/database/src/startup.py index 6c95b598..194734c9 100644 --- a/tests/custom/database/src/startup.py +++ b/tests/custom/database/src/startup.py @@ -1,11 +1,9 @@ from cpl.application import StartupABC from cpl.core.configuration import Configuration -from cpl.database import DatabaseSettings -from cpl.dependency import ServiceCollectionABC, ServiceProviderABC from cpl.core.environment import Environment from cpl.core.log import Logger, LoggerABC - -from model.db_context import DBContext +from cpl.database import mysql +from cpl.dependency import ServiceCollection from model.user_repo import UserRepo from model.user_repo_abc import UserRepoABC @@ -23,11 +21,8 @@ class Startup(StartupABC): self._configuration = configuration - def configure_services(self, services: ServiceCollectionABC, environment: Environment): - # Create and connect to database - db_settings: DatabaseSettings = self._configuration.get(DatabaseSettings) - services.add_db_context(DBContext, db_settings) + def configure_services(self, services: ServiceCollection, environment: Environment): + services.add_module(mysql) services.add_singleton(UserRepoABC, UserRepo) - services.add_singleton(LoggerABC, Logger) diff --git a/tests/custom/di/src/di/startup.py b/tests/custom/di/src/di/startup.py index 39718414..ccf5b948 100644 --- a/tests/custom/di/src/di/startup.py +++ b/tests/custom/di/src/di/startup.py @@ -1,6 +1,6 @@ from cpl.application import StartupABC from cpl.core.configuration import ConfigurationABC -from cpl.dependency import ServiceProviderABC, ServiceCollectionABC +from cpl.dependency import ServiceProviderABC, ServiceCollection from cpl.core.environment import Environment from di.test1_service import Test1Service from di.test2_service import Test2Service @@ -17,7 +17,7 @@ class Startup(StartupABC): def configure_configuration(self, configuration: ConfigurationABC, environment: Environment) -> ConfigurationABC: return configuration - def configure_services(self, services: ServiceCollectionABC, environment: Environment) -> ServiceProviderABC: + def configure_services(self, services: ServiceCollection, environment: Environment) -> ServiceProviderABC: services.add_scoped(TestService) services.add_scoped(DITesterService) diff --git a/tests/custom/general/src/general/startup.py b/tests/custom/general/src/general/startup.py index ecb90968..3fb5a215 100644 --- a/tests/custom/general/src/general/startup.py +++ b/tests/custom/general/src/general/startup.py @@ -1,6 +1,7 @@ +from cpl import mail from cpl.application import StartupABC from cpl.core.configuration import Configuration -from cpl.dependency import ServiceCollectionABC, ServiceProviderABC +from cpl.dependency import ServiceCollection, ServiceProviderABC from cpl.core.environment import Environment from cpl.core.pipes import IPAddressPipe from test_service import TestService @@ -15,8 +16,8 @@ class Startup(StartupABC): config.add_json_file(f"appsettings.{env.get_environment()}.json") config.add_json_file(f"appsettings.{env.get_host_name()}.json", optional=True) - def configure_services(self, services: ServiceCollectionABC, env: Environment): + def configure_services(self, services: ServiceCollection, env: Environment): services.add_logging() - services.add_mail() + services.add_module(mail) services.add_transient(IPAddressPipe) services.add_singleton(TestService) diff --git a/tests/custom/general/src/general/test_startup_extension.py b/tests/custom/general/src/general/test_startup_extension.py index ec67cbac..5a912d2d 100644 --- a/tests/custom/general/src/general/test_startup_extension.py +++ b/tests/custom/general/src/general/test_startup_extension.py @@ -1,7 +1,7 @@ from cpl.application import StartupExtensionABC from cpl.core.configuration import Configuration from cpl.core.console import Console -from cpl.dependency import ServiceCollectionABC +from cpl.dependency import ServiceCollection from cpl.core.environment import Environment @@ -12,5 +12,5 @@ class TestStartupExtension(StartupExtensionABC): def configure_configuration(self, config: Configuration, env: Environment): Console.write_line("config") - def configure_services(self, services: ServiceCollectionABC, env: Environment): + def configure_services(self, services: ServiceCollection, env: Environment): Console.write_line("services") diff --git a/tests/custom/translation/src/translation/startup.py b/tests/custom/translation/src/translation/startup.py index 8cbddcab..b0a5fa44 100644 --- a/tests/custom/translation/src/translation/startup.py +++ b/tests/custom/translation/src/translation/startup.py @@ -1,6 +1,6 @@ from cpl.application import StartupABC from cpl.core.configuration import ConfigurationABC -from cpl.dependency import ServiceProviderABC, ServiceCollectionABC +from cpl.dependency import ServiceProviderABC, ServiceCollection from cpl.core.environment import Environment @@ -12,6 +12,6 @@ class Startup(StartupABC): configuration.add_json_file("appsettings.json") return configuration - def configure_services(self, services: ServiceCollectionABC, environment: Environment) -> ServiceProviderABC: + def configure_services(self, services: ServiceCollection, environment: Environment) -> ServiceProviderABC: services.add_translation() return services.build_service_provider()