feat(ConfigManager): implement own ConfigParser write() method

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2023-12-17 21:49:09 +01:00
parent c2e7ee98df
commit 926ba1acb4

View File

@@ -19,7 +19,7 @@ from kiauh.utils.logger import Logger
class ConfigManager:
def __init__(self, cfg_file: str):
self.config_file = cfg_file
self.config = configparser.ConfigParser()
self.config = CustomConfigParser()
def read_config(self) -> None:
if not self.config_file:
@@ -55,3 +55,27 @@ class ConfigManager:
def set_value(self, section: str, key: str, value: str):
self.config.set(section, key, value)
class CustomConfigParser(configparser.ConfigParser):
"""
A custom ConfigParser class overwriting the write() method of configparser.Configparser.
Key and value will be delimited by a ": ".
Note the whitespace AFTER the colon, which is the whole reason for that overwrite.
"""
def write(self, fp, space_around_delimiters=False):
if self._defaults:
fp.write("[%s]\n" % configparser.DEFAULTSECT)
for key, value in self._defaults.items():
fp.write("%s: %s\n" % (key, str(value).replace("\n", "\n\t")))
fp.write("\n")
for section in self._sections:
fp.write("[%s]\n" % section)
for key, value in self._sections[section].items():
if key == "__name__":
continue
if (value is not None) or (self._optcre == self.OPTCRE):
key = ": ".join((key, str(value).replace("\n", "\n\t")))
fp.write("%s\n" % key)
fp.write("\n")