16
16
def on_complete_resolver (on_error , __func , exe_context , info , __resolver , * args , ** kwargs ):
17
17
try :
18
18
result = __resolver (* args , ** kwargs )
19
- if isinstance (result , Exception ):
20
- return on_error (result )
21
- # return Promise.resolve(result).then(__func).catch(on_error)
22
19
if is_thenable (result ):
23
- # TODO: Remove this, if a promise is resolved with an Exception,
24
- # it should raise by default. This is fixing an old behavior
25
- # in the Promise package
26
- def on_resolve (value ):
27
- if isinstance (value , Exception ):
28
- return on_error (value )
29
- return value
30
- return result .then (on_resolve ).then (__func ).catch (on_error )
20
+ return Promise .resolve (result ).then (__func ).catch (on_error )
21
+ elif isinstance (result , Exception ):
22
+ return on_error (result )
31
23
return __func (result )
32
24
except Exception as e :
33
25
return on_error (e )
@@ -52,7 +44,8 @@ def complete_list_value(inner_resolver, exe_context, info, on_error, result):
52
44
def complete_nonnull_value (exe_context , info , result ):
53
45
if result is None :
54
46
raise GraphQLError (
55
- 'Cannot return null for non-nullable field {}.{}.' .format (info .parent_type , info .field_name ),
47
+ 'Cannot return null for non-nullable field {}.{}.' .format (
48
+ info .parent_type , info .field_name ),
56
49
info .field_asts
57
50
)
58
51
return result
@@ -130,8 +123,10 @@ def type_resolver_fragment(return_type, resolver, fragment, exe_context, info, c
130
123
return partial (on_complete_resolver , on_resolve_error , complete_object_value_resolve , exe_context , info , resolver )
131
124
132
125
133
- def type_resolver_non_null (return_type , resolver , fragment , exe_context , info ): # no catch_error
134
- resolver = type_resolver (return_type .of_type , resolver , fragment , exe_context , info )
126
+ # no catch_error
127
+ def type_resolver_non_null (return_type , resolver , fragment , exe_context , info ):
128
+ resolver = type_resolver (
129
+ return_type .of_type , resolver , fragment , exe_context , info )
135
130
nonnull_complete = partial (complete_nonnull_value , exe_context , info )
136
131
on_resolve_error = partial (on_error , exe_context , info , False )
137
132
return partial (on_complete_resolver , on_resolve_error , nonnull_complete , exe_context , info , resolver )
@@ -145,7 +140,9 @@ def type_resolver_leaf(return_type, resolver, exe_context, info, catch_error):
145
140
146
141
def type_resolver_list (return_type , resolver , fragment , exe_context , info , catch_error ):
147
142
item_type = return_type .of_type
148
- inner_resolver = type_resolver (item_type , lambda item : item , fragment , exe_context , info , catch_error = True )
143
+ inner_resolver = type_resolver (
144
+ item_type , lambda item : item , fragment , exe_context , info , catch_error = True )
149
145
on_resolve_error = partial (on_error , exe_context , info , catch_error )
150
- list_complete = partial (complete_list_value , inner_resolver , exe_context , info , on_resolve_error )
146
+ list_complete = partial (
147
+ complete_list_value , inner_resolver , exe_context , info , on_resolve_error )
151
148
return partial (on_complete_resolver , on_resolve_error , list_complete , exe_context , info , resolver )
0 commit comments