4
4
import sys
5
5
6
6
from six import string_types
7
- from promise import Promise , promise_for_dict , promisify , is_thenable
7
+ from promise import Promise , promise_for_dict , is_thenable
8
8
9
9
from ..error import GraphQLError , GraphQLLocatedError
10
10
from ..pyutils .default_ordered_dict import DefaultOrderedDict
16
16
collect_fields , default_resolve_fn , get_field_def ,
17
17
get_operation_root_type )
18
18
from .executors .sync import SyncExecutor
19
+ from .experimental .executor import execute as experimental_execute
19
20
from .middleware import MiddlewareManager
20
21
21
22
logger = logging .getLogger (__name__ )
@@ -25,9 +26,19 @@ def is_promise(obj):
25
26
return type (obj ) == Promise
26
27
27
28
29
+ use_experimental_executor = False
30
+
31
+
28
32
def execute (schema , document_ast , root_value = None , context_value = None ,
29
33
variable_values = None , operation_name = None , executor = None ,
30
34
return_promise = False , middleware = None ):
35
+ if use_experimental_executor :
36
+ return experimental_execute (
37
+ schema , document_ast , root_value , context_value ,
38
+ variable_values , operation_name , executor ,
39
+ return_promise , middleware
40
+ )
41
+
31
42
assert schema , 'Must provide schema'
32
43
assert isinstance (schema , GraphQLSchema ), (
33
44
'Schema must be an instance of GraphQLSchema. Also ensure that there are ' +
@@ -106,7 +117,7 @@ def collect_result(resolved_result):
106
117
results [response_name ] = resolved_result
107
118
return results
108
119
109
- return promisify ( result ) .then (collect_result , None )
120
+ return result .then (collect_result , None )
110
121
111
122
results [response_name ] = result
112
123
return results
@@ -210,9 +221,9 @@ def complete_value_catching_error(exe_context, return_type, field_asts, info, re
210
221
if is_thenable (completed ):
211
222
def handle_error (error ):
212
223
exe_context .errors .append (error )
213
- return Promise . fulfilled ( None )
224
+ return None
214
225
215
- return promisify ( completed ). then ( None , handle_error )
226
+ return completed . catch ( handle_error )
216
227
217
228
return completed
218
229
except Exception as e :
@@ -242,7 +253,7 @@ def complete_value(exe_context, return_type, field_asts, info, result):
242
253
# If field type is NonNull, complete for inner type, and throw field error if result is null.
243
254
244
255
if is_thenable (result ):
245
- return promisify (result ).then (
256
+ return Promise . resolve (result ).then (
246
257
lambda resolved : complete_value (
247
258
exe_context ,
248
259
return_type ,
0 commit comments