1212
1313from ..error import GraphQLError
1414from ..language import ast
15- from ..pyutils import inspect , is_collection , FrozenList
15+ from ..pyutils import inspect , is_collection , is_description , FrozenList
1616from .definition import (
1717 GraphQLAbstractType ,
1818 GraphQLInterfaceType ,
@@ -94,6 +94,7 @@ class GraphQLSchema:
9494 subscription_type : Optional [GraphQLObjectType ]
9595 type_map : TypeMap
9696 directives : FrozenList [GraphQLDirective ]
97+ description : Optional [str ]
9798 extensions : Optional [Dict [str , Any ]]
9899 ast_node : Optional [ast .SchemaDefinitionNode ]
99100 extension_ast_nodes : Optional [FrozenList [ast .SchemaExtensionNode ]]
@@ -109,6 +110,7 @@ def __init__(
109110 subscription : Optional [GraphQLObjectType ] = None ,
110111 types : Optional [Collection [GraphQLNamedType ]] = None ,
111112 directives : Optional [Collection [GraphQLDirective ]] = None ,
113+ description : Optional [str ] = None ,
112114 extensions : Optional [Dict [str , Any ]] = None ,
113115 ast_node : Optional [ast .SchemaDefinitionNode ] = None ,
114116 extension_ast_nodes : Optional [Collection [ast .SchemaExtensionNode ]] = None ,
@@ -144,6 +146,8 @@ def __init__(
144146 raise TypeError ("Schema directives must be a collection." )
145147 if not isinstance (directives , FrozenList ):
146148 directives = FrozenList (directives )
149+ if description is not None and not is_description (description ):
150+ raise TypeError ("Schema description must be a string." )
147151 if extensions is not None and (
148152 not isinstance (extensions , dict )
149153 or not all (isinstance (key , str ) for key in extensions )
@@ -163,6 +167,7 @@ def __init__(
163167 if not isinstance (extension_ast_nodes , FrozenList ):
164168 extension_ast_nodes = FrozenList (extension_ast_nodes )
165169
170+ self .description = description
166171 self .extensions = extensions
167172 self .ast_node = ast_node
168173 self .extension_ast_nodes = (
@@ -268,6 +273,7 @@ def to_kwargs(self) -> Dict[str, Any]:
268273 subscription = self .subscription_type ,
269274 types = FrozenList (self .type_map .values ()) or None ,
270275 directives = self .directives [:],
276+ description = self .description ,
271277 extensions = self .extensions ,
272278 ast_node = self .ast_node ,
273279 extension_ast_nodes = self .extension_ast_nodes ,
0 commit comments