From 708918464f3f4fa165562895593b0882cb98663e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 19 Jul 2023 11:15:24 +0200 Subject: [PATCH] Improved config loading --- src/cpl_core/__init__.py | 4 +-- src/cpl_core/application/__init__.py | 4 +-- src/cpl_core/configuration/__init__.py | 4 +-- src/cpl_core/configuration/configuration.py | 28 ++++++++++--------- src/cpl_core/console/__init__.py | 4 +-- src/cpl_core/cpl-core.json | 2 +- src/cpl_core/database/__init__.py | 4 +-- src/cpl_core/database/connection/__init__.py | 4 +-- src/cpl_core/database/context/__init__.py | 4 +-- src/cpl_core/dependency_injection/__init__.py | 4 +-- src/cpl_core/environment/__init__.py | 4 +-- src/cpl_core/logging/__init__.py | 4 +-- src/cpl_core/mailing/__init__.py | 4 +-- src/cpl_core/pipes/__init__.py | 4 +-- src/cpl_core/time/__init__.py | 4 +-- src/cpl_core/utils/__init__.py | 4 +-- src/cpl_core/utils/json_processor.py | 3 ++ 17 files changed, 47 insertions(+), 42 deletions(-) diff --git a/src/cpl_core/__init__.py b/src/cpl_core/__init__.py index a80f88c8..f5e4c6d0 100644 --- a/src/cpl_core/__init__.py +++ b/src/cpl_core/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -23,4 +23,4 @@ from collections import namedtuple # imports: VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/application/__init__.py b/src/cpl_core/application/__init__.py index 39356226..03fa6f22 100644 --- a/src/cpl_core/application/__init__.py +++ b/src/cpl_core/application/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.application" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -29,4 +29,4 @@ from .startup_abc import StartupABC from .startup_extension_abc import StartupExtensionABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/configuration/__init__.py b/src/cpl_core/configuration/__init__.py index 79096006..f61ed590 100644 --- a/src/cpl_core/configuration/__init__.py +++ b/src/cpl_core/configuration/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.configuration" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -35,4 +35,4 @@ from .validator_abc import ValidatorABC from .variable_argument import VariableArgument VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/configuration/configuration.py b/src/cpl_core/configuration/configuration.py index aa3eab53..c3627cf5 100644 --- a/src/cpl_core/configuration/configuration.py +++ b/src/cpl_core/configuration/configuration.py @@ -278,21 +278,23 @@ class Configuration(ConfigurationABC): config_from_file = self._load_json_file(file_path, output) for sub in ConfigurationModelABC.__subclasses__(): for key, value in config_from_file.items(): - if sub.__name__ == key or sub.__name__.replace("Settings", "") == key: - configuration = sub() - from_dict = getattr(configuration, "from_dict", None) + if sub.__name__ != key and sub.__name__.replace("Settings", "") != key: + continue - if from_dict is not None and not hasattr(from_dict, "is_base_func"): - Console.set_foreground_color(ForegroundColorEnum.yellow) - Console.write_line( - f"{sub.__name__}.from_dict is deprecated. Instead, set attributes as typed arguments in __init__. They can be None by default!" - ) - Console.color_reset() - configuration.from_dict(value) - else: - configuration = JSONProcessor.process(sub, value) + configuration = sub() + from_dict = getattr(configuration, "from_dict", None) - self.add_configuration(sub, configuration) + if from_dict is not None and not hasattr(from_dict, "is_base_func"): + Console.set_foreground_color(ForegroundColorEnum.yellow) + Console.write_line( + f"{sub.__name__}.from_dict is deprecated. Instead, set attributes as typed arguments in __init__. They can be None by default!" + ) + Console.color_reset() + configuration.from_dict(value) + else: + configuration = JSONProcessor.process(sub, value) + + self.add_configuration(sub, configuration) def add_configuration(self, key_type: Type[T], value: any): self._config[key_type] = value diff --git a/src/cpl_core/console/__init__.py b/src/cpl_core/console/__init__.py index 624737d4..1c7635be 100644 --- a/src/cpl_core/console/__init__.py +++ b/src/cpl_core/console/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.console" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -28,4 +28,4 @@ from .foreground_color_enum import ForegroundColorEnum from .spinner_thread import SpinnerThread VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/cpl-core.json b/src/cpl_core/cpl-core.json index 98136f5d..16116b35 100644 --- a/src/cpl_core/cpl-core.json +++ b/src/cpl_core/cpl-core.json @@ -4,7 +4,7 @@ "Version": { "Major": "2023", "Minor": "4", - "Micro": "0.post2" + "Micro": "0.post3" }, "Author": "Sven Heidemann", "AuthorEmail": "sven.heidemann@sh-edraft.de", diff --git a/src/cpl_core/database/__init__.py b/src/cpl_core/database/__init__.py index 2ab6f55f..c26c232c 100644 --- a/src/cpl_core/database/__init__.py +++ b/src/cpl_core/database/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.database" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -26,4 +26,4 @@ from .database_settings import DatabaseSettings from .table_abc import TableABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/database/connection/__init__.py b/src/cpl_core/database/connection/__init__.py index a29b36cf..8536a129 100644 --- a/src/cpl_core/database/connection/__init__.py +++ b/src/cpl_core/database/connection/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.database.connection" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -25,4 +25,4 @@ from .database_connection import DatabaseConnection from .database_connection_abc import DatabaseConnectionABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/database/context/__init__.py b/src/cpl_core/database/context/__init__.py index ab6b66a1..4c483373 100644 --- a/src/cpl_core/database/context/__init__.py +++ b/src/cpl_core/database/context/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.database.context" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -25,4 +25,4 @@ from .database_context import DatabaseContext from .database_context_abc import DatabaseContextABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/dependency_injection/__init__.py b/src/cpl_core/dependency_injection/__init__.py index 10cef790..8304d96f 100644 --- a/src/cpl_core/dependency_injection/__init__.py +++ b/src/cpl_core/dependency_injection/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.dependency_injection" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -31,4 +31,4 @@ from .service_provider import ServiceProvider from .service_provider_abc import ServiceProviderABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/environment/__init__.py b/src/cpl_core/environment/__init__.py index 04d2c03f..645781bd 100644 --- a/src/cpl_core/environment/__init__.py +++ b/src/cpl_core/environment/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.environment" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -26,4 +26,4 @@ from .environment_name_enum import EnvironmentNameEnum from .application_environment import ApplicationEnvironment VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/logging/__init__.py b/src/cpl_core/logging/__init__.py index 6cd5310a..2c247283 100644 --- a/src/cpl_core/logging/__init__.py +++ b/src/cpl_core/logging/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.logging" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -28,4 +28,4 @@ from .logging_settings import LoggingSettings from .logging_settings_name_enum import LoggingSettingsNameEnum VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/mailing/__init__.py b/src/cpl_core/mailing/__init__.py index e7f1f297..311d9d1e 100644 --- a/src/cpl_core/mailing/__init__.py +++ b/src/cpl_core/mailing/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.mailing" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -28,4 +28,4 @@ from .email_client_settings import EMailClientSettings from .email_client_settings_name_enum import EMailClientSettingsNameEnum VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/pipes/__init__.py b/src/cpl_core/pipes/__init__.py index 7733a261..155d35e4 100644 --- a/src/cpl_core/pipes/__init__.py +++ b/src/cpl_core/pipes/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.pipes" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -26,4 +26,4 @@ from .ip_address_pipe import IPAddressPipe from .pipe_abc import PipeABC VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/time/__init__.py b/src/cpl_core/time/__init__.py index f75e94d0..1e3ff04b 100644 --- a/src/cpl_core/time/__init__.py +++ b/src/cpl_core/time/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.time" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -25,4 +25,4 @@ from .time_format_settings import TimeFormatSettings from .time_format_settings_names_enum import TimeFormatSettingsNamesEnum VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/utils/__init__.py b/src/cpl_core/utils/__init__.py index 1b7e8a01..f5cf9829 100644 --- a/src/cpl_core/utils/__init__.py +++ b/src/cpl_core/utils/__init__.py @@ -15,7 +15,7 @@ __title__ = "cpl_core.utils" __author__ = "Sven Heidemann" __license__ = "MIT" __copyright__ = "Copyright (c) 2020 - 2023 sh-edraft.de" -__version__ = "2023.4.0.post2" +__version__ = "2023.4.0.post3" from collections import namedtuple @@ -26,4 +26,4 @@ from .string import String from .pip import Pip VersionInfo = namedtuple("VersionInfo", "major minor micro") -version_info = VersionInfo(major="2023", minor="4", micro="0.post2") +version_info = VersionInfo(major="2023", minor="4", micro="0.post3") diff --git a/src/cpl_core/utils/json_processor.py b/src/cpl_core/utils/json_processor.py index 1269263e..b168a093 100644 --- a/src/cpl_core/utils/json_processor.py +++ b/src/cpl_core/utils/json_processor.py @@ -37,6 +37,9 @@ class JSONProcessor: args.append(value) + elif parameter.name == "kwargs" and parameter.annotation == dict: + kwargs = values + elif parameter.default != Parameter.empty: args.append(parameter.default)