Tai Truong
fix readme
d202ada
from __future__ import annotations
from pathlib import Path
import yaml
from loguru import logger
from langflow.services.base import Service
from langflow.services.settings.auth import AuthSettings
from langflow.services.settings.base import Settings
class SettingsService(Service):
name = "settings_service"
def __init__(self, settings: Settings, auth_settings: AuthSettings):
super().__init__()
self.settings = settings
self.auth_settings = auth_settings
@classmethod
def load_settings_from_yaml(cls, file_path: str) -> SettingsService:
# Check if a string is a valid path or a file name
if "/" not in file_path:
# Get current path
current_path = Path(__file__).resolve().parent
file_path_ = Path(current_path) / file_path
else:
file_path_ = Path(file_path)
with file_path_.open(encoding="utf-8") as f:
settings_dict = yaml.safe_load(f)
settings_dict = {k.upper(): v for k, v in settings_dict.items()}
for key in settings_dict:
if key not in Settings.model_fields:
msg = f"Key {key} not found in settings"
raise KeyError(msg)
logger.debug(f"Loading {len(settings_dict[key])} {key} from {file_path}")
settings = Settings(**settings_dict)
if not settings.config_dir:
msg = "CONFIG_DIR must be set in settings"
raise ValueError(msg)
auth_settings = AuthSettings(
CONFIG_DIR=settings.config_dir,
)
return cls(settings, auth_settings)