trailpack.config.config_loader

Configuration loader for reading and applying JSON configs in CLI.

Exceptions

ConfigLoadError

Raised when config loading fails.

Functions

extract_column_mappings(→ Dict[str, str])

Extract column mappings dictionary from mapping config.

extract_file_info(→ Dict[str, str])

Extract file information from mapping config.

extract_general_details(→ Dict[str, Any])

Extract general details from metadata config for UI compatibility.

load_configs(→ tuple[Optional[Dict[str, Any]], ...)

Load both mapping and metadata configs with validation.

load_mapping_config(→ Dict[str, Any])

Load mapping configuration from JSON file.

load_metadata_config(→ Dict[str, Any])

Load metadata configuration from JSON file.

validate_config_compatibility(→ bool)

Check if mapping and metadata configs are compatible.

Module Contents

exception trailpack.config.config_loader.ConfigLoadError[source]

Bases: Exception

Raised when config loading fails.

Initialize self. See help(type(self)) for accurate signature.

trailpack.config.config_loader.extract_column_mappings(mapping_config: Dict[str, Any]) Dict[str, str][source]

Extract column mappings dictionary from mapping config.

Parameters:

mapping_config – Mapping configuration dictionary

Returns:

Dictionary mapping column names to ontology/unit IDs

Example

>>> config = load_mapping_config(Path("mapping_config.json"))
>>> mappings = extract_column_mappings(config)
>>> # {"Product": "https://vocab.sentier.dev/...", ...}
trailpack.config.config_loader.extract_file_info(mapping_config: Dict[str, Any]) Dict[str, str][source]

Extract file information from mapping config.

Parameters:

mapping_config – Mapping configuration dictionary

Returns:

Dictionary with original_file and sheet_name

Example

>>> config = load_mapping_config(Path("mapping_config.json"))
>>> file_info = extract_file_info(config)
>>> # {"original_file": "data.xlsx", "sheet_name": "Sheet1"}
trailpack.config.config_loader.extract_general_details(metadata_config: Dict[str, Any]) Dict[str, Any][source]

Extract general details from metadata config for UI compatibility.

Parameters:

metadata_config – Metadata configuration dictionary

Returns:

Dictionary with package metadata in UI format

Example

>>> config = load_metadata_config(Path("metadata_config.json"))
>>> details = extract_general_details(config)
>>> # {"name": "my-dataset", "title": "...", ...}
trailpack.config.config_loader.load_configs(mapping_path: pathlib.Path | None = None, metadata_path: pathlib.Path | None = None) tuple[Dict[str, Any] | None, Dict[str, Any] | None][source]

Load both mapping and metadata configs with validation.

Parameters:
  • mapping_path – Path to mapping config JSON (optional)

  • metadata_path – Path to metadata config JSON (optional)

Returns:

Tuple of (mapping_config, metadata_config)

Raises:

ConfigLoadError – If loading fails or configs are incompatible

Example

>>> mapping, metadata = load_configs(
...     mapping_path=Path("mapping.json"),
...     metadata_path=Path("metadata.json")
... )
trailpack.config.config_loader.load_mapping_config(config_path: pathlib.Path) Dict[str, Any][source]

Load mapping configuration from JSON file.

Parameters:

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

Example

>>> config = load_mapping_config(Path("mapping_config.json"))
>>> column_mappings = config["column_mappings"]
trailpack.config.config_loader.load_metadata_config(config_path: pathlib.Path) Dict[str, Any][source]

Load metadata configuration from JSON file.

Parameters:

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

Example

>>> config = load_metadata_config(Path("metadata_config.json"))
>>> package_info = config["package"]
trailpack.config.config_loader.validate_config_compatibility(mapping_config: Dict[str, Any], metadata_config: Dict[str, Any]) bool[source]

Check if mapping and metadata configs are compatible.

Parameters:
  • mapping_config – Mapping configuration dictionary

  • metadata_config – Metadata configuration dictionary

Returns:

True if configs are compatible

Raises:

ConfigLoadError – If configs are incompatible

Example

>>> mapping = load_mapping_config(Path("mapping.json"))
>>> metadata = load_metadata_config(Path("metadata.json"))
>>> validate_config_compatibility(mapping, metadata)
True