13
13
GraphQLUnionType ,
14
14
GraphQLInputObjectType ,
15
15
get_named_type ,
16
- is_abstract_type ,
17
16
is_input_object_type ,
18
17
is_interface_type ,
19
18
is_named_type ,
@@ -198,8 +197,6 @@ def __init__(
198
197
for interface in type_ .interfaces :
199
198
if is_interface_type (interface ):
200
199
setdefault (interface .name , []).append (type_ )
201
- elif is_abstract_type (type_ ):
202
- setdefault (type_ .name , [])
203
200
204
201
def to_kwargs (self ) -> Dict [str , Any ]:
205
202
return dict (
@@ -225,20 +222,16 @@ def get_possible_types(
225
222
if is_union_type (abstract_type ):
226
223
abstract_type = cast (GraphQLUnionType , abstract_type )
227
224
return abstract_type .types
228
- return self ._implementations [abstract_type .name ]
225
+ return self ._implementations [abstract_type .name ] or []
229
226
230
227
def is_possible_type (
231
228
self , abstract_type : GraphQLAbstractType , possible_type : GraphQLObjectType
232
229
) -> bool :
233
230
"""Check whether a concrete type is possible for an abstract type."""
234
- possible_type_map = self ._possible_type_map
235
- try :
236
- possible_type_names = possible_type_map [abstract_type .name ]
237
- except KeyError :
238
- possible_types = self .get_possible_types (abstract_type )
239
- possible_type_names = {type_ .name for type_ in possible_types }
240
- possible_type_map [abstract_type .name ] = possible_type_names
241
- return possible_type .name in possible_type_names
231
+ return possible_type .name in self ._possible_type_map .setdefault (
232
+ abstract_type .name ,
233
+ {type_ .name for type_ in self .get_possible_types (abstract_type )},
234
+ )
242
235
243
236
def get_directive (self , name : str ) -> Optional [GraphQLDirective ]:
244
237
for directive in self .directives :
0 commit comments