Skip to content

Commit b67be8b

Browse files
committed
Ensure that args passed to GraphQLField are of type GraphQLArgument.
1 parent a68d134 commit b67be8b

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

graphql/core/type/definition.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,10 @@ def __init__(self, type, args=None, resolver=None,
167167
self.args = []
168168
if args:
169169
for arg_name, arg in args.items():
170+
assert isinstance(arg, GraphQLArgument)
170171
arg.name = arg_name
171172
self.args.append(arg)
173+
172174
self.resolver = resolver
173175
self.deprecation_reason = deprecation_reason
174176
self.description = description

graphql/core/type/schema.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from functools import reduce
21
from .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

7070
def 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

tests/core_validation/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
fields={
7878
'iq': GraphQLField(GraphQLInt),
7979
'name': GraphQLField(GraphQLString, {
80-
'surname': GraphQLField(GraphQLBoolean),
80+
'surname': GraphQLArgument(GraphQLBoolean),
8181
}),
8282
'numEyes': GraphQLField(GraphQLInt),
8383
},

0 commit comments

Comments
 (0)