user_settings
1from __future__ import annotations 2 3import json 4from pathlib import Path 5from typing import Any 6 7from config import data_dir, resources_dir 8 9_DEFAULTS_PATH = resources_dir() / "formats" / "default_settings.json" 10_USER_PATH = data_dir() / "user_settings.json" 11 12_defaults: dict[str, Any] = json.loads(_DEFAULTS_PATH.read_text()) 13_settings: dict[str, Any] = {} 14 15 16def _load() -> None: 17 global _settings 18 if _USER_PATH.exists(): 19 _settings = json.loads(_USER_PATH.read_text()) 20 else: 21 _settings = {} 22 23 24def save() -> None: 25 _USER_PATH.write_text(json.dumps(_settings, indent=2)) 26 27 28def get(key: str) -> Any: 29 if not _settings: 30 _load() 31 return _settings.get(key, _defaults.get(key)) 32 33 34def set(key: str, value: Any) -> None: 35 if not _settings and _USER_PATH.exists(): 36 _load() 37 _settings[key] = value 38 save() 39 40 41def all_settings() -> dict[str, Any]: 42 if not _settings and _USER_PATH.exists(): 43 _load() 44 return {**_defaults, **_settings} 45 46 47_load()
def
save() -> None:
def
get(key: str) -> Any:
def
set(key: str, value: Any) -> None:
def
all_settings() -> dict[str, typing.Any]: