""" Settings loader test """ import re from pathlib import Path from corelibs.debug_handling.dump_data import dump_data from corelibs.logging_handling.log import Log from corelibs.config_handling.settings_loader import SettingsLoader from corelibs.config_handling.settings_loader_handling.settings_loader_check import SettingsLoaderCheck SCRIPT_PATH: Path = Path(__file__).resolve().parent ROOT_PATH: Path = SCRIPT_PATH CONFIG_DIR: Path = Path("config") LOG_DIR: Path = Path("log") CONFIG_FILE: str = "settings.ini" def main(): """ Main run """ # for log testing log = Log( log_path=ROOT_PATH.joinpath(LOG_DIR, 'settings_loader.log'), log_name="Settings Loader", log_settings={ "log_level_console": 'DEBUG', "log_level_file": 'DEBUG', } ) log.logger.info('Settings loader') value = "2025/1/1" regex_c = re.compile(SettingsLoaderCheck.CHECK_SETTINGS['string.date']['regex'], re.VERBOSE) result = regex_c.search(value) log.info(f"regex {regex_c} check against {value} -> {result}") sl = SettingsLoader( { 'overload_from_args': 'OVERLOAD from ARGS', 'arg_overload': ['should', 'not', 'be', 'set'], 'arg_overload_list': ['overload', 'this', 'list'], 'arg_overload_not_set': "DO_NOT_SET", }, ROOT_PATH.joinpath(CONFIG_DIR, CONFIG_FILE), log=log ) try: config_load = 'TestA' config_data = sl.load_settings( config_load, { # "doesnt": ["split:,"], "overload_from_args": ["args_override:yes", "mandatory:yes"], "foobar": ["check:int"], "bar": ["mandatory:yes"], "arg_overload_list": ["args_override:yes", "split:,",], "arg_overload_not_set": [], "some_match": ["matching:foo|bar"], "some_match_list": ["split:,", "matching:foo|bar"], "test_list": [ "check:string.alphanumeric", "split:," ], "other_list": ["split:|"], "third_list": [ "split:|", "check:string.alphanumeric" ], "empty_list": [ "split:,", ], "str_length": [ "length:2-10" ], "int_range": [ "range:2-50" ], "int_range_not_set": [ "range:2-50" ], "int_range_not_set_empty_set": [ "empty:" ], "bool_var": ["convert:bool"], "match_target": ["matching:foo"], "match_target_list": ["split:,", "matching:foo|bar|baz",], "match_source_a": ["in:match_target"], "match_source_b": ["in:match_target_list"], "match_source_list": ["split:,", "in:match_target_list"], } ) print(f"[{config_load}] Load: {config_load} -> {dump_data(config_data)}") except ValueError as e: print(f"Could not load settings: {e}") try: config_load = 'TestB' config_data = sl.load_settings( config_load, { "email": [ "split:,", "mandatory:yes", "check:string.email.basic" ], "email_not_mandatory": [ "split:,", # "mandatory:yes", "check:string.email.basic" ], "email_bad": [ "split:,", "mandatory:yes", "check:string.email.basic" ] } ) print(f"[{config_load}] Load: {config_load} -> {dump_data(config_data)}") except ValueError as e: print(f"Could not load settings: {e}") try: config_load = 'LoadTest' config_data = sl.load_settings(config_load) print(f"[{config_load}] Load: {config_load} -> {dump_data(config_data)}") except ValueError as e: print(f"Could not load settings: {e}") try: config_load = 'ErrorTest' config_data = sl.load_settings( config_load, { "some_value": [ "check:string.email.basic", ], } ) print(f"[{config_load}] Load: {config_load} -> {dump_data(config_data)}") except ValueError as e: print(f"Could not load settings: {e}") if __name__ == "__main__": main()