lora-scripts/mikazuki/app/config.py

48 lines
1.2 KiB
Python

import os
import json
from pathlib import Path
from mikazuki.log import log
class Config:
def __init__(self, path: str):
self.path = path
self._stored = {}
self._default = {
"last_path": "",
"saved_params": {}
}
self.lock = False
def load_config(self):
log.info(f"Loading config from {self.path}")
if not os.path.exists(self.path):
self._stored = self._default
self.save_config()
return
try:
with open(self.path, "r", encoding="utf-8") as f:
self._stored = json.load(f)
except Exception as e:
log.error(f"Error loading config: {e}")
self._stored = self._default
return
def save_config(self):
try:
with open(self.path, "w", encoding="utf-8") as f:
json.dump(self._stored, f, indent=4, ensure_ascii=False)
except Exception as e:
log.error(f"Error saving config: {e}")
def __getitem__(self, key):
return self._stored.get(key, None)
def __setitem__(self, key, value):
self._stored[key] = value
app_config = Config(Path(__file__).parents[2].absolute() / "assets" / "config.json")