settings.py (855B)
1 """Settings management for the stenography practice app.""" 2 3 import json 4 import os 5 6 SETTINGS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "settings.json") 7 8 DEFAULTS = { 9 "plover_config_path": os.path.expanduser("~/.config/plover/plover.cfg"), 10 "words_per_session": 50, 11 } 12 13 14 def load(): 15 settings = dict(DEFAULTS) 16 if os.path.exists(SETTINGS_PATH): 17 try: 18 with open(SETTINGS_PATH) as f: 19 stored = json.load(f) 20 settings.update(stored) 21 except (json.JSONDecodeError, OSError): 22 pass 23 return settings 24 25 26 def save(settings): 27 with open(SETTINGS_PATH, "w") as f: 28 json.dump(settings, f, indent=2) 29 30 31 def get(key, default=None): 32 return load().get(key, default) 33 34 35 def update(updates): 36 settings = load() 37 settings.update(updates) 38 save(settings)