mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-27 13:57:46 +00:00
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
import os
|
|
from functools import cache
|
|
from typing import Any, Dict, Optional, cast
|
|
|
|
|
|
class AppConfig:
|
|
def __init__(self, configs: Optional[Dict[str, Any]] = None) -> None:
|
|
self.configs = configs or {}
|
|
|
|
def set(self, key: str, value: Any, overwrite: bool = False) -> None:
|
|
"""Set config value by key
|
|
Args:
|
|
key (str): The key of config
|
|
value (Any): The value of config
|
|
overwrite (bool, optional): Whether to overwrite the value if key exists. Defaults to False.
|
|
"""
|
|
if key in self.configs and not overwrite:
|
|
raise KeyError(f"Config key {key} already exists")
|
|
self.configs[key] = value
|
|
|
|
def get(self, key, default: Optional[Any] = None) -> Any:
|
|
"""Get config value by key
|
|
|
|
Args:
|
|
key (str): The key of config
|
|
default (Optional[Any], optional): The default value if key not found. Defaults to None.
|
|
"""
|
|
return self.configs.get(key, default)
|
|
|
|
@cache
|
|
def get_all_by_prefix(self, prefix) -> Dict[str, Any]:
|
|
"""Get all config values by prefix
|
|
Args:
|
|
prefix (str): The prefix of config
|
|
"""
|
|
return {k: v for k, v in self.configs.items() if k.startswith(prefix)}
|
|
|
|
def get_current_lang(self, default: Optional[str] = None) -> str:
|
|
"""Get current language
|
|
|
|
Args:
|
|
default (Optional[str], optional): The default language if not found. Defaults to None.
|
|
|
|
Returns:
|
|
str: The language of user running environment
|
|
"""
|
|
env_lang = (
|
|
"zh"
|
|
if os.getenv("LANG") and cast(str, os.getenv("LANG")).startswith("zh")
|
|
else default
|
|
)
|
|
return self.get("dbgpt.app.global.language", env_lang)
|