Source code for scitex_io._loading._load_configs

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Timestamp: "2025-10-11 23:54:07 (ywatanabe)"
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/io/_load_configs.py
# ----------------------------------------
from __future__ import annotations

import os

__FILE__ = "./src/scitex/io/_load_configs.py"
__DIR__ = os.path.dirname(__FILE__)
# ----------------------------------------

from pathlib import Path
from typing import Optional, Union

from .._glob import glob
from .._utils import DotDict
from ._load import load


[docs] def load_configs( IS_DEBUG=None, show=False, verbose=False, config_dir: Optional[Union[str, Path]] = None, ): """Load YAML configuration files from specified directory. Parameters ---------- IS_DEBUG : bool, optional Debug mode flag. If None, reads from IS_DEBUG.yaml show : bool Show configuration changes verbose : bool Print detailed information config_dir : Union[str, Path], optional Directory containing configuration files. Can be a string or pathlib.Path object. Defaults to "./config" if None Returns ------- DotDict Merged configuration dictionary """ def apply_debug_values(config, IS_DEBUG): """Apply debug values if IS_DEBUG is True.""" if not IS_DEBUG or not isinstance(config, (dict, DotDict)): return config for key, value in list(config.items()): if key.startswith(("DEBUG_", "debug_")): dk_wo_debug_prefix = key.split("_", 1)[1] config[dk_wo_debug_prefix] = value if show or verbose: print(f"{key} -> {dk_wo_debug_prefix}") elif isinstance(value, (dict, DotDict)): config[key] = apply_debug_values(value, IS_DEBUG) return config try: # Handle config directory parameter if config_dir is None: config_dir = "./config" elif isinstance(config_dir, Path): config_dir = str(config_dir) # Set debug mode debug_config_path = f"{config_dir}/IS_DEBUG.yaml" IS_DEBUG = ( IS_DEBUG or os.getenv("CI") == "True" or ( os.path.exists(debug_config_path) and load(debug_config_path).get("IS_DEBUG") ) ) # Load and merge configs (namespaced by filename) CONFIGS = {} # Load from main config directory config_pattern = f"{config_dir}/*.yaml" for lpath in glob(config_pattern): if config := load(lpath): filename = Path(lpath).stem CONFIGS[filename] = apply_debug_values(config, IS_DEBUG) # Load from categories subdirectory if it exists categories_dir = f"{config_dir}/categories" if os.path.exists(categories_dir): categories_pattern = f"{categories_dir}/*.yaml" for lpath in glob(categories_pattern): if config := load(lpath): filename = Path(lpath).stem CONFIGS[filename] = apply_debug_values(config, IS_DEBUG) return DotDict(CONFIGS) except Exception as e: print(f"Error loading configs: {e}") return DotDict({})
# EOF