1- from functools import reduce
21from .definition import (
32 GraphQLInputObjectType ,
43 GraphQLInterfaceType ,
@@ -24,6 +23,7 @@ class GraphQLSchema(object):
2423 mutation=MyAppMutationRootType
2524 )
2625 """
26+
2727 def __init__ (self , query , mutation = None ):
2828 self .query = query
2929 self .mutation = mutation
@@ -56,15 +56,15 @@ def get_directive(self, name):
5656 for directive in self .get_directives ():
5757 if directive .name == name :
5858 return directive
59+
5960 return None
6061
6162 def _build_type_map (self ):
62- # TODO: make pythonic
63- return reduce (type_map_reducer , [
64- self .get_query_type (),
65- self .get_mutation_type (),
66- IntrospectionSchema ,
67- ], {})
63+ type_map = {}
64+ for type in (self .get_query_type (), self .get_mutation_type (), IntrospectionSchema ):
65+ type_map = type_map_reducer (type_map , type )
66+
67+ return type_map
6868
6969
7070def type_map_reducer (map , type ):
@@ -80,28 +80,26 @@ def type_map_reducer(map, type):
8080 .format (type .name )
8181 )
8282 return map
83+
8384 map [type .name ] = type
8485
8586 reduced_map = map
8687
8788 if isinstance (type , (GraphQLUnionType , GraphQLInterfaceType )):
88- reduced_map = reduce (
89- type_map_reducer , type .get_possible_types (), reduced_map
90- )
89+ for t in type .get_possible_types ():
90+ reduced_map = type_map_reducer (reduced_map , t )
9191
9292 if isinstance (type , GraphQLObjectType ):
93- reduced_map = reduce (
94- type_map_reducer , type .get_interfaces (), reduced_map
95- )
93+ for t in type .get_interfaces ():
94+ reduced_map = type_map_reducer (reduced_map , t )
9695
9796 if isinstance (type , (GraphQLObjectType , GraphQLInterfaceType , GraphQLInputObjectType )):
9897 field_map = type .get_fields ()
99- for field_name , field in field_map .items ():
98+ for field in field_map .values ():
10099 if hasattr (field , 'args' ):
101100 field_arg_types = [arg .type for arg in field .args ]
102- reduced_map = reduce (
103- type_map_reducer , field_arg_types , reduced_map
104- )
101+ for t in field_arg_types :
102+ reduced_map = type_map_reducer (reduced_map , t )
105103
106104 reduced_map = type_map_reducer (reduced_map , getattr (field , 'type' , None ))
107105
0 commit comments