fix: Nested structured config validation #1133
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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