Exemplo n.º 1
0
def test_node_wrap_illegal_type() -> None:
    class UserClass:
        pass

    from omegaconf.omegaconf import _node_wrap

    with raises(ValidationError):
        _node_wrap(type_=UserClass,
                   value=UserClass(),
                   is_optional=False,
                   parent=None,
                   key=None)
Exemplo n.º 2
0
def test_get_value_basic(value: Any) -> None:
    val_node = _node_wrap(value=value,
                          type_=Any,
                          parent=None,
                          is_optional=True,
                          key=None)
    assert _get_value(val_node) == value
Exemplo n.º 3
0
def test_get_value_basic(value: Any) -> None:
    val_node = _node_wrap(value=value,
                          ref_type=Any,
                          parent=None,
                          is_optional=True,
                          key=None)
    result = _get_value(val_node)
    assert result == value
Exemplo n.º 4
0
def test_node_wrap(type_: type, is_optional: bool, value: Any,
                   expected_type: Any) -> None:
    from omegaconf.omegaconf import _node_wrap

    ret = _node_wrap(type_=type_,
                     value=value,
                     is_optional=is_optional,
                     parent=None)
    assert type(ret) == expected_type
    assert ret == value

    if is_optional:
        ret = _node_wrap(type_=type_,
                         value=None,
                         is_optional=is_optional,
                         parent=None)
        assert type(ret) == expected_type
        # noinspection PyComparisonWithNone
        assert ret == None  # noqa E711
Exemplo n.º 5
0
def test_node_wrap(target_type: Any, value: Any, expected: Any) -> None:
    from omegaconf.omegaconf import _maybe_wrap

    if isinstance(expected, Node):
        res = _node_wrap(
            type_=target_type, key="foo", value=value, is_optional=False, parent=None
        )
        assert type(res) == type(expected)
        assert res == expected
        assert res._key() == "foo"
    else:
        with raises(expected):
            _maybe_wrap(
                ref_type=target_type,
                key=None,
                value=value,
                is_optional=False,
                parent=None,
            )
Exemplo n.º 6
0
    def _set_value_impl(self,
                        value: Any,
                        flags: Optional[Dict[str, bool]] = None) -> None:
        from omegaconf.omegaconf import _node_wrap

        ref_type = self._metadata.ref_type
        type_hint = self._metadata.type_hint

        value = _get_value(value)
        if _is_special(value):
            assert isinstance(value, (str, NoneType))
            if value is None:
                if not self._is_optional():
                    raise ValidationError(
                        f"Value '$VALUE' is incompatible with type hint '{type_str(type_hint)}'"
                    )
            self.__dict__["_content"] = value
        elif isinstance(value, Container):
            raise ValidationError(
                f"Cannot assign container '$VALUE' of type '$VALUE_TYPE' to {type_str(type_hint)}"
            )
        else:
            for candidate_ref_type in ref_type.__args__:
                try:
                    self.__dict__["_content"] = _node_wrap(
                        value=value,
                        ref_type=candidate_ref_type,
                        is_optional=False,
                        key=None,
                        parent=self,
                    )
                    break
                except ValidationError:
                    continue
            else:
                raise ValidationError(
                    f"Value '$VALUE' of type '$VALUE_TYPE' is incompatible with type hint '{type_str(type_hint)}'"
                )