@@ -25,7 +25,7 @@ def get_variable_values(schema, definition_asts, inputs):
2525 for def_ast in definition_asts :
2626 var_name = def_ast .variable .name .value
2727 var_type = type_from_ast (schema , def_ast .type )
28- value = inputs .get (var_name , Undefined )
28+ value = inputs .get (var_name )
2929
3030 if not is_input_type (var_type ):
3131 raise GraphQLError (
@@ -35,7 +35,7 @@ def get_variable_values(schema, definition_asts, inputs):
3535 ),
3636 [def_ast ]
3737 )
38- elif value is Undefined or value is None :
38+ elif value is None :
3939 if def_ast .default_value is not None :
4040 values [var_name ] = value_from_ast (def_ast .default_value , var_type )
4141 if isinstance (var_type , GraphQLNonNull ):
@@ -57,7 +57,7 @@ def get_variable_values(schema, definition_asts, inputs):
5757 [def_ast ]
5858 )
5959 coerced_value = coerce_value (var_type , value )
60- if coerced_value is Undefined :
60+ if coerced_value is None :
6161 raise Exception ('Should have reported error.' )
6262
6363 values [var_name ] = coerced_value
@@ -79,8 +79,8 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
7979 result = {}
8080 for name , arg_def in arg_defs .items ():
8181 arg_type = arg_def .type
82- value_ast = arg_ast_map .get (name , Undefined )
83- if not value_ast :
82+ value_ast = arg_ast_map .get (name )
83+ if name not in arg_ast_map :
8484 if arg_def .default_value is not Undefined :
8585 result [arg_def .out_name or name ] = arg_def .default_value
8686 continue
@@ -92,7 +92,7 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
9292 elif isinstance (value_ast .value , ast .Variable ):
9393 variable_name = value_ast .value .name .value
9494 variable_value = variables .get (variable_name , Undefined )
95- if variables and variable_value is not Undefined :
95+ if variables and variable_name in variables :
9696 result [arg_def .out_name or name ] = variable_value
9797 elif arg_def .default_value is not Undefined :
9898 result [arg_def .out_name or name ] = arg_def .default_value
@@ -104,21 +104,22 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
104104 ), arg_asts )
105105 continue
106106
107- if value_ast :
107+ else :
108108 value_ast = value_ast .value
109109
110- value = value_from_ast (
111- value_ast ,
112- arg_type ,
113- variables
114- )
115- if value is Undefined :
116- value = arg_def .default_value
117-
118- if value is not Undefined :
119- # We use out_name as the output name for the
120- # dict if exists
121- result [arg_def .out_name or name ] = value
110+ value = value_from_ast (
111+ value_ast ,
112+ arg_type ,
113+ variables
114+ )
115+ if value is Undefined :
116+ if arg_def .default_value is not Undefined :
117+ value = arg_def .default_value
118+ result [arg_def .out_name or name ] = value
119+ else :
120+ # We use out_name as the output name for the
121+ # dict if exists
122+ result [arg_def .out_name or name ] = value
122123
123124 return result
124125
@@ -148,13 +149,12 @@ def coerce_value(type, value):
148149 fields = type .fields
149150 obj = {}
150151 for field_name , field in fields .items ():
151- field_value = coerce_value (field .type , value .get (field_name , Undefined ))
152- if field_value is Undefined :
153- field_value = field .default_value
154-
155- if field_value is not Undefined :
156- # We use out_name as the output name for the
157- # dict if exists
152+ if field_name not in value :
153+ if field .default_value is not Undefined :
154+ field_value = field .default_value
155+ obj [field .out_name or field_name ] = field_value
156+ else :
157+ field_value = coerce_value (field .type , value .get (field_name ))
158158 obj [field .out_name or field_name ] = field_value
159159
160160 return type .create_container (obj )
0 commit comments