Skip to content

Commit 9d5cb70

Browse files
authored
Merge pull request #29 from Distributive-Network/feature/deserialize-job-event-callback-parameters
Deserialize Job Event Params
2 parents a9d5969 + dfe1623 commit 9d5cb70

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

dcp/api/job.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,27 @@ def wait(self):
167167
return dry.aio.blockify(self._wait)()
168168

169169
def on(self, *args):
170+
# deserialize job on event parameters before passing them to user defined callback
171+
def cb_deserialize_wrapper(callback):
172+
def new_cb(*inner_args):
173+
new_args = []
174+
for arg in inner_args:
175+
if isinstance(arg, dict):
176+
for key in arg:
177+
arg[key] = deserialize(arg[key], self.serializers)
178+
new_args.append(deserialize(arg, self.serializers))
179+
return callback(*new_args)
180+
return new_cb
181+
170182
if len(args) > 1 and callable(args[1]):
171183
event_name = args[0]
172-
event_cb = args[1]
184+
event_cb = cb_deserialize_wrapper(args[1])
173185
self.js_ref.on(event_name, event_cb)
174186
else:
175187
event_name = args[0]
176188
def decorator(fn):
177-
self.js_ref.on(event_name, fn)
189+
event_cb = cb_deserialize_wrapper(fn)
190+
self.js_ref.on(event_name, event_cb)
178191
return decorator
179192
return Job
180193

0 commit comments

Comments
 (0)