Initial commit: Original Python LLMTester project
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Dict, List
|
||||
|
||||
from config import CORE_DIR
|
||||
|
||||
SETTINGS_PATH = CORE_DIR / "user_settings.json"
|
||||
|
||||
_DEFAULT_LOCAL_PATHS: List[str] = []
|
||||
for candidate in (
|
||||
Path.home() / ".lmstudio",
|
||||
Path.home() / ".lmstudio/models",
|
||||
Path.home() / "Library/Application Support/lm-studio/models",
|
||||
):
|
||||
normalized = str(candidate)
|
||||
if normalized not in _DEFAULT_LOCAL_PATHS:
|
||||
_DEFAULT_LOCAL_PATHS.append(normalized)
|
||||
|
||||
_DEFAULT_SETTINGS: Dict[str, object] = {
|
||||
"local_model_paths": _DEFAULT_LOCAL_PATHS,
|
||||
}
|
||||
|
||||
|
||||
def load_settings() -> Dict[str, object]:
|
||||
if not SETTINGS_PATH.exists():
|
||||
return dict(_DEFAULT_SETTINGS)
|
||||
try:
|
||||
data = json.loads(SETTINGS_PATH.read_text(encoding="utf-8"))
|
||||
except (json.JSONDecodeError, OSError):
|
||||
return dict(_DEFAULT_SETTINGS)
|
||||
if not isinstance(data, dict):
|
||||
return dict(_DEFAULT_SETTINGS)
|
||||
merged = dict(_DEFAULT_SETTINGS)
|
||||
merged.update(data)
|
||||
return merged
|
||||
|
||||
|
||||
def save_settings(settings: Dict[str, object]) -> None:
|
||||
SETTINGS_PATH.write_text(json.dumps(settings, indent=2, sort_keys=True), encoding="utf-8")
|
||||
|
||||
|
||||
def get_local_model_paths() -> List[str]:
|
||||
settings = load_settings()
|
||||
paths = settings.get("local_model_paths", [])
|
||||
if not isinstance(paths, list):
|
||||
return []
|
||||
result: List[str] = []
|
||||
for entry in paths:
|
||||
if isinstance(entry, str) and entry.strip():
|
||||
normalized = str(Path(entry).expanduser())
|
||||
if normalized not in result:
|
||||
result.append(normalized)
|
||||
return result
|
||||
|
||||
|
||||
def set_local_model_paths(paths: List[str]) -> None:
|
||||
settings = load_settings()
|
||||
normalized: List[str] = []
|
||||
for entry in paths:
|
||||
if isinstance(entry, str) and entry.strip():
|
||||
candidate = str(Path(entry).expanduser())
|
||||
if candidate not in normalized:
|
||||
normalized.append(candidate)
|
||||
settings["local_model_paths"] = normalized
|
||||
save_settings(settings)
|
||||
Reference in New Issue
Block a user