from typing import Dict, Any import json from pathlib import Path def open_metadata(path: str, filename: str = "metadata.json") -> Dict[str, Any]: """ Open metadata file and return its contents as a dictionary. Args: path: The directory path where the metadata file is located. filename: The name of the metadata file (default: "metadata.json"). Returns: A dictionary containing the metadata. """ with open(Path(path) / filename, 'r', encoding='utf-8') as f: try: return json.load(f) except json.JSONDecodeError as e: raise ValueError(f"Error decoding JSON from {filename}: {e}") except FileNotFoundError: raise FileNotFoundError(f"Metadata file {filename} not found in {path}") except Exception as e: raise RuntimeError(f"Unexpected error reading metadata: {e}") def merge_metadata( base_metadata: Dict[str, Any], additional_metadata: Dict[str, Any] ) -> Dict[str, Any]: """ Merge two metadata dictionaries. Args: base_metadata: The base metadata dictionary. additional_metadata: The additional metadata dictionary to merge. Returns: A new dictionary containing the merged metadata. """ merged = base_metadata.copy() for key, value in additional_metadata.items(): merged[key] = value return merged