deepcode-ci-bot[bot]: <img src="https://www.deepcode.ai/icons/green_check.svg" width= "50px" align= "left"/> Congratulations :tada:. DeepCode [analyzed](https://www.deepcode.ai/app/gh/omry/omegaconf/7598f526998fa913d2456245395b3c8710b13525/omry/omegaconf/1827d47545307a57e0004ab32d54782d337a7622/_/%2F/code/?utm_source=gh_review) your code in 1.772 seconds and we found no issues. Enjoy a moment of no bugs :sunny:.

##### 👉 View analysis in [**DeepCode’s Dashboard**](https://www.deepcode.ai/app/gh/omry/omegaconf/7598f526998fa913d2456245395b3c8710b13525/omry/omegaconf/1827d47545307a57e0004ab32d54782d337a7622/_/%2F/code/?utm_source=gh_review)
---

diff --git a/docs/source/usage.rst b/docs/source/usage.rst
index 4cd6b77..8d3eb71 100644
--- a/docs/source/usage.rst
+++ b/docs/source/usage.rst
@@ -1,6 +1,6 @@
 .. testsetup:: *
 
-    from omegaconf import OmegaConf
+    from omegaconf import OmegaConf, DictConfig
     import os
     import sys
     os.environ['USER'] = 'omry'
@@ -39,7 +39,7 @@ From a dictionary
 
 .. doctest::
 
-    >>> conf = OmegaConf.create(dict(k='v',list=[1,dict(a='1',b='2')]))
+    >>> conf = OmegaConf.create({"k" : "v", "list" : [1, {"a": "1", "b": "2"}]})
     >>> print(conf.pretty())
     k: v
     list:
@@ -53,7 +53,7 @@ From a list
 
 .. doctest::
 
-    >>> conf = OmegaConf.create([1, dict(a=10, b=dict(a=10))])
+    >>> conf = OmegaConf.create([1, {"a":10, "b": {"a":10}}])
     >>> print(conf.pretty())
     - 1
     - a: 10
@@ -83,8 +83,6 @@ From a yaml file
 From a yaml string
 ^^^^^^^^^^^^^^^^^^
 
-
-
 .. doctest::
 
     >>> s = """
@@ -428,7 +426,7 @@ An attempt to modify it will result in omegaconf.ReadonlyConfigError exception
 
 .. doctest:: loaded
 
-    >>> conf = OmegaConf.create(dict(a=dict(b=10)))
+    >>> conf = OmegaConf.create({"a": {"b": 10}})
     >>> OmegaConf.set_readonly(conf, True)
     >>> conf.a.b = 20
     Traceback (most recent call last):
@@ -440,7 +438,7 @@ You can temporarily remove the read only flag from a config object:
 .. doctest:: loaded
 
     >>> import omegaconf
-    >>> conf = OmegaConf.create(dict(a=dict(b=10)))
+    >>> conf = OmegaConf.create({"a": {"b": 10}})
     >>> OmegaConf.set_readonly(conf, True)
     >>> with omegaconf.read_write(conf):
     ...   conf.a.b = 20
@@ -458,7 +456,7 @@ It's sometime useful to change this behavior.
 
 .. doctest:: loaded
 
-    >>> conf = OmegaConf.create(dict(a=dict(aa=10, bb=20)))
+    >>> conf = OmegaConf.create({"a": {"aa": 10, "bb": 20}})
     >>> OmegaConf.set_struct(conf, True)
     >>> conf.a.cc = 30
     Traceback (most recent call last):
@@ -470,7 +468,7 @@ You can temporarily remove the struct flag from a config object:
 .. doctest:: loaded
 
     >>> import omegaconf
-    >>> conf = OmegaConf.create(dict(a=dict(aa=10, bb=20)))
+    >>> conf = OmegaConf.create({"a": {"aa": 10, "bb": 20}})
     >>> OmegaConf.set_struct(conf, True)
     >>> with omegaconf.open_dict(conf):
     ...   conf.a.cc = 30
@@ -506,19 +504,16 @@ Tests if an object is an OmegaConf object, or if it's representing a list or a d
 
 OmegaConf.to_container
 ^^^^^^^^^^^^^^^^^^^^^^
-OmegaConf config objects looks very similar to python dict and lists, but in fact are not.
-Use OmegaConf.to_container(cfg, resolve) to convert to a primitive container.
-If resolve is set to True the values will be resolved during conversion.
+OmegaConf config objects looks very similar to python dict and list, but in fact are not.
+Use OmegaConf.to_container(cfg : Container, resolve : bool) to convert to a primitive container.
+If resolve is set to True, interpolations will be resolved during conversion.
 
 .. doctest::
 
-    >>> # Simulating command line arguments
     >>> conf = OmegaConf.create({"foo": "bar", "foo2": "${foo}"})
-    >>> print(type(conf).__name__)
-    DictConfig
+    >>> assert type(conf) == DictConfig
     >>> primitive = OmegaConf.to_container(conf)
-    >>> print(type(primitive).__name__)
-    dict
+    >>> assert type(primitive) == dict
     >>> print(primitive)
     {'foo': 'bar', 'foo2': '${foo}'}
     >>> resolved = OmegaConf.to_container(conf, resolve=True)
@@ -526,12 +521,44 @@ If resolve is set to True the values will be resolved during conversion.
     {'foo': 'bar', 'foo2': 'bar'}
 
 
+OmegaConf.select
+^^^^^^^^^^^^^^^^
+OmegaConf.select() allow you to select a config node or value using a dot-notation key.
+
+.. doctest::
+
+    >>> cfg = OmegaConf.create({"foo" : {"bar": {"zonk" : 10, "missing" : "???"}}})
+    >>> assert OmegaConf.select(cfg, "foo") == {"bar": {"zonk" : 10, "missing" : "???"}}
+    >>> assert OmegaConf.select(cfg, "foo.bar") == {"zonk" : 10, "missing" : "???"}
+    >>> assert OmegaConf.select(cfg, "foo.bar.zonk") == 10
+    >>> assert OmegaConf.select(cfg, "foo.bar.missing") is None
+    >>> OmegaConf.select(cfg, "foo.bar.missing", throw_on_missing=True)
+    Traceback (most recent call last):
+    ...
+    omegaconf.errors.MissingMandatoryValue: missing node selected
+        full_key: foo.bar.missing
+
+OmegaConf.update
+^^^^^^^^^^^^^^^^
+OmegaConf.update() allow you to update values in your config using a dot-notation key.
+
+.. doctest::
+
+    >>> cfg = OmegaConf.create({"foo" : {"bar": 10}})
+    >>> OmegaConf.update(cfg, "foo.bar", 20)
+    >>> assert cfg.foo.bar == 20
+    >>> OmegaConf.update(cfg, "foo.bar", {"zonk" : 30})
+    >>> assert cfg.foo.bar == {"zonk" : 30}
+
+
+
 OmegaConf.masked_copy
 ^^^^^^^^^^^^^^^^^^^^^
 Creates a copy of a DictConfig that contains only specific keys.
+
 .. doctest:: loaded
 
-    >>> conf = OmegaConf.create(dict(a=dict(b=10), c=20))
+    >>> conf = OmegaConf.create({"a": {"b": 10}, "c":20})
     >>> print(conf.pretty())
     a:
       b: 10
diff --git a/news/116.removal.1 b/news/116.removal.1
new file mode 100644
index 0000000..4a15ef5
--- /dev/null
+++ b/news/116.removal.1
@@ -0,0 +1,1 @@
+cfg.select(key) deprecated in favor of OmegaConf.select(cfg, key)
\ No newline at end of file
diff --git a/news/116.removal.2 b/news/116.removal.2
new file mode 100644
index 0000000..508fb95
--- /dev/null
+++ b/news/116.removal.2
@@ -0,0 +1,1 @@
+cfg.update(key, value) deprecated in favor of OmegaConf.update(cfg, key, value)
\ No newline at end of file
diff --git a/omegaconf/base.py b/omegaconf/base.py
index 6249b51..52177ce 100644
--- a/omegaconf/base.py
+++ b/omegaconf/base.py
@@ -194,14 +194,14 @@ class Container(Node):
         ...  # pragma: no cover
 
     @abstractmethod
-    def update_node(self, key: str, value: Any = None) -> None:
+    def update(self, key: str, value: Any = None) -> None:
         ...  # pragma: no cover
 
     @abstractmethod
     def select(self, key: str, throw_on_missing: bool = False) -> Any:
         ...  # pragma: no cover
 
-    def get_node(self, key: Any) -> Optional[Node]:
+    def _get_node(self, key: Any) -> Optional[Node]:
         ...  # pragma: no cover
 
     @abstractmethod
diff --git a/omegaconf/basecontainer.py b/omegaconf/basecontainer.py
index 0a2aa62..07e7d7e 100644
--- a/omegaconf/basecontainer.py
+++ b/omegaconf/basecontainer.py
@@ -1,5 +1,6 @@
 import copy
 import sys
+import warnings
 from abc import ABC, abstractmethod
 from enum import Enum
 from typing import Any, Dict, List, Optional, Tuple, Union
@@ -93,6 +94,8 @@ class BaseContainer(Container, ABC):
         self.merge_with_dotlist(args_list)
 
     def merge_with_dotlist(self, dotlist: List[str]) -> None:
+        from omegaconf import OmegaConf
+
         def fail() -> None:
             raise ValueError("Input list must be a list or a tuple of strings")
 
@@ -112,50 +115,27 @@ class BaseContainer(Container, ABC):
                 value = arg[idx + 1 :]
                 value = yaml.load(value, Loader=get_yaml_loader())
 
-            self.update_node(key, value)
+            OmegaConf.update(self, key, value)
 
-    def update_node(self, key: str, value: Any = None) -> None:
-        from .dictconfig import DictConfig
-        from .listconfig import ListConfig
-        from .omegaconf import _select_one
+    def update(self, key: str, value: Any = None) -> None:
+        from omegaconf import OmegaConf
+
+        warnings.warn(
+            "update() is deprecated, use OmegaConf.update(). (Since 2.0)",
+            category=DeprecationWarning,
+        )
 
-        """Updates a dot separated key sequence to a value"""
-        split = key.split(".")
-        root = self
-        for i in range(len(split) - 1):
-            k = split[i]
-            # if next_root is a primitive (string, int etc) replace it with an empty map
-            next_root, key_ = _select_one(root, k, throw_on_missing=False)
-            if not isinstance(next_root, Container):
-                root[key_] = {}
-            root = root[key_]
-
-        last = split[-1]
-
-        assert isinstance(
-            root, Container
-        ), f"Unexpected type for root : {type(root).__name__}"
-
-        if isinstance(root, DictConfig):
-            setattr(root, last, value)
-        elif isinstance(root, ListConfig):
-            idx = int(last)
-            root[idx] = value
+        return OmegaConf.update(self, key, value)
 
     def select(self, key: str, throw_on_missing: bool = False) -> Any:
-        try:
-            _root, _last_key, value = self._select_impl(key, throw_on_missing=False)
-            if value is not None and value._is_missing():
-                if throw_on_missing:
-                    raise MissingMandatoryValue(
-                        f"Missing mandatory value : {self._get_full_key('')}"
-                    )
-                else:
-                    return None
+        from omegaconf import OmegaConf
+
+        warnings.warn(
+            "select() is deprecated, use OmegaConf.select(). (Since 2.0)",
+            category=DeprecationWarning,
+        )
 
-            return _get_value(value)
-        except Exception as e:
-            self._format_and_raise(key=key, value=None, cause=e)
+        return OmegaConf.select(self, key, throw_on_missing)
 
     def is_empty(self) -> bool:
         """return true if config is empty"""
@@ -242,11 +222,11 @@ class BaseContainer(Container, ABC):
                     if OmegaConf.is_missing(dest, key):
                         dest[key] = src_value
 
-            if (dest.get_node(key) is not None) or element_typed:
-                dest_node = dest.get_node(key)
+            if (dest._get_node(key) is not None) or element_typed:
+                dest_node = dest._get_node(key)
                 if dest_node is None and element_typed:
                     dest[key] = DictConfig(content=dest_element_type, parent=dest)
-                    dest_node = dest.get_node(key)
+                    dest_node = dest._get_node(key)
 
                 if isinstance(dest_node, BaseContainer):
                     if isinstance(src_value, BaseContainer):
@@ -261,7 +241,7 @@ class BaseContainer(Container, ABC):
                         assert isinstance(dest_node, ValueNode)
                         dest_node._set_value(src_value)
             else:
-                dest[key] = src.get_node(key)
+                dest[key] = src._get_node(key)
 
         if src_type is not Any and not is_primitive_dict(src_type):
             dest._metadata.object_type = src_type
@@ -314,7 +294,7 @@ class BaseContainer(Container, ABC):
             self._validate_set(key, value)
 
         input_config = isinstance(value, Container)
-        target_node_ref = self.get_node(key)
+        target_node_ref = self._get_node(key)
         special_value = value is None or value == "???"
         should_set_value = (
             target_node_ref is not None
@@ -338,7 +318,7 @@ class BaseContainer(Container, ABC):
             ):
                 ref_type = self._metadata.element_type
             else:
-                target = self.get_node(key)
+                target = self._get_node(key)
                 if target is None:
                     if is_structured_config(val):
                         ref_type = OmegaConf.get_type(val)
@@ -385,8 +365,8 @@ class BaseContainer(Container, ABC):
         c2: "BaseContainer",
         k2: Union[str, int],
     ) -> bool:
-        v1 = c1.get_node(k1)
-        v2 = c2.get_node(k2)
+        v1 = c1._get_node(k1)
+        v2 = c2._get_node(k2)
         v1_kind = get_value_kind(v1)
         v2_kind = get_value_kind(v2)
 
diff --git a/omegaconf/dictconfig.py b/omegaconf/dictconfig.py
index c14df8b..f23a4b1 100644
--- a/omegaconf/dictconfig.py
+++ b/omegaconf/dictconfig.py
@@ -38,7 +38,7 @@ from .errors import (
 from .nodes import EnumNode, ValueNode
 
 
-class DictConfig(BaseContainer, MutableMapping[str, Any]):
+class DictConfig(BaseContainer, MutableMapping[str, Any]):  # type: ignore
 
     _metadata: ContainerMetadata
 
@@ -133,7 +133,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
 
         if OmegaConf.is_none(value):
             if key is not None:
-                node = self.get_node(key)
+                node = self._get_node(key)
                 if node is not None and not node._is_optional():
                     raise ValidationError("field '$FULL_KEY' is not Optional")
             else:
@@ -154,7 +154,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
         if key is None:
             target = self
         else:
-            target = self.get_node(key)
+            target = self._get_node(key)
 
         if (target is not None and target._get_flag("readonly")) or self._get_flag(
             "readonly"
@@ -332,7 +332,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
             key=key, value=node, default_value=default_value,
         )
 
-    def get_node(self, key: Union[str, Enum]) -> Optional[Node]:
+    def _get_node(self, key: Union[str, Enum]) -> Optional[Node]:
         return self.get_node_ex(key, default_value=DEFAULT_VALUE_MARKER)
 
     def get_node_ex(
@@ -366,7 +366,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
                     cause=ReadonlyConfigError("Cannot pop from read-only node"),
                 )
 
-            node = self.get_node(key=key)
+            node = self._get_node(key=key)
             if node is not None:
                 value = self._resolve_with_default(
                     key=key, value=node, default_value=default
@@ -403,7 +403,7 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
 
         key = self._validate_and_normalize_key(key)
         try:
-            node: Optional[Node] = self.get_node(key)
+            node: Optional[Node] = self._get_node(key)
         except (KeyError, AttributeError):
             node = None
 
diff --git a/omegaconf/listconfig.py b/omegaconf/listconfig.py
index 6426e31..fed3f70 100644
--- a/omegaconf/listconfig.py
+++ b/omegaconf/listconfig.py
@@ -65,7 +65,7 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
             raise ReadonlyConfigError("ListConfig is read-only")
 
         if 0 <= key < self.__len__():
-            target = self.get_node(key)
+            target = self._get_node(key)
             if target is not None:
                 if value is None and not target._is_optional():
                     raise ValidationError(
@@ -147,7 +147,7 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
 
     def _update_keys(self) -> None:
         for i in range(len(self)):
-            node = self.get_node(i)
+            node = self._get_node(i)
             if node is not None:
                 node._metadata.key = i
 
@@ -242,7 +242,7 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
     def copy(self) -> "ListConfig":
         return copy.copy(self)
 
-    def get_node(self, key: Any) -> Optional[Node]:
+    def _get_node(self, key: Any) -> Optional[Node]:
         return self.get_node_ex(key)
 
     def get_node_ex(self, key: Any, validate_access: bool = True) -> Optional[Node]:
@@ -289,7 +289,7 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
 
             assert isinstance(self._content, list)
             ret = self._resolve_with_default(
-                key=index, value=self.get_node(index), default_value=None
+                key=index, value=self._get_node(index), default_value=None
             )
             del self._content[index]
             self._update_keys()
diff --git a/omegaconf/omegaconf.py b/omegaconf/omegaconf.py
index e609aeb..eb7cf5f 100644
--- a/omegaconf/omegaconf.py
+++ b/omegaconf/omegaconf.py
@@ -29,7 +29,9 @@ from typing_extensions import Protocol
 from . import DictConfig, ListConfig
 from ._utils import (
     ValueKind,
+    _get_value,
     decode_primitive,
+    format_and_raise,
     get_type_of,
     get_value_kind,
     is_primitive_container,
@@ -382,7 +384,7 @@ class OmegaConf:
     @staticmethod
     def is_missing(cfg: BaseContainer, key: Union[int, str]) -> bool:
         try:
-            node = cfg.get_node(key)
+            node = cfg._get_node(key)
             if node is None:
                 return False
             return node._is_missing()
@@ -393,7 +395,7 @@ class OmegaConf:
     def is_optional(obj: Any, key: Optional[Union[int, str]] = None) -> bool:
         if key is not None:
             assert isinstance(obj, Container)
-            obj = obj.get_node(key)
+            obj = obj._get_node(key)
         if isinstance(obj, Node):
             return obj._is_optional()
         else:
@@ -403,7 +405,7 @@ class OmegaConf:
     def is_none(obj: Any, key: Optional[Union[int, str]] = None) -> bool:
         if key is not None:
             assert isinstance(obj, Container)
-            obj = obj.get_node(key)
+            obj = obj._get_node(key)
         if isinstance(obj, Node):
             return obj._is_none()
         else:
@@ -413,7 +415,7 @@ class OmegaConf:
     def is_interpolation(node: Node, key: Optional[Union[int, str]] = None) -> bool:
         if key is not None:
             assert isinstance(node, Container)
-            target = node.get_node(key)
+            target = node._get_node(key)
         else:
             target = node
         if target is not None:
@@ -449,7 +451,7 @@ class OmegaConf:
                 return get_type_of(obj)
 
         if key is not None:
-            c = obj.get_node(key)
+            c = obj._get_node(key)
         else:
             c = obj
 
@@ -477,7 +479,7 @@ class OmegaConf:
     @staticmethod
     def get_ref_type(obj: Any, key: Optional[str] = None) -> Optional[Type[Any]]:
         if key is not None:
-            c = obj.get_node(key)
+            c = obj._get_node(key)
         else:
             c = obj
 
@@ -486,6 +488,45 @@ class OmegaConf:
         else:
             return None
 
+    @staticmethod
+    def select(cfg: Container, key: str, throw_on_missing: bool = False) -> Any:
+        try:
+            _root, _last_key, value = cfg._select_impl(key, throw_on_missing=False)
+            if value is not None and value._is_missing():
+                if throw_on_missing:
+                    raise MissingMandatoryValue("missing node selected")
+                else:
+                    return None
+
+            return _get_value(value)
+        except Exception as e:
+            format_and_raise(node=cfg, key=key, value=None, cause=e, msg=str(e))
+
+    @staticmethod
+    def update(cfg: Container, key: str, value: Any) -> None:
+        """Updates a dot separated key sequence to a value"""
+        split = key.split(".")
+        root = cfg
+        for i in range(len(split) - 1):
+            k = split[i]
+            # if next_root is a primitive (string, int etc) replace it with an empty map
+            next_root, key_ = _select_one(root, k, throw_on_missing=False)
+            if not isinstance(next_root, Container):
+                root[key_] = {}
+            root = root[key_]
+
+        last = split[-1]
+
+        assert isinstance(
+            root, Container
+        ), f"Unexpected type for root : {type(root).__name__}"
+
+        if isinstance(root, DictConfig):
+            setattr(root, last, value)
+        elif isinstance(root, ListConfig):
+            idx = int(last)
+            root[idx] = value
+
 
 # register all default resolvers
 register_default_resolvers()
@@ -507,7 +548,6 @@ def flag_override(
 # noinspection PyProtectedMember
 @contextmanager
 def read_write(config: Node) -> Generator[Node, None, None]:
-    # noinspection PyProtectedMember
     prev_state = config._get_node_flag("readonly")
     try:
         OmegaConf.set_readonly(config, False)
@@ -516,9 +556,9 @@ def read_write(config: Node) -> Generator[Node, None, None]:
         OmegaConf.set_readonly(config, prev_state)
 
 
+# noinspection PyProtectedMember
 @contextmanager
 def open_dict(config: Container) -> Generator[Container, None, None]:
-    # noinspection PyProtectedMember
     prev_state = config._get_node_flag("struct")
     try:
         OmegaConf.set_struct(config, False)
@@ -673,7 +713,7 @@ def _select_one(
             if ret_key < 0 or ret_key + 1 > len(c):
                 val = None
             else:
-                val = c.get_node(ret_key)
+                val = c._get_node(ret_key)
     else:
         assert False
 

Document select() and update()
1. deprecated cfg.select(key) and favor of OmegaConf.select(cfg, key)
2. deprecated cfg.update_node(key, value) and favor of OmegaConf.update_node(cfg, key, value)
3. document OmegaConf.update and OmegaConf.select
diff --git a/tests/structured_conf/test_structured_config.py b/tests/structured_conf/test_structured_config.py
index fd40375..a560e95 100644
--- a/tests/structured_conf/test_structured_config.py
+++ b/tests/structured_conf/test_structured_config.py
@@ -317,12 +317,12 @@ class TestConfigs:
             # noinspection PyStatementEffect
             conf.mandatory_missing
 
-        assert type(conf.get_node("null_default")) == AnyNode
-        assert type(conf.get_node("int_default")) == AnyNode
-        assert type(conf.get_node("float_default")) == AnyNode
-        assert type(conf.get_node("str_default")) == AnyNode
-        assert type(conf.get_node("bool_default")) == AnyNode
-        assert type(conf.get_node("mandatory_missing")) == AnyNode
+        assert type(conf._get_node("null_default")) == AnyNode
+        assert type(conf._get_node("int_default")) == AnyNode
+        assert type(conf._get_node("float_default")) == AnyNode
+        assert type(conf._get_node("str_default")) == AnyNode
+        assert type(conf._get_node("bool_default")) == AnyNode
+        assert type(conf._get_node("mandatory_missing")) == AnyNode
 
         assert conf.int_default == expected.int_default
         with pytest.raises(ValidationError):
diff --git a/tests/test_basic_ops_dict.py b/tests/test_basic_ops_dict.py
index d937168..6d52dab 100644
--- a/tests/test_basic_ops_dict.py
+++ b/tests/test_basic_ops_dict.py
@@ -403,7 +403,7 @@ def test_dir(cfg: Any, key: Any, expected: Any) -> None:
     if key is None:
         assert dir(c) == expected
     else:
-        assert dir(c.get_node(key)) == expected
+        assert dir(c._get_node(key)) == expected
 
 
 def test_hash() -> None:
@@ -541,11 +541,11 @@ def test_is_missing() -> None:
             "missing_node_inter": "${missing_node}",
         }
     )
-    assert cfg.get_node("foo")._is_missing()  # type:ignore
-    assert cfg.get_node("inter")._is_missing()  # type:ignore
-    assert cfg.get_node("str_inter")._is_missing()  # type:ignore
-    assert cfg.get_node("missing_node")._is_missing()  # type:ignore
-    assert cfg.get_node("missing_node_inter")._is_missing()  # type:ignore
+    assert cfg._get_node("foo")._is_missing()  # type:ignore
+    assert cfg._get_node("inter")._is_missing()  # type:ignore
+    assert cfg._get_node("str_inter")._is_missing()  # type:ignore
+    assert cfg._get_node("missing_node")._is_missing()  # type:ignore
+    assert cfg._get_node("missing_node_inter")._is_missing()  # type:ignore
 
 
 @pytest.mark.parametrize("ref_type", [None, Any])  # type: ignore
diff --git a/tests/test_basic_ops_list.py b/tests/test_basic_ops_list.py
index 611fa51..f5a8a29 100644
--- a/tests/test_basic_ops_list.py
+++ b/tests/test_basic_ops_list.py
@@ -235,7 +235,7 @@ def test_list_dir() -> None:
 def validate_list_keys(c: Any) -> None:
     # validate keys are maintained
     for i in range(len(c)):
-        assert c.get_node(i)._metadata.key == i
+        assert c._get_node(i)._metadata.key == i
 
 
 @pytest.mark.parametrize(  # type: ignore
@@ -281,7 +281,7 @@ def test_insert(
     if expectation is None:
         c.insert(index, value)
         assert c == expected
-        assert type(c.get_node(index)) == expected_node_type
+        assert type(c._get_node(index)) == expected_node_type
     else:
         with pytest.raises(expectation):
             c.insert(index, value)
diff --git a/tests/test_errors.py b/tests/test_errors.py
index 0471de3..f78f956 100644
--- a/tests/test_errors.py
+++ b/tests/test_errors.py
@@ -33,27 +33,27 @@ params = [
     ##############
     # DictConfig #
     ##############
-    # update_node
+    # update
     pytest.param(
         lambda: OmegaConf.structured(StructuredWithMissing),
-        lambda cfg: cfg.update_node("num", "hello"),
+        lambda cfg: OmegaConf.update(cfg, "num", "hello"),
         ValidationError,
         "Value 'hello' could not be converted to Integer",
-        id="structured:update_node_with_invalid_value",
+        id="structured:update_with_invalid_value",
     ),
     pytest.param(
         lambda: OmegaConf.structured(StructuredWithMissing),
-        lambda cfg: cfg.update_node("num", None),
+        lambda cfg: OmegaConf.update(cfg, "num", None),
         ValidationError,
         "field 'num' is not Optional",
-        id="structured:update_node:none_to_non_optional",
+        id="structured:update:none_to_non_optional",
     ),
     pytest.param(
         lambda: OmegaConf.create({}),
-        lambda cfg: cfg.update_node("a", IllegalType()),
+        lambda cfg: OmegaConf.update(cfg, "a", IllegalType()),
         UnsupportedValueType,
         "Value 'IllegalType' is not a supported primitive type",
-        id="dict:update_node:object_of_illegal_type",
+        id="dict:update:object_of_illegal_type",
     ),
     # pop
     pytest.param(
diff --git a/tests/test_get_full_key.py b/tests/test_get_full_key.py
index eef4e71..aeb26f1 100644
--- a/tests/test_get_full_key.py
+++ b/tests/test_get_full_key.py
@@ -75,13 +75,13 @@ def test_get_full_key_from_config(
     cfg: Any, select: str, key: Any, expected: Any
 ) -> None:
     c = OmegaConf.create(cfg)
-    node = c.select(select)
+    node = OmegaConf.select(c, select)
     assert node._get_full_key(key) == expected
 
 
 def test_value_node_get_full_key() -> None:
     cfg = OmegaConf.create({"foo": IntegerNode(value=10)})
-    assert cfg.get_node("foo")._get_full_key(None) == "foo"  # type: ignore
+    assert cfg._get_node("foo")._get_full_key(None) == "foo"  # type: ignore
 
     node = IntegerNode(value=10)
     assert node._get_full_key(None) == ""
diff --git a/tests/test_interpolation.py b/tests/test_interpolation.py
index d4bf56b..eb57d8d 100644
--- a/tests/test_interpolation.py
+++ b/tests/test_interpolation.py
@@ -121,7 +121,7 @@ def test_complex_str_interpolation_is_always_str_1() -> None:
 )
 def test_interpolation(input_: Dict[str, Any], key: str, expected: str) -> None:
     c = OmegaConf.create(input_)
-    assert c.select(key) == expected
+    assert OmegaConf.select(c, key) == expected
 
 
 def test_2_step_interpolation() -> None:
@@ -342,7 +342,7 @@ def test_incremental_dict_with_interpolation() -> None:
 )
 def test_interpolations(cfg: DictConfig, key: str, expected: Any) -> None:
     c = OmegaConf.create(cfg)
-    assert c.select(key) == expected
+    assert OmegaConf.select(c, key) == expected
 
 
 def test_interpolation_with_missing() -> None:
diff --git a/tests/test_matrix.py b/tests/test_matrix.py
index 28e2699..070eec2 100644
--- a/tests/test_matrix.py
+++ b/tests/test_matrix.py
@@ -31,7 +31,7 @@ def verify(
     inter: bool,
     exp: Any = SKIP,
 ) -> None:
-    target_node = cfg.get_node(key)
+    target_node = cfg._get_node(key)
     assert target_node._key() == key
     assert target_node._is_none() == none
     assert target_node._is_optional() == opt
@@ -121,14 +121,14 @@ class TestNodeTypesMatrix:
             verify(cfg, "node", none=True, opt=True, missing=False, inter=False)
 
             cfg.node = value
-            assert cfg.get_node("node") == value
+            assert cfg._get_node("node") == value
             verify(cfg, "node", none=False, opt=True, missing=False, inter=False)
 
             cfg.node = "???"
             verify(cfg, "node", none=False, opt=True, missing=True, inter=False)
 
             cfg.node = value_backup
-            assert cfg.get_node("node") == value_backup
+            assert cfg._get_node("node") == value_backup
             verify(cfg, "node", none=False, opt=True, missing=False, inter=False)
 
     def test_none_assignment_in_list(self, node_type: Any, values: Any) -> None:
diff --git a/tests/test_nodes.py b/tests/test_nodes.py
index d0aae03..25711ee 100644
--- a/tests/test_nodes.py
+++ b/tests/test_nodes.py
@@ -112,7 +112,7 @@ def test_assigned_value_node_type(input_: type, expected_type: Any) -> None:
     c = OmegaConf.create()
     assert isinstance(c, DictConfig)
     c.foo = input_
-    assert type(c.get_node("foo")) == expected_type
+    assert type(c._get_node("foo")) == expected_type
 
 
 def test_get_node_no_validate_access() -> None:
@@ -137,18 +137,18 @@ def test_dict_any() -> None:
     c[Enum1.FOO] = "bar"
 
     assert c.foo == 10
-    assert type(c.get_node("foo")) == AnyNode
+    assert type(c._get_node("foo")) == AnyNode
     c.foo = "string"
     assert c.foo == "string"
 
-    assert type(c.get_node(Enum1.FOO)) == AnyNode
+    assert type(c._get_node(Enum1.FOO)) == AnyNode
 
 
 def test_dict_integer_1() -> None:
     c = OmegaConf.create()
     assert isinstance(c, DictConfig)
     c.foo = IntegerNode(10)
-    assert type(c.get_node("foo")) == IntegerNode
+    assert type(c._get_node("foo")) == IntegerNode
     assert c.foo == 10
 
 
@@ -159,7 +159,7 @@ def test_list_any() -> None:
     # default type is Any
     c.append(10)
     assert c[0] == 10
-    assert type(c.get_node(0)) == AnyNode
+    assert type(c._get_node(0)) == AnyNode
     c[0] = "string"
     assert c[0] == "string"
 
@@ -169,7 +169,7 @@ def test_list_integer() -> None:
     c = OmegaConf.create([])
     assert isinstance(c, ListConfig)
     c.append(IntegerNode(val))
-    assert type(c.get_node(0)) == IntegerNode
+    assert type(c._get_node(0)) == IntegerNode
     assert c.get(0) == val
 
 
@@ -181,7 +181,7 @@ def test_list_integer_rejects_string() -> None:
     with pytest.raises(ValidationError):
         c[0] = "string"
     assert c[0] == 10
-    assert type(c.get_node(0)) == IntegerNode
+    assert type(c._get_node(0)) == IntegerNode
 
 
 # Test merge raises validation error
@@ -224,11 +224,11 @@ def test_accepts_mandatory_missing(
     conf = OmegaConf.create({"foo": node})
     assert isinstance(conf, DictConfig)
     assert "foo" not in conf
-    assert type(conf.get_node("foo")) == type_
+    assert type(conf._get_node("foo")) == type_
 
     conf.foo = valid_value
     # make sure valid assignment does not change the type
-    assert type(conf.get_node("foo")) == type_
+    assert type(conf._get_node("foo")) == type_
     assert "foo" in conf
     assert conf.foo == valid_value
 
diff --git a/tests/test_readonly.py b/tests/test_readonly.py
index 29b93de..5be9af2 100644
--- a/tests/test_readonly.py
+++ b/tests/test_readonly.py
@@ -18,7 +18,7 @@ from omegaconf import DictConfig, ListConfig, OmegaConf, ReadonlyConfigError
         ),
         (
             {},
-            lambda c: c.update_node("a.b", 10),
+            lambda c: OmegaConf.update(c, "a.b", 10),
             raises(ReadonlyConfigError, match="a"),
         ),
         (
@@ -36,7 +36,7 @@ from omegaconf import DictConfig, ListConfig, OmegaConf, ReadonlyConfigError
         ([], lambda c: c.__setitem__(0, 1), raises(ReadonlyConfigError, match="0")),
         (
             [],
-            lambda c: c.update_node("0.b", 10),
+            lambda c: OmegaConf.update(c, "0.b", 10),
             raises(ReadonlyConfigError, match="[0]"),
         ),
         ([10], lambda c: c.pop(), raises(ReadonlyConfigError)),
diff --git a/tests/test_select.py b/tests/test_select.py
index e55a933..4400bd0 100644
--- a/tests/test_select.py
+++ b/tests/test_select.py
@@ -12,7 +12,7 @@ from . import does_not_raise
 def test_select_key_from_empty(struct: Optional[bool]) -> None:
     c = OmegaConf.create()
     OmegaConf.set_struct(c, struct)
-    assert c.select("not_there") is None
+    assert OmegaConf.select(c, "not_there") is None
 
 
 @pytest.mark.parametrize(  # type: ignore
@@ -67,12 +67,18 @@ def test_select(
     c = OmegaConf.create(cfg)
     with expectation:
         for idx, key in enumerate(keys):
-            assert c.select(key) == expected[idx]
+            assert OmegaConf.select(c, key) == expected[idx]
 
 
 def test_select_from_dict() -> None:
     c = OmegaConf.create({"missing": "???"})
     with pytest.raises(MissingMandatoryValue):
-        c.select("missing", throw_on_missing=True)
-    assert c.select("missing", throw_on_missing=False) is None
-    assert c.select("missing") is None
+        OmegaConf.select(c, "missing", throw_on_missing=True)
+    assert OmegaConf.select(c, "missing", throw_on_missing=False) is None
+    assert OmegaConf.select(c, "missing") is None
+
+
+def test_select_deprecated() -> None:
+    c = OmegaConf.create({"foo": "bar"})
+    with pytest.deprecated_call():
+        c.select("foo")
diff --git a/tests/test_update.py b/tests/test_update.py
index d6f02fe..bc2cf6f 100644
--- a/tests/test_update.py
+++ b/tests/test_update.py
@@ -11,7 +11,7 @@ def test_update_map_value() -> None:
     # Replacing an existing key in a map
     s = "hello: world"
     c = OmegaConf.create(s)
-    c.update_node("hello", "there")
+    c.update("hello", "there")
     assert {"hello": "there"} == c
 
 
@@ -19,7 +19,7 @@ def test_update_map_new_keyvalue() -> None:
     # Adding another key to a map
     s = "hello: world"
     c = OmegaConf.create(s)
-    c.update_node("who", "goes there")
+    c.update("who", "goes there")
     assert {"hello": "world", "who": "goes there"} == c
 
 
@@ -27,56 +27,56 @@ def test_update_map_to_value() -> None:
     # changing map to single node
     s = "hello: world"
     c = OmegaConf.create(s)
-    c.update_node("value")
+    c.update("value")
     assert {"hello": "world", "value": None} == c
 
 
 def test_update_with_empty_map_value() -> None:
     c = OmegaConf.create()
-    c.update_node("a", {})
+    c.update("a", {})
     assert {"a": {}} == c
 
 
 def test_update_with_map_value() -> None:
     c = OmegaConf.create()
-    c.update_node("a", {"aa": 1, "bb": 2})
+    c.update("a", {"aa": 1, "bb": 2})
     assert {"a": {"aa": 1, "bb": 2}} == c
 
 
 def test_update_deep_from_empty() -> None:
     c = OmegaConf.create()
-    c.update_node("a.b", 1)
+    c.update("a.b", 1)
     assert {"a": {"b": 1}} == c
 
 
 def test_update_deep_with_map() -> None:
     c = OmegaConf.create("a: b")
-    c.update_node("a.b", {"c": 1})
+    c.update("a.b", {"c": 1})
     assert {"a": {"b": {"c": 1}}} == c
 
 
 def test_update_deep_with_value() -> None:
     c = OmegaConf.create()
-    c.update_node("a.b", 1)
+    c.update("a.b", 1)
     assert {"a": {"b": 1}} == c
 
 
 def test_update_deep_with_map2() -> None:
     c = OmegaConf.create("a: 1")
-    c.update_node("b.c", 2)
+    c.update("b.c", 2)
     assert {"a": 1, "b": {"c": 2}} == c
 
 
 def test_update_deep_with_map_update() -> None:
     c = OmegaConf.create("a: {b : {c: 1}}")
-    c.update_node("a.b.d", 2)
+    c.update("a.b.d", 2)
     assert {"a": {"b": {"c": 1, "d": 2}}} == c
 
 
 def test_list_value_update() -> None:
     # List update is always a replace because a list can be merged in too many ways
     c = OmegaConf.create("a: [1,2]")
-    c.update_node("a", [2, 3, 4])
+    c.update("a", [2, 3, 4])
     assert {"a": [2, 3, 4]} == c
 
 
@@ -85,7 +85,7 @@ def test_override_mandatory_value() -> None:
     assert isinstance(c, DictConfig)
     with raises(MissingMandatoryValue):
         c.get("a")
-    c.update_node("a", 123)
+    c.update("a", 123)
     assert {"a": 123} == c
 
 
@@ -93,7 +93,7 @@ def test_update_empty_to_value() -> None:
     """"""
     s = ""
     c = OmegaConf.create(s)
-    c.update_node("hello")
+    c.update("hello")
     assert {"hello": None} == c
 
 
@@ -101,31 +101,31 @@ def test_update_same_value() -> None:
     """"""
     s = "hello"
     c = OmegaConf.create(s)
-    c.update_node("hello")
+    c.update("hello")
     assert {"hello": None} == c
 
 
 def test_update_value_to_map() -> None:
     s = "hello"
     c = OmegaConf.create(s)
-    c.update_node("hi", "there")
+    c.update("hi", "there")
     assert {"hello": None, "hi": "there"} == c
 
 
 def test_update_map_empty_to_map() -> None:
     s = ""
     c = OmegaConf.create(s)
-    c.update_node("hello", "there")
+    c.update("hello", "there")
     assert {"hello": "there"} == c
 
 
 def test_update_list() -> None:
     c = OmegaConf.create([1, 2, 3])
     assert isinstance(c, ListConfig)
-    c.update_node("1", "abc")
-    c.update_node("-1", "last")
+    c.update("1", "abc")
+    c.update("-1", "last")
     with raises(IndexError):
-        c.update_node("4", "abc")
+        c.update("4", "abc")
 
     assert len(c) == 3
     assert c[0] == 1
@@ -135,10 +135,10 @@ def test_update_list() -> None:
 
 def test_update_nested_list() -> None:
     c = OmegaConf.create(dict(deep=dict(list=[1, 2, 3])))
-    c.update_node("deep.list.1", "abc")
-    c.update_node("deep.list.-1", "last")
+    c.update("deep.list.1", "abc")
+    c.update("deep.list.-1", "last")
     with raises(IndexError):
-        c.update_node("deep.list.4", "abc")
+        c.update("deep.list.4", "abc")
 
     assert c.deep.list[0] == 1
     assert c.deep.list[1] == "abc"
@@ -148,10 +148,10 @@ def test_update_nested_list() -> None:
 def test_update_list_make_dict() -> None:
     c = OmegaConf.create([None, None])
     assert isinstance(c, ListConfig)
-    c.update_node("0.a.a", "aa")
-    c.update_node("0.a.b", "ab")
-    c.update_node("1.b.a", "ba")
-    c.update_node("1.b.b", "bb")
+    c.update("0.a.a", "aa")
+    c.update("0.a.b", "ab")
+    c.update("1.b.a", "ba")
+    c.update("1.b.b", "bb")
     assert c[0].a.a == "aa"
     assert c[0].a.b == "ab"
     assert c[1].b.a == "ba"
@@ -198,3 +198,9 @@ def test_merge_with_dotlist_errors(dotlist: List[str]) -> None:
     c = OmegaConf.create()
     with pytest.raises(ValueError):
         c.merge_with_dotlist(dotlist)
+
+
+def test_update_deprecated() -> None:
+    c = OmegaConf.create()
+    with pytest.deprecated_call():
+        c.update("foo", "bar")
diff --git a/tests/test_utils.py b/tests/test_utils.py
index d0aeead..24d95ec 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -211,9 +211,9 @@ def test_value_kind(value: Any, kind: _utils.ValueKind) -> None:
 def test_re_parent() -> None:
     def validate(cfg1: DictConfig) -> None:
         assert cfg1._get_parent() is None
-        assert cfg1.get_node("str")._get_parent() == cfg1  # type:ignore
-        assert cfg1.get_node("list")._get_parent() == cfg1  # type:ignore
-        assert cfg1.list.get_node(0)._get_parent() == cfg1.list
+        assert cfg1._get_node("str")._get_parent() == cfg1  # type:ignore
+        assert cfg1._get_node("list")._get_parent() == cfg1  # type:ignore
+        assert cfg1.list._get_node(0)._get_parent() == cfg1.list
 
     cfg = OmegaConf.create({})
     assert isinstance(cfg, DictConfig)
@@ -222,9 +222,9 @@ def test_re_parent() -> None:
 
     validate(cfg)
 
-    cfg.get_node("str")._set_parent(None)  # type:ignore
-    cfg.get_node("list")._set_parent(None)  # type:ignore
-    cfg.list.get_node(0)._set_parent(None)  # type: ignore
+    cfg._get_node("str")._set_parent(None)  # type:ignore
+    cfg._get_node("list")._set_parent(None)  # type:ignore
+    cfg.list._get_node(0)._set_parent(None)  # type: ignore
     # noinspection PyProtectedMember
     cfg._re_parent()
     validate(cfg)

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-mock
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///croot/attrs_1668696182826/work
certifi @ file:///croot/certifi_1671487769961/work/certifi
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
-e git+https://github.com/omry/omegaconf.git@7598f526998fa913d2456245395b3c8710b13525#egg=omegaconf
packaging @ file:///croot/packaging_1671697413597/work
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pytest==7.1.2
pytest-mock==3.11.1
PyYAML==6.0.1
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
zipp @ file:///croot/zipp_1672387121353/work

name: omegaconf
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - omegaconf==2.0.0rc17
      - pytest-mock==3.11.1
      - pyyaml==6.0.1
prefix: /opt/conda/envs/omegaconf

tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[None-expected_init0-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[None-expected_init0-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[input_init1-expected_init1-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[input_init1-expected_init1-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[None-expected_init2-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[None-expected_init2-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[input_init3-expected_init3-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_untyped[input_init3-expected_init3-tests.structured_conf.data.attr_classes] tests/test_basic_ops_dict.py::test_dir[cfg1-a-expected1] tests/test_basic_ops_dict.py::test_dir[StructuredWithMissing-dict-expected2] tests/test_basic_ops_dict.py::test_is_missing tests/test_basic_ops_list.py::test_list_pop tests/test_basic_ops_list.py::test_list_delitem tests/test_basic_ops_list.py::test_list_append tests/test_basic_ops_list.py::test_insert[input_0-1-100-expected0-AnyNode-None] tests/test_basic_ops_list.py::test_insert[input_1-1-value1-expected1-IntegerNode-None] tests/test_basic_ops_list.py::test_insert[input_2-1-foo-expected2-AnyNode-None] tests/test_basic_ops_list.py::test_insert[input_3-1-value3-expected3-StringNode-None] tests/test_errors.py::test_errors[structured:update_with_invalid_value] tests/test_errors.py::test_errors[structured:update:none_to_non_optional] tests/test_errors.py::test_errors[dict:update:object_of_illegal_type] tests/test_get_full_key.py::test_get_full_key_from_config[cfg0--a-a] tests/test_get_full_key.py::test_get_full_key_from_config[cfg1--a-a] tests/test_get_full_key.py::test_get_full_key_from_config[cfg2--bad-bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg3---] tests/test_get_full_key.py::test_get_full_key_from_config[cfg4--bad-bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg5--2-[2]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg6--999-[999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg7---] tests/test_get_full_key.py::test_get_full_key_from_config[cfg8--999-[999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg9-b-c-b.c] tests/test_get_full_key.py::test_get_full_key_from_config[cfg10-b-bad-b.bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg11-a-1-a[1]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg12-a-999-a[999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg13-0-2-[0][2]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg14-0-999-[0][999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg15-2-a-[2].a] tests/test_get_full_key.py::test_get_full_key_from_config[cfg16-2-bad-[2].bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg17-b--b] tests/test_get_full_key.py::test_get_full_key_from_config[cfg18-b-bad-b.bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg19-a.b-c-a.b.c] tests/test_get_full_key.py::test_get_full_key_from_config[cfg20-a.b-bad-a.b.bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg21-a.b-0-a.b[0]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg22-a.b-999-a.b[999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg23-a.1-0-a[1][0]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg24-a.1-999-a[1][999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg25-a.0-b-a[0].b] tests/test_get_full_key.py::test_get_full_key_from_config[cfg26-a.0-bad-a[0].bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg27-0.a-b-[0].a.b] tests/test_get_full_key.py::test_get_full_key_from_config[cfg28-0.a-bad-[0].a.bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg29-0.a-0-[0].a[0]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg30-0.a-999-[0].a[999]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg31-0.0-a-[0][0].a] tests/test_get_full_key.py::test_get_full_key_from_config[cfg32-0.0-bad-[0][0].bad] tests/test_get_full_key.py::test_get_full_key_from_config[cfg33-0.0-0-[0][0][0]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg34-0.0.a.a-0-[0][0].a.a[0]] tests/test_get_full_key.py::test_get_full_key_from_config[cfg35-b-c-b.c] tests/test_get_full_key.py::test_get_full_key_from_config[cfg36--foo-foo] tests/test_get_full_key.py::test_get_full_key_from_config[cfg37-foo-bar-foo.bar] tests/test_get_full_key.py::test_value_node_get_full_key tests/test_interpolation.py::test_interpolation[input_0-b-10] tests/test_interpolation.py::test_interpolation[input_1-b.1-10] tests/test_interpolation.py::test_interpolation[input_2-a-expected2] tests/test_interpolation.py::test_interpolation[input_3-a-expected3] tests/test_interpolation.py::test_interpolation[input_4-a-foo-[1, tests/test_interpolation.py::test_interpolation[input_5-a-foo-{'c': tests/test_interpolation.py::test_interpolations[cfg0-b-10] tests/test_interpolation.py::test_interpolations[cfg1-c-10] tests/test_interpolation.py::test_interpolations[cfg2-foo.0-10] tests/test_interpolation.py::test_interpolations[cfg3-bar-None] tests/test_interpolation.py::test_interpolations[cfg4-foo-bar] tests/test_interpolation.py::test_interpolations[cfg5-list.0-bar] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_and_merging_in_dict[dataclass] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_dict_non_none_assignment[dataclass] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_assignment_in_list[dataclass] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_list_non_none_assignment[dataclass] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_interpolation[dataclass] tests/test_nodes.py::test_assigned_value_node_type[input_0-DictConfig] tests/test_nodes.py::test_assigned_value_node_type[input_1-ListConfig] tests/test_nodes.py::test_assigned_value_node_type[5-AnyNode] tests/test_nodes.py::test_assigned_value_node_type[5.0-AnyNode] tests/test_nodes.py::test_assigned_value_node_type[True-AnyNode] tests/test_nodes.py::test_assigned_value_node_type[False-AnyNode] tests/test_nodes.py::test_assigned_value_node_type[str-AnyNode] tests/test_nodes.py::test_dict_any tests/test_nodes.py::test_dict_integer_1 tests/test_nodes.py::test_list_any tests/test_nodes.py::test_list_integer tests/test_nodes.py::test_list_integer_rejects_string tests/test_nodes.py::test_accepts_mandatory_missing[IntegerNode-1-invalid] tests/test_nodes.py::test_accepts_mandatory_missing[FloatNode-3.1415-invalid] tests/test_nodes.py::test_accepts_mandatory_missing[BooleanNode-True-invalid] tests/test_nodes.py::test_accepts_mandatory_missing[AnyNode-aaa-None] tests/test_nodes.py::test_accepts_mandatory_missing[StringNode-blah-None] tests/test_readonly.py::test_readonly[src2-<lambda>-expectation2] tests/test_readonly.py::test_readonly[src7-<lambda>-expectation7] tests/test_select.py::test_select_key_from_empty[True] tests/test_select.py::test_select_key_from_empty[False] tests/test_select.py::test_select_key_from_empty[None] tests/test_select.py::test_select[cfg0-nope-None-expectation0] tests/test_select.py::test_select[cfg1-not.there-None-expectation1] tests/test_select.py::test_select[cfg2-still.not.there-None-expectation2] tests/test_select.py::test_select[cfg3-c-1-expectation3] tests/test_select.py::test_select[cfg4-a-expected4-expectation4] tests/test_select.py::test_select[cfg5-a.v-1-expectation5] tests/test_select.py::test_select[cfg6-missing-None-expectation6] tests/test_select.py::test_select[cfg7-0-None-expectation7] tests/test_select.py::test_select[cfg8-keys8-expected8-expectation8] tests/test_select.py::test_select[cfg9-keys9-expected9-expectation9] tests/test_select.py::test_select[cfg10-a-None-expectation10] tests/test_select.py::test_select[cfg11--expected11-expectation11] tests/test_select.py::test_select[cfg12-foo-one=1-expectation12] tests/test_select.py::test_select[cfg13-dict.foo-one=1-expectation13] tests/test_select.py::test_select[cfg14-dict.foo-one=_1_-expectation14] tests/test_select.py::test_select_from_dict tests/test_select.py::test_select_deprecated tests/test_update.py::test_update_map_value tests/test_update.py::test_update_map_new_keyvalue tests/test_update.py::test_update_map_to_value tests/test_update.py::test_update_with_empty_map_value tests/test_update.py::test_update_with_map_value tests/test_update.py::test_update_deep_from_empty tests/test_update.py::test_update_deep_with_map tests/test_update.py::test_update_deep_with_value tests/test_update.py::test_update_deep_with_map2 tests/test_update.py::test_update_deep_with_map_update tests/test_update.py::test_list_value_update tests/test_update.py::test_override_mandatory_value tests/test_update.py::test_update_empty_to_value tests/test_update.py::test_update_same_value tests/test_update.py::test_update_value_to_map tests/test_update.py::test_update_map_empty_to_map tests/test_update.py::test_update_list tests/test_update.py::test_update_nested_list tests/test_update.py::test_update_list_make_dict tests/test_update.py::test_update_deprecated tests/test_utils.py::test_re_parent
tests/structured_conf/test_structured_config.py::TestConfigs::test_nested_config_is_none[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_nested_config_is_none[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_nested_config[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_nested_config[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_config_with_list[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_config_with_list[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_assignment_to_nested_structured_config[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_assignment_to_nested_structured_config[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_assignment_to_structured_inside_dict_config[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_assignment_to_structured_inside_dict_config[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_config_with_dict[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_config_with_dict[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_structured_config_struct_behavior[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_structured_config_struct_behavior[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[BoolConfig-BoolConfigAssignments-init_dict0-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[BoolConfig-BoolConfigAssignments-init_dict0-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[IntegersConfig-IntegersConfigAssignments-init_dict1-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[IntegersConfig-IntegersConfigAssignments-init_dict1-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[FloatConfig-FloatConfigAssignments-init_dict2-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[FloatConfig-FloatConfigAssignments-init_dict2-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[StringConfig-StringConfigAssignments-init_dict3-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[StringConfig-StringConfigAssignments-init_dict3-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[EnumConfig-EnumConfigAssignments-init_dict4-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[EnumConfig-EnumConfigAssignments-init_dict4-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[BoolConfig-BoolConfigAssignments-init_dict5-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[BoolConfig-BoolConfigAssignments-init_dict5-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[IntegersConfig-IntegersConfigAssignments-init_dict6-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[IntegersConfig-IntegersConfigAssignments-init_dict6-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[FloatConfig-FloatConfigAssignments-init_dict7-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[FloatConfig-FloatConfigAssignments-init_dict7-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[StringConfig-StringConfigAssignments-init_dict8-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[StringConfig-StringConfigAssignments-init_dict8-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[EnumConfig-EnumConfigAssignments-init_dict9-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[EnumConfig-EnumConfigAssignments-init_dict9-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[AnyTypeConfig-AnyTypeConfigAssignments-init_dict10-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_field_with_default_value[AnyTypeConfig-AnyTypeConfigAssignments-init_dict10-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_interpolation[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_interpolation[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[BoolOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[BoolOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[IntegerOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[IntegerOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[FloatOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[FloatOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[StringOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[StringOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[EnumOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[EnumOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[StructuredOptional-tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_optional[StructuredOptional-tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_list[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_list[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_type1[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_type1[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_type2[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_type2[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_with_subclass[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_merged_with_subclass[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict_key_error[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict_key_error[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict_value_error[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_dict_value_error[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_list_value_error[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_typed_list_value_error[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_list_examples[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_list_examples[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_dict_examples[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_dict_examples[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_enum_key[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_enum_key[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_dict_of_objects[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_dict_of_objects[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_list_of_objects[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_list_of_objects[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_api[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_api[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_to_class[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_to_class[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_to_object[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestConfigs::test_promote_to_object[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::test_attr_frozen tests/structured_conf/test_structured_config.py::test_dataclass_frozen tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2str[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2str[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_color2str[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_color2str[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_color2color[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_color2color[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2user[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2user[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2str_with_field[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2str_with_field[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2int_with_field_of_different_type[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::test_str2int_with_field_of_different_type[tests.structured_conf.data.attr_classes] tests/structured_conf/test_structured_config.py::TestDictSubclass::TestErrors::test_usr2str[tests.structured_conf.data.dataclasses] tests/structured_conf/test_structured_config.py::TestDictSubclass::TestErrors::test_usr2str[tests.structured_conf.data.attr_classes] tests/test_basic_ops_dict.py::test_setattr_deep_value tests/test_basic_ops_dict.py::test_setattr_deep_from_empty tests/test_basic_ops_dict.py::test_setattr_deep_map tests/test_basic_ops_dict.py::test_getattr tests/test_basic_ops_dict.py::test_getattr_dict tests/test_basic_ops_dict.py::test_mandatory_value tests/test_basic_ops_dict.py::test_nested_dict_mandatory_value tests/test_basic_ops_dict.py::test_mandatory_with_default tests/test_basic_ops_dict.py::test_subscript_get tests/test_basic_ops_dict.py::test_subscript_set tests/test_basic_ops_dict.py::test_pretty_dict tests/test_basic_ops_dict.py::test_pretty_sort_keys tests/test_basic_ops_dict.py::test_pretty_dict_unicode tests/test_basic_ops_dict.py::test_default_value tests/test_basic_ops_dict.py::test_get_default_value tests/test_basic_ops_dict.py::test_scientific_notation_float tests/test_basic_ops_dict.py::test_dict_get_with_default tests/test_basic_ops_dict.py::test_map_expansion tests/test_basic_ops_dict.py::test_items tests/test_basic_ops_dict.py::test_items2 tests/test_basic_ops_dict.py::test_items_with_interpolation tests/test_basic_ops_dict.py::test_dict_keys tests/test_basic_ops_dict.py::test_pickle_get_root tests/test_basic_ops_dict.py::test_iterate_dictionary tests/test_basic_ops_dict.py::test_dict_pop[cfg0-a-None-1] tests/test_basic_ops_dict.py::test_dict_pop[cfg1-not_found-default-default] tests/test_basic_ops_dict.py::test_dict_pop[cfg2-a-None-2] tests/test_basic_ops_dict.py::test_dict_pop[cfg3-Enum1.FOO-None-bar] tests/test_basic_ops_dict.py::test_dict_pop[cfg4-Enum1.BAR-default-default] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg0-not_found-expectation0] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg1-a-expectation1] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg2-a-expectation2] tests/test_basic_ops_dict.py::test_dict_pop_error[cfg3-Enum1.BAR-expectation3] tests/test_basic_ops_dict.py::test_in_dict[conf0-a-True] tests/test_basic_ops_dict.py::test_in_dict[conf1-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf2-c-False] tests/test_basic_ops_dict.py::test_in_dict[conf3-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf4-b-False] tests/test_basic_ops_dict.py::test_in_dict[conf5-c-False] tests/test_basic_ops_dict.py::test_in_dict[conf6-b-False] tests/test_basic_ops_dict.py::test_in_dict[conf7-a-True] tests/test_basic_ops_dict.py::test_in_dict[conf8-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf9-b-True] tests/test_basic_ops_dict.py::test_in_dict[conf10-Enum1.FOO-True] tests/test_basic_ops_dict.py::test_get_root tests/test_basic_ops_dict.py::test_get_root_of_merged tests/test_basic_ops_dict.py::test_dict_config tests/test_basic_ops_dict.py::test_dict_delitem tests/test_basic_ops_dict.py::test_dict_len[d0-0] tests/test_basic_ops_dict.py::test_dict_len[d1-2] tests/test_basic_ops_dict.py::test_dict_assign_illegal_value tests/test_basic_ops_dict.py::test_dict_assign_illegal_value_nested tests/test_basic_ops_dict.py::test_assign_dict_in_dict tests/test_basic_ops_dict.py::test_to_container[src0] tests/test_basic_ops_dict.py::test_to_container[src1] tests/test_basic_ops_dict.py::test_to_container[src2] tests/test_basic_ops_dict.py::test_pretty_without_resolve tests/test_basic_ops_dict.py::test_pretty_with_resolve tests/test_basic_ops_dict.py::test_instantiate_config_fails tests/test_basic_ops_dict.py::test_dir[cfg0-None-expected0] tests/test_basic_ops_dict.py::test_hash tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[default] tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[0] tests/test_basic_ops_dict.py::test_get_with_default_from_struct_not_throwing[None] tests/test_basic_ops_dict.py::test_members tests/test_basic_ops_dict.py::test_masked_copy[in_cfg0-mask_keys0-expected0] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg1-a-expected1] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg2-mask_keys2-expected2] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg3-b-expected3] tests/test_basic_ops_dict.py::test_masked_copy[in_cfg4-mask_keys4-expected4] tests/test_basic_ops_dict.py::test_masked_copy_is_deep tests/test_basic_ops_dict.py::test_creation_with_invalid_key tests/test_basic_ops_dict.py::test_set_with_invalid_key tests/test_basic_ops_dict.py::test_get_with_invalid_key tests/test_basic_ops_dict.py::test_hasattr tests/test_basic_ops_dict.py::test_struct_mode_missing_key_getitem tests/test_basic_ops_dict.py::test_struct_mode_missing_key_setitem tests/test_basic_ops_dict.py::test_get_type tests/test_basic_ops_dict.py::test_get_ref_type tests/test_basic_ops_dict.py::test_get_ref_type_with_conflict tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[None-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[None-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign1-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign1-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign2-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign2-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign3-None] tests/test_basic_ops_dict.py::test_assign_to_reftype_none_or_any[assign3-ref_type1] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values0-None-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values1-Plugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values2-assign2-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values3-ConcretePlugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values4-assign4-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[Plugin-values5-10-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values6-None-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values7-Plugin-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values8-assign8-<lambda>] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values9-ConcretePlugin-does_not_raise] tests/test_basic_ops_dict.py::test_assign_to_reftype_plugin[ConcretePlugin-values10-assign10-does_not_raise] tests/test_basic_ops_list.py::test_list_value tests/test_basic_ops_list.py::test_list_of_dicts tests/test_basic_ops_list.py::test_pretty_list tests/test_basic_ops_list.py::test_pretty_list_unicode tests/test_basic_ops_list.py::test_list_get_with_default tests/test_basic_ops_list.py::test_iterate_list[input_0-None] tests/test_basic_ops_list.py::test_iterate_list[input_1-None] tests/test_basic_ops_list.py::test_iterate_list[input_2-defaults] tests/test_basic_ops_list.py::test_iterate_list[input_3-None] tests/test_basic_ops_list.py::test_iterate_interpolated_list tests/test_basic_ops_list.py::test_items_with_interpolation tests/test_basic_ops_list.py::test_list_pop_on_unexpected_exception_not_modifying tests/test_basic_ops_list.py::test_in_list tests/test_basic_ops_list.py::test_list_config_with_list tests/test_basic_ops_list.py::test_list_config_with_tuple tests/test_basic_ops_list.py::test_items_on_list tests/test_basic_ops_list.py::test_list_enumerate tests/test_basic_ops_list.py::test_list_len[lst0-2] tests/test_basic_ops_list.py::test_list_len[lst1-0] tests/test_basic_ops_list.py::test_list_len[lst2-0] tests/test_basic_ops_list.py::test_nested_list_assign_illegal_value tests/test_basic_ops_list.py::test_pretty_without_resolve tests/test_basic_ops_list.py::test_pretty_with_resolve tests/test_basic_ops_list.py::test_list_index[index0-expected0] tests/test_basic_ops_list.py::test_list_index[index1-expected1] tests/test_basic_ops_list.py::test_list_index[-1-13] tests/test_basic_ops_list.py::test_list_dir tests/test_basic_ops_list.py::test_insert[input_4-0-foo-None-None-ValidationError] tests/test_basic_ops_list.py::test_insert_special_list[lst0-0-10-expectation0] tests/test_basic_ops_list.py::test_insert_special_list[lst1-0-10-expectation1] tests/test_basic_ops_list.py::test_extend[src0-append0-result0] tests/test_basic_ops_list.py::test_extend[src1-append1-result1] tests/test_basic_ops_list.py::test_extend[src2-append2-result2] tests/test_basic_ops_list.py::test_remove[src0-10-result0-expectation0] tests/test_basic_ops_list.py::test_remove[src1-oops-None-expectation1] tests/test_basic_ops_list.py::test_remove[src2-remove2-result2-expectation2] tests/test_basic_ops_list.py::test_remove[src3-2-result3-expectation3] tests/test_basic_ops_list.py::test_clear[1-src0] tests/test_basic_ops_list.py::test_clear[1-src1] tests/test_basic_ops_list.py::test_clear[1-src2] tests/test_basic_ops_list.py::test_clear[2-src0] tests/test_basic_ops_list.py::test_clear[2-src1] tests/test_basic_ops_list.py::test_clear[2-src2] tests/test_basic_ops_list.py::test_index[src0-20--1-expectation0] tests/test_basic_ops_list.py::test_index[src1-10-0-expectation1] tests/test_basic_ops_list.py::test_index[src2-20-1-expectation2] tests/test_basic_ops_list.py::test_index_with_range tests/test_basic_ops_list.py::test_count[src0-10-0] tests/test_basic_ops_list.py::test_count[src1-10-1] tests/test_basic_ops_list.py::test_count[src2-10-2] tests/test_basic_ops_list.py::test_count[src3-None-0] tests/test_basic_ops_list.py::test_sort tests/test_basic_ops_list.py::test_insert_throws_not_changing_list tests/test_basic_ops_list.py::test_append_throws_not_changing_list tests/test_basic_ops_list.py::test_hash tests/test_basic_ops_list.py::TestListAdd::test_list_plus[in_list10-in_list20-in_expected0] tests/test_basic_ops_list.py::TestListAdd::test_list_plus[in_list11-in_list21-in_expected1] tests/test_basic_ops_list.py::TestListAdd::test_list_plus[in_list12-in_list22-in_expected2] tests/test_basic_ops_list.py::TestListAdd::test_list_plus_eq[in_list10-in_list20-in_expected0] tests/test_basic_ops_list.py::TestListAdd::test_list_plus_eq[in_list11-in_list21-in_expected1] tests/test_basic_ops_list.py::TestListAdd::test_list_plus_eq[in_list12-in_list22-in_expected2] tests/test_basic_ops_list.py::test_deep_add tests/test_basic_ops_list.py::test_set_with_invalid_key tests/test_basic_ops_list.py::test_getitem[lst0-0-1] tests/test_basic_ops_list.py::test_getitem[lst1-0-TypeError] tests/test_basic_ops_list.py::test_getitem[lst2-0-MissingMandatoryValue] tests/test_basic_ops_list.py::test_get[lst0-0-1] tests/test_basic_ops_list.py::test_get[lst1-foo-KeyValidationError] tests/test_basic_ops_list.py::test_get[lst2-0-TypeError] tests/test_basic_ops_list.py::test_get[lst3-0-MissingMandatoryValue] tests/test_errors.py::test_errors[dict,readonly:pop] tests/test_errors.py::test_errors[dict:pop_invalid0] tests/test_errors.py::test_errors[dict:pop_invalid1] tests/test_errors.py::test_errors[structured:access_invalid_attribute] tests/test_errors.py::test_errors[dict,struct:access_invalid_attribute] tests/test_errors.py::test_errors[dict,struct:set_invalid_attribute] tests/test_errors.py::test_errors[structured:setattr,invalid_type] tests/test_errors.py::test_errors[dict,readonly:set_attribute] tests/test_errors.py::test_errors[dict,none_optional:set_none] tests/test_errors.py::test_errors[dict,struct:setitem_on_none_existing_key] tests/test_errors.py::test_errors[dict,struct:getitem_key_not_in_struct] tests/test_errors.py::test_errors[dict,reftype=Dict[Color,str]:,getitem_str_key] tests/test_errors.py::test_errors[dict,reftype=Dict[str,str]:,getitem_color_key] tests/test_errors.py::test_errors[dict,readonly:merge_with] tests/test_errors.py::test_errors[structured:merge_invalid_dataclass] tests/test_errors.py::test_errors[dict:get_illegal_type] tests/test_errors.py::test_errors[dict:get_object_of_illegal_type] tests/test_errors.py::test_errors[dict_create_none_optional_with_none] tests/test_errors.py::test_errors[dict_create_from_illegal_type] tests/test_errors.py::test_errors[structured:create_from_unsupported_object] tests/test_errors.py::test_errors[dict:set_value:reftype_mismatch] tests/test_errors.py::test_errors[dict,int_element_type:assigned_str_value] tests/test_errors.py::test_errors[dict,readonly:del] tests/test_errors.py::test_errors[list:get_nox_ex:invalid_index_type] tests/test_errors.py::test_errors[list:get_node_ex:index_out_of_range] tests/test_errors.py::test_errors[list:get_node_none] tests/test_errors.py::test_errors[list:get_node_missing] tests/test_errors.py::test_errors[list:create_not_optional_with_none] tests/test_errors.py::test_errors[list:append_value_of_illegal_type] tests/test_errors.py::test_errors[dict:readonly:pop0] tests/test_errors.py::test_errors[dict:readonly:pop1] tests/test_errors.py::test_errors[list:pop_from_none] tests/test_errors.py::test_errors[list:pop_from_missing] tests/test_errors.py::test_errors[list:subscript_slice_with_missing] tests/test_errors.py::test_errors[list:subscript_index_with_missing] tests/test_errors.py::test_errors[list:subscript:index_out_of_range] tests/test_errors.py::test_errors[list:getitem,illegal_key_type0] tests/test_errors.py::test_errors[list:getitem,illegal_key_type1] tests/test_errors.py::test_errors[list:setitem,illegal_value_type] tests/test_errors.py::test_errors[list:setitem,illegal_key_type] tests/test_errors.py::test_errors[list,readonly:setitem] tests/test_errors.py::test_errors[list,int_elements:assigned_str_element0] tests/test_errors.py::test_errors[list,int_elements:assigned_str_element1] tests/test_errors.py::test_errors[list,not_optional:assigned_none] tests/test_errors.py::test_errors[list,readonly:index_not_found] tests/test_errors.py::test_errors[list,readonly:insert] tests/test_errors.py::test_errors[list:insert_into_none] tests/test_errors.py::test_errors[list:insert_into_missing] tests/test_errors.py::test_errors[list:get_from_none] tests/test_errors.py::test_errors[list:get_from_missing] tests/test_errors.py::test_errors[list:readonly:sort0] tests/test_errors.py::test_errors[list:sort_from_none] tests/test_errors.py::test_errors[list:sort_from_missing] tests/test_errors.py::test_errors[list:readonly:sort1] tests/test_errors.py::test_errors[list:iter_none] tests/test_errors.py::test_errors[list:iter_missing] tests/test_errors.py::test_errors[list,readonly:del] tests/test_interpolation.py::test_str_interpolation_dict_1 tests/test_interpolation.py::test_str_interpolation_key_error_1 tests/test_interpolation.py::test_str_interpolation_key_error_2 tests/test_interpolation.py::test_str_interpolation_3 tests/test_interpolation.py::test_str_interpolation_4 tests/test_interpolation.py::test_deep_str_interpolation_1 tests/test_interpolation.py::test_deep_str_interpolation_2 tests/test_interpolation.py::test_simple_str_interpolation_inherit_type tests/test_interpolation.py::test_complex_str_interpolation_is_always_str_1 tests/test_interpolation.py::test_2_step_interpolation tests/test_interpolation.py::test_env_interpolation1 tests/test_interpolation.py::test_env_interpolation_not_found tests/test_interpolation.py::test_env_default_interpolation_missing_env tests/test_interpolation.py::test_env_default_interpolation_env_exist tests/test_interpolation.py::test_env_values_are_typed[false-False] tests/test_interpolation.py::test_env_values_are_typed[true-True] tests/test_interpolation.py::test_env_values_are_typed[10-10] tests/test_interpolation.py::test_env_values_are_typed[-10--10] tests/test_interpolation.py::test_env_values_are_typed[10.0-10.0] tests/test_interpolation.py::test_env_values_are_typed[-10.0--10.0] tests/test_interpolation.py::test_env_values_are_typed[off-off] tests/test_interpolation.py::test_env_values_are_typed[no-no] tests/test_interpolation.py::test_env_values_are_typed[on-on] tests/test_interpolation.py::test_env_values_are_typed[yes-yes] tests/test_interpolation.py::test_env_values_are_typed[>1234->1234] tests/test_interpolation.py::test_env_values_are_typed[:1234-:1234] tests/test_interpolation.py::test_env_values_are_typed[/1234-/1234] tests/test_interpolation.py::test_env_values_are_typed[foo: tests/test_interpolation.py::test_register_resolver_twice_error tests/test_interpolation.py::test_clear_resolvers tests/test_interpolation.py::test_register_resolver_1 tests/test_interpolation.py::test_resolver_cache_1 tests/test_interpolation.py::test_resolver_cache_2 tests/test_interpolation.py::test_resolver_that_allows_a_list_of_arguments[<lambda>-arg_list-${my_resolver:cat, tests/test_interpolation.py::test_resolver_that_allows_a_list_of_arguments[<lambda>-escape_comma-${my_resolver:cat\\, tests/test_interpolation.py::test_resolver_that_allows_a_list_of_arguments[<lambda>-escape_whitespace-${my_resolver:cat\\, tests/test_interpolation.py::test_resolver_that_allows_a_list_of_arguments[<lambda>-zero_arg-${my_resolver:}-zero] tests/test_interpolation.py::test_copy_cache tests/test_interpolation.py::test_clear_cache tests/test_interpolation.py::test_supported_chars tests/test_interpolation.py::test_interpolation_in_list_key_error tests/test_interpolation.py::test_unsupported_interpolation_type tests/test_interpolation.py::test_incremental_dict_with_interpolation tests/test_interpolation.py::test_interpolation_with_missing tests/test_interpolation.py::test_assign_to_interpolation tests/test_interpolation.py::test_merge_with_interpolation tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[BooleanNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[FloatNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[IntegerNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[StringNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[EnumNode] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[DictConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[ListConfig] tests/test_matrix.py::TestNodeTypesMatrix::test_none_construction[dataclass] tests/test_nodes.py::test_valid_inputs[StringNode-abc-abc] tests/test_nodes.py::test_valid_inputs[StringNode-100-100] tests/test_nodes.py::test_valid_inputs[IntegerNode-10-100] tests/test_nodes.py::test_valid_inputs[IntegerNode-10-101] tests/test_nodes.py::test_valid_inputs[IntegerNode--100--1000] tests/test_nodes.py::test_valid_inputs[IntegerNode--100--1001] tests/test_nodes.py::test_valid_inputs[FloatNode-inf-inf] tests/test_nodes.py::test_valid_inputs[FloatNode-nan-nan] tests/test_nodes.py::test_valid_inputs[FloatNode-10-10.0] tests/test_nodes.py::test_valid_inputs[FloatNode-10.1-10.1] tests/test_nodes.py::test_valid_inputs[FloatNode-10.2-10.2] tests/test_nodes.py::test_valid_inputs[FloatNode-10e-3-0.01] tests/test_nodes.py::test_valid_inputs[BooleanNode-True-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-Y-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-true-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-Yes-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-On-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-1-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-100-True] tests/test_nodes.py::test_valid_inputs[BooleanNode-False-False] tests/test_nodes.py::test_valid_inputs[BooleanNode-N-False] tests/test_nodes.py::test_valid_inputs[BooleanNode-false-False] tests/test_nodes.py::test_valid_inputs[BooleanNode-No-False] tests/test_nodes.py::test_valid_inputs[BooleanNode-Off-False] tests/test_nodes.py::test_valid_inputs[BooleanNode-None-None] tests/test_nodes.py::test_valid_inputs[BooleanNode-0-False0] tests/test_nodes.py::test_valid_inputs[BooleanNode-0-False1] tests/test_nodes.py::test_valid_inputs[<lambda>-Color.RED-Color.RED0] tests/test_nodes.py::test_valid_inputs[<lambda>-Color.RED-Color.RED1] tests/test_nodes.py::test_valid_inputs[<lambda>-RED-Color.RED] tests/test_nodes.py::test_valid_inputs[<lambda>-1-Color.RED] tests/test_nodes.py::test_invalid_inputs[IntegerNode-abc] tests/test_nodes.py::test_invalid_inputs[IntegerNode-10.1] tests/test_nodes.py::test_invalid_inputs[IntegerNode--1132c] tests/test_nodes.py::test_invalid_inputs[FloatNode-abc] tests/test_nodes.py::test_invalid_inputs[IntegerNode--abc] tests/test_nodes.py::test_invalid_inputs[BooleanNode-Nope] tests/test_nodes.py::test_invalid_inputs[BooleanNode-Yup] tests/test_nodes.py::test_get_node_no_validate_access tests/test_nodes.py::test_merge_validation_error[c10-c20] tests/test_nodes.py::test_merge_validation_error[c11-c21] tests/test_nodes.py::test_merge_validation_error[c12-c22] tests/test_nodes.py::test_merge_validation_error[c13-c23] tests/test_nodes.py::test_legal_assignment[values0-success_map0-BooleanNode] tests/test_nodes.py::test_legal_assignment[values0-success_map0-EnumNode] tests/test_nodes.py::test_legal_assignment[values0-success_map0-FloatNode] tests/test_nodes.py::test_legal_assignment[values0-success_map0-IntegerNode] tests/test_nodes.py::test_legal_assignment[values0-success_map0-StringNode] tests/test_nodes.py::test_legal_assignment[values0-success_map0-AnyNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-BooleanNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-EnumNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-FloatNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-IntegerNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-StringNode] tests/test_nodes.py::test_legal_assignment[values1-success_map1-AnyNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-BooleanNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-EnumNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-FloatNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-IntegerNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-StringNode] tests/test_nodes.py::test_legal_assignment[values2-success_map2-AnyNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-BooleanNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-EnumNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-FloatNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-IntegerNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-StringNode] tests/test_nodes.py::test_legal_assignment[values3-success_map3-AnyNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-BooleanNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-EnumNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-FloatNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-IntegerNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-StringNode] tests/test_nodes.py::test_legal_assignment[values4-success_map4-AnyNode] tests/test_nodes.py::test_illegal_assignment[node0-foo] tests/test_nodes.py::test_illegal_assignment[node1-foo] tests/test_nodes.py::test_illegal_assignment[node2-foo] tests/test_nodes.py::test_illegal_assignment[node3-foo] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-BooleanNode] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-EnumNode] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-FloatNode] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-IntegerNode] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-StringNode] tests/test_nodes.py::test_legal_assignment_enum[Enum1-values0-success_map0-AnyNode] tests/test_nodes.py::test_pretty_with_enum tests/test_nodes.py::test_node_wrap[type_0-10-AnyNode-True] tests/test_nodes.py::test_node_wrap[type_0-10-AnyNode-False] tests/test_nodes.py::test_node_wrap[DummyEnum-DummyEnum.FOO-EnumNode-True] tests/test_nodes.py::test_node_wrap[DummyEnum-DummyEnum.FOO-EnumNode-False] tests/test_nodes.py::test_node_wrap[int-42-IntegerNode-True] tests/test_nodes.py::test_node_wrap[int-42-IntegerNode-False] tests/test_nodes.py::test_node_wrap[float-3.1415-FloatNode-True] tests/test_nodes.py::test_node_wrap[float-3.1415-FloatNode-False] tests/test_nodes.py::test_node_wrap[bool-True-BooleanNode-True] tests/test_nodes.py::test_node_wrap[bool-True-BooleanNode-False] tests/test_nodes.py::test_node_wrap[str-foo-StringNode-True] tests/test_nodes.py::test_node_wrap[str-foo-StringNode-False] tests/test_nodes.py::test_node_wrap_illegal_type tests/test_nodes.py::test_deepcopy[obj0] tests/test_nodes.py::test_deepcopy[obj1] tests/test_nodes.py::test_deepcopy[obj2] tests/test_nodes.py::test_deepcopy[obj3] tests/test_nodes.py::test_deepcopy[obj4] tests/test_nodes.py::test_deepcopy[obj5] tests/test_nodes.py::test_deepcopy[obj6] tests/test_nodes.py::test_deepcopy[obj7] tests/test_nodes.py::test_deepcopy[obj8] tests/test_nodes.py::test_eq[node0-None-True] tests/test_nodes.py::test_eq[node1-100-False] tests/test_nodes.py::test_eq[node2-foo-True] tests/test_nodes.py::test_eq[node3-1-False] tests/test_nodes.py::test_eq[node4-1-True] tests/test_nodes.py::test_eq[node5-foo-False] tests/test_nodes.py::test_eq[node6-1-False] tests/test_nodes.py::test_eq[node7-None-True] tests/test_nodes.py::test_eq[node8-None-False] tests/test_nodes.py::test_eq[node9-1.0-True] tests/test_nodes.py::test_eq[node10-1-True] tests/test_nodes.py::test_eq[node11-foo-False] tests/test_nodes.py::test_eq[node12-True-False] tests/test_nodes.py::test_eq[node13-False-False] tests/test_nodes.py::test_eq[node14-None-True] tests/test_nodes.py::test_eq[node15-None-False] tests/test_nodes.py::test_eq[node16-False-False] tests/test_nodes.py::test_eq[node17-False-True] tests/test_nodes.py::test_eq[node18-value18-True] tests/test_nodes.py::test_eq[node19-value19-True] tests/test_nodes.py::test_eq[node20-Enum1.BAR-False] tests/test_nodes.py::test_eq[node21-value21-True] tests/test_nodes.py::test_eq[node22-nope-False] tests/test_nodes.py::test_eq[node23-value23-True] tests/test_nodes.py::test_eq[node24-Enum1.BAR-True] tests/test_readonly.py::test_readonly[src0-<lambda>-expectation0] tests/test_readonly.py::test_readonly[src1-<lambda>-expectation1] tests/test_readonly.py::test_readonly[src3-<lambda>-expectation3] tests/test_readonly.py::test_readonly[src4-<lambda>-expectation4] tests/test_readonly.py::test_readonly[src5-<lambda>-expectation5] tests/test_readonly.py::test_readonly[src6-<lambda>-expectation6] tests/test_readonly.py::test_readonly[src8-<lambda>-expectation8] tests/test_readonly.py::test_readonly[src9-<lambda>-expectation9] tests/test_readonly.py::test_readonly_flag[src0] tests/test_readonly.py::test_readonly_flag[src1] tests/test_readonly.py::test_readonly_nested_list tests/test_readonly.py::test_readonly_list_insert tests/test_readonly.py::test_readonly_list_insert_deep tests/test_readonly.py::test_readonly_list_append tests/test_readonly.py::test_readonly_list_change_item tests/test_readonly.py::test_readonly_list_pop tests/test_readonly.py::test_readonly_list_del tests/test_readonly.py::test_readonly_list_sort tests/test_readonly.py::test_readonly_from_cli tests/test_update.py::test_merge_with_dotlist[cfg0-overrides0-expected0] tests/test_update.py::test_merge_with_dotlist[cfg1-overrides1-expected1] tests/test_update.py::test_merge_with_dotlist[cfg2-overrides2-expected2] tests/test_update.py::test_merge_with_cli tests/test_update.py::test_merge_empty_with_dotlist[dotlist0-expected0] tests/test_update.py::test_merge_empty_with_dotlist[dotlist1-expected1] tests/test_update.py::test_merge_empty_with_dotlist[dotlist2-expected2] tests/test_update.py::test_merge_with_dotlist_errors[foo=10] tests/test_update.py::test_merge_with_dotlist_errors[dotlist1] tests/test_utils.py::test_maybe_wrap[target_type0-foo-None] tests/test_utils.py::test_maybe_wrap[target_type1-True-None] tests/test_utils.py::test_maybe_wrap[target_type2-1-None] tests/test_utils.py::test_maybe_wrap[target_type3-1.0-None] tests/test_utils.py::test_maybe_wrap[target_type4-Color.RED-None] tests/test_utils.py::test_maybe_wrap[int-foo-ValidationError] tests/test_utils.py::test_maybe_wrap[int-True-ValidationError] tests/test_utils.py::test_maybe_wrap[int-1-None] tests/test_utils.py::test_maybe_wrap[int-1.0-ValidationError] tests/test_utils.py::test_maybe_wrap[int-Color.RED-ValidationError] tests/test_utils.py::test_maybe_wrap[float-foo-ValidationError] tests/test_utils.py::test_maybe_wrap[float-True-ValidationError] tests/test_utils.py::test_maybe_wrap[float-1-None] tests/test_utils.py::test_maybe_wrap[float-1.0-None] tests/test_utils.py::test_maybe_wrap[float-Color.RED-ValidationError] tests/test_utils.py::test_maybe_wrap[bool-foo-ValidationError] tests/test_utils.py::test_maybe_wrap[bool-True-None] tests/test_utils.py::test_maybe_wrap[bool-1-None] tests/test_utils.py::test_maybe_wrap[bool-0-None] tests/test_utils.py::test_maybe_wrap[bool-1.0-ValidationError] tests/test_utils.py::test_maybe_wrap[bool-Color.RED-ValidationError] tests/test_utils.py::test_maybe_wrap[bool-true-None] tests/test_utils.py::test_maybe_wrap[bool-false-None] tests/test_utils.py::test_maybe_wrap[bool-on-None] tests/test_utils.py::test_maybe_wrap[bool-off-None] tests/test_utils.py::test_maybe_wrap[str-foo-None] tests/test_utils.py::test_maybe_wrap[str-True-None] tests/test_utils.py::test_maybe_wrap[str-1-None] tests/test_utils.py::test_maybe_wrap[str-1.0-None] tests/test_utils.py::test_maybe_wrap[str-Color.RED-None] tests/test_utils.py::test_maybe_wrap[Color-foo-ValidationError] tests/test_utils.py::test_maybe_wrap[Color-True-ValidationError] tests/test_utils.py::test_maybe_wrap[Color-1-None] tests/test_utils.py::test_maybe_wrap[Color-1.0-ValidationError] tests/test_utils.py::test_maybe_wrap[Color-Color.RED-None0] tests/test_utils.py::test_maybe_wrap[Color-RED-None] tests/test_utils.py::test_maybe_wrap[Color-Color.RED-None1] tests/test_utils.py::test_maybe_wrap[IllegalType-nope-ValidationError] tests/test_utils.py::test_valid_value_annotation_type[int-True] tests/test_utils.py::test_valid_value_annotation_type[float-True] tests/test_utils.py::test_valid_value_annotation_type[bool-True] tests/test_utils.py::test_valid_value_annotation_type[str-True] tests/test_utils.py::test_valid_value_annotation_type[type_4-True] tests/test_utils.py::test_valid_value_annotation_type[_TestEnum-True] tests/test_utils.py::test_valid_value_annotation_type[_TestUserClass-False] tests/test_utils.py::test_valid_value_annotation_type[_TestAttrsClass-True] tests/test_utils.py::test_valid_value_annotation_type[_TestDataclass-True] tests/test_utils.py::test_get_structured_config_data[_TestDataclass-expectation0] tests/test_utils.py::test_get_structured_config_data[test_cls_or_obj1-expectation1] tests/test_utils.py::test_get_structured_config_data[_TestAttrsClass-expectation2] tests/test_utils.py::test_get_structured_config_data[test_cls_or_obj3-expectation3] tests/test_utils.py::test_get_structured_config_data[invalid-expectation4] tests/test_utils.py::test_is_dataclass tests/test_utils.py::test_is_attr_class tests/test_utils.py::test_is_structured_config_frozen_with_invalid_obj tests/test_utils.py::test_value_kind[foo-ValueKind.VALUE] tests/test_utils.py::test_value_kind[1-ValueKind.VALUE] tests/test_utils.py::test_value_kind[1.0-ValueKind.VALUE] tests/test_utils.py::test_value_kind[True-ValueKind.VALUE] tests/test_utils.py::test_value_kind[False-ValueKind.VALUE] tests/test_utils.py::test_value_kind[Color.GREEN-ValueKind.VALUE] tests/test_utils.py::test_value_kind[Dataclass-ValueKind.VALUE] tests/test_utils.py::test_value_kind[???-ValueKind.MANDATORY_MISSING] tests/test_utils.py::test_value_kind[${foo.bar}-ValueKind.INTERPOLATION] tests/test_utils.py::test_value_kind[ftp://${host}/path-ValueKind.STR_INTERPOLATION] tests/test_utils.py::test_get_class tests/test_utils.py::test_get_key_value_types[int-int-int-KeyValidationError] tests/test_utils.py::test_get_key_value_types[int-int-str-str] tests/test_utils.py::test_get_key_value_types[int-int-Color-Color] tests/test_utils.py::test_get_key_value_types[int-int-key_type3-None] tests/test_utils.py::test_get_key_value_types[int-int-None-KeyValidationError] tests/test_utils.py::test_get_key_value_types[str-str-int-KeyValidationError] tests/test_utils.py::test_get_key_value_types[str-str-str-str] tests/test_utils.py::test_get_key_value_types[str-str-Color-Color] tests/test_utils.py::test_get_key_value_types[str-str-key_type3-None] tests/test_utils.py::test_get_key_value_types[str-str-None-KeyValidationError] tests/test_utils.py::test_get_key_value_types[Color-Color-int-KeyValidationError] tests/test_utils.py::test_get_key_value_types[Color-Color-str-str] tests/test_utils.py::test_get_key_value_types[Color-Color-Color-Color] tests/test_utils.py::test_get_key_value_types[Color-Color-key_type3-None] tests/test_utils.py::test_get_key_value_types[Color-Color-None-KeyValidationError] tests/test_utils.py::test_get_key_value_types[value_type3-None-int-KeyValidationError] tests/test_utils.py::test_get_key_value_types[value_type3-None-str-str] tests/test_utils.py::test_get_key_value_types[value_type3-None-Color-Color] tests/test_utils.py::test_get_key_value_types[value_type3-None-key_type3-None] tests/test_utils.py::test_get_key_value_types[value_type3-None-None-KeyValidationError] tests/test_utils.py::test_get_key_value_types[None-NoneType-int-KeyValidationError] tests/test_utils.py::test_get_key_value_types[None-NoneType-str-str] tests/test_utils.py::test_get_key_value_types[None-NoneType-Color-Color] tests/test_utils.py::test_get_key_value_types[None-NoneType-key_type3-None] tests/test_utils.py::test_get_key_value_types[None-NoneType-None-KeyValidationError] tests/test_utils.py::test_is_primitive_type[int-True] tests/test_utils.py::test_is_primitive_type[float-True] tests/test_utils.py::test_is_primitive_type[bool-True] tests/test_utils.py::test_is_primitive_type[str-True] tests/test_utils.py::test_is_primitive_type[NoneType-True] tests/test_utils.py::test_is_primitive_type[Color-True] tests/test_utils.py::test_is_primitive_type[list-False] tests/test_utils.py::test_is_primitive_type[ListConfig-False] tests/test_utils.py::test_is_primitive_type[dict-False] tests/test_utils.py::test_is_primitive_type[DictConfig-False]
omegaconf/dictconfig.py omegaconf/listconfig.py omegaconf/omegaconf.py omegaconf/base.py docs/source/usage.rst omegaconf/basecontainer.py news/116.removal.1 news/116.removal.2
omegaconf/dictconfig.py omegaconf/listconfig.py omegaconf/omegaconf.py omegaconf/base.py docs/source/usage.rst omegaconf/basecontainer.py news/116.removal.1 news/116.removal.2