Skip to content

Commit dded6b1

Browse files
committed
support undefined default values when getting variable/argument values
1 parent 47591b8 commit dded6b1

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

graphql/execution/values.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from ..utils.is_valid_value import is_valid_value
1212
from ..utils.type_from_ast import type_from_ast
1313
from ..utils.value_from_ast import value_from_ast
14+
from ..utils.undefined import UndefinedDefaultValue
1415

1516
__all__ = ['get_variable_values', 'get_argument_values']
1617

@@ -36,7 +37,7 @@ def get_variable_values(schema, definition_asts, inputs):
3637
[def_ast]
3738
)
3839
elif value is None:
39-
if def_ast.default_value is not None:
40+
if def_ast.default_value is not UndefinedDefaultValue:
4041
values[var_name] = value_from_ast(def_ast.default_value, var_type)
4142
if isinstance(var_type, GraphQLNonNull):
4243
raise GraphQLError(
@@ -81,7 +82,7 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
8182
arg_type = arg_def.type
8283
value_ast = arg_ast_map.get(name)
8384
if name not in arg_ast_map:
84-
if arg_def.default_value is not None:
85+
if arg_def.default_value is not UndefinedDefaultValue:
8586
result[arg_def.out_name or name] = arg_def.default_value
8687
continue
8788
elif isinstance(arg_type, GraphQLNonNull):
@@ -94,7 +95,7 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
9495
variable_value = variables.get(variable_name)
9596
if variables and variable_name in variables:
9697
result[arg_def.out_name or name] = variable_value
97-
elif arg_def.default_value is not None:
98+
elif arg_def.default_value is not UndefinedDefaultValue:
9899
result[arg_def.out_name or name] = arg_def.default_value
99100
elif isinstance(arg_type, GraphQLNonNull):
100101
raise GraphQLError('Argument "{name}" of required type {arg_type}" provided the variable "${variable_name}" which was not provided'.format(
@@ -113,7 +114,7 @@ def get_argument_values(arg_defs, arg_asts, variables=None):
113114
variables
114115
)
115116
if value is None:
116-
if arg_def.default_value is not None:
117+
if arg_def.default_value is not UndefinedDefaultValue:
117118
value = arg_def.default_value
118119
result[arg_def.out_name or name] = value
119120
else:
@@ -147,7 +148,7 @@ def coerce_value(type, value):
147148
obj = {}
148149
for field_name, field in fields.items():
149150
if field_name not in value:
150-
if field.default_value is not None:
151+
if field.default_value is not UndefinedDefaultValue:
151152
field_value = field.default_value
152153
obj[field.out_name or field_name] = field_value
153154
else:

0 commit comments

Comments
 (0)