Coverage for src/probable_fiesta/config/config_builder.py: 78%
95 statements
« prev ^ index » next coverage.py v7.1.0, created at 2023-01-30 18:57 -0500
« prev ^ index » next coverage.py v7.1.0, created at 2023-01-30 18:57 -0500
1from ..logger.builder.logger_factory import LoggerFactory
3class Config():
4 def __init__(self):
5 self.package = {}
6 self.logger = None
7 self.variables = {}
8 self.dotenv = {}
9 self.parsed_dotenv = {}
11 def __str__(self):
12 return f"Config: {self.__dict__}"
14class ConfigBuilder():
15 def __init__(self, config=None):
16 if config is None:
17 self.config = Config()
18 else:
19 self.config = config
20 @property
21 def my_logger(self):
22 return ConfigMyLogger(self.config)
24 @property
25 def package(self):
26 return ConfigPackage(self.config)
28 @property
29 def logger(self):
30 return ConfigLogger(self.config)
32 @property
33 def variables(self):
34 return ConfigVariables(self.config)
36 @property
37 def dotenv(self):
38 return ConfigDotEnv(self.config)
40 def build(self):
41 return self.config
43class ConfigPackage(ConfigBuilder):
44 def __init__(self, config):
45 super().__init__(config)
47 def set_package_name(self, name):
48 self.config.package['name'] = name
49 return self
51 def set_root_dir(self, directory):
52 self.config.package['root_directory'] = directory
53 return self
55class ConfigLogger(ConfigBuilder):
56 def __init__(self, config):
57 super().__init__(config)
59 def set_logger_level(self, level):
60 self.config.logger = level
61 return self
63 def set_logger_dir(self, directory):
64 self.config.logger = directory
65 return self
67 def set_logger_format(self, log_format):
68 self.config.logger = log_format
69 return self
71 def set_logger_name(self, name):
72 self.config.logger.name = name
73 return self
75 def set_logger(self, logger):
76 self.config.logger = logger
77 return self
79 def set_new_logger(self, name=None, level=None, fmt=None, directory=None):
80 self.config.logger = LoggerFactory.new_logger(name, level, fmt, directory)
81 return self
84class ConfigVariables(ConfigBuilder):
85 def __init__(self, config):
86 super().__init__(config)
88 def set_variable(self, name, value):
89 self.config.variables[name] = value
90 return self
92 def set_variables(self, variables):
93 self.config.variables.update(variables)
94 return self
96 def get_from_module_config(self):
97 self.config.variables.update(self.config.variables.module_config)
98 return self
100class ConfigDotEnv(ConfigBuilder):
101 def __init__(self, config):
102 super().__init__(config)
104 def load_dotenv(self):
105 try:
106 import dotenv as _dotenv
107 except ImportError:
108 print("Warning: dotenv package not installed.")
109 self.dotenv = None
110 if _dotenv is not None:
111 _dotenv.load_dotenv()
112 return self
114 def get_var(self, var_name):
115 import os
116 if os.getenv(var_name) is not None:
117 self.config.parsed_dotenv[var_name] = os.getenv(var_name)
118 return self
120 def set_vars(self, vars):
121 for var in vars:
122 self.get_var(var)
123 return self