2023.10 #175

Merged
edraft merged 9 commits from 2023.10 into master 2023-10-13 14:48:40 +02:00
49 changed files with 157 additions and 179 deletions

View File

@ -11,16 +11,16 @@ CPL Command Line Interface
""" """
__title__ = "cpl_cli._templates.build" __title__ = 'cpl_cli._templates.build'
__author__ = "Sven Heidemann" __author__ = 'Sven Heidemann'
__license__ = "MIT" __license__ = 'MIT'
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = 'Copyright (c) 2020 - 2023 sh-edraft.de'
__version__ = "2023.4.0.post3" __version__ = '2023.4.0.post3'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major='2023', minor='4', micro='0.post3')

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -23,4 +23,4 @@ from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.application"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -29,4 +29,4 @@ from .startup_abc import StartupABC
from .startup_extension_abc import StartupExtensionABC from .startup_extension_abc import StartupExtensionABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.configuration"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -35,4 +35,4 @@ from .validator_abc import ValidatorABC
from .variable_argument import VariableArgument from .variable_argument import VariableArgument
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -24,7 +24,7 @@ from cpl_core.dependency_injection.service_provider_abc import ServiceProviderAB
from cpl_core.environment.application_environment import ApplicationEnvironment from cpl_core.environment.application_environment import ApplicationEnvironment
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl_core.environment.environment_name_enum import EnvironmentNameEnum from cpl_core.environment.environment_name_enum import EnvironmentNameEnum
from cpl_core.type import T from cpl_core.type import T, R
from cpl_core.utils.json_processor import JSONProcessor from cpl_core.utils.json_processor import JSONProcessor
@ -296,7 +296,7 @@ class Configuration(ConfigurationABC):
self.add_configuration(sub, configuration) self.add_configuration(sub, configuration)
def add_configuration(self, key_type: Type[T], value: any): def add_configuration(self, key_type: T, value: any):
self._config[key_type] = value self._config[key_type] = value
def create_console_argument( def create_console_argument(
@ -316,7 +316,7 @@ class Configuration(ConfigurationABC):
for arg in self._argument_types: for arg in self._argument_types:
call(arg) call(arg)
def get_configuration(self, search_type: T) -> Optional[T]: def get_configuration(self, search_type: T) -> Optional[R]:
if type(search_type) is str: if type(search_type) is str:
if search_type == ConfigurationVariableNameEnum.environment.value: if search_type == ConfigurationVariableNameEnum.environment.value:
return self._application_environment.environment_name return self._application_environment.environment_name
@ -357,7 +357,7 @@ class Configuration(ConfigurationABC):
if exe.validators is not None: if exe.validators is not None:
abort = False abort = False
for validator_type in exe.validators: for validator_type in exe.validators:
validator: ValidatorABC = services.get_service(validator_type) validator = services.get_service(validator_type)
result = validator.validate() result = validator.validate()
abort = not result abort = not result
if abort: if abort:
@ -366,7 +366,7 @@ class Configuration(ConfigurationABC):
if abort: if abort:
sys.exit() sys.exit()
cmd: ArgumentExecutableABC = services.get_service(exe.executable_type) cmd = services.get_service(exe.executable_type)
self._handle_pre_or_post_executables(True, exe, services) self._handle_pre_or_post_executables(True, exe, services)
self._set_variable("ACTIVE_EXECUTABLE", exe.name) self._set_variable("ACTIVE_EXECUTABLE", exe.name)
args = self.get_configuration("ARGS") args = self.get_configuration("ARGS")

View File

@ -6,7 +6,7 @@ from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
from cpl_core.configuration.argument_abc import ArgumentABC from cpl_core.configuration.argument_abc import ArgumentABC
from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum from cpl_core.configuration.argument_type_enum import ArgumentTypeEnum
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl_core.type import T from cpl_core.type import T, R
class ConfigurationABC(ABC): class ConfigurationABC(ABC):
@ -77,11 +77,11 @@ class ConfigurationABC(ABC):
pass pass
@abstractmethod @abstractmethod
def add_configuration(self, key_type: Type[T], value: any): def add_configuration(self, key_type: T, value: any):
r"""Add configuration object r"""Add configuration object
Parameter: Parameter:
key_type: Union[:class:`str`, :class:`type`] key_type: :class:`cpl_core.type.T`
Type of the value Type of the value
value: any value: any
Object of the value Object of the value
@ -124,11 +124,11 @@ class ConfigurationABC(ABC):
pass pass
@abstractmethod @abstractmethod
def get_configuration(self, search_type: Type[T]) -> Optional[T]: def get_configuration(self, search_type: T) -> Optional[R]:
r"""Returns value from configuration by given type r"""Returns value from configuration by given type
Parameter: Parameter:
search_type: Union[:class:`str`, Type[:class:`cpl_core.configuration.configuration_model_abc.ConfigurationModelABC`]] search_type: :class:`cpl_core.type.T`
Type to search for Type to search for
Returns: Returns:

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.console"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -28,4 +28,4 @@ from .foreground_color_enum import ForegroundColorEnum
from .spinner_thread import SpinnerThread from .spinner_thread import SpinnerThread
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -3,8 +3,8 @@
"Name": "cpl-core", "Name": "cpl-core",
"Version": { "Version": {
"Major": "2023", "Major": "2023",
"Minor": "4", "Minor": "10",
"Micro": "0.post5" "Micro": "0"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",
@ -18,7 +18,6 @@
"Dependencies": [ "Dependencies": [
"art>=5.9", "art>=5.9",
"colorama>=0.4.6", "colorama>=0.4.6",
"mysql-connector>=2.2.9",
"psutil>=5.9.4", "psutil>=5.9.4",
"packaging>=23.0", "packaging>=23.0",
"pynput>=1.7.6", "pynput>=1.7.6",
@ -26,7 +25,8 @@
"tabulate>=0.9.0", "tabulate>=0.9.0",
"termcolor>=2.2.0", "termcolor>=2.2.0",
"watchdog>=3.0.0", "watchdog>=3.0.0",
"wheel>=0.40.0" "wheel>=0.40.0",
"mysql-connector-python==8.1.0"
], ],
"DevDependencies": [ "DevDependencies": [
"Sphinx==5.0.2", "Sphinx==5.0.2",

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.database"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -26,4 +26,4 @@ from .database_settings import DatabaseSettings
from .table_abc import TableABC from .table_abc import TableABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.database.connection"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .database_connection import DatabaseConnection
from .database_connection_abc import DatabaseConnectionABC from .database_connection_abc import DatabaseConnectionABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -25,27 +25,27 @@ class DatabaseConnection(DatabaseConnectionABC):
def cursor(self) -> MySQLCursorBuffered: def cursor(self) -> MySQLCursorBuffered:
return self._cursor return self._cursor
def connect(self, database_settings: DatabaseSettings): def connect(self, settings: DatabaseSettings):
connection = sql.connect( connection = sql.connect(
host=database_settings.host, host=settings.host,
port=database_settings.port, port=settings.port,
user=database_settings.user, user=settings.user,
passwd=CredentialManager.decrypt(database_settings.password), passwd=CredentialManager.decrypt(settings.password),
charset=database_settings.charset, charset=settings.charset,
use_unicode=database_settings.use_unicode, use_unicode=settings.use_unicode,
buffered=database_settings.buffered, buffered=settings.buffered,
auth_plugin=database_settings.auth_plugin, auth_plugin=settings.auth_plugin,
) )
connection.cursor().execute(f"CREATE DATABASE IF NOT EXISTS `{database_settings.database}`;") connection.cursor().execute(f"CREATE DATABASE IF NOT EXISTS `{settings.database}`;")
self._database = sql.connect( self._database = sql.connect(
host=database_settings.host, host=settings.host,
port=database_settings.port, port=settings.port,
user=database_settings.user, user=settings.user,
passwd=CredentialManager.decrypt(database_settings.password), passwd=CredentialManager.decrypt(settings.password),
db=database_settings.database, db=settings.database,
charset=database_settings.charset, charset=settings.charset,
use_unicode=database_settings.use_unicode, use_unicode=settings.use_unicode,
buffered=database_settings.buffered, buffered=settings.buffered,
auth_plugin=database_settings.auth_plugin, auth_plugin=settings.auth_plugin,
) )
self._cursor = self._database.cursor() self._cursor = self._database.cursor()

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.database.context"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .database_context import DatabaseContext
from .database_context_abc import DatabaseContextABC from .database_context_abc import DatabaseContextABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -13,10 +13,10 @@ class DatabaseSettings(ConfigurationModelABC):
user: str = None, user: str = None,
password: str = None, password: str = None,
database: str = None, database: str = None,
charset: str = None, charset: str = "utf8mb4",
use_unicode: bool = None, use_unicode: bool = False,
buffered: bool = None, buffered: bool = False,
auth_plugin: str = None, auth_plugin: str = "caching_sha2_password",
): ):
ConfigurationModelABC.__init__(self) ConfigurationModelABC.__init__(self)

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.dependency_injection"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -31,4 +31,4 @@ from .service_provider import ServiceProvider
from .service_provider_abc import ServiceProviderABC from .service_provider_abc import ServiceProviderABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -61,15 +61,15 @@ class ServiceCollection(ServiceCollectionABC):
self.add_transient(PipeABC, pipe) self.add_transient(PipeABC, pipe)
return self return self
def add_singleton(self, service_type: Type[T], service: T = None): def add_singleton(self, service_type: T, service: T = None):
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service) self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.singleton, service)
return self return self
def add_scoped(self, service_type: Type[T], service: Callable = None): def add_scoped(self, service_type: T, service: T = None):
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.scoped, service) self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.scoped, service)
return self return self
def add_transient(self, service_type: Type[T], service: T = None): def add_transient(self, service_type: T, service: T = None):
self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.transient, service) self._add_descriptor_by_lifetime(service_type, ServiceLifetimeEnum.transient, service)
return self return self

View File

@ -46,7 +46,7 @@ class ServiceCollectionABC(ABC):
pass pass
@abstractmethod @abstractmethod
def add_transient(self, service_type: Type[T], service: T = None) -> "ServiceCollectionABC": def add_transient(self, service_type: T, service: T = None) -> "ServiceCollectionABC":
r"""Adds a service with transient lifetime r"""Adds a service with transient lifetime
Parameter: Parameter:
@ -61,7 +61,7 @@ class ServiceCollectionABC(ABC):
pass pass
@abstractmethod @abstractmethod
def add_scoped(self, service_type: Type[T], service: T = None) -> "ServiceCollectionABC": def add_scoped(self, service_type: T, service: T = None) -> "ServiceCollectionABC":
r"""Adds a service with scoped lifetime r"""Adds a service with scoped lifetime
Parameter: Parameter:
@ -76,7 +76,7 @@ class ServiceCollectionABC(ABC):
pass pass
@abstractmethod @abstractmethod
def add_singleton(self, service_type: Type[T], service: T = None) -> "ServiceCollectionABC": def add_singleton(self, service_type: T, service: T = None) -> "ServiceCollectionABC":
r"""Adds a service with singleton lifetime r"""Adds a service with singleton lifetime
Parameter: Parameter:

View File

@ -12,7 +12,7 @@ from cpl_core.dependency_injection.service_descriptor import ServiceDescriptor
from cpl_core.dependency_injection.service_lifetime_enum import ServiceLifetimeEnum from cpl_core.dependency_injection.service_lifetime_enum import ServiceLifetimeEnum
from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC from cpl_core.dependency_injection.service_provider_abc import ServiceProviderABC
from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC from cpl_core.environment.application_environment_abc import ApplicationEnvironmentABC
from cpl_core.type import T from cpl_core.type import T, R
class ServiceProvider(ServiceProviderABC): class ServiceProvider(ServiceProviderABC):
@ -80,7 +80,7 @@ class ServiceProvider(ServiceProviderABC):
return implementations return implementations
def build_by_signature(self, sig: Signature) -> list[T]: def build_by_signature(self, sig: Signature) -> list[R]:
params = [] params = []
for param in sig.parameters.items(): for param in sig.parameters.items():
parameter = param[1] parameter = param[1]
@ -138,7 +138,7 @@ class ServiceProvider(ServiceProviderABC):
sb = ScopeBuilder(ServiceProvider(descriptors, self._configuration, self._database_context)) sb = ScopeBuilder(ServiceProvider(descriptors, self._configuration, self._database_context))
return sb.build() return sb.build()
def get_service(self, service_type: typing.Type[T], *args, **kwargs) -> Optional[T]: def get_service(self, service_type: T, *args, **kwargs) -> Optional[R]:
result = self._find_service(service_type) result = self._find_service(service_type)
if result is None: if result is None:
@ -157,12 +157,12 @@ class ServiceProvider(ServiceProviderABC):
return implementation return implementation
def get_services(self, service_type: typing.Type[T], *args, **kwargs) -> list[Optional[T]]: def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[R]]:
implementations = [] implementations = []
if typing.get_origin(service_type) != list: if typing.get_origin(service_type) == list:
raise Exception(f"Invalid type {service_type}! Expected list of type") raise Exception(f"Invalid type {service_type}! Expected single type not list of type")
implementations.extend(self._get_services(typing.get_args(service_type)[0])) implementations.extend(self._get_services(service_type))
return implementations return implementations

View File

@ -4,7 +4,7 @@ from inspect import Signature, signature
from typing import Optional, Type from typing import Optional, Type
from cpl_core.dependency_injection.scope_abc import ScopeABC from cpl_core.dependency_injection.scope_abc import ScopeABC
from cpl_core.type import T from cpl_core.type import T, R
class ServiceProviderABC(ABC): class ServiceProviderABC(ABC):
@ -21,7 +21,7 @@ class ServiceProviderABC(ABC):
cls._provider = provider cls._provider = provider
@abstractmethod @abstractmethod
def build_by_signature(self, sig: Signature) -> list[T]: def build_by_signature(self, sig: Signature) -> list[R]:
pass pass
@abstractmethod @abstractmethod
@ -61,7 +61,7 @@ class ServiceProviderABC(ABC):
pass pass
@abstractmethod @abstractmethod
def get_service(self, instance_type: Type[T], *args, **kwargs) -> Optional[T]: def get_service(self, instance_type: T, *args, **kwargs) -> Optional[R]:
r"""Returns instance of given type r"""Returns instance of given type
Parameter Parameter
@ -76,12 +76,12 @@ class ServiceProviderABC(ABC):
pass pass
@abstractmethod @abstractmethod
def get_services(self, service_type: Type[T], *args, **kwargs) -> list[Optional[T]]: def get_services(self, service_type: T, *args, **kwargs) -> list[Optional[R]]:
r"""Returns instance of given type r"""Returns instance of given type
Parameter Parameter
--------- ---------
instance_type: :class:`cpl_core.type.T` service_type: :class:`cpl_core.type.T`
The type of the searched instance The type of the searched instance
Returns Returns

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.environment"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -26,4 +26,4 @@ from .environment_name_enum import EnvironmentNameEnum
from .application_environment import ApplicationEnvironment from .application_environment import ApplicationEnvironment
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.logging"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -28,4 +28,4 @@ from .logging_settings import LoggingSettings
from .logging_settings_name_enum import LoggingSettingsNameEnum from .logging_settings_name_enum import LoggingSettingsNameEnum
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.mailing"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -28,4 +28,4 @@ from .email_client_settings import EMailClientSettings
from .email_client_settings_name_enum import EMailClientSettingsNameEnum from .email_client_settings_name_enum import EMailClientSettingsNameEnum
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.pipes"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -26,4 +26,4 @@ from .ip_address_pipe import IPAddressPipe
from .pipe_abc import PipeABC from .pipe_abc import PipeABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.time"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .time_format_settings import TimeFormatSettings
from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -1,3 +1,4 @@
from typing import TypeVar from typing import TypeVar
T = TypeVar("T") T = TypeVar("T")
R = TypeVar("R")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_core.utils"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post5" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -26,4 +26,4 @@ from .string import String
from .pip import Pip from .pip import Pip
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post5") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -23,4 +23,4 @@ from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -59,4 +59,4 @@ def get_discord_collection(services: "ServiceCollectionABC") -> "DiscordCollecti
# build-ignore-end # build-ignore-end
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.application"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -24,4 +24,4 @@ from collections import namedtuple
from .discord_bot_application_abc import DiscordBotApplicationABC from .discord_bot_application_abc import DiscordBotApplicationABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.command"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .discord_command_abc import DiscordCommandABC
from .discord_commands_meta import DiscordCogMeta from .discord_commands_meta import DiscordCogMeta
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.configuration"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -24,4 +24,4 @@ from collections import namedtuple
from .discord_bot_settings import DiscordBotSettings from .discord_bot_settings import DiscordBotSettings
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.container"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -31,4 +31,4 @@ from .thread import Thread
from .voice_channel import VoiceChannel from .voice_channel import VoiceChannel
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -3,8 +3,8 @@
"Name": "cpl-discord", "Name": "cpl-discord",
"Version": { "Version": {
"Major": "2023", "Major": "2023",
"Minor": "4", "Minor": "10",
"Micro": "0.post3" "Micro": "0"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",
@ -16,9 +16,9 @@
"LicenseName": "MIT", "LicenseName": "MIT",
"LicenseDescription": "MIT, see LICENSE for more details.", "LicenseDescription": "MIT, see LICENSE for more details.",
"Dependencies": [ "Dependencies": [
"cpl-core>=2023.4.0.post2", "cpl-core>=2023.10.0",
"discord.py>=2.3.0", "discord.py>=2.3.0",
"cpl-query>=2023.4.0.post1" "cpl-query>=2023.10.0"
], ],
"DevDependencies": [ "DevDependencies": [
"cpl-cli>=2023.4.0.post3" "cpl-cli>=2023.4.0.post3"

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.events"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -69,4 +69,4 @@ from .on_voice_state_update_abc import OnVoiceStateUpdateABC
from .on_webhooks_update_abc import OnWebhooksUpdateABC from .on_webhooks_update_abc import OnWebhooksUpdateABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.helper"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -24,4 +24,4 @@ from collections import namedtuple
from .to_containers_converter import ToContainersConverter from .to_containers_converter import ToContainersConverter
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_discord.service"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post3" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -29,4 +29,4 @@ from .discord_service import DiscordService
from .discord_service_abc import DiscordServiceABC from .discord_service_abc import DiscordServiceABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post3") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -1,11 +1,11 @@
from typing import Type, Optional from typing import Type
from cpl_core.console import Console, ForegroundColorEnum
from cpl_core.dependency_injection import ServiceCollectionABC from cpl_core.dependency_injection import ServiceCollectionABC
from cpl_discord.command.discord_command_abc import DiscordCommandABC from cpl_discord.command.discord_command_abc import DiscordCommandABC
from cpl_discord.discord_event_types_enum import DiscordEventTypesEnum from cpl_discord.discord_event_types_enum import DiscordEventTypesEnum
from cpl_discord.service.command_error_handler_service import CommandErrorHandlerService from cpl_discord.service.command_error_handler_service import CommandErrorHandlerService
from cpl_discord.service.discord_collection_abc import DiscordCollectionABC from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
from cpl_query.extension.list import List
class DiscordCollection(DiscordCollectionABC): class DiscordCollection(DiscordCollectionABC):
@ -13,26 +13,21 @@ class DiscordCollection(DiscordCollectionABC):
DiscordCollectionABC.__init__(self) DiscordCollectionABC.__init__(self)
self._services = service_collection self._services = service_collection
self._events: dict[str, List] = {}
self._commands = List(type(DiscordCommandABC))
self.add_event(DiscordEventTypesEnum.on_command_error.value, CommandErrorHandlerService) self.add_event(DiscordEventTypesEnum.on_command_error.value, CommandErrorHandlerService)
def add_command(self, _t: Type[DiscordCommandABC]): def add_command(self, _t: Type[DiscordCommandABC]):
Console.set_foreground_color(ForegroundColorEnum.yellow)
Console.write_line(
f"{type(self).__name__}.add_command is deprecated. Instead, use ServiceCollection.add_transient directly!"
)
Console.color_reset()
self._services.add_transient(DiscordCommandABC, _t) self._services.add_transient(DiscordCommandABC, _t)
self._commands.append(_t)
def get_commands(self) -> List[DiscordCommandABC]:
return self._commands
def add_event(self, _t_event: Type, _t: Type): def add_event(self, _t_event: Type, _t: Type):
Console.set_foreground_color(ForegroundColorEnum.yellow)
Console.write_line(
f"{type(self).__name__}.add_event is deprecated. Instead, use ServiceCollection.add_transient directly!"
)
Console.color_reset()
self._services.add_transient(_t_event, _t) self._services.add_transient(_t_event, _t)
if _t_event not in self._events:
self._events[_t_event] = List(type(_t_event))
self._events[_t_event].append(_t)
def get_events_by_base(self, _t_event: Type) -> Optional[List]:
if _t_event not in self._events:
return None
return self._events[_t_event]

View File

@ -13,14 +13,6 @@ class DiscordCollectionABC(ABC):
def add_command(self, _t: Type[DiscordCommandABC]): def add_command(self, _t: Type[DiscordCommandABC]):
pass pass
@abstractmethod
def get_commands(self) -> List[DiscordCommandABC]:
pass
@abstractmethod @abstractmethod
def add_event(self, _t_event: Type, _t: Type): def add_event(self, _t_event: Type, _t: Type):
pass pass
@abstractmethod
def get_events_by_base(self, _t_event: Type):
pass

View File

@ -4,11 +4,12 @@ from typing import Optional, Sequence, Union, Type
import discord import discord
from discord import RawReactionActionEvent from discord import RawReactionActionEvent
from discord.ext import commands from discord.ext import commands
from discord.ext.commands import Context, CommandError, Cog, Command from discord.ext.commands import Context, CommandError, Cog
from cpl_core.dependency_injection import ServiceProviderABC from cpl_core.dependency_injection import ServiceProviderABC
from cpl_core.logging import LoggerABC from cpl_core.logging import LoggerABC
from cpl_core.utils import String from cpl_core.utils import String
from cpl_discord.command import DiscordCommandABC
from cpl_discord.command.discord_commands_meta import DiscordCogMeta from cpl_discord.command.discord_commands_meta import DiscordCogMeta
from cpl_discord.events.on_bulk_message_delete_abc import OnBulkMessageDeleteABC from cpl_discord.events.on_bulk_message_delete_abc import OnBulkMessageDeleteABC
from cpl_discord.events.on_command_abc import OnCommandABC from cpl_discord.events.on_command_abc import OnCommandABC
@ -66,25 +67,17 @@ from cpl_discord.events.on_typing_abc import OnTypingABC
from cpl_discord.events.on_user_update_abc import OnUserUpdateABC from cpl_discord.events.on_user_update_abc import OnUserUpdateABC
from cpl_discord.events.on_voice_state_update_abc import OnVoiceStateUpdateABC from cpl_discord.events.on_voice_state_update_abc import OnVoiceStateUpdateABC
from cpl_discord.events.on_webhooks_update_abc import OnWebhooksUpdateABC from cpl_discord.events.on_webhooks_update_abc import OnWebhooksUpdateABC
from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
from cpl_discord.service.discord_service_abc import DiscordServiceABC from cpl_discord.service.discord_service_abc import DiscordServiceABC
class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta): class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
def __init__(self, logger: LoggerABC, dc_collection: DiscordCollectionABC, services: ServiceProviderABC): def __init__(self, logger: LoggerABC, services: ServiceProviderABC):
DiscordServiceABC.__init__(self) DiscordServiceABC.__init__(self)
self._logger = logger self._logger = logger
self._collection = dc_collection
self._services = services self._services = services
async def _handle_event(self, event: Type, *args, **kwargs): async def _handle_event(self, event: Type, *args, **kwargs):
event_collection = self._collection.get_events_by_base(event) for event_instance in self._services.get_services(event):
if event_collection is None:
return
for event_type in event_collection:
event_instance = self._services.get_service(event_type)
func_name = event.__name__ func_name = event.__name__
if func_name.endswith("ABC"): if func_name.endswith("ABC"):
func_name = func_name.replace("ABC", "") func_name = func_name.replace("ABC", "")
@ -104,11 +97,10 @@ class DiscordService(DiscordServiceABC, commands.Cog, metaclass=DiscordCogMeta):
self._logger.error(__name__, f"{type(self).__name__} initialization failed", e) self._logger.error(__name__, f"{type(self).__name__} initialization failed", e)
try: try:
for command_type in self._collection.get_commands(): for command in self._services.get_services(DiscordCommandABC):
self._logger.trace(__name__, f"Register command {command_type.__name__}") self._logger.trace(__name__, f"Register command {type(command).__name__}")
command: Cog = self._services.get_service(command_type)
if command is None: if command is None:
self._logger.warn(__name__, f"Instance of {command_type.__name__} not found") self._logger.warn(__name__, f"Instance of {type(command).__name__} not found")
continue continue
await bot.add_cog(command) await bot.add_cog(command)
except Exception as e: except Exception as e:

View File

@ -15,7 +15,7 @@ __title__ = "cpl_query"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post1" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -23,4 +23,4 @@ from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post1") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_query.base"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post1" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -28,4 +28,4 @@ from .queryable_abc import QueryableABC
from .sequence import Sequence from .sequence import Sequence
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post1") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -3,8 +3,8 @@
"Name": "cpl-query", "Name": "cpl-query",
"Version": { "Version": {
"Major": "2023", "Major": "2023",
"Minor": "4", "Minor": "10",
"Micro": "0.post1" "Micro": "0"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",

View File

@ -15,7 +15,7 @@ __title__ = "cpl_query.enumerable"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post1" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .enumerable import Enumerable
from .enumerable_abc import EnumerableABC from .enumerable_abc import EnumerableABC
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post1") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -15,7 +15,7 @@ __title__ = "cpl_query.extension"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post1" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -24,4 +24,4 @@ from collections import namedtuple
from .list import List from .list import List
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post1") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -1,12 +1,10 @@
from typing import Iterator
from cpl_query.iterable.iterable import Iterable from cpl_query.iterable.iterable import Iterable
class List(Iterable): class List(Iterable):
r"""Implementation of :class: `cpl_query.extension.iterable.Iterable`""" r"""Implementation of :class: `cpl_query.extension.iterable.Iterable`"""
def __init__(self, t: type = None, values: Iterator = None): def __init__(self, t: type = None, values: Iterable = None):
Iterable.__init__(self, t, values) Iterable.__init__(self, t, values)
def __getitem__(self, *args): def __getitem__(self, *args):

View File

@ -15,7 +15,7 @@ __title__ = "cpl_query.iterable"
__author__ = "Sven Heidemann" __author__ = "Sven Heidemann"
__license__ = "MIT" __license__ = "MIT"
__copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de" __copyright__ = "Copyright (c) 2021 - 2023 sh-edraft.de"
__version__ = "2023.4.0.post1" __version__ = "2023.10.0"
from collections import namedtuple from collections import namedtuple
@ -25,4 +25,4 @@ from .iterable_abc import IterableABC
from .iterable import Iterable from .iterable import Iterable
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="2023", minor="4", micro="0.post1") version_info = VersionInfo(major="2023", minor="10", micro="0")

View File

@ -11,11 +11,11 @@ CPL translation extension
""" """
__title__ = 'cpl_translation' __title__ = "cpl_translation"
__author__ = 'Sven Heidemann' __author__ = "Sven Heidemann"
__license__ = 'MIT' __license__ = "MIT"
__copyright__ = 'Copyright (c) 2022 - 2023 sh-edraft.de' __copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
__version__ = '2023.4.0.post1' __version__ = "2023.4.0.post1"
from collections import namedtuple from collections import namedtuple
@ -25,6 +25,7 @@ from .translate_pipe import TranslatePipe
from .translation_service import TranslationService from .translation_service import TranslationService
from .translation_service_abc import TranslationServiceABC from .translation_service_abc import TranslationServiceABC
from .translation_settings import TranslationSettings from .translation_settings import TranslationSettings
# build-ignore # build-ignore
@ -51,5 +52,5 @@ def init():
init() init()
# build-ignore-end # build-ignore-end
VersionInfo = namedtuple('VersionInfo', 'major minor micro') VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major='2023', minor='4', micro='0.post1') version_info = VersionInfo(major="2023", minor="4", micro="0.post1")

View File

@ -20,7 +20,6 @@
"Database": "sh_cpl", "Database": "sh_cpl",
"Charset": "utf8mb4", "Charset": "utf8mb4",
"UseUnicode": "true", "UseUnicode": "true",
"Buffered": "true", "Buffered": "true"
"AuthPlugin": "mysql_native_password"
} }
} }

View File

@ -3,5 +3,5 @@ from cpl_core.database.context import DatabaseContext
class DBContext(DatabaseContext): class DBContext(DatabaseContext):
def __init__(self, db_settings: DatabaseSettings): def __init__(self):
DatabaseContext.__init__(self, db_settings) DatabaseContext.__init__(self)

View File

@ -21,7 +21,6 @@ class Startup(StartupABC):
) -> ConfigurationABC: ) -> ConfigurationABC:
configuration.add_environment_variables("PYTHON_") configuration.add_environment_variables("PYTHON_")
configuration.add_environment_variables("CPL_") configuration.add_environment_variables("CPL_")
configuration.parse_console_arguments()
configuration.add_json_file(f"appsettings.json") configuration.add_json_file(f"appsettings.json")
configuration.add_json_file(f"appsettings.{configuration.environment.environment_name}.json") configuration.add_json_file(f"appsettings.{configuration.environment.environment_name}.json")
configuration.add_json_file(f"appsettings.{configuration.environment.host_name}.json", optional=True) configuration.add_json_file(f"appsettings.{configuration.environment.host_name}.json", optional=True)
@ -34,6 +33,7 @@ class Startup(StartupABC):
self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC
) -> ServiceProviderABC: ) -> ServiceProviderABC:
# Create and connect to database # Create and connect to database
self._configuration.parse_console_arguments(services)
db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings) db_settings: DatabaseSettings = self._configuration.get_configuration(DatabaseSettings)
services.add_db_context(DBContext, db_settings) services.add_db_context(DBContext, db_settings)