diff --git a/news/225.removal.1 b/news/225.removal.1
new file mode 100644
index 0000000..e69de29
diff --git a/news/225.removal.2 b/news/225.removal.2
new file mode 100644
index 0000000..e69de29
diff --git a/omegaconf/base.py b/omegaconf/base.py
index e18302c..61f97ed 100644
--- a/omegaconf/base.py
+++ b/omegaconf/base.py
@@ -55,13 +55,14 @@ class Node(ABC):
         assert parent is None or isinstance(parent, Container)
         return parent
 
-    def _set_flag(self, flag: str, value: Optional[bool]) -> None:
+    def _set_flag(self, flag: str, value: Optional[bool]) -> "Node":
         assert value is None or isinstance(value, bool)
         if value is None:
             if flag in self._metadata.flags:
                 del self._metadata.flags[flag]
         else:
             self._metadata.flags[flag] = value
+        return self
 
     def _get_node_flag(self, flag: str) -> Optional[bool]:
         """
diff --git a/omegaconf/dictconfig.py b/omegaconf/dictconfig.py
index f90a894..181427e 100644
--- a/omegaconf/dictconfig.py
+++ b/omegaconf/dictconfig.py
@@ -31,6 +31,7 @@ from .basecontainer import DEFAULT_VALUE_MARKER, BaseContainer
 from .errors import (
     ConfigAttributeError,
     ConfigKeyError,
+    ConfigTypeError,
     KeyValidationError,
     MissingMandatoryValue,
     OmegaConfBaseException,
@@ -101,11 +102,14 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
     def copy(self) -> "DictConfig":
         return copy.copy(self)
 
-    def _validate_get(self, key: Any, value: Any = None) -> None:
-        is_typed = self._metadata.object_type not in (Any, None,) and not is_dict(
+    def _is_typed(self) -> bool:
+        return self._metadata.object_type not in (Any, None) and not is_dict(
             self._metadata.object_type
         )
 
+    def _validate_get(self, key: Any, value: Any = None) -> None:
+        is_typed = self._is_typed()
+
         is_struct = self._get_flag("struct") is True
         if key not in self.__dict__["_content"]:
             if is_typed:
@@ -319,9 +323,26 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
                 key=key,
                 value=None,
                 cause=ReadonlyConfigError(
-                    "Cannot delete item from read-only DictConfig"
+                    "DictConfig in read-only mode does not support deletion"
+                ),
+            )
+        if self._get_flag("struct"):
+            self._format_and_raise(
+                key=key,
+                value=None,
+                cause=ConfigTypeError(
+                    "DictConfig in struct mode does not support deletion"
                 ),
             )
+        if self._is_typed():
+            self._format_and_raise(
+                key=key,
+                value=None,
+                cause=ConfigTypeError(
+                    f"{type_str(self._metadata.object_type)} (DictConfig) does not support deletion"
+                ),
+            )
+
         del self.__dict__["_content"][key]
 
     def get(
@@ -362,15 +383,21 @@ class DictConfig(BaseContainer, MutableMapping[str, Any]):
 
     def pop(self, key: Union[str, Enum], default: Any = DEFAULT_VALUE_MARKER) -> Any:
         try:
-            key = self._validate_and_normalize_key(key)
             if self._get_flag("readonly"):
                 raise ReadonlyConfigError("Cannot pop from read-only node")
-
+            if self._get_flag("struct"):
+                raise ConfigTypeError("DictConfig in struct mode does not support pop")
+            if self._is_typed():
+                raise ConfigTypeError(
+                    f"{type_str(self._metadata.object_type)} (DictConfig) does not support pop"
+                )
+            key = self._validate_and_normalize_key(key)
             node = self._get_node(key=key, validate_access=False)
             if node is not None:
                 value = self._resolve_with_default(
                     key=key, value=node, default_value=default
                 )
+
                 del self[key]
                 return value
             else:

pop and del should throw in struct mode
This is a behavior change. DictConfig pop and del should not be permitted in struct mode (and in structured mode) because it's inconsistent with the the expected behavior of classes.
diff --git a/tests/test_basic_ops_dict.py b/tests/test_basic_ops_dict.py
index 6efd0b1..a4c61b6 100644
--- a/tests/test_basic_ops_dict.py
+++ b/tests/test_basic_ops_dict.py
@@ -15,7 +15,7 @@ from omegaconf import (
     _utils,
 )
 from omegaconf.basecontainer import BaseContainer
-from omegaconf.errors import KeyValidationError
+from omegaconf.errors import ConfigTypeError, KeyValidationError
 
 from . import (
     ConcretePlugin,
@@ -76,11 +76,6 @@ def test_nested_dict_mandatory_value() -> None:
         c.a.b
 
 
-def test_mandatory_with_default() -> None:
-    c = OmegaConf.create(dict(name="???"))
-    assert c.get("name", "default value") == "default value"
-
-
 def test_subscript_get() -> None:
     c = OmegaConf.create("a: b")
     assert isinstance(c, DictConfig)
@@ -139,6 +134,8 @@ def test_scientific_notation_float() -> None:
     assert 10e-3 == c.a
 
 
+@pytest.mark.parametrize("struct", [None, True, False])  # type: ignore
+@pytest.mark.parametrize("default_val", [4, True, False, None])  # type: ignore
 @pytest.mark.parametrize(  # type: ignore
     "d,select,key",
     [
@@ -148,6 +145,7 @@ def test_scientific_notation_float() -> None:
         ({"hello": "${foo}", "foo": "???"}, "", "hello"),
         ({"hello": None}, "", "hello"),
         ({"hello": "${foo}"}, "", "hello"),
+        ({"hello": "${foo}", "foo": "???"}, "", "hello"),
         ({"hello": DictConfig(is_optional=True, content=None)}, "", "hello"),
         ({"hello": DictConfig(content="???")}, "", "hello"),
         ({"hello": DictConfig(content="${foo}")}, "", "hello"),
@@ -155,10 +153,12 @@ def test_scientific_notation_float() -> None:
         ({"hello": ListConfig(content="???")}, "", "hello"),
     ],
 )
-def test_dict_get_with_default(d: Any, select: Any, key: Any) -> None:
+def test_dict_get_with_default(
+    d: Any, select: Any, key: Any, default_val: Any, struct: Any
+) -> None:
     c = OmegaConf.create(d).select(select)
-    assert isinstance(c, DictConfig)
-    assert c.get(key, 4) == 4
+    OmegaConf.set_struct(c, struct)
+    assert c.get(key, default_val) == default_val
 
 
 def test_map_expansion() -> None:
@@ -255,14 +255,6 @@ def test_iterate_dict_with_interpolation() -> None:
         i = i + 1
 
 
-@pytest.mark.parametrize(  # type: ignore
-    "struct",
-    [
-        pytest.param(None, id="struct_unspecified"),
-        pytest.param(False, id="struct_False"),
-        pytest.param(True, id="struct_True"),
-    ],
-)
 @pytest.mark.parametrize(  # type: ignore
     "cfg, key, default_, expected",
     [
@@ -298,11 +290,8 @@ def test_iterate_dict_with_interpolation() -> None:
         ),
     ],
 )
-def test_dict_pop(
-    cfg: Dict[Any, Any], key: Any, default_: Any, expected: Any, struct: Optional[bool]
-) -> None:
+def test_dict_pop(cfg: Dict[Any, Any], key: Any, default_: Any, expected: Any) -> None:
     c = OmegaConf.create(cfg)
-    OmegaConf.set_struct(c, struct)
 
     if default_ != "__NO_DEFAULT__":
         val = c.pop(key, default_)
@@ -313,6 +302,24 @@ def test_dict_pop(
     assert type(val) == type(expected)
 
 
+@pytest.mark.parametrize(  # type: ignore
+    "cfg",
+    [
+        (OmegaConf.create({"name": "Bond", "age": 7})._set_flag("struct", True)),
+        (OmegaConf.structured(User)),
+    ],
+)
+def test_dict_struct_mode_pop(cfg: Any) -> None:
+    with pytest.raises(ConfigTypeError):
+        cfg.pop("name")
+
+    with pytest.raises(ConfigTypeError):
+        cfg.pop("bar")
+
+    with pytest.raises(ConfigTypeError):
+        cfg.pop("bar", "not even with default")
+
+
 @pytest.mark.parametrize(  # type: ignore
     "cfg, key, expectation",
     [
@@ -377,14 +384,23 @@ def test_dict_config() -> None:
 
 
 def test_dict_delitem() -> None:
-    c = OmegaConf.create(dict(a=10, b=11))
-    assert c == dict(a=10, b=11)
+    src = {"a": 10, "b": 11}
+    c = OmegaConf.create(src)
+    assert c == src
     del c["a"]
-    assert c == dict(b=11)
+    assert c == {"b": 11}
     with pytest.raises(KeyError):
         del c["not_found"]
 
 
+def test_dict_struct_delitem() -> None:
+    src = {"a": 10, "b": 11}
+    c = OmegaConf.create(src)
+    OmegaConf.set_struct(c, True)
+    with pytest.raises(ConfigTypeError):
+        del c["a"]
+
+
 @pytest.mark.parametrize(  # type: ignore
     "d, expected", [({}, 0), ({"a": 10, "b": 11}, 2)],
 )
diff --git a/tests/test_errors.py b/tests/test_errors.py
index 2ada2b0..850638b 100644
--- a/tests/test_errors.py
+++ b/tests/test_errors.py
@@ -31,6 +31,7 @@ from . import (
     Plugin,
     StructuredWithMissing,
     UnionError,
+    User,
 )
 
 
@@ -449,12 +450,35 @@ params = [
             create=lambda: create_readonly({"foo": "bar"}),
             op=lambda cfg: cfg.__delitem__("foo"),
             exception_type=ReadonlyConfigError,
-            msg="Cannot delete item from read-only DictConfig",
+            msg="DictConfig in read-only mode does not support deletion",
             key="foo",
             child_node=lambda cfg: cfg.foo,
         ),
         id="dict,readonly:del",
     ),
+    pytest.param(
+        Expected(
+            create=lambda: create_struct({"foo": "bar"}),
+            op=lambda cfg: cfg.__delitem__("foo"),
+            exception_type=ConfigTypeError,
+            msg="DictConfig in struct mode does not support deletion",
+            key="foo",
+            child_node=lambda cfg: cfg.foo,
+        ),
+        id="dict,struct:del",
+    ),
+    pytest.param(
+        Expected(
+            create=lambda: OmegaConf.structured(User(name="bond")),
+            op=lambda cfg: cfg.__delitem__("name"),
+            exception_type=ConfigTypeError,
+            msg="User (DictConfig) does not support deletion",
+            object_type=User,
+            key="name",
+            child_node=lambda cfg: cfg.name,
+        ),
+        id="dict,structured:del",
+    ),
     ##############
     # ListConfig #
     ##############
@@ -578,6 +602,28 @@ params = [
         ),
         id="list:pop_invalid_key",
     ),
+    pytest.param(
+        Expected(
+            create=lambda: create_struct({"foo": "bar"}),
+            op=lambda cfg: cfg.pop("foo"),
+            exception_type=ConfigTypeError,
+            msg="DictConfig in struct mode does not support pop",
+            key="foo",
+            child_node=lambda cfg: cfg.foo,
+        ),
+        id="dict,struct:pop",
+    ),
+    pytest.param(
+        Expected(
+            create=lambda: OmegaConf.structured(ConcretePlugin),
+            op=lambda cfg: cfg.pop("name"),
+            exception_type=ConfigTypeError,
+            msg="ConcretePlugin (DictConfig) does not support pop",
+            key="name",
+            child_node=lambda cfg: cfg.name,
+        ),
+        id="dict,structured:pop",
+    ),
     pytest.param(
         Expected(
             create=lambda: ListConfig(content=None),

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@eaf0ac5c987cbb0567bf2bebb7e453ad57426e94#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.0rc26
      - pytest-mock==3.11.1
      - pyyaml==6.0.1
prefix: /opt/conda/envs/omegaconf

tests/test_basic_ops_dict.py::test_dict_struct_mode_pop[cfg0] tests/test_basic_ops_dict.py::test_dict_struct_mode_pop[cfg1] tests/test_basic_ops_dict.py::test_dict_struct_delitem tests/test_errors.py::test_errors[dict,readonly:del] tests/test_errors.py::test_errors[dict,struct:del] tests/test_errors.py::test_errors[dict,structured:del] tests/test_errors.py::test_errors[dict,struct:pop] tests/test_errors.py::test_errors[dict,structured:pop]
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_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[d0--missing-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d0--missing-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello-None-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-4-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-4-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-4-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-True-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-True-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-True-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-False-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-False-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-False-False] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-None-None] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-None-True] tests/test_basic_ops_dict.py::test_dict_get_with_default[d11--hello-None-False] 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_iterate_dict_with_interpolation tests/test_basic_ops_dict.py::test_dict_pop[no_default] tests/test_basic_ops_dict.py::test_dict_pop[none_default] tests/test_basic_ops_dict.py::test_dict_pop[with_default] tests/test_basic_ops_dict.py::test_dict_pop[interpolation] tests/test_basic_ops_dict.py::test_dict_pop[interpolation_with_default] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_no_default] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_none_default] tests/test_basic_ops_dict.py::test_dict_pop[enum_key_with_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_dir[cfg1-a-expected1] tests/test_basic_ops_dict.py::test_dir[StructuredWithMissing-dict-expected2] 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[cfg0-expected_ref_type0] tests/test_basic_ops_dict.py::test_get_ref_type[cfg1-Plugin] tests/test_basic_ops_dict.py::test_get_ref_type_with_conflict tests/test_basic_ops_dict.py::test_is_missing 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_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_errors.py::test_errors[dict,readonly:pop] tests/test_errors.py::test_errors[dict:pop_invalid] tests/test_errors.py::test_errors[dict:pop_invalid_nested] 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,accessing_missing_interpolation] tests/test_errors.py::test_errors[dict,accessing_missing_str_interpolation] tests/test_errors.py::test_errors[dict,struct:set_invalid_attribute] tests/test_errors.py::test_errors[structured:setattr,invalid_type_assigned_to_structured] tests/test_errors.py::test_errors[dict,readonly:set_attribute] tests/test_errors.py::test_errors[dict,not_optional:set_none] tests/test_errors.py::test_errors[structured:setattr,invalid_type_assigned_to_field] 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[DictConfig[Color,str]:getitem_str_key] tests/test_errors.py::test_errors[DictConfig[str,str]:getitem_color_key] tests/test_errors.py::test_errors[dict,readonly:merge_with] tests/test_errors.py::test_errors[structured:merge,invalid_field_type] tests/test_errors.py::test_errors[structured:merge,adding_an_invalid_key] 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[structured:create_with_union_error] tests/test_errors.py::test_errors[dict:set_value:reftype_mismatch] tests/test_errors.py::test_errors[DictConfig[str,int]:assigned_str_value] tests/test_errors.py::test_errors[list:setattr0] tests/test_errors.py::test_errors[list:setattr1] 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[list:readonly:pop] tests/test_errors.py::test_errors[list:pop_invalid_key] 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:create_not_optional:_set_value(None)] 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:null_assignment] 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]
omegaconf/dictconfig.py omegaconf/base.py news/225.removal.1 news/225.removal.2
omegaconf/dictconfig.py omegaconf/base.py news/225.removal.1 news/225.removal.2