@@ -104,7 +104,7 @@ def _build_type_map(self, _types):
104
104
if _types :
105
105
types += _types
106
106
107
- type_map = reduce (type_map_reducer , types , OrderedDict ())
107
+ type_map = reduce (self . _type_map_reducer , types , OrderedDict ())
108
108
return type_map
109
109
110
110
def get_possible_types (self , abstract_type ):
@@ -120,45 +120,44 @@ def is_possible_type(self, abstract_type, possible_type):
120
120
121
121
return possible_type .name in self ._possible_type_map [abstract_type .name ]
122
122
123
+ def _type_map_reducer (self , map , type ):
124
+ if not type :
125
+ return map
123
126
124
- def type_map_reducer (map , type ):
125
- if not type :
126
- return map
127
+ if isinstance (type , GraphQLList ) or isinstance (type , GraphQLNonNull ):
128
+ return self ._type_map_reducer (map , type .of_type )
127
129
128
- if isinstance (type , GraphQLList ) or isinstance (type , GraphQLNonNull ):
129
- return type_map_reducer (map , type .of_type )
130
+ if type .name in map :
131
+ assert map [type .name ] == type , (
132
+ 'Schema must contain unique named types but contains multiple types named "{}".'
133
+ ).format (type .name )
130
134
131
- if type .name in map :
132
- assert map [type .name ] == type , (
133
- 'Schema must contain unique named types but contains multiple types named "{}".'
134
- ).format (type .name )
135
+ return map
135
136
136
- return map
137
+ map [ type . name ] = type
137
138
138
- map [ type . name ] = type
139
+ reduced_map = map
139
140
140
- reduced_map = map
141
+ if isinstance (type , (GraphQLUnionType )):
142
+ for t in type .get_types ():
143
+ reduced_map = self ._type_map_reducer (reduced_map , t )
141
144
142
- if isinstance (type , ( GraphQLUnionType ) ):
143
- for t in type .get_types ():
144
- reduced_map = type_map_reducer (reduced_map , t )
145
+ if isinstance (type , GraphQLObjectType ):
146
+ for t in type .get_interfaces ():
147
+ reduced_map = self . _type_map_reducer (reduced_map , t )
145
148
146
- if isinstance (type , GraphQLObjectType ):
147
- for t in type .get_interfaces ():
148
- reduced_map = type_map_reducer (reduced_map , t )
149
+ if isinstance (type , (GraphQLObjectType , GraphQLInterfaceType , GraphQLInputObjectType )):
150
+ field_map = type .get_fields ()
151
+ for field in field_map .values ():
152
+ args = getattr (field , 'args' , None )
153
+ if args :
154
+ field_arg_types = [arg .type for arg in field .args ]
155
+ for t in field_arg_types :
156
+ reduced_map = self ._type_map_reducer (reduced_map , t )
149
157
150
- if isinstance (type , (GraphQLObjectType , GraphQLInterfaceType , GraphQLInputObjectType )):
151
- field_map = type .get_fields ()
152
- for field in field_map .values ():
153
- args = getattr (field , 'args' , None )
154
- if args :
155
- field_arg_types = [arg .type for arg in field .args ]
156
- for t in field_arg_types :
157
- reduced_map = type_map_reducer (reduced_map , t )
158
+ reduced_map = self ._type_map_reducer (reduced_map , getattr (field , 'type' , None ))
158
159
159
- reduced_map = type_map_reducer (reduced_map , getattr (field , 'type' , None ))
160
-
161
- return reduced_map
160
+ return reduced_map
162
161
163
162
164
163
def assert_object_implements_interface (schema , object , interface ):
0 commit comments