DB-GPT/dbgpt/util/config_utils.py
2024-01-16 17:36:26 +08:00

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)