11from __future__ import annotations # Python < 3.10
22
3- from typing import Any , Callable , List , Optional , Union , cast
3+ from typing import Any , List , Optional , Union , cast
44
55from ..language import (
66 ArgumentNode ,
5252__all__ = ["TypeInfo" , "TypeInfoVisitor" ]
5353
5454
55- GetFieldDefFn = Callable [
56- [GraphQLSchema , GraphQLType , FieldNode ], Optional [GraphQLField ]
57- ]
58-
59-
6055class TypeInfo :
6156 """Utility class for keeping track of type definitions.
6257
@@ -70,14 +65,11 @@ def __init__(
7065 self ,
7166 schema : GraphQLSchema ,
7267 initial_type : Optional [GraphQLType ] = None ,
73- get_field_def_fn : Optional [GetFieldDefFn ] = None ,
7468 ) -> None :
7569 """Initialize the TypeInfo for the given GraphQL schema.
7670
7771 Initial type may be provided in rare cases to facilitate traversals beginning
7872 somewhere other than documents.
79-
80- The optional last parameter is deprecated and will be removed in v3.3.
8173 """
8274 self ._schema = schema
8375 self ._type_stack : List [Optional [GraphQLOutputType ]] = []
@@ -88,7 +80,6 @@ def __init__(
8880 self ._directive : Optional [GraphQLDirective ] = None
8981 self ._argument : Optional [GraphQLArgument ] = None
9082 self ._enum_value : Optional [GraphQLEnumValue ] = None
91- self ._get_field_def : GetFieldDefFn = get_field_def_fn or get_field_def
9283 if initial_type :
9384 if is_input_type (initial_type ):
9485 self ._input_type_stack .append (cast (GraphQLInputType , initial_type ))
@@ -158,7 +149,7 @@ def enter_selection_set(self, node: SelectionSetNode) -> None:
158149 def enter_field (self , node : FieldNode ) -> None :
159150 parent_type = self .get_parent_type ()
160151 if parent_type :
161- field_def = self . _get_field_def (self ._schema , parent_type , node )
152+ field_def = get_field_def (self ._schema , parent_type , node )
162153 field_type = field_def .type if field_def else None
163154 else :
164155 field_def = field_type = None
@@ -277,24 +268,24 @@ def leave_enum_value(self) -> None:
277268
278269
279270def get_field_def (
280- schema : GraphQLSchema , parent_type : GraphQLType , field_node : FieldNode
271+ schema : GraphQLSchema , parent_type : GraphQLCompositeType , field_node : FieldNode
281272) -> Optional [GraphQLField ]:
282273 """Get field definition.
283274
284275 Not exactly the same as the executor's definition of
285276 :func:`graphql.execution.get_field_def`, in this statically evaluated environment
286277 we do not always have an Object type, and need to handle Interface and Union types.
287278 """
288- name = field_node .name .value
289- if name == "__schema" and schema .query_type is parent_type :
279+ field_name = field_node .name .value
280+ if field_name == "__schema" and schema .query_type is parent_type :
290281 return SchemaMetaFieldDef
291- if name == "__type" and schema .query_type is parent_type :
282+ if field_name == "__type" and schema .query_type is parent_type :
292283 return TypeMetaFieldDef
293- if name == "__typename" and is_composite_type (parent_type ):
284+ if field_name == "__typename" and is_composite_type (parent_type ):
294285 return TypeNameMetaFieldDef
295286 if is_object_type (parent_type ) or is_interface_type (parent_type ):
296287 parent_type = cast (Union [GraphQLObjectType , GraphQLInterfaceType ], parent_type )
297- return parent_type .fields .get (name )
288+ return parent_type .fields .get (field_name )
298289 return None
299290
300291
0 commit comments