Source code for pysme.config

# -*- coding: utf-8 -*-
"""
Handle the Json configuration file
At the moment it is only used for the LargeFileStorage
"""
import json
import logging
from os.path import dirname, exists, expanduser, join

logger = logging.getLogger(__name__)


def _requires_load(func):
    def func_new(self, *args, **kwargs):
        if self._cfg is None:
            self.load()
        return func(self, *args, **kwargs)

    return func_new


[docs]class Config: def __init__(self, fname="~/.sme/config.json"): self.filename = fname self._cfg = None if not exists(self.filename): logger.info( f"No cconfiguration file found at {self.filename}, using default values instead" ) self.filename = join(dirname(__file__), "config_default.json") @property def filename(self): return str(self._filename) @filename.setter def filename(self, value): self._filename = expanduser(value) @_requires_load def __getitem__(self, key): return self._cfg[key] @_requires_load def __setitem__(self, key, value): self._cfg[key] = value
[docs] def load(self): with open(self._filename, "r") as f: self._cfg = json.load(f) return self._cfg
[docs] @_requires_load def save(self): with open(self._filename, "w") as f: json.dump(self._cfg, f)