mirror of
https://github.com/NCBM/plyngent.git
synced 2026-11-07 15:37:55 +08:00
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import tomlkit
|
|
from tomlkit.exceptions import TOMLKitError
|
|
|
|
from .models import DEFAULT_SYSTEM_PROMPT as DEFAULT_SYSTEM_PROMPT
|
|
from .models import DEFAULT_TOOL_DIRECTIVES as DEFAULT_TOOL_DIRECTIVES
|
|
from .models import AgentConfig as AgentConfig
|
|
from .models import AnthropicProvider as AnthropicProvider
|
|
from .models import DatabaseConfig as DatabaseConfig
|
|
from .models import DeepSeekConvention as DeepSeekConvention
|
|
from .models import DeepseekProvider as DeepseekProvider
|
|
from .models import HttpTimeoutConfig as HttpTimeoutConfig
|
|
from .models import McpConfig as McpConfig
|
|
from .models import McpServerConfig as McpServerConfig
|
|
from .models import ModelConfig as ModelConfig
|
|
from .models import NetworkingConfig as NetworkingConfig
|
|
from .models import OpenAICompatibleProvider as OpenAICompatibleProvider
|
|
from .models import OpenAIProvider as OpenAIProvider
|
|
from .models import PluginsConfig as PluginsConfig
|
|
from .models import ProviderConfig as ProviderConfig
|
|
from .models import compose_agent_system_content as compose_agent_system_content
|
|
from .path import get_default_path as _get_default_path
|
|
from .routing import EffectiveProvider as EffectiveProvider
|
|
from .routing import ProviderPreset as ProviderPreset
|
|
from .routing import default_url_for_preset as default_url_for_preset
|
|
from .routing import provider_preset as provider_preset
|
|
from .routing import resolve_effective_provider as resolve_effective_provider
|
|
from .store import ConfigFormatError as ConfigFormatError
|
|
from .store import ConfigStore as ConfigStore
|
|
|
|
if TYPE_CHECKING:
|
|
from pathlib import Path
|
|
|
|
default_config_source: Path = _get_default_path()
|
|
|
|
|
|
def load(path: Path | None = None) -> ConfigStore:
|
|
"""Load configuration from a TOML file.
|
|
|
|
Args:
|
|
path: Path to the config file. If ``None``, uses :data:`default_config_source`.
|
|
|
|
Returns:
|
|
A :class:`ConfigStore` with parsed providers.
|
|
|
|
Raises:
|
|
ConfigFormatError: If the file contains invalid TOML.
|
|
"""
|
|
if path is None:
|
|
path = default_config_source
|
|
try:
|
|
with path.open() as f:
|
|
doc = tomlkit.parse(f.read())
|
|
except FileNotFoundError:
|
|
doc = tomlkit.document()
|
|
except TOMLKitError as exc:
|
|
raise ConfigFormatError(str(exc)) from exc
|
|
return ConfigStore(path=path, document=doc)
|