Update lint
This commit is contained in:
+4
-4
@@ -117,7 +117,7 @@ def deserialize_array(rawdata: bytes, bmap: BasetypeMap, pos: int, num: int, des
|
||||
|
||||
size = SIZEMAP[desc.args]
|
||||
pos = (pos + size - 1) & -size
|
||||
ndarr = numpy.frombuffer(rawdata, dtype=desc.args, count=num, offset=pos) # type: ignore
|
||||
ndarr = numpy.frombuffer(rawdata, dtype=desc.args, count=num, offset=pos)
|
||||
if (bmap is BASETYPEMAP_LE) != (sys.byteorder == 'little'):
|
||||
ndarr = ndarr.byteswap() # no inplace on readonly array
|
||||
return ndarr, pos + num * SIZEMAP[desc.args]
|
||||
@@ -297,7 +297,7 @@ def serialize_message(
|
||||
rawdata: memoryview,
|
||||
bmap: BasetypeMap,
|
||||
pos: int,
|
||||
message: Any,
|
||||
message: object,
|
||||
msgdef: Msgdef,
|
||||
) -> int:
|
||||
"""Serialize a message.
|
||||
@@ -369,7 +369,7 @@ def get_array_size(desc: Descriptor, val: Array, size: int) -> int:
|
||||
raise SerdeError(f'Nested arrays {desc!r} are not supported.') # pragma: no cover
|
||||
|
||||
|
||||
def get_size(message: Any, msgdef: Msgdef, size: int = 0) -> int:
|
||||
def get_size(message: object, msgdef: Msgdef, size: int = 0) -> int:
|
||||
"""Calculate size of serialzied message.
|
||||
|
||||
Args:
|
||||
@@ -413,7 +413,7 @@ def get_size(message: Any, msgdef: Msgdef, size: int = 0) -> int:
|
||||
|
||||
|
||||
def serialize(
|
||||
message: Any,
|
||||
message: object,
|
||||
typename: str,
|
||||
little_endian: bool = sys.byteorder == 'little',
|
||||
) -> memoryview:
|
||||
|
||||
@@ -38,6 +38,6 @@ def test_roundtrip(mode: Writer.CompressionMode, tmp_path: Path) -> None:
|
||||
rconnection, _, raw = next(gen)
|
||||
assert rconnection == wconnection
|
||||
msg = deserialize_cdr(raw, rconnection.msgtype)
|
||||
assert msg.data == Foo.data
|
||||
assert getattr(msg, 'data', None) == Foo.data
|
||||
with pytest.raises(StopIteration):
|
||||
next(gen)
|
||||
|
||||
@@ -39,6 +39,6 @@ def test_roundtrip(tmp_path: Path, fmt: Optional[Writer.CompressionFormat]) -> N
|
||||
gen = rbag.messages()
|
||||
connection, _, raw = next(gen)
|
||||
msg = deserialize_cdr(ros1_to_cdr(raw, connection.msgtype), connection.msgtype)
|
||||
assert msg.data == Foo.data
|
||||
assert getattr(msg, 'data', None) == Foo.data
|
||||
with pytest.raises(StopIteration):
|
||||
next(gen)
|
||||
|
||||
+23
-14
@@ -13,7 +13,10 @@ import pytest
|
||||
from rosbags.serde import SerdeError, cdr_to_ros1, deserialize_cdr, ros1_to_cdr, serialize_cdr
|
||||
from rosbags.serde.messages import get_msgdef
|
||||
from rosbags.typesys import get_types_from_msg, register_types
|
||||
from rosbags.typesys.types import builtin_interfaces__msg__Time, std_msgs__msg__Header
|
||||
from rosbags.typesys.types import builtin_interfaces__msg__Time as Time
|
||||
from rosbags.typesys.types import geometry_msgs__msg__Polygon as Polygon
|
||||
from rosbags.typesys.types import sensor_msgs__msg__MagneticField as MagneticField
|
||||
from rosbags.typesys.types import std_msgs__msg__Header as Header
|
||||
|
||||
from .cdr import deserialize, serialize
|
||||
|
||||
@@ -184,6 +187,7 @@ def _comparable() -> Generator[None, None, None]:
|
||||
|
||||
Notes:
|
||||
This solution is necessary as numpy.ndarray is not directly patchable.
|
||||
|
||||
"""
|
||||
frombuffer = numpy.frombuffer
|
||||
|
||||
@@ -195,16 +199,16 @@ def _comparable() -> Generator[None, None, None]:
|
||||
class CNDArray(MagicMock):
|
||||
"""Mock ndarray."""
|
||||
|
||||
def __init__(self, *args: Any, **kwargs: Any):
|
||||
def __init__(self, *args: Any, **kwargs: Any): # noqa: ANN401
|
||||
super().__init__(*args, **kwargs)
|
||||
self.__eq__ = arreq # type: ignore
|
||||
|
||||
def byteswap(self, *args: Any) -> 'CNDArray':
|
||||
def byteswap(self, *args: Any) -> CNDArray: # noqa: ANN401
|
||||
"""Wrap return value also in mock."""
|
||||
return CNDArray(wraps=self._mock_wraps.byteswap(*args))
|
||||
|
||||
def wrap_frombuffer(*args: Any, **kwargs: Any) -> CNDArray:
|
||||
return CNDArray(wraps=frombuffer(*args, **kwargs)) # type: ignore
|
||||
def wrap_frombuffer(*args: Any, **kwargs: Any) -> CNDArray: # noqa: ANN401
|
||||
return CNDArray(wraps=frombuffer(*args, **kwargs))
|
||||
|
||||
with patch.object(numpy, 'frombuffer', side_effect=wrap_frombuffer):
|
||||
yield
|
||||
@@ -217,7 +221,7 @@ def test_serde(message: tuple[bytes, str, bool]) -> None:
|
||||
|
||||
serdeser = serialize_cdr(deserialize_cdr(rawdata, typ), typ, is_little)
|
||||
assert serdeser == serialize(deserialize(rawdata, typ), typ, is_little)
|
||||
assert serdeser == rawdata[0:len(serdeser)]
|
||||
assert serdeser == rawdata[:len(serdeser)]
|
||||
assert len(rawdata) - len(serdeser) < 4
|
||||
assert all(x == 0 for x in rawdata[len(serdeser):])
|
||||
|
||||
@@ -227,6 +231,7 @@ def test_deserializer() -> None:
|
||||
"""Test deserializer."""
|
||||
msg = deserialize_cdr(*MSG_POLY[:2])
|
||||
assert msg == deserialize(*MSG_POLY[:2])
|
||||
assert isinstance(msg, Polygon)
|
||||
assert len(msg.points) == 2
|
||||
assert msg.points[0].x == 1
|
||||
assert msg.points[0].y == 2
|
||||
@@ -237,6 +242,7 @@ def test_deserializer() -> None:
|
||||
|
||||
msg = deserialize_cdr(*MSG_MAGN[:2])
|
||||
assert msg == deserialize(*MSG_MAGN[:2])
|
||||
assert isinstance(msg, MagneticField)
|
||||
assert 'MagneticField' in repr(msg)
|
||||
assert msg.header.stamp.sec == 708
|
||||
assert msg.header.stamp.nanosec == 256
|
||||
@@ -248,6 +254,7 @@ def test_deserializer() -> None:
|
||||
|
||||
msg_big = deserialize_cdr(*MSG_MAGN_BIG[:2])
|
||||
assert msg_big == deserialize(*MSG_MAGN_BIG[:2])
|
||||
assert isinstance(msg_big, MagneticField)
|
||||
assert msg.magnetic_field == msg_big.magnetic_field
|
||||
|
||||
|
||||
@@ -285,7 +292,7 @@ def test_serializer_errors() -> None:
|
||||
class Foo: # pylint: disable=too-few-public-methods
|
||||
"""Dummy class."""
|
||||
|
||||
coef = numpy.array([1, 2, 3, 4])
|
||||
coef: numpy.ndarray[Any, numpy.dtype[numpy.int_]] = numpy.array([1, 2, 3, 4])
|
||||
|
||||
msg = Foo()
|
||||
ret = serialize_cdr(msg, 'shape_msgs/msg/Plane', True)
|
||||
@@ -376,7 +383,8 @@ def test_custom_type() -> None:
|
||||
def test_ros1_to_cdr() -> None:
|
||||
"""Test ROS1 to CDR conversion."""
|
||||
register_types(dict(get_types_from_msg(STATIC_16_64, 'test_msgs/msg/static_16_64')))
|
||||
msg_ros = (b'\x01\x00' b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_ros = (b'\x01\x00'
|
||||
b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_cdr = (
|
||||
b'\x00\x01\x00\x00'
|
||||
b'\x01\x00'
|
||||
@@ -386,7 +394,8 @@ def test_ros1_to_cdr() -> None:
|
||||
assert ros1_to_cdr(msg_ros, 'test_msgs/msg/static_16_64') == msg_cdr
|
||||
|
||||
register_types(dict(get_types_from_msg(DYNAMIC_S_64, 'test_msgs/msg/dynamic_s_64')))
|
||||
msg_ros = (b'\x01\x00\x00\x00X' b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_ros = (b'\x01\x00\x00\x00X'
|
||||
b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_cdr = (
|
||||
b'\x00\x01\x00\x00'
|
||||
b'\x02\x00\x00\x00X\x00'
|
||||
@@ -399,7 +408,8 @@ def test_ros1_to_cdr() -> None:
|
||||
def test_cdr_to_ros1() -> None:
|
||||
"""Test CDR to ROS1 conversion."""
|
||||
register_types(dict(get_types_from_msg(STATIC_16_64, 'test_msgs/msg/static_16_64')))
|
||||
msg_ros = (b'\x01\x00' b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_ros = (b'\x01\x00'
|
||||
b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_cdr = (
|
||||
b'\x00\x01\x00\x00'
|
||||
b'\x01\x00'
|
||||
@@ -409,7 +419,8 @@ def test_cdr_to_ros1() -> None:
|
||||
assert cdr_to_ros1(msg_cdr, 'test_msgs/msg/static_16_64') == msg_ros
|
||||
|
||||
register_types(dict(get_types_from_msg(DYNAMIC_S_64, 'test_msgs/msg/dynamic_s_64')))
|
||||
msg_ros = (b'\x01\x00\x00\x00X' b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_ros = (b'\x01\x00\x00\x00X'
|
||||
b'\x00\x00\x00\x00\x00\x00\x00\x02')
|
||||
msg_cdr = (
|
||||
b'\x00\x01\x00\x00'
|
||||
b'\x02\x00\x00\x00X\x00'
|
||||
@@ -418,7 +429,7 @@ def test_cdr_to_ros1() -> None:
|
||||
)
|
||||
assert cdr_to_ros1(msg_cdr, 'test_msgs/msg/dynamic_s_64') == msg_ros
|
||||
|
||||
header = std_msgs__msg__Header(stamp=builtin_interfaces__msg__Time(42, 666), frame_id='frame')
|
||||
header = Header(stamp=Time(42, 666), frame_id='frame')
|
||||
msg_ros = cdr_to_ros1(serialize_cdr(header, 'std_msgs/msg/Header'), 'std_msgs/msg/Header')
|
||||
assert msg_ros == b'\x00\x00\x00\x00*\x00\x00\x00\x9a\x02\x00\x00\x05\x00\x00\x00frame'
|
||||
|
||||
@@ -426,7 +437,6 @@ def test_cdr_to_ros1() -> None:
|
||||
@pytest.mark.usefixtures('_comparable')
|
||||
def test_padding_empty_sequence() -> None:
|
||||
"""Test empty sequences do not add item padding."""
|
||||
# pylint: disable=protected-access
|
||||
register_types(dict(get_types_from_msg(SU64_B, 'test_msgs/msg/su64_b')))
|
||||
|
||||
su64_b = get_msgdef('test_msgs/msg/su64_b').cls
|
||||
@@ -446,7 +456,6 @@ def test_padding_empty_sequence() -> None:
|
||||
@pytest.mark.usefixtures('_comparable')
|
||||
def test_align_after_empty_sequence() -> None:
|
||||
"""Test alignment after empty sequences."""
|
||||
# pylint: disable=protected-access
|
||||
register_types(dict(get_types_from_msg(SU64_U64, 'test_msgs/msg/su64_u64')))
|
||||
|
||||
su64_b = get_msgdef('test_msgs/msg/su64_u64').cls
|
||||
|
||||
@@ -49,7 +49,7 @@ def test_add_connection(tmp_path: Path) -> None:
|
||||
|
||||
with Writer(path) as writer:
|
||||
res = writer.add_connection('/foo', 'test_msgs/msg/Test', 'MESSAGE_DEFINITION', 'HASH')
|
||||
assert res.cid == 0
|
||||
assert res.cid == 0
|
||||
data = path.read_bytes()
|
||||
assert data.count(b'MESSAGE_DEFINITION') == 2
|
||||
assert data.count(b'HASH') == 2
|
||||
@@ -57,7 +57,7 @@ def test_add_connection(tmp_path: Path) -> None:
|
||||
|
||||
with Writer(path) as writer:
|
||||
res = writer.add_connection('/foo', 'std_msgs/msg/Int8')
|
||||
assert res.cid == 0
|
||||
assert res.cid == 0
|
||||
data = path.read_bytes()
|
||||
assert data.count(b'int8 data') == 2
|
||||
assert data.count(b'27ffa0c9c4b8fb8492252bcad9e5c57b') == 2
|
||||
@@ -85,7 +85,7 @@ def test_add_connection(tmp_path: Path) -> None:
|
||||
'HASH',
|
||||
latching=1,
|
||||
)
|
||||
assert (res1.cid, res2.cid, res3.cid) == (0, 1, 2)
|
||||
assert (res1.cid, res2.cid, res3.cid) == (0, 1, 2)
|
||||
|
||||
|
||||
def test_write_errors(tmp_path: Path) -> None:
|
||||
|
||||
Reference in New Issue
Block a user