Skip to content

Commit 9483332

Browse files
committed
fix(set_message): encode strings if field is bytes
Signed-off-by: Russ Webber <[email protected]>
1 parent 3327b1d commit 9483332

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

rosidl_runtime_py/set_message.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929

3030
def set_message_fields(
31-
msg: Any, values: Dict[str, str], expand_header_auto: bool = False,
31+
msg: Any, values: Dict[str, Any], expand_header_auto: bool = False,
3232
expand_time_now: bool = False) -> List[Any]:
3333
"""
3434
Set the fields of a ROS message.
@@ -52,7 +52,7 @@ def set_message_fields(
5252
timestamp_fields = []
5353

5454
def set_message_fields_internal(
55-
msg: Any, values: Dict[str, str],
55+
msg: Any, values: Dict[str, Any],
5656
timestamp_fields: List[Any]) -> List[Any]:
5757
try:
5858
items = values.items()
@@ -70,6 +70,8 @@ def set_message_fields_internal(
7070
value = numpy.array(field_value, dtype=field.dtype)
7171
elif type(field_value) is field_type:
7272
value = field_value
73+
elif field_type is bytes and type(field_value) is str:
74+
value = field_value.encode()
7375
# We can't import these types directly, so we use the qualified class name to
7476
# distinguish them from other fields
7577
elif qualified_class_name == 'std_msgs.msg._header.Header' and \

0 commit comments

Comments
 (0)