Source code for symfluence.core.config

# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (C) 2024-2026 SYMFLUENCE Team <dev@symfluence.org>

"""
Configuration management facade for SYMFLUENCE.

Provides high-level access to configuration loading, normalization, validation,
and type-safe configuration models. Acts as the public API for external code
and CLI commands that need to work with SYMFLUENCE configurations.

Exports:
    SymfluenceConfig: Type-safe configuration model with hierarchical access
    ensure_typed_config: Adapter to convert dict configs to SymfluenceConfig
    normalize_config: Normalize and apply aliases to configuration dictionaries
    validate_config: Validate configuration against schema

"""
from __future__ import annotations

from typing import Any, Dict, Union

from symfluence.core.config.coercion import coerce_config, ensure_config
from symfluence.core.config.config_loader import normalize_config, validate_config
from symfluence.core.config.models import SymfluenceConfig


[docs] def ensure_typed_config(config: Union[Dict[str, Any], SymfluenceConfig]) -> SymfluenceConfig: """ Ensure configuration is a SymfluenceConfig instance. This adapter function converts dict configs to SymfluenceConfig if needed. Use this when interfacing with external code that may pass dict configs. Args: config: Configuration as dict or SymfluenceConfig Returns: SymfluenceConfig instance Example: >>> config = ensure_typed_config({'DOMAIN_NAME': 'test', ...}) >>> isinstance(config, SymfluenceConfig) True """ if isinstance(config, SymfluenceConfig): return config return SymfluenceConfig(**config)
__all__ = [ # Hierarchical config system (recommended) "SymfluenceConfig", "ensure_config", "coerce_config", # With fallback for partial configs "ensure_typed_config", # Alias for backward compatibility # Config utility functions "normalize_config", "validate_config", ]