Open
Description
Hello, graphql-core
2.1 is unable to parse such values as argument.
Result: Argument "value" has invalid value "null". Expected type "JSONString", found "null".
Seems that None
value is invalid regardless of the argument type. Of course we can handle it by passing null
via query argument but I still think this is a bug.
Exception stack trace:
File "/venv/lib/python3.7/site-packages/graphql/graphql.py", line 44, in graphql
return execute_graphql(*args, **kwargs)
File "/venv/lib/python3.7/site-packages/graphql/graphql.py", line 70, in execute_graphql
**execute_options
File "/venv/lib/python3.7/site-packages/graphql/backend/core.py", line 30, in execute_and_validate
validation_errors = validate(schema, document_ast)
File "/venv/lib/python3.7/site-packages/graphql/validation/validation.py", line 33, in validate
return visit_using_rules(schema, type_info, ast, rules)
File "/venv/lib/python3.7/site-packages/graphql/validation/validation.py", line 40, in visit_using_rules
visit(ast, TypeInfoVisitor(type_info, ParallelVisitor(visitors)))
File "/venv/lib/python3.7/site-packages/graphql/language/visitor.py", line 128, in visit
result = enter(node, key, parent, path, ancestors)
File "/venv/lib/python3.7/site-packages/graphql/language/visitor.py", line 279, in enter
result = self.visitor.enter(node, key, parent, path, ancestors)
File "/venv/lib/python3.7/site-packages/graphql/language/visitor.py", line 231, in enter
result = visitor.enter(node, key, parent, path, ancestors)
File "/venv/lib/python3.7/site-packages/graphql/language/visitor.py", line 191, in enter
return method(self, node, key, parent, path, ancestors)
File "/venv/lib/python3.7/site-packages/graphql/validation/rules/arguments_of_correct_type.py", line 24, in enter_Argument
errors = is_valid_literal_value(arg_def.type, node.value)
File "/venv/lib/python3.7/site-packages/graphql/utils/is_valid_literal_value.py", line 86, in is_valid_literal_value
if parse_result is None:
Simple way to reproduce:
Query example:
mutation {
testNull(value: "null") { value }
}
GraphQL schema:
TestNull:
value: JSONString
testNull(value: JSONString): TestNull
Graphene code:
class TestNull(graphene.Mutation):
class Input:
value = graphene.JSONString()
value = graphene.JSONString()
@classmethod
def mutate(cls, instance, input, info):
value = input.get('value')
print(f"VALUE={value}")
return TestNull(value=value)
Metadata
Metadata
Assignees
Labels
No labels