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)
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
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
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
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, )
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)}'" )