Skip to content

Commit cbdf495

Browse files
committed
build_execution_context: simplify errors handling
Replicates graphql/graphql-js@b82e5a6
1 parent 82eb322 commit cbdf495

File tree

1 file changed

+19
-31
lines changed

1 file changed

+19
-31
lines changed

src/graphql/execution/execute.py

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ class ExecutionContext:
183183
variable_values: Dict[str, Any]
184184
field_resolver: GraphQLFieldResolver
185185
type_resolver: GraphQLTypeResolver
186-
middleware_manager: Optional[MiddlewareManager]
187186
errors: List[GraphQLError]
187+
middleware_manager: Optional[MiddlewareManager]
188188

189189
def __init__(
190190
self,
@@ -196,8 +196,8 @@ def __init__(
196196
variable_values: Dict[str, Any],
197197
field_resolver: GraphQLFieldResolver,
198198
type_resolver: GraphQLTypeResolver,
199-
middleware_manager: Optional[MiddlewareManager],
200199
errors: List[GraphQLError],
200+
middleware_manager: Optional[MiddlewareManager],
201201
) -> None:
202202
self.schema = schema
203203
self.fragments = fragments
@@ -207,8 +207,8 @@ def __init__(
207207
self.variable_values = variable_values
208208
self.field_resolver = field_resolver # type: ignore
209209
self.type_resolver = type_resolver # type: ignore
210-
self.middleware_manager = middleware_manager
211210
self.errors = errors
211+
self.middleware_manager = middleware_manager
212212
self._subfields_cache: Dict[
213213
Tuple[GraphQLObjectType, Tuple[FieldNode, ...]], Dict[str, List[FieldNode]]
214214
] = {}
@@ -233,7 +233,6 @@ def build(
233233
234234
Throws a GraphQLError if a valid execution context cannot be created.
235235
"""
236-
errors: List[GraphQLError] = []
237236
operation: Optional[OperationDefinitionNode] = None
238237
has_multiple_assumed_operations = False
239238
fragments: Dict[str, FragmentDefinitionNode] = {}
@@ -263,37 +262,26 @@ def build(
263262

264263
if not operation:
265264
if operation_name:
266-
errors.append(
267-
GraphQLError(f"Unknown operation named '{operation_name}'.")
268-
)
269-
else:
270-
errors.append(GraphQLError("Must provide an operation."))
271-
elif has_multiple_assumed_operations:
272-
errors.append(
265+
return [GraphQLError(f"Unknown operation named '{operation_name}'.")]
266+
return [GraphQLError("Must provide an operation.")]
267+
268+
if has_multiple_assumed_operations:
269+
return [
273270
GraphQLError(
274-
"Must provide operation name"
275-
" if query contains multiple operations."
271+
"Must provide operation name if query contains multiple operations."
276272
)
277-
)
278-
279-
variable_values = None
280-
if operation:
281-
coerced_variable_values = get_variable_values(
282-
schema,
283-
operation.variable_definitions or FrozenList(),
284-
raw_variable_values or {},
285-
)
273+
]
286274

287-
if coerced_variable_values.errors:
288-
errors.extend(coerced_variable_values.errors)
289-
else:
290-
variable_values = coerced_variable_values.coerced
275+
coerced_variable_values = get_variable_values(
276+
schema,
277+
operation.variable_definitions or FrozenList(),
278+
raw_variable_values or {},
279+
)
291280

292-
if errors:
293-
return errors
281+
if coerced_variable_values.errors:
282+
return coerced_variable_values.errors
294283

295-
if operation is None:
296-
raise TypeError("Has operation if no errors.")
284+
variable_values = coerced_variable_values.coerced
297285
if variable_values is None:
298286
raise TypeError("Has variables if no errors.")
299287

@@ -306,8 +294,8 @@ def build(
306294
variable_values,
307295
field_resolver or default_field_resolver,
308296
type_resolver or default_type_resolver,
297+
[],
309298
middleware_manager,
310-
errors,
311299
)
312300

313301
def build_response(

0 commit comments

Comments
 (0)