Changed InputObjectType's default builder-from-dict argument to be Undefined
instead of None
(or else we can't catch "null" inputs in InputObjectTypes, as both would coerce to None
)
#1471
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.
This pull request aims to fix a shortcoming in the InputObjectTypes' implementation that makes it unable to differentiate an incoming
undefined
value from an intentionalnull
.The problem lies in the way the InputObjectType is constructed from the incoming parameter dictionary:
With
None
as thatself.get
's default value, we are unable to differentiate between someone passing an intentionalnull
(None
) in an optional field. This PR refactors that default to point toUndefined
, aligning closely with the GraphQL Spec.This change is a potential breaking change for resolvers, so I've implemented a function called set_input_object_type_default_value that allows one to set the desired default value for InputObjectTypes. Calling
set_input_object_type_default_value(graphql.Undefined)
activates the new behavior in your codebase. This function should be called before your InputObjectTypes are defined.The final container type then became: