This fixes the case where, in your schema, you have a structured config nested in multiple levels of Dict and List, such as Dict[Dict[str, User]], and the types don't get propagated correctly. This causes no validation to be done on the inner object. Also, after to_container(..., SCMode.INSTANTIATE), what should have been User in the result will show up as a dict.
Motivation
This fixes the case where, in your schema, you have a structured config nested in multiple levels of
Dict
andList
, such asDict[Dict[str, User]]
, and the types don't get propagated correctly. This causes no validation to be done on the inner object. Also, afterto_container(..., SCMode.INSTANTIATE)
, what should have beenUser
in the result will show up as adict
.Further explanation
Looking at the original issue case...
The
ref_type
was getting propagated correctly, but theobject_type
was not.Test Plan
Added
test_merge_with_deep_nesting()
which checks for the buggy behavior on various deeply-nested containers.With these changes, there is a bit of coverage missing for basecontainer.py L982-L986. I don't know how to get that last bit of coverage...
Fixes
Fixes #1019 Nested structured config validation