Source code for gigl.common.utils.yaml_loader
from typing import Type, TypeVar, cast
from omegaconf import OmegaConf
from gigl.common import Uri
from gigl.common.logger import Logger
from gigl.common.omegaconf_resolvers import register_resolvers
from gigl.src.common.utils.file_loader import FileLoader
register_resolvers()
[docs]
def load_resolved_yaml(uri: Uri, type_of_object: Type[T]) -> T:
    with FileLoader().load_to_temp_file(uri) as tf:
        test_spec_data = OmegaConf.load(tf.name)
    # Merge OmegaConf structured config with loaded data for validation
    merged_config = OmegaConf.merge(
        OmegaConf.structured(type_of_object), test_spec_data
    )
    # Convert to strongly typed T object
    return cast(T, OmegaConf.to_object(merged_config))