An exception is thrown anytime a string appears in a BYTES directive (#220) that is not utf-8 decodeable. Using the dialogue pair
- q: "BYTES(\xaa\x55\x00\x02\x08\x01\xf4)"
r: "BYTES(\xaa\x55\x00\x02\x08\x01\xf4)"
my project's test suite fails with the traceback
Traceback (most recent call last):
File "/home/user/python-project/tests/test_tpi.py", line 20, in setUp
self.tpi = package.aux_control.TPI_RF_Generator("ASRL1::INSTR")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/home/user/python-project/package/aux_control.py", line 876, in __init__
if self._query(TPI_CMD["set_user_control"]) != TPI_CMD["set_user_control"]:
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/python-project/package/aux_control.py", line 1093, in _query
self._write(command, value)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/home/user/python-project/package/aux_control.py", line 919, in _write
bytes_written = self._instrument.write_raw(packet)
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa/resources/messagebase
d.py", line 173, in write_raw
return self.visalib.write(self.session, message)[0]
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa_sim/highlevel.py", li
ne 290, in write
return sess.write(data) # type: ignore
~~~~~~~~~~^^^^^^
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa_sim/sessions/serial.p
y", line 59, in write
self.device.write(val)
~~~~~~~~~~~~~~~~~^^^^^
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa_sim/devices.py", line
317, in write
response = self._match(message)
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa_sim/devices.py", line
423, in _match
response = self._match_setters(query)
File "/home/user/python-project/.venv/lib/python3.14/site-packages/pyvisa_sim/component.py", li
ne 418, in _match_setters
q = query.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 0: invalid start byte
I was able to solve this by replacing a few instances of utf-8 codec in the source with latin-1. However, this limits the dialogue definitions and properties to the latin-1 codec only, preventing simulation of devices that use characters outside of latin-1. This is why I open the issue: to ask whether this change could negatively impact some users. If anyone knows of devices relevant to PyVISA which use utf-8 strings in the I/O protocol, please mention it in a reply. Also, feedback on alternate implementation of the fix are welcome.
An exception is thrown anytime a string appears in a BYTES directive (#220) that is not utf-8 decodeable. Using the dialogue pair
my project's test suite fails with the traceback
I was able to solve this by replacing a few instances of utf-8 codec in the source with latin-1. However, this limits the dialogue definitions and properties to the latin-1 codec only, preventing simulation of devices that use characters outside of latin-1. This is why I open the issue: to ask whether this change could negatively impact some users. If anyone knows of devices relevant to PyVISA which use utf-8 strings in the I/O protocol, please mention it in a reply. Also, feedback on alternate implementation of the fix are welcome.