Skip to content

Commit bdff89a

Browse files
authored
feat: Replace cbor with cbor2 library, remove inline implementation (backport #1107) (#1109)
* feat: Replace cbor with cbor2 library, remove inline implementation * Add simple test for encoding ROS message to CBOR
1 parent 061544c commit bdff89a

File tree

6 files changed

+26
-487
lines changed

6 files changed

+26
-487
lines changed

rosbridge_library/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ ROS action, like subscribe, publish, call service, and interact with params.
2020
<buildtool_depend>ament_cmake_python</buildtool_depend>
2121

2222
<exec_depend>python3-bson</exec_depend>
23+
<exec_depend>python3-cbor2</exec_depend>
2324
<exec_depend>python3-numpy</exec_depend>
2425
<exec_depend>python3-pil</exec_depend>
2526
<exec_depend>python3-ujson</exec_depend>

rosbridge_library/src/rosbridge_library/internal/cbor_conversion.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import struct
44
from typing import TYPE_CHECKING, Any
55

6-
try:
7-
from cbor import Tag
8-
except ImportError:
9-
from rosbridge_library.util.cbor import Tag
6+
from cbor2 import CBORTag
107

118
if TYPE_CHECKING:
129
from rosbridge_library.internal.type_support import ROSMessage
@@ -99,7 +96,7 @@ def extract_cbor_values(msg: ROSMessage) -> dict[str, Any]:
9996
tag, fmt = TAGGED_ARRAY_FORMATS[slot_type]
10097
fmt_to_length = fmt.format(len(val))
10198
packed = struct.pack(fmt_to_length, *val)
102-
out[slot] = Tag(tag=tag, value=packed)
99+
out[slot] = CBORTag(tag=tag, value=packed)
103100

104101
# array of messages
105102
elif type(val) in LIST_TYPES:

rosbridge_library/src/rosbridge_library/internal/outgoing_message.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@
22

33
from typing import Any, Generic
44

5+
from cbor2 import dumps as encode_cbor
6+
57
from rosbridge_library.internal.cbor_conversion import extract_cbor_values
68
from rosbridge_library.internal.message_conversion import (
79
extract_values as extract_json_values,
810
)
911
from rosbridge_library.internal.type_support import ROSMessageT
1012

11-
try:
12-
from cbor import dumps as encode_cbor
13-
except ImportError:
14-
from rosbridge_library.util.cbor import dumps as encode_cbor
15-
1613

1714
class OutgoingMessage(Generic[ROSMessageT]):
1815
"""A message wrapper for caching encoding operations."""

0 commit comments

Comments
 (0)