Ejemplo n.º 1
0
def _get_and_validate_dict_input(
    key: str,
    parent: BaseContainer,
    resolver_name: str,
) -> DictConfig:
    from omegaconf._impl import select_value

    if not isinstance(key, str):
        raise TypeError(
            f"`{resolver_name}` requires a string as input, but obtained `{key}` "
            f"of type: {type(key).__name__}")

    in_dict = select_value(
        parent,
        key,
        throw_on_missing=True,
        absolute_key=True,
        default=_DEFAULT_SELECT_MARKER_,
    )

    if in_dict is _DEFAULT_SELECT_MARKER_:
        raise ConfigKeyError(f"Key not found: '{key}'")

    if not isinstance(in_dict, DictConfig):
        raise TypeError(
            f"`{resolver_name}` cannot be applied to objects of type: "
            f"{type(in_dict).__name__}")

    return in_dict
Ejemplo n.º 2
0
def select(
    key: str,
    default: Any = _DEFAULT_MARKER_,
    *,
    _parent_: Container,
) -> Any:
    from omegaconf._impl import select_value

    return select_value(cfg=_parent_,
                        key=key,
                        absolute_key=True,
                        default=default)
Ejemplo n.º 3
0
 def test_select_from_nested_node_absolute_key_interpretation(
         self, key: str, expected: Any) -> None:
     cfg = OmegaConf.create(inp)
     assert select_value(cfg.a, key, absolute_key=True) == expected
Ejemplo n.º 4
0
 def test_select_from_nested_node_with_a_relative_key(
         self, key: str, expected: Any) -> None:
     cfg = OmegaConf.create(inp)
     # select returns the same result when a key is relative independent of absolute_key flag.
     assert select_value(cfg.a, key, absolute_key=False) == expected
     assert select_value(cfg.a, key, absolute_key=True) == expected