@@ -25,7 +25,7 @@ def get_variable_values(schema, definition_asts, inputs):
25
25
for def_ast in definition_asts :
26
26
var_name = def_ast .variable .name .value
27
27
var_type = type_from_ast (schema , def_ast .type )
28
- value = inputs .get (var_name , Undefined )
28
+ value = inputs .get (var_name )
29
29
30
30
if not is_input_type (var_type ):
31
31
raise GraphQLError (
@@ -35,7 +35,7 @@ def get_variable_values(schema, definition_asts, inputs):
35
35
),
36
36
[def_ast ]
37
37
)
38
- elif value is Undefined or value is None :
38
+ elif value is None :
39
39
if def_ast .default_value is not None :
40
40
values [var_name ] = value_from_ast (def_ast .default_value , var_type )
41
41
if isinstance (var_type , GraphQLNonNull ):
@@ -57,7 +57,7 @@ def get_variable_values(schema, definition_asts, inputs):
57
57
[def_ast ]
58
58
)
59
59
coerced_value = coerce_value (var_type , value )
60
- if coerced_value is Undefined :
60
+ if coerced_value is None :
61
61
raise Exception ('Should have reported error.' )
62
62
63
63
values [var_name ] = coerced_value
@@ -79,8 +79,8 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
79
79
result = {}
80
80
for name , arg_def in arg_defs .items ():
81
81
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 :
84
84
if arg_def .default_value is not Undefined :
85
85
result [arg_def .out_name or name ] = arg_def .default_value
86
86
continue
@@ -92,7 +92,7 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
92
92
elif isinstance (value_ast .value , ast .Variable ):
93
93
variable_name = value_ast .value .name .value
94
94
variable_value = variables .get (variable_name , Undefined )
95
- if variables and variable_value is not Undefined :
95
+ if variables and variable_name in variables :
96
96
result [arg_def .out_name or name ] = variable_value
97
97
elif arg_def .default_value is not Undefined :
98
98
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):
104
104
), arg_asts )
105
105
continue
106
106
107
- if value_ast :
107
+ else :
108
108
value_ast = value_ast .value
109
109
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
122
123
123
124
return result
124
125
@@ -148,13 +149,12 @@ def coerce_value(type, value):
148
149
fields = type .fields
149
150
obj = {}
150
151
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 ))
158
158
obj [field .out_name or field_name ] = field_value
159
159
160
160
return type .create_container (obj )
0 commit comments