diff --git a/omegaconf/_utils.py b/omegaconf/_utils.py
index 1a5b762..5879d6d 100644
--- a/omegaconf/_utils.py
+++ b/omegaconf/_utils.py
@@ -477,19 +477,12 @@ def format_and_raise(
         KEY_TYPE=f"{type(key).__name__}",
     )
 
-    full_backtrace = "OC_CAUSE" in os.environ and os.environ["OC_CAUSE"] == "1"
     template = """$MSG
 \tfull_key: $FULL_KEY
 \treference_type=$REF_TYPE
 \tobject_type=$OBJECT_TYPE
 """
 
-    if not full_backtrace:
-        template += """
-
-Set env OC_CAUSE=1 to include causing exception
-    """
-
     s = string.Template(template=template)
 
     message = s.substitute(
@@ -515,6 +508,9 @@ Set env OC_CAUSE=1 to include causing exception
         ex.ref_type = ref_type
         ex.ref_type_str = ref_type_str
 
+    # Set the environment variable OC_CAUSE=1 to get a stacktrace that includes the
+    # causing exception.
+    full_backtrace = "OC_CAUSE" in os.environ and os.environ["OC_CAUSE"] == "1"
     if full_backtrace:
         ex.__cause__ = cause
     else:
diff --git a/omegaconf/base.py b/omegaconf/base.py
index fd26d11..f1916d5 100644
--- a/omegaconf/base.py
+++ b/omegaconf/base.py
@@ -115,7 +115,7 @@ class Node(ABC):
             key = self._key()
             if value_kind == ValueKind.INTERPOLATION:
                 assert parent is not None
-                v = parent._resolve_interpolation(
+                v = parent._resolve_simple_interpolation(
                     key=key,
                     inter_type=match.group(1),
                     inter_key=match.group(2),
@@ -125,7 +125,7 @@ class Node(ABC):
                 return v
             elif value_kind == ValueKind.STR_INTERPOLATION:
                 assert parent is not None
-                ret = parent._resolve_str_interpolation(
+                ret = parent._resolve_interpolation(
                     key=key,
                     value=self,
                     throw_on_missing=throw_on_missing,
@@ -279,7 +279,7 @@ class Container(Node):
         )
         if value is None:
             return root, last_key, value
-        value = root._resolve_str_interpolation(
+        value = root._resolve_interpolation(
             key=last_key,
             value=value,
             throw_on_missing=False,
@@ -287,7 +287,7 @@ class Container(Node):
         )
         return root, last_key, value
 
-    def _resolve_interpolation(
+    def _resolve_simple_interpolation(
         self,
         key: Any,
         inter_type: str,
@@ -309,7 +309,8 @@ class Container(Node):
                 throw_on_resolution_failure=throw_on_resolution_failure,
             )
 
-            if parent is None or (value is None and last_key not in parent):  # type: ignore
+            # if parent is None or (value is None and last_key not in parent):  # type: ignore
+            if parent is None or value is None:
                 if throw_on_resolution_failure:
                     raise ConfigKeyError(
                         f"{inter_type} interpolation key '{inter_key}' not found"
@@ -341,7 +342,7 @@ class Container(Node):
                 else:
                     return None
 
-    def _resolve_str_interpolation(
+    def _resolve_interpolation(
         self,
         key: Any,
         value: "Node",
@@ -357,7 +358,7 @@ class Container(Node):
         if value_kind == ValueKind.INTERPOLATION:
             # simple interpolation, inherit type
             match = match_list[0]
-            return self._resolve_interpolation(
+            return self._resolve_simple_interpolation(
                 key=key,
                 inter_type=match.group(1),
                 inter_key=match.group(2),
@@ -371,7 +372,7 @@ class Container(Node):
             new = ""
             last_index = 0
             for match in match_list:
-                new_val = self._resolve_interpolation(
+                new_val = self._resolve_simple_interpolation(
                     key=key,
                     inter_type=match.group(1),
                     inter_key=match.group(2),
diff --git a/omegaconf/basecontainer.py b/omegaconf/basecontainer.py
index 47baea4..7acbdb9 100644
--- a/omegaconf/basecontainer.py
+++ b/omegaconf/basecontainer.py
@@ -56,7 +56,7 @@ class BaseContainer(Container, ABC):
         if has_default and (value is None or is_mandatory_missing(value)):
             return default_value
 
-        resolved = self._resolve_str_interpolation(
+        resolved = self._resolve_interpolation(
             key=key,
             value=value,
             throw_on_missing=not has_default,
@@ -179,9 +179,7 @@ class BaseContainer(Container, ABC):
             return retdict
         elif isinstance(conf, ListConfig):
             retlist: List[Any] = []
-            for index, item in enumerate(conf):
-                if resolve:
-                    item = conf[index]
+            for index, item in enumerate(conf._iter_ex(resolve=resolve)):
                 item = convert(item)
                 if isinstance(item, Container):
                     item = BaseContainer._to_content(
diff --git a/omegaconf/listconfig.py b/omegaconf/listconfig.py
index cb21c94..7a57951 100644
--- a/omegaconf/listconfig.py
+++ b/omegaconf/listconfig.py
@@ -16,6 +16,7 @@ from typing import (
 
 from ._utils import (
     ValueKind,
+    _get_value,
     format_and_raise,
     get_list_element_type,
     get_value_kind,
@@ -32,7 +33,6 @@ from .errors import (
     ReadonlyConfigError,
     ValidationError,
 )
-from .nodes import ValueNode
 
 
 class ListConfig(BaseContainer, MutableSequence[Any]):
@@ -388,6 +388,9 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
         return hash(str(self))
 
     def __iter__(self) -> Iterator[Any]:
+        return self._iter_ex(resolve=True)
+
+    def _iter_ex(self, resolve: bool) -> Iterator[Any]:
         try:
             if self._is_none():
                 raise TypeError("Cannot iterate on ListConfig object representing None")
@@ -395,21 +398,24 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
                 raise MissingMandatoryValue("Cannot iterate on a missing ListConfig")
 
             class MyItems(Iterator[Any]):
-                def __init__(self, lst: List[Any]) -> None:
+                def __init__(self, lst: ListConfig) -> None:
                     self.lst = lst
-                    self.iterator = iter(lst)
+                    self.index = 0
 
                 def __next__(self) -> Any:
-                    return self.next()
-
-                def next(self) -> Any:
-                    v = next(self.iterator)
-                    if isinstance(v, ValueNode):
-                        v = v._value()
+                    if self.index == len(self.lst):
+                        raise StopIteration()
+                    if resolve:
+                        v = self.lst[self.index]
+                    else:
+                        v = self.lst.__dict__["_content"][self.index]
+                        if v is not None:
+                            v = _get_value(v)
+                    self.index = self.index + 1
                     return v
 
             assert isinstance(self.__dict__["_content"], list)
-            return MyItems(self.__dict__["_content"])
+            return MyItems(self)
         except (ReadonlyConfigError, TypeError, MissingMandatoryValue) as e:
             self._format_and_raise(key=None, value=None, cause=e)
             assert False
@@ -453,8 +459,12 @@ class ListConfig(BaseContainer, MutableSequence[Any]):
             if isinstance(value, ListConfig):
                 self.__dict__["_metadata"] = copy.deepcopy(value._metadata)
                 self.__dict__["_metadata"].flags = {}
-            for item in value:
-                self.append(item)
+                for item in value._iter_ex(resolve=False):
+                    self.append(item)
+                self.__dict__["_metadata"].flags = copy.deepcopy(value._metadata.flags)
+            elif is_primitive_list(value):
+                for item in value:
+                    self.append(item)
 
             if isinstance(value, ListConfig):
                 self.__dict__["_metadata"].flags = value._metadata.flags

diff --git a/tests/test_base_config.py b/tests/test_base_config.py
index 3b8ad4b..a0c6a0d 100644
--- a/tests/test_base_config.py
+++ b/tests/test_base_config.py
@@ -434,7 +434,7 @@ def test_not_implemented() -> None:
 def test_resolve_str_interpolation(query: str, result: Any) -> None:
     cfg = OmegaConf.create({"foo": 10, "bar": "${foo}"})
     assert (
-        cfg._resolve_str_interpolation(
+        cfg._resolve_interpolation(
             key=None,
             value=StringNode(value=query),
             throw_on_missing=False,
diff --git a/tests/test_basic_ops_dict.py b/tests/test_basic_ops_dict.py
index b8ee516..8145d7b 100644
--- a/tests/test_basic_ops_dict.py
+++ b/tests/test_basic_ops_dict.py
@@ -237,13 +237,23 @@ def test_pickle_get_root() -> None:
 
 
 def test_iterate_dictionary() -> None:
-    c = OmegaConf.create(dict(a=1, b=2))
+    c = OmegaConf.create({"a": 1, "b": 2})
     m2 = {}
     for key in c:
         m2[key] = c[key]
     assert m2 == c
 
 
+def test_iterate_dict_with_interpolation() -> None:
+    c = OmegaConf.create({"a": "${b}", "b": 2})
+    expected = [("a", 2), ("b", 2)]
+    i = 0
+    for k, v in c.items():
+        assert k == expected[i][0]
+        assert v == expected[i][1]
+        i = i + 1
+
+
 @pytest.mark.parametrize(  # type: ignore
     "cfg, key, default_, expected",
     [
diff --git a/tests/test_basic_ops_list.py b/tests/test_basic_ops_list.py
index 1566ce3..5af36e3 100644
--- a/tests/test_basic_ops_list.py
+++ b/tests/test_basic_ops_list.py
@@ -6,6 +6,7 @@ import pytest
 
 from omegaconf import AnyNode, ListConfig, OmegaConf
 from omegaconf.errors import (
+    ConfigKeyError,
     ConfigTypeError,
     KeyValidationError,
     MissingMandatoryValue,
@@ -57,11 +58,11 @@ def test_list_get_with_default() -> None:
 
 
 @pytest.mark.parametrize(  # type: ignore
-    "input_, list_key",
+    "input_, expected, list_key",
     [
-        ([1, 2], None),
-        (["${1}", 2], None),
-        (
+        pytest.param([1, 2], [1, 2], None, id="simple"),
+        pytest.param(["${1}", 2], [2, 2], None, id="interpolation"),
+        pytest.param(
             {
                 "defaults": [
                     {"optimizer": "adam"},
@@ -69,25 +70,36 @@ def test_list_get_with_default() -> None:
                     {"foo": "${defaults.0.optimizer}_${defaults.1.dataset}"},
                 ]
             },
+            [{"optimizer": "adam"}, {"dataset": "imagenet"}, {"foo": "adam_imagenet"}],
             "defaults",
+            id="str_interpolation",
         ),
-        ([1, 2, "${missing}"], None),
     ],
 )
-def test_iterate_list(input_: Any, list_key: str) -> None:
+def test_iterate_list(input_: Any, expected: Any, list_key: str) -> None:
     c = OmegaConf.create(input_)
     if list_key is not None:
         lst = c.get(list_key)
     else:
         lst = c
     items = [x for x in lst]
-    assert items == lst
+    assert items == expected
+
+
+def test_iterate_list_with_missing_interpolation() -> None:
+    c = OmegaConf.create([1, "${10}"])
+    itr = iter(c)
+    assert 1 == next(itr)
+    with pytest.raises(ConfigKeyError):
+        next(itr)
 
 
-def test_iterate_interpolated_list() -> None:
-    cfg = OmegaConf.create({"inter": "${list}", "list": [1, 2, 3]})
-    items = [x for x in cfg.inter]
-    assert items == [1, 2, 3]
+def test_iterate_list_with_missing() -> None:
+    c = OmegaConf.create([1, "???"])
+    itr = iter(c)
+    assert 1 == next(itr)
+    with pytest.raises(MissingMandatoryValue):
+        next(itr)
 
 
 def test_items_with_interpolation() -> None:
@@ -198,7 +210,8 @@ def test_list_append() -> None:
 def test_pretty_without_resolve() -> None:
     c = OmegaConf.create([100, "${0}"])
     # without resolve, references are preserved
-    c2 = OmegaConf.create(c.pretty(resolve=False))
+    yaml_str = c.pretty(resolve=False)
+    c2 = OmegaConf.create(yaml_str)
     assert isinstance(c2, ListConfig)
     c2[0] = 1000
     assert c2[1] == 1000

Variables not resolved when accessing through iterator
When accessing `ListConfig` through the iterator, the variables are not resolved. A similar issue is #21 regarding DictConfig.

config.yaml:
```
var1: 1
var2: 2
var3:
  - ${var1}
  - ${var2}
```

test.py:
```
import hydra

from omegaconf import DictConfig


@hydra.main('config.yaml')
def main(cfg: DictConfig) -> None:
    print(cfg.var1)
    print(cfg.var2)
    print(cfg.var3)
    print([x for x in cfg.var3])
    print([cfg.var3[i] for i in range(len(cfg.var3))])
    print(next(iter(cfg.var3)))

    return


if __name__ == '__main__':
    main()
```

Output:
```
$ python test.py
1
2
['${var1}', '${var2}']
['${var1}', '${var2}']
[1, 2]
${var1}
```

Hydra version: facebookresearch/hydra@b9df40a2
Omegaconf version: 4c5be9a
tests/test_base_config.py::test_resolve_str_interpolation[a-a] tests/test_base_config.py::test_resolve_str_interpolation[${foo}-10] tests/test_base_config.py::test_resolve_str_interpolation[${bar}-10] tests/test_base_config.py::test_resolve_str_interpolation[foo_${foo}-foo_10] tests/test_base_config.py::test_resolve_str_interpolation[foo_${bar}-foo_10] tests/test_basic_ops_list.py::test_iterate_list[interpolation] tests/test_basic_ops_list.py::test_iterate_list_with_missing_interpolation tests/test_basic_ops_list.py::test_iterate_list_with_missing
tests/test_base_config.py::test_set_value[input_0-foo-10-expected0] tests/test_base_config.py::test_set_value[input_1-foo-value1-expected1] tests/test_base_config.py::test_set_value[input_2-foo-value2-expected2] tests/test_base_config.py::test_set_value[input_3-foo-value3-expected3] tests/test_base_config.py::test_set_value[input_4-0-10-expected4] tests/test_base_config.py::test_set_value[input_5-1-10-expected5] tests/test_base_config.py::test_set_value[input_6-1-value6-expected6] tests/test_base_config.py::test_set_value[input_7-1-value7-expected7] tests/test_base_config.py::test_set_value[input_8-1-value8-expected8] tests/test_base_config.py::test_set_value_validation_fail[input_0-foo-str] tests/test_base_config.py::test_set_value_validation_fail[input_1-1-str] tests/test_base_config.py::test_replace_value_node_type_with_another[input_0-foo-value0] tests/test_base_config.py::test_replace_value_node_type_with_another[input_1-1-value1] tests/test_base_config.py::test_to_container_returns_primitives[input_0] tests/test_base_config.py::test_to_container_returns_primitives[input_1] tests/test_base_config.py::test_to_container_returns_primitives[input_2] tests/test_base_config.py::test_to_container_returns_primitives[input_3] tests/test_base_config.py::test_to_container_returns_primitives[input_4] tests/test_base_config.py::test_empty[input_0-True] tests/test_base_config.py::test_empty[input_1-True] tests/test_base_config.py::test_empty[input_2-False] tests/test_base_config.py::test_empty[input_3-False] tests/test_base_config.py::test_str[input_0-[]-str] tests/test_base_config.py::test_str[input_0-[]-repr] tests/test_base_config.py::test_str[input_1-{}-str] tests/test_base_config.py::test_str[input_1-{}-repr] tests/test_base_config.py::test_str[input_2-[1, tests/test_base_config.py::test_str[input_3-[1, tests/test_base_config.py::test_str[input_4-[1, tests/test_base_config.py::test_str[input_5-{'b': tests/test_base_config.py::test_str[input_6-{'b': tests/test_base_config.py::test_str[StructuredWithMissing-{'num': tests/test_base_config.py::test_flag_dict[readonly] tests/test_base_config.py::test_flag_dict[struct] tests/test_base_config.py::test_freeze_nested_dict[readonly] tests/test_base_config.py::test_freeze_nested_dict[struct] tests/test_base_config.py::TestDeepCopy::test_deepcopy[src0] tests/test_base_config.py::TestDeepCopy::test_deepcopy[src1] tests/test_base_config.py::TestDeepCopy::test_deepcopy[src2] tests/test_base_config.py::TestDeepCopy::test_deepcopy[src3] tests/test_base_config.py::TestDeepCopy::test_deepcopy[StructuredWithMissing] tests/test_base_config.py::TestDeepCopy::test_deepcopy_readonly[src0] tests/test_base_config.py::TestDeepCopy::test_deepcopy_readonly[src1] tests/test_base_config.py::TestDeepCopy::test_deepcopy_readonly[src2] tests/test_base_config.py::TestDeepCopy::test_deepcopy_readonly[src3] tests/test_base_config.py::TestDeepCopy::test_deepcopy_readonly[StructuredWithMissing] tests/test_base_config.py::TestDeepCopy::test_deepcopy_struct[src0] tests/test_base_config.py::TestDeepCopy::test_deepcopy_struct[src1] tests/test_base_config.py::TestDeepCopy::test_deepcopy_struct[src2] tests/test_base_config.py::TestDeepCopy::test_deepcopy_struct[src3] tests/test_base_config.py::TestDeepCopy::test_deepcopy_struct[StructuredWithMissing] tests/test_base_config.py::test_deepcopy_after_del tests/test_base_config.py::test_deepcopy_after_pop tests/test_base_config.py::test_deepcopy_with_interpolation tests/test_base_config.py::test_deepcopy_and_merge_and_flags tests/test_base_config.py::test_deepcopy_preserves_container_type[cfg0] tests/test_base_config.py::test_deepcopy_preserves_container_type[cfg1] tests/test_base_config.py::test_flag_override[struct_setiitem] tests/test_base_config.py::test_flag_override[struct_setattr] tests/test_base_config.py::test_flag_override[readonly] tests/test_base_config.py::test_read_write_override[src0-<lambda>-expectation0] tests/test_base_config.py::test_read_write_override[src1-<lambda>-expectation1] tests/test_base_config.py::test_tokenize_with_escapes[dog,cat-tokenized0] tests/test_base_config.py::test_tokenize_with_escapes[dog\\,cat\\ tests/test_base_config.py::test_tokenize_with_escapes[dog,\\ tests/test_base_config.py::test_tokenize_with_escapes[\\ tests/test_base_config.py::test_tokenize_with_escapes[dog, tests/test_base_config.py::test_tokenize_with_escapes[whitespace\\ tests/test_base_config.py::test_tokenize_with_escapes[None-tokenized8] tests/test_base_config.py::test_tokenize_with_escapes[-tokenized9] tests/test_base_config.py::test_tokenize_with_escapes[no tests/test_base_config.py::test_struct_override[src0-<lambda>-expectation0] tests/test_base_config.py::test_open_dict_restore[struct-open_dict] tests/test_base_config.py::test_open_dict_restore[readonly-read_write] tests/test_base_config.py::TestCopy::test_copy[src0-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src0-<lambda>1] tests/test_base_config.py::TestCopy::test_copy[src1-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src1-<lambda>1] tests/test_base_config.py::TestCopy::test_copy[src2-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src2-<lambda>1] tests/test_base_config.py::TestCopy::test_copy[src3-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src3-<lambda>1] tests/test_base_config.py::TestCopy::test_copy[src4-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src4-<lambda>1] tests/test_base_config.py::TestCopy::test_copy[src5-<lambda>0] tests/test_base_config.py::TestCopy::test_copy[src5-<lambda>1] tests/test_base_config.py::TestCopy::test_copy_with_interpolation[src0-2-0-<lambda>0] tests/test_base_config.py::TestCopy::test_copy_with_interpolation[src0-2-0-<lambda>1] tests/test_base_config.py::TestCopy::test_copy_with_interpolation[src1-b-a-<lambda>0] tests/test_base_config.py::TestCopy::test_copy_with_interpolation[src1-b-a-<lambda>1] tests/test_base_config.py::TestCopy::test_list_copy_is_shallow[<lambda>0] tests/test_base_config.py::TestCopy::test_list_copy_is_shallow[<lambda>1] tests/test_base_config.py::test_not_implemented tests/test_base_config.py::test_omegaconf_create tests/test_base_config.py::test_assign[parent0-0-value0-expected0] tests/test_base_config.py::test_assign[parent1-0-value1-expected1] tests/test_base_config.py::test_assign[parent2-0-value2-expected2] tests/test_base_config.py::test_assign[parent3-foo-value3-expected3] tests/test_base_config.py::test_assign[parent4-foo-value4-expected4] tests/test_base_config.py::test_assign[parent5-foo-value5-expected5] tests/test_base_config.py::test_get_node[cfg0-foo-bar] tests/test_base_config.py::test_get_node[cfg1-foo-None] tests/test_base_config.py::test_get_node[cfg2-foo-???] tests/test_base_config.py::test_get_node[cfg3-1-20] tests/test_base_config.py::test_get_node[cfg4-1-None] tests/test_base_config.py::test_get_node[cfg5-1-???] 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[d0--missing] tests/test_basic_ops_dict.py::test_dict_get_with_default[d1-hello-missing] tests/test_basic_ops_dict.py::test_dict_get_with_default[d2--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d3--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d4--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d5--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d6--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d7--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d8--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d9--hello] tests/test_basic_ops_dict.py::test_dict_get_with_default[d10--hello] 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[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_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 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_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[simple] tests/test_basic_ops_list.py::test_iterate_list[str_interpolation] tests/test_basic_ops_list.py::test_items_with_interpolation tests/test_basic_ops_list.py::test_list_pop 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_delitem 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_list_append 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_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_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]