Improved config loading
This commit is contained in:
parent
ed2377c288
commit
708918464f
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -278,21 +278,23 @@ class Configuration(ConfigurationABC):
|
|||||||
config_from_file = self._load_json_file(file_path, output)
|
config_from_file = self._load_json_file(file_path, output)
|
||||||
for sub in ConfigurationModelABC.__subclasses__():
|
for sub in ConfigurationModelABC.__subclasses__():
|
||||||
for key, value in config_from_file.items():
|
for key, value in config_from_file.items():
|
||||||
if sub.__name__ == key or sub.__name__.replace("Settings", "") == key:
|
if sub.__name__ != key and sub.__name__.replace("Settings", "") != key:
|
||||||
configuration = sub()
|
continue
|
||||||
from_dict = getattr(configuration, "from_dict", None)
|
|
||||||
|
|
||||||
if from_dict is not None and not hasattr(from_dict, "is_base_func"):
|
configuration = sub()
|
||||||
Console.set_foreground_color(ForegroundColorEnum.yellow)
|
from_dict = getattr(configuration, "from_dict", None)
|
||||||
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)
|
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):
|
def add_configuration(self, key_type: Type[T], value: any):
|
||||||
self._config[key_type] = value
|
self._config[key_type] = value
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "2023",
|
"Major": "2023",
|
||||||
"Minor": "4",
|
"Minor": "4",
|
||||||
"Micro": "0.post2"
|
"Micro": "0.post3"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -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.post2"
|
__version__ = "2023.4.0.post3"
|
||||||
|
|
||||||
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.post2")
|
version_info = VersionInfo(major="2023", minor="4", micro="0.post3")
|
||||||
|
@ -37,6 +37,9 @@ class JSONProcessor:
|
|||||||
|
|
||||||
args.append(value)
|
args.append(value)
|
||||||
|
|
||||||
|
elif parameter.name == "kwargs" and parameter.annotation == dict:
|
||||||
|
kwargs = values
|
||||||
|
|
||||||
elif parameter.default != Parameter.empty:
|
elif parameter.default != Parameter.empty:
|
||||||
args.append(parameter.default)
|
args.append(parameter.default)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user