mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-25 03:08:27 +08:00
rpctool: change call syntax
This commit is contained in:
parent
39dfbb4162
commit
af4be9a2e2
@ -71,18 +71,7 @@ def list_methods(remote):
|
||||
|
||||
def call_method(remote, method_name, args):
|
||||
method = getattr(remote, method_name)
|
||||
if args != []:
|
||||
args = eval(" ".join(args))
|
||||
try:
|
||||
iter(args)
|
||||
except TypeError:
|
||||
# not iterable
|
||||
ret = method(args)
|
||||
else:
|
||||
# iterable
|
||||
ret = method(*args)
|
||||
else:
|
||||
ret = method()
|
||||
ret = method(*[eval(arg) for arg in args])
|
||||
if ret is not None:
|
||||
print("{}".format(ret))
|
||||
|
||||
|
@ -56,20 +56,15 @@ in order to call remote functions of an ARTIQ controller.
|
||||
$ artiq_rpctool.py ::1 3253 call -t lda set_attenuation 5
|
||||
|
||||
In general, to call a function named ``f`` with N arguments named
|
||||
respectively ``x1, x2, ..., xN``.
|
||||
respectively ``x1, x2, ..., xN`` you can do::
|
||||
|
||||
You must pass them as a Python iterable object::
|
||||
|
||||
$ artiq_rpctool.py hostname port call -t target f '(x1, x2, ..., xN)'
|
||||
$ artiq_rpctool.py hostname port call -t target f x1 x2 ... xN
|
||||
|
||||
You can use Python syntax to compute arguments as they will be passed
|
||||
to the ``eval()`` primitive::
|
||||
to the ``eval()`` primitive. But beware to use quotes to separate
|
||||
arguments which use spaces::
|
||||
|
||||
$ artiq_rpctool.py hostname port call -t target f '(x*3+5 for x in range(8))'
|
||||
$ artiq_rpctool.py hostname port call -t target f 'range(5)'
|
||||
|
||||
If you only need one argument, you don't need to pass an iterable, a
|
||||
single value is accepted.
|
||||
$ artiq_rpctool.py hostname port call -t target f '3 * 4 + 2' True '[1, 2]'
|
||||
|
||||
If the called function has a return value, it will get printed to
|
||||
the standard output if the value is not None like in the standard
|
||||
|
Loading…
Reference in New Issue
Block a user