rosidl_python
rosidl_python copied to clipboard
byte[] AKA IDL sequence<octet> fields required to be sequence of bytes instances instead of bytes instance
Bug report
Required Info:
- Operating System:
- focal
- Installation type:
- source
- Version or commit hash:
- master
- DDS implementation:
- n/a
- Client library (if applicable):
- rclpy
Steps to reproduce issue
from test_msgs.msg import UnboundedSequences
msg = UnboundedSequences()
msg.byte_values = b'ffff'
Expected behavior
A bytes
instance should be accepted, as it is the type documented in the design doc.
http://design.ros2.org/articles/idl_interface_definition.html
Actual behavior
>>> from test_msgs.msg import UnboundedSequences
>>> msg = UnboundedSequences()
>>> msg.byte_values = msg.byte_values = b'ffff'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/sloretz/ws/ros2/install/test_msgs/lib/python3.8/site-packages/test_msgs/msg/_unbounded_sequences.py", line 466, in byte_values
assert \
AssertionError: The 'byte_values' field must be a set or sequence and each value of type 'bytes'
It only accepts a sequence of bytes instances
msg.byte_values = (b'ff', b'ff')
Additional information
I noticed while reviewing #129