Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import yaml
- class Config:
- _file_name = None
- _content = {}
- _default = {}
- def __init__(self, file_name:str='config.yml'):
- self._file_name = file_name
- def load(self):
- with open(self._file_name, 'a+', encoding='utf8') as config_file:
- self._content = yaml.load(config_file)
- if self._content is None:
- self._content = {}
- def set_default(self, key:str, value):
- parse = self._parse_content_and_key(key, obj=self._default)
- parse[0][parse[1]] = value
- def set_defaults(self, defaults):
- for key in defaults:
- self.set_default(key, defaults[key])
- def copy_defaults(self):
- for key in self._default:
- if key not in self._content:
- self._content[key] = self._default[key]
- def save(self):
- with open(self._file_name, 'w+', encoding='utf8') as config_file:
- yaml.dump(self._content, config_file, default_flow_style=False)
- def get(self, key, default=None):
- parse = self._parse_content_and_key(key)
- return parse[0].get(parse[1], default)
- def _parse_content_and_key(self, key, obj=None):
- obj = self._content if obj is None else obj
- final_key = None
- split = key.split('.')
- for i in range(0, len(split)):
- if i + 1 == len(split):
- final_key = split[i]
- break
- if split[i] not in obj:
- obj[split[i]] = {}
- obj = obj[split[i]]
- return obj, final_key
- CONFIG = Config()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement