@@ -104,9 +104,7 @@ async def anext(iterator: AsyncIterator) -> Any:
104
104
"StreamRecord" ,
105
105
"ExecutionResult" ,
106
106
"ExecutionContext" ,
107
- "ExperimentalExecuteIncrementallyResults" ,
108
- "ExperimentalExecuteMultipleResults" ,
109
- "ExperimentalExecuteSingleResult" ,
107
+ "ExperimentalIncrementalExecutionResults" ,
110
108
"FormattedExecutionResult" ,
111
109
"FormattedIncrementalDeferResult" ,
112
110
"FormattedIncrementalResult" ,
@@ -600,24 +598,13 @@ class StreamArguments(NamedTuple):
600
598
label : Optional [str ]
601
599
602
600
603
- class ExperimentalExecuteSingleResult (NamedTuple ):
604
- """Execution result when retrieved at once."""
605
-
606
- single_result : ExecutionResult
607
-
608
-
609
- class ExperimentalExecuteMultipleResults (NamedTuple ):
601
+ class ExperimentalIncrementalExecutionResults (NamedTuple ):
610
602
"""Execution results when retrieved incrementally."""
611
603
612
604
initial_result : InitialIncrementalExecutionResult
613
605
subsequent_results : AsyncGenerator [SubsequentIncrementalExecutionResult , None ]
614
606
615
607
616
- ExperimentalExecuteIncrementallyResults = Union [
617
- ExperimentalExecuteSingleResult , ExperimentalExecuteMultipleResults
618
- ]
619
-
620
-
621
608
Middleware : TypeAlias = Optional [Union [Tuple , List , MiddlewareManager ]]
622
609
623
610
@@ -2012,15 +1999,15 @@ def execute(
2012
1999
execution_context_class ,
2013
2000
is_awaitable ,
2014
2001
)
2015
- if isinstance (result , ExperimentalExecuteSingleResult ):
2016
- return result . single_result
2017
- if isinstance (result , ExperimentalExecuteMultipleResults ):
2002
+ if isinstance (result , ExecutionResult ):
2003
+ return result
2004
+ if isinstance (result , ExperimentalIncrementalExecutionResults ):
2018
2005
raise GraphQLError (UNEXPECTED_MULTIPLE_PAYLOADS )
2019
2006
2020
2007
async def await_result () -> Any :
2021
2008
awaited_result = await result # type: ignore
2022
- if isinstance (awaited_result , ExperimentalExecuteSingleResult ):
2023
- return awaited_result . single_result
2009
+ if isinstance (awaited_result , ExecutionResult ):
2010
+ return awaited_result
2024
2011
return ExecutionResult (
2025
2012
None , errors = [GraphQLError (UNEXPECTED_MULTIPLE_PAYLOADS )]
2026
2013
)
@@ -2041,16 +2028,16 @@ def experimental_execute_incrementally(
2041
2028
middleware : Optional [Middleware ] = None ,
2042
2029
execution_context_class : Optional [Type [ExecutionContext ]] = None ,
2043
2030
is_awaitable : Optional [Callable [[Any ], bool ]] = None ,
2044
- ) -> AwaitableOrValue [ExperimentalExecuteIncrementallyResults ]:
2031
+ ) -> AwaitableOrValue [Union [ ExecutionResult , ExperimentalIncrementalExecutionResults ] ]:
2045
2032
"""Execute GraphQL operation incrementally (internal implementation).
2046
2033
2047
2034
Implements the "Executing requests" section of the GraphQL specification,
2048
2035
including `@defer` and `@stream` as proposed in
2049
2036
https://github.com/graphql/graphql-spec/pull/742
2050
2037
2051
- This function returns an awaitable of an ExperimentalExecuteIncrementallyResults
2052
- object. This object either contains a single ExecutionResult as
2053
- `single_result`, or an `initial_result` and a stream of `subsequent_results`.
2038
+ This function returns an awaitable that is either a single ExecutionResult or
2039
+ an ExperimentalIncrementalExecutionResults object, containing an `initialResult`
2040
+ and a stream of `subsequent_results`.
2054
2041
"""
2055
2042
if execution_context_class is None :
2056
2043
execution_context_class = ExecutionContext
@@ -2073,16 +2060,14 @@ def experimental_execute_incrementally(
2073
2060
2074
2061
# Return early errors if execution context failed.
2075
2062
if isinstance (context , list ):
2076
- return ExperimentalExecuteSingleResult (
2077
- single_result = ExecutionResult (None , errors = context )
2078
- )
2063
+ return ExecutionResult (None , errors = context )
2079
2064
2080
2065
return execute_impl (context )
2081
2066
2082
2067
2083
2068
def execute_impl (
2084
2069
context : ExecutionContext ,
2085
- ) -> AwaitableOrValue [ExperimentalExecuteIncrementallyResults ]:
2070
+ ) -> AwaitableOrValue [Union [ ExecutionResult , ExperimentalIncrementalExecutionResults ] ]:
2086
2071
"""Execute GraphQL operation (internal implementation)."""
2087
2072
# Return a possible coroutine object that will eventually yield the data described
2088
2073
# by the "Response" section of the GraphQL specification.
@@ -2108,39 +2093,35 @@ async def await_result() -> Any:
2108
2093
await result , errors # type: ignore
2109
2094
)
2110
2095
if context .subsequent_payloads :
2111
- return ExperimentalExecuteMultipleResults (
2096
+ return ExperimentalIncrementalExecutionResults (
2112
2097
initial_result = InitialIncrementalExecutionResult (
2113
2098
initial_result .data ,
2114
2099
initial_result .errors ,
2115
2100
has_next = True ,
2116
2101
),
2117
2102
subsequent_results = context .yield_subsequent_payloads (),
2118
2103
)
2119
- return ExperimentalExecuteSingleResult ( single_result = initial_result )
2104
+ return initial_result
2120
2105
except GraphQLError as error :
2121
2106
errors .append (error )
2122
- return ExperimentalExecuteSingleResult (
2123
- single_result = build_response (None , errors )
2124
- )
2107
+ return build_response (None , errors )
2125
2108
2126
2109
return await_result ()
2127
2110
2128
2111
initial_result = build_response (result , errors ) # type: ignore
2129
2112
if context .subsequent_payloads :
2130
- return ExperimentalExecuteMultipleResults (
2113
+ return ExperimentalIncrementalExecutionResults (
2131
2114
initial_result = InitialIncrementalExecutionResult (
2132
2115
initial_result .data ,
2133
2116
initial_result .errors ,
2134
2117
has_next = True ,
2135
2118
),
2136
2119
subsequent_results = context .yield_subsequent_payloads (),
2137
2120
)
2138
- return ExperimentalExecuteSingleResult ( single_result = initial_result )
2121
+ return initial_result
2139
2122
except GraphQLError as error :
2140
2123
errors .append (error )
2141
- return ExperimentalExecuteSingleResult (
2142
- single_result = build_response (None , errors )
2143
- )
2124
+ return build_response (None , errors )
2144
2125
2145
2126
2146
2127
def assume_not_awaitable (_value : Any ) -> bool :
@@ -2192,12 +2173,14 @@ def execute_sync(
2192
2173
)
2193
2174
2194
2175
# Assert that the execution was synchronous.
2195
- if isawaitable (result ) or isinstance (result , ExperimentalExecuteMultipleResults ):
2176
+ if isawaitable (result ) or isinstance (
2177
+ result , ExperimentalIncrementalExecutionResults
2178
+ ):
2196
2179
if isawaitable (result ):
2197
2180
ensure_future (cast (Awaitable [ExecutionResult ], result )).cancel ()
2198
2181
raise RuntimeError ("GraphQL execution failed to complete synchronously." )
2199
2182
2200
- return cast (ExperimentalExecuteSingleResult , result ). single_result
2183
+ return cast (ExecutionResult , result )
2201
2184
2202
2185
2203
2186
def handle_field_error (
@@ -2489,7 +2472,9 @@ async def await_result() -> Any:
2489
2472
2490
2473
2491
2474
async def ensure_async_iterable (
2492
- some_execution_result : ExperimentalExecuteIncrementallyResults ,
2475
+ some_execution_result : Union [
2476
+ ExecutionResult , ExperimentalIncrementalExecutionResults
2477
+ ],
2493
2478
) -> AsyncGenerator [
2494
2479
Union [
2495
2480
ExecutionResult ,
@@ -2498,8 +2483,8 @@ async def ensure_async_iterable(
2498
2483
],
2499
2484
None ,
2500
2485
]:
2501
- if isinstance (some_execution_result , ExperimentalExecuteSingleResult ):
2502
- yield some_execution_result . single_result
2486
+ if isinstance (some_execution_result , ExecutionResult ):
2487
+ yield some_execution_result
2503
2488
else :
2504
2489
yield some_execution_result .initial_result
2505
2490
async for result in some_execution_result .subsequent_results :
0 commit comments