graphql-python / graphql-python/graphql-core-legacy

Parser raises an error for null Boolean Type

Open Beginner friendly
#285 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
372
Forks
175
PR merge metrics
No merged PRs in 30d

Description

The parser is not able to handle boolean types with `null` default type.

This is handled in this line: https://github.com/graphql-python/graphql-core-legacy/blob/master/graphql/language/parser.py#L502

Following a [commit](https://github.com/octokit/graphql-schema/commit/18c40d2bb68d8f27acfc62e768d34aadfca9e8b2#diff-9fcde326d127f74194f70e563bdf2c118c51b719c308f015b8eb0204a9a552fb) GitHub introduced to their schema yesterday `gql` can no longer parse its schema, as it fails on this `null` `Boolean` type:

```
{'name': 'isVerified', 'description': 'Filter by if the domain is verified.', 'type': {'kind': 'SCALAR', 'name': 'Boolean', 'ofType': None}, 'defaultValue': 'null'}
```

GitHub claims this change is in accordance with the [GraphQL standards documentation](https://graphql.org/graphql-js/basic-types/):

> By default, every type is nullable - it's legitimate to return null as any of the scalar types. Use an exclamation point to indicate a type cannot be nullable, so String! is a non-nullable string.

> Therefore, it appears that a null default value for a boolean is valid in GraphQL.

Currently the code specifically ignores `null` values.

![image](https://user-images.githubusercontent.com/20818773/109168192-3d706b00-7787-11eb-8594-d84361c4081a.png)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at graphql/language/parser.py line 502, where null values are currently ignored, and reproduce the failure with the Boolean schema entry shown in the issue. Update the parser behavior so a nullable Boolean with a null default is accepted, then verify that the GitHub schema example parses without raising an error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.