DevEncoded/bytearray commands flawed in Python 3
(using PyTango 9.3.0, Python 3.7.3)
In a test Tango server, I have the following command:
@command(dtype_in=bytearray)
def DevSerWriteChar(self, chars):
self.buf += chars
When calling it from a PyTango client like this:
>>> dev_proxy.DevSerWriteChar(bytearray(b"HELLO"))
I get the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/device_proxy.py", line 243, in f
return dp.command_inout(name, *args, **kwds)
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/green.py", line 195, in greener
return executor.run(fn, args, kwargs, wait=wait, timeout=timeout)
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/green.py", line 109, in run
return fn(*args, **kwargs)
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/connection.py", line 108, in __Connection__command_inout
r = Connection.command_inout_raw(self, name, *args, **kwds)
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/connection.py", line 136, in __Connection__command_inout_raw
param = __get_command_inout_param(self, cmd_name, cmd_param)
File "/home/matias/miniconda2/envs/bliss/lib/python3.7/site-packages/tango/connection.py", line 57, in __get_command_inout_param
param.insert(info.in_type, cmd_param)
TypeError: No registered converter was able to extract a C++ pointer to type char from this Python object of type int
As far as I have seen, bytearray
is converted to DevEncoded
- but it seems something is missing to handle it properly ? Or maybe I am doing something wrong ?