Skip to content

Commit 845fefb

Browse files
committed
Add description to schema parser and printer
Descriptions are now part of the [graphql spec](https://facebook.github.io/graphql/June2018/#sec-Descriptions). This commit brings graphql-core inline with the spec.
1 parent a40730a commit 845fefb

File tree

8 files changed

+406
-56
lines changed

8 files changed

+406
-56
lines changed

graphql/language/ast.py

+34-14
Original file line numberDiff line numberDiff line change
@@ -543,13 +543,14 @@ def __hash__(self):
543543

544544

545545
class StringValue(Value):
546-
__slots__ = ("loc", "value")
546+
__slots__ = ("loc", "value", "is_block_string")
547547
_fields = ("value",)
548548

549-
def __init__(self, value, loc=None):
549+
def __init__(self, value, loc=None, is_block_string=False):
550550
# type: (str, Optional[Loc]) -> None
551551
self.loc = loc
552552
self.value = value
553+
self.is_block_string = is_block_string
553554

554555
def __eq__(self, other):
555556
# type: (Any) -> bool
@@ -989,7 +990,7 @@ def __hash__(self):
989990

990991

991992
class ObjectTypeDefinition(TypeDefinition):
992-
__slots__ = ("loc", "name", "interfaces", "directives", "fields")
993+
__slots__ = ("loc", "name", "interfaces", "directives", "fields", "description")
993994
_fields = ("name", "interfaces", "fields")
994995

995996
def __init__(
@@ -999,19 +1000,20 @@ def __init__(
9991000
interfaces=None, # type: Optional[List[NamedType]]
10001001
loc=None, # type: Optional[Loc]
10011002
directives=None, # type: Optional[List[Directive]]
1003+
description=None, # type: Optional[String]
10021004
):
10031005
# type: (...) -> None
10041006
self.loc = loc
10051007
self.name = name
10061008
self.interfaces = interfaces
10071009
self.fields = fields
10081010
self.directives = directives
1011+
self.description = description
10091012

10101013
def __eq__(self, other):
10111014
# type: (Any) -> bool
10121015
return self is other or (
1013-
isinstance(other, ObjectTypeDefinition)
1014-
and
1016+
isinstance(other, ObjectTypeDefinition) and
10151017
# self.loc == other.loc and
10161018
self.name == other.name
10171019
and self.interfaces == other.interfaces
@@ -1042,7 +1044,7 @@ def __hash__(self):
10421044

10431045

10441046
class FieldDefinition(Node):
1045-
__slots__ = ("loc", "name", "arguments", "type", "directives")
1047+
__slots__ = ("loc", "name", "arguments", "type", "directives", "description")
10461048
_fields = ("name", "arguments", "type")
10471049

10481050
def __init__(
@@ -1052,13 +1054,15 @@ def __init__(
10521054
type, # type: Union[NamedType, NonNullType, ListType]
10531055
loc=None, # type: Optional[Loc]
10541056
directives=None, # type: Optional[List]
1057+
description=None, # type: Optional[String]
10551058
):
10561059
# type: (...) -> None
10571060
self.loc = loc
10581061
self.name = name
10591062
self.arguments = arguments
10601063
self.type = type
10611064
self.directives = directives
1065+
self.description = description
10621066

10631067
def __eq__(self, other):
10641068
# type: (Any) -> bool
@@ -1094,7 +1098,7 @@ def __hash__(self):
10941098

10951099

10961100
class InputValueDefinition(Node):
1097-
__slots__ = ("loc", "name", "type", "default_value", "directives")
1101+
__slots__ = ("loc", "name", "type", "default_value", "directives", "description")
10981102
_fields = ("name", "type", "default_value")
10991103

11001104
def __init__(
@@ -1104,13 +1108,15 @@ def __init__(
11041108
default_value=None, # type: Any
11051109
loc=None, # type: Optional[Loc]
11061110
directives=None, # type: Optional[List]
1111+
description=None, # type: Optional[String]
11071112
):
11081113
# type: (...) -> None
11091114
self.loc = loc
11101115
self.name = name
11111116
self.type = type
11121117
self.default_value = default_value
11131118
self.directives = directives
1119+
self.description = description
11141120

11151121
def __eq__(self, other):
11161122
# type: (Any) -> bool
@@ -1147,7 +1153,7 @@ def __hash__(self):
11471153

11481154

11491155
class InterfaceTypeDefinition(TypeDefinition):
1150-
__slots__ = ("loc", "name", "fields", "directives")
1156+
__slots__ = ("loc", "name", "fields", "directives", "description")
11511157
_fields = ("name", "fields")
11521158

11531159
def __init__(
@@ -1156,12 +1162,14 @@ def __init__(
11561162
fields, # type: List[FieldDefinition]
11571163
loc=None, # type: Optional[Loc]
11581164
directives=None, # type: Optional[List[Directive]]
1165+
description=None, # type: Optional[String]
11591166
):
11601167
# type: (...) -> None
11611168
self.loc = loc
11621169
self.name = name
11631170
self.fields = fields
11641171
self.directives = directives
1172+
self.description = description
11651173

11661174
def __eq__(self, other):
11671175
# type: (Any) -> bool
@@ -1194,7 +1202,7 @@ def __hash__(self):
11941202

11951203

11961204
class UnionTypeDefinition(TypeDefinition):
1197-
__slots__ = ("loc", "name", "types", "directives")
1205+
__slots__ = ("loc", "name", "types", "directives", "description")
11981206
_fields = ("name", "types")
11991207

12001208
def __init__(
@@ -1203,12 +1211,14 @@ def __init__(
12031211
types, # type: List[NamedType]
12041212
loc=None, # type: Optional[Loc]
12051213
directives=None, # type: Optional[List[Directive]]
1214+
description=None, # type: Optional[String]
12061215
):
12071216
# type: (...) -> None
12081217
self.loc = loc
12091218
self.name = name
12101219
self.types = types
12111220
self.directives = directives
1221+
self.description = description
12121222

12131223
def __eq__(self, other):
12141224
# type: (Any) -> bool
@@ -1241,19 +1251,21 @@ def __hash__(self):
12411251

12421252

12431253
class ScalarTypeDefinition(TypeDefinition):
1244-
__slots__ = ("loc", "name", "directives")
1254+
__slots__ = ("loc", "name", "directives", "description")
12451255
_fields = ("name",)
12461256

12471257
def __init__(
12481258
self,
12491259
name, # type: Name
12501260
loc=None, # type: Optional[Loc]
12511261
directives=None, # type: Optional[List[Directive]]
1262+
description=None, # type: Optional[String]
12521263
):
12531264
# type: (...) -> None
12541265
self.loc = loc
12551266
self.name = name
12561267
self.directives = directives
1268+
self.description = description
12571269

12581270
def __eq__(self, other):
12591271
# type: (Any) -> bool
@@ -1284,7 +1296,7 @@ def __hash__(self):
12841296

12851297

12861298
class EnumTypeDefinition(TypeDefinition):
1287-
__slots__ = ("loc", "name", "values", "directives")
1299+
__slots__ = ("loc", "name", "values", "directives", "description")
12881300
_fields = ("name", "values")
12891301

12901302
def __init__(
@@ -1293,12 +1305,14 @@ def __init__(
12931305
values, # type: List[EnumValueDefinition]
12941306
loc=None, # type: Optional[Loc]
12951307
directives=None, # type: Optional[List[Directive]]
1308+
description=None, # type: Optional[String]
12961309
):
12971310
# type: (...) -> None
12981311
self.loc = loc
12991312
self.name = name
13001313
self.values = values
13011314
self.directives = directives
1315+
self.description = description
13021316

13031317
def __eq__(self, other):
13041318
# type: (Any) -> bool
@@ -1331,19 +1345,21 @@ def __hash__(self):
13311345

13321346

13331347
class EnumValueDefinition(Node):
1334-
__slots__ = ("loc", "name", "directives")
1348+
__slots__ = ("loc", "name", "directives", "description")
13351349
_fields = ("name",)
13361350

13371351
def __init__(
13381352
self,
13391353
name, # type: Name
13401354
loc=None, # type: Optional[Loc]
13411355
directives=None, # type: Optional[List[Directive]]
1356+
description=None, # type: Optional[String]
13421357
):
13431358
# type: (...) -> None
13441359
self.loc = loc
13451360
self.name = name
13461361
self.directives = directives
1362+
self.description = description
13471363

13481364
def __eq__(self, other):
13491365
# type: (Any) -> bool
@@ -1374,7 +1390,7 @@ def __hash__(self):
13741390

13751391

13761392
class InputObjectTypeDefinition(TypeDefinition):
1377-
__slots__ = ("loc", "name", "fields", "directives")
1393+
__slots__ = ("loc", "name", "fields", "directives", "description")
13781394
_fields = ("name", "fields")
13791395

13801396
def __init__(
@@ -1383,12 +1399,14 @@ def __init__(
13831399
fields, # type: List[InputValueDefinition]
13841400
loc=None, # type: Optional[Loc]
13851401
directives=None, # type: Optional[List[Directive]]
1402+
description=None, # type: Optional[String]
13861403
):
13871404
# type: (...) -> None
13881405
self.loc = loc
13891406
self.name = name
13901407
self.fields = fields
13911408
self.directives = directives
1409+
self.description = description
13921410

13931411
def __eq__(self, other):
13941412
# type: (Any) -> bool
@@ -1454,7 +1472,7 @@ def __hash__(self):
14541472

14551473

14561474
class DirectiveDefinition(TypeSystemDefinition):
1457-
__slots__ = ("loc", "name", "arguments", "locations")
1475+
__slots__ = ("loc", "name", "arguments", "locations", "description")
14581476
_fields = ("name", "locations")
14591477

14601478
def __init__(
@@ -1463,12 +1481,14 @@ def __init__(
14631481
locations, # type: List[Name]
14641482
arguments=None, # type: Optional[List[InputValueDefinition]]
14651483
loc=None, # type: Optional[Loc]
1484+
description=None, # type: Optional[String]
14661485
):
14671486
# type: (...) -> None
14681487
self.name = name
14691488
self.locations = locations
14701489
self.loc = loc
14711490
self.arguments = arguments
1491+
self.description = description
14721492

14731493
def __eq__(self, other):
14741494
# type: (Any) -> bool

0 commit comments

Comments
 (0)