haiku.rag/haiku_rag_slim/haiku/rag/config/__init__.py
2026-06-16 10:54:24 +03:00

102 lines
2.3 KiB
Python

from haiku.rag.config.loader import (
MissingEnvVarError,
expand_env_vars,
find_config_file,
generate_default_config,
load_yaml_config,
redact_secrets,
)
from haiku.rag.config.models import (
APIConfig,
AppConfig,
CircuitBreakerConfig,
ConversionOptions,
EmbeddingModelConfig,
EmbeddingsConfig,
FSSourceConfig,
HTTPSourceConfig,
IngesterConfig,
LanceDBConfig,
ModelConfig,
OllamaConfig,
PluginSourceConfig,
ProcessingConfig,
PromptsConfig,
ProvidersConfig,
QAConfig,
QueueConfig,
RerankingConfig,
RetryPolicyConfig,
S3SourceConfig,
SourceConfig,
StorageConfig,
WebDAVSourceConfig,
WorkerConfig,
)
__all__ = [
"Config",
"APIConfig",
"AppConfig",
"CircuitBreakerConfig",
"ConversionOptions",
"EmbeddingModelConfig",
"EmbeddingsConfig",
"FSSourceConfig",
"HTTPSourceConfig",
"IngesterConfig",
"LanceDBConfig",
"ModelConfig",
"OllamaConfig",
"PluginSourceConfig",
"ProcessingConfig",
"PromptsConfig",
"ProvidersConfig",
"QAConfig",
"QueueConfig",
"RerankingConfig",
"RetryPolicyConfig",
"S3SourceConfig",
"SourceConfig",
"StorageConfig",
"WebDAVSourceConfig",
"WorkerConfig",
"MissingEnvVarError",
"expand_env_vars",
"find_config_file",
"generate_default_config",
"get_config",
"load_yaml_config",
"redact_secrets",
"set_config",
]
# Global config instance - initially loads from default locations
_config: AppConfig | None = None
def _load_default_config() -> AppConfig:
"""Load config from default locations (used at import time)."""
config_path = find_config_file(None)
if config_path:
yaml_data = load_yaml_config(config_path)
return AppConfig.model_validate(yaml_data)
return AppConfig()
def set_config(config: AppConfig) -> None:
"""Set the global config instance (used by CLI to override)."""
global _config
_config = config
def get_config() -> AppConfig:
"""Get the current config instance."""
global _config
if _config is None:
_config = _load_default_config()
return _config
# Legacy compatibility - Config is the default instance
Config = _load_default_config()