refactor: move load_settings() to domain, simplify settings.py

- load_settings() now in domain/settings_core.py (shared by all UIs)
- settings.py delegates to domain instead of reimplementing
- settings.py: 456 → 430 lines
This commit is contained in:
Artem Akymenko
2026-07-20 06:56:42 +00:00
parent 079e185108
commit 476063bc3d
2 changed files with 12 additions and 26 deletions
+12
View File
@@ -420,6 +420,18 @@ def all_settings_defaults() -> Dict[str, Any]:
return result
def load_settings() -> Dict[str, Any]:
"""Load and normalize settings from config file."""
from abogen.utils import load_config
defaults = settings_defaults()
cfg = load_config() or {}
settings: Dict[str, Any] = {}
for key, default in defaults.items():
raw_value = cfg.get(key, default)
settings[key] = normalize_setting_value(key, raw_value, defaults)
return settings
# ── Normalization (delegates to Setting.coerce) ──────────────────────
def normalize_setting_value(key: str, value: Any, defaults: Dict[str, Any]) -> Any:
-26
View File
@@ -5,27 +5,11 @@ from abogen.integrations.calibre_opds import CalibreOPDSClient
from abogen.integrations.audiobookshelf import AudiobookshelfConfig
from abogen.utils import load_config, save_config
from abogen.domain.settings_core import (
SAVE_MODE_LABELS,
LEGACY_SAVE_MODE_MAP,
CHUNK_LEVEL_OPTIONS,
CHUNK_LEVEL_VALUES,
DEFAULT_ANALYSIS_THRESHOLD,
BOOLEAN_SETTINGS,
FLOAT_SETTINGS,
INT_SETTINGS,
_NORMALIZATION_BOOLEAN_KEYS,
_NORMALIZATION_STRING_KEYS,
coerce_bool,
coerce_float,
coerce_int,
split_profile_spec,
normalize_save_mode,
normalize_setting_value,
has_output_override,
settings_defaults,
integration_defaults,
llm_ready,
render_prompt_template,
)
_NORMALIZATION_GROUPS = [
@@ -72,16 +56,6 @@ _CHUNK_LEVEL_OPTIONS = CHUNK_LEVEL_OPTIONS
_CHUNK_LEVEL_VALUES = CHUNK_LEVEL_VALUES
def load_settings() -> Dict[str, Any]:
defaults = settings_defaults()
cfg = load_config() or {}
settings: Dict[str, Any] = {}
for key, default in defaults.items():
raw_value = cfg.get(key, default)
settings[key] = normalize_setting_value(key, raw_value, defaults)
return settings
def load_integration_settings() -> Dict[str, Dict[str, Any]]:
defaults = integration_defaults()
cfg = load_config() or {}