trailpack.config.config_loader ============================== .. py:module:: trailpack.config.config_loader .. autoapi-nested-parse:: Configuration loader for reading and applying JSON configs in CLI. Exceptions ---------- .. autoapisummary:: trailpack.config.config_loader.ConfigLoadError Functions --------- .. autoapisummary:: trailpack.config.config_loader.extract_column_mappings trailpack.config.config_loader.extract_file_info trailpack.config.config_loader.extract_general_details trailpack.config.config_loader.load_configs trailpack.config.config_loader.load_mapping_config trailpack.config.config_loader.load_metadata_config trailpack.config.config_loader.validate_config_compatibility Module Contents --------------- .. py:exception:: ConfigLoadError Bases: :py:obj:`Exception` Raised when config loading fails. Initialize self. See help(type(self)) for accurate signature. .. py:function:: extract_column_mappings(mapping_config: Dict[str, Any]) -> Dict[str, str] Extract column mappings dictionary from mapping config. :param mapping_config: Mapping configuration dictionary :returns: Dictionary mapping column names to ontology/unit IDs .. rubric:: Example >>> config = load_mapping_config(Path("mapping_config.json")) >>> mappings = extract_column_mappings(config) >>> # {"Product": "https://vocab.sentier.dev/...", ...} .. py:function:: extract_file_info(mapping_config: Dict[str, Any]) -> Dict[str, str] Extract file information from mapping config. :param mapping_config: Mapping configuration dictionary :returns: Dictionary with original_file and sheet_name .. rubric:: Example >>> config = load_mapping_config(Path("mapping_config.json")) >>> file_info = extract_file_info(config) >>> # {"original_file": "data.xlsx", "sheet_name": "Sheet1"} .. py:function:: extract_general_details(metadata_config: Dict[str, Any]) -> Dict[str, Any] Extract general details from metadata config for UI compatibility. :param metadata_config: Metadata configuration dictionary :returns: Dictionary with package metadata in UI format .. rubric:: Example >>> config = load_metadata_config(Path("metadata_config.json")) >>> details = extract_general_details(config) >>> # {"name": "my-dataset", "title": "...", ...} .. py:function:: load_configs(mapping_path: Optional[pathlib.Path] = None, metadata_path: Optional[pathlib.Path] = None) -> tuple[Optional[Dict[str, Any]], Optional[Dict[str, Any]]] Load both mapping and metadata configs with validation. :param mapping_path: Path to mapping config JSON (optional) :param metadata_path: Path to metadata config JSON (optional) :returns: Tuple of (mapping_config, metadata_config) :raises ConfigLoadError: If loading fails or configs are incompatible .. rubric:: Example >>> mapping, metadata = load_configs( ... mapping_path=Path("mapping.json"), ... metadata_path=Path("metadata.json") ... ) .. py:function:: load_mapping_config(config_path: pathlib.Path) -> Dict[str, Any] Load mapping configuration from JSON file. :param config_path: Path to mapping config JSON file :returns: Dictionary with mapping configuration :raises ConfigLoadError: If file doesn't exist, is invalid JSON, or wrong type .. rubric:: Example >>> config = load_mapping_config(Path("mapping_config.json")) >>> column_mappings = config["column_mappings"] .. py:function:: load_metadata_config(config_path: pathlib.Path) -> Dict[str, Any] Load metadata configuration from JSON file. :param config_path: Path to metadata config JSON file :returns: Dictionary with metadata configuration :raises ConfigLoadError: If file doesn't exist, is invalid JSON, or wrong type .. rubric:: Example >>> config = load_metadata_config(Path("metadata_config.json")) >>> package_info = config["package"] .. py:function:: validate_config_compatibility(mapping_config: Dict[str, Any], metadata_config: Dict[str, Any]) -> bool Check if mapping and metadata configs are compatible. :param mapping_config: Mapping configuration dictionary :param metadata_config: Metadata configuration dictionary :returns: True if configs are compatible :raises ConfigLoadError: If configs are incompatible .. rubric:: Example >>> mapping = load_mapping_config(Path("mapping.json")) >>> metadata = load_metadata_config(Path("metadata.json")) >>> validate_config_compatibility(mapping, metadata) True