Skip to content

Commit

Permalink
support extracting kwargs
Browse files Browse the repository at this point in the history
  • Loading branch information
oeway committed Oct 2, 2021
1 parent 1dabbe2 commit 39b78e3
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 11 deletions.
2 changes: 1 addition & 1 deletion javascript/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion javascript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "imjoy-rpc",
"version": "0.3.24",
"version": "0.3.25",
"description": "Remote procedure calls for ImJoy.",
"module": "index.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion python/imjoy_rpc/VERSION
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "0.3.24"
"version": "0.3.25"
}
39 changes: 31 additions & 8 deletions python/imjoy_rpc/rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ def pfunc(resolve, reject):
"name": name,
"object_id": plugin_id,
"args": args,
"with_kwargs": bool(kwargs),
"promise": encoded_promise,
}
self._connection.emit(call_func)
Expand Down Expand Up @@ -296,6 +297,7 @@ def pfunc(resolve, reject):
"target_id": target_id,
# 'object_id' : self.id,
"args": self.wrap(arguments),
"with_kwargs": bool(kwargs),
"promise": encoded_promise,
}
)
Expand All @@ -316,6 +318,7 @@ def remote_callback(*arguments, **kwargs):
"target_id": target_id,
# 'object_id' : self.id,
"args": self.wrap(arguments),
"with_kwargs": bool(kwargs),
}
)

Expand Down Expand Up @@ -349,9 +352,11 @@ def _log(self, info):
def _error(self, error):
self._connection.emit({"type": "error", "message": error})

def _call_method(self, method, *args, resolve=None, reject=None, method_name=None):
def _call_method(
self, method, args, kwargs, resolve=None, reject=None, method_name=None
):
try:
result = method(*args)
result = method(*args, **kwargs)
if result is not None and inspect.isawaitable(result):

async def _wait(result):
Expand Down Expand Up @@ -456,20 +461,29 @@ def _handle_method(self, data):
method = index_object(_interface, data["name"])
if "promise" in data:
args = self.unwrap(data["args"], True)
if data.get("with_kwargs"):
kwargs = args.pop()
else:
kwargs = {}
# args.append({'id': self.id})
self._run_with_context(
self._call_method,
method,
*args,
args,
kwargs,
resolve=resolve,
reject=reject,
method_name=data["name"]
method_name=data["name"],
)
else:
args = self.unwrap(data["args"], True)
if data.get("with_kwargs"):
kwargs = args.pop()
else:
kwargs = {}
# args.append({'id': self.id})
self._run_with_context(
self._call_method, method, *args, method_name=data["name"]
self._call_method, method, args, kwargs, method_name=data["name"]
)
except Exception as err:
traceback_error = traceback.format_exc()
Expand All @@ -492,13 +506,18 @@ def _handle_callback(self, data):
"See https://imjoy.io/docs for more details."
)
args = self.unwrap(data["args"], True)
if data.get("with_kwargs"):
kwargs = args.pop()
else:
kwargs = {}
self._run_with_context(
self._call_method,
method,
*args,
args,
kwargs,
resolve=resolve,
reject=reject,
method_name=data["id"]
method_name=data["id"],
)

else:
Expand All @@ -511,8 +530,12 @@ def _handle_callback(self, data):
"See https://imjoy.io/docs for more details."
)
args = self.unwrap(data["args"], True)
if data.get("with_kwargs"):
kwargs = args.pop()
else:
kwargs = {}
self._run_with_context(
self._call_method, method, *args, method_name=data["id"]
self._call_method, method, args, kwargs, method_name=data["id"]
)
except Exception as err:
traceback_error = traceback.format_exc()
Expand Down

0 comments on commit 39b78e3

Please sign in to comment.