Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_merge_none_is_none(self, class_type: str) -> None:
# Test that the merged type is that of the last merged config
module: Any = import_module(class_type)
c1 = OmegaConf.structured(module.StructuredOptional)
assert c1.with_default == module.Nested()
c2 = OmegaConf.merge(c1, {"with_default": None})
assert OmegaConf.is_none(c2, "with_default")
def test_is_none(fac: Any, is_none: bool) -> None:
obj = fac(is_none)
assert OmegaConf.is_none(obj) == is_none
cfg = OmegaConf.create({"node": obj})
assert OmegaConf.is_none(cfg, "node") == is_none
missing: bool,
inter: bool,
exp: Any = SKIP,
) -> None:
target_node = cfg._get_node(key)
assert target_node._key() == key
assert target_node._is_none() == none
assert target_node._is_optional() == opt
assert target_node._is_missing() == missing
assert target_node._is_interpolation() == inter
if exp is not SKIP:
assert cfg.get(key) == exp
assert OmegaConf.is_missing(cfg, key) == missing
assert OmegaConf.is_none(cfg, key) == none
assert OmegaConf.is_optional(cfg, key) == opt
assert OmegaConf.is_interpolation(cfg, key) == inter
def test_is_none(fac: Any, is_none: bool) -> None:
obj = fac(is_none)
assert OmegaConf.is_none(obj) == is_none
cfg = OmegaConf.create({"node": obj})
assert OmegaConf.is_none(cfg, "node") == is_none
def _validate_set_merge_impl(self, key: Any, value: Any, is_assign: bool) -> None:
from omegaconf import OmegaConf
vk = get_value_kind(value)
if vk in (ValueKind.INTERPOLATION, ValueKind.STR_INTERPOLATION):
return
if OmegaConf.is_none(value):
if key is not None:
child = self._get_node(key)
if child is not None and not child._is_optional():
self._format_and_raise(
key=key,
value=value,
cause=ValidationError("child '$FULL_KEY' is not Optional"),
)
else:
if not self._is_optional():
self._format_and_raise(
key=None,
value=value,
cause=ValidationError("field '$FULL_KEY' is not Optional"),
)
def _set_value(self, value: Any) -> None:
from omegaconf import OmegaConf
assert not isinstance(value, ValueNode)
self._validate_set(key=None, value=value)
if OmegaConf.is_none(value):
self.__dict__["_content"] = None
self._metadata.object_type = None
elif _is_interpolation(value):
self.__dict__["_content"] = value
self._metadata.object_type = None
elif value == "???":
self.__dict__["_content"] = "???"
self._metadata.object_type = None
else:
self.__dict__["_content"] = {}
if is_structured_config(value):
self._metadata.object_type = None
data = get_structured_config_data(value)
for k, v in data.items():
self.__setitem__(k, v)
self._metadata.object_type = get_type_of(value)
def expand(node: Container) -> None:
type_ = get_ref_type(node)
if type_ is not None:
_is_optional, type_ = _resolve_optional(type_)
if is_dict_annotation(type_):
node._set_value({})
else:
node._set_value(type_)
if dest._is_missing():
expand(dest)
for key, src_value in src.items_ex(resolve=False):
dest_node = dest._get_node(key, validate_access=False)
if isinstance(dest_node, Container) and OmegaConf.is_none(dest, key):
if not OmegaConf.is_none(src_value):
expand(dest_node)
if dest_node is not None:
if dest_node._is_interpolation():
target_node = dest_node._dereference_node(
throw_on_resolution_failure=False
)
if isinstance(target_node, Container):
dest[key] = target_node
dest_node = dest._get_node(key)
if is_structured_config(dest._metadata.element_type):
dest[key] = DictConfig(content=dest._metadata.element_type, parent=dest)
dest_node = dest._get_node(key)
type_ = get_ref_type(node)
if type_ is not None:
_is_optional, type_ = _resolve_optional(type_)
if is_dict_annotation(type_):
node._set_value({})
else:
node._set_value(type_)
if dest._is_missing():
expand(dest)
for key, src_value in src.items_ex(resolve=False):
dest_node = dest._get_node(key, validate_access=False)
if isinstance(dest_node, Container) and OmegaConf.is_none(dest, key):
if not OmegaConf.is_none(src_value):
expand(dest_node)
if dest_node is not None:
if dest_node._is_interpolation():
target_node = dest_node._dereference_node(
throw_on_resolution_failure=False
)
if isinstance(target_node, Container):
dest[key] = target_node
dest_node = dest._get_node(key)
if is_structured_config(dest._metadata.element_type):
dest[key] = DictConfig(content=dest._metadata.element_type, parent=dest)
dest_node = dest._get_node(key)
if dest_node is not None: