1
1
from typing import Any , Callable , List , Optional , Union , cast
2
2
3
3
from ..error import INVALID
4
- from ..language import FieldNode , OperationType
4
+ from ..language import (
5
+ ArgumentNode , DirectiveNode , EnumValueNode , FieldNode , InlineFragmentNode ,
6
+ ListValueNode , Node , ObjectFieldNode , OperationDefinitionNode ,
7
+ OperationType , SelectionSetNode , VariableDefinitionNode )
5
8
from ..type import (
6
9
GraphQLArgument , GraphQLCompositeType , GraphQLDirective ,
7
10
GraphQLEnumValue , GraphQLField , GraphQLInputType , GraphQLInterfaceType ,
@@ -93,23 +96,23 @@ def get_argument(self):
93
96
def get_enum_value (self ):
94
97
return self ._enum_value
95
98
96
- def enter (self , node ):
99
+ def enter (self , node : Node ):
97
100
method = getattr (self , 'enter_' + node .kind , None )
98
101
if method :
99
102
return method (node )
100
103
101
- def leave (self , node ):
104
+ def leave (self , node : Node ):
102
105
method = getattr (self , 'leave_' + node .kind , None )
103
106
if method :
104
107
return method ()
105
108
106
109
# noinspection PyUnusedLocal
107
- def enter_selection_set (self , node ):
110
+ def enter_selection_set (self , node : SelectionSetNode ):
108
111
named_type = get_named_type (self .get_type ())
109
112
self ._parent_type_stack .append (
110
113
named_type if is_composite_type (named_type ) else None )
111
114
112
- def enter_field (self , node ):
115
+ def enter_field (self , node : FieldNode ):
113
116
parent_type = self .get_parent_type ()
114
117
if parent_type :
115
118
field_def = self ._get_field_def (self ._schema , parent_type , node )
@@ -120,10 +123,10 @@ def enter_field(self, node):
120
123
self ._type_stack .append (
121
124
field_type if is_output_type (field_type ) else None )
122
125
123
- def enter_directive (self , node ):
126
+ def enter_directive (self , node : DirectiveNode ):
124
127
self ._directive = self ._schema .get_directive (node .name .value )
125
128
126
- def enter_operation_definition (self , node ):
129
+ def enter_operation_definition (self , node : OperationDefinitionNode ):
127
130
if node .operation == OperationType .QUERY :
128
131
type_ = self ._schema .query_type
129
132
elif node .operation == OperationType .MUTATION :
@@ -134,22 +137,24 @@ def enter_operation_definition(self, node):
134
137
type_ = None
135
138
self ._type_stack .append (type_ if is_object_type (type_ ) else None )
136
139
137
- def enter_inline_fragment (self , node ):
140
+ def enter_inline_fragment (self , node : InlineFragmentNode ):
138
141
type_condition_ast = node .type_condition
139
142
output_type = type_from_ast (
140
143
self ._schema , type_condition_ast
141
144
) if type_condition_ast else get_named_type (self .get_type ())
142
145
self ._type_stack .append (
143
- output_type if is_output_type (output_type ) else None )
146
+ cast (GraphQLOutputType , output_type ) if is_output_type (output_type )
147
+ else None )
144
148
145
149
enter_fragment_definition = enter_inline_fragment
146
150
147
- def enter_variable_definition (self , node ):
151
+ def enter_variable_definition (self , node : VariableDefinitionNode ):
148
152
input_type = type_from_ast (self ._schema , node .type )
149
153
self ._input_type_stack .append (
150
- input_type if is_input_type (input_type ) else None )
154
+ cast (GraphQLInputType , input_type ) if is_input_type (input_type )
155
+ else None )
151
156
152
- def enter_argument (self , node ):
157
+ def enter_argument (self , node : ArgumentNode ):
153
158
field_or_directive = self .get_directive () or self .get_field_def ()
154
159
if field_or_directive :
155
160
arg_def = field_or_directive .args .get (node .name .value )
@@ -163,15 +168,15 @@ def enter_argument(self, node):
163
168
arg_type if is_input_type (arg_type ) else None )
164
169
165
170
# noinspection PyUnusedLocal
166
- def enter_list_value (self , node ):
171
+ def enter_list_value (self , node : ListValueNode ):
167
172
list_type = get_nullable_type (self .get_input_type ())
168
173
item_type = list_type .of_type if is_list_type (list_type ) else list_type
169
174
# List positions never have a default value.
170
175
self ._default_value_stack .append (INVALID )
171
176
self ._input_type_stack .append (
172
177
item_type if is_input_type (item_type ) else None )
173
178
174
- def enter_object_field (self , node ):
179
+ def enter_object_field (self , node : ObjectFieldNode ):
175
180
object_type = get_named_type (self .get_input_type ())
176
181
if is_input_object_type (object_type ):
177
182
input_field = object_type .fields .get (node .name .value )
@@ -183,7 +188,7 @@ def enter_object_field(self, node):
183
188
self ._input_type_stack .append (
184
189
input_field_type if is_input_type (input_field_type ) else None )
185
190
186
- def enter_enum_value (self , node ):
191
+ def enter_enum_value (self , node : EnumValueNode ):
187
192
enum_type = get_named_type (self .get_input_type ())
188
193
if is_enum_type (enum_type ):
189
194
enum_value = enum_type .values .get (node .value )
0 commit comments