In earlier versions, reading past the end of a BitStream raised a ReadError.
Now, it seems that it raises a ValueError. Example:
File "/home/eric/ros_workspace/src/ros_acomms/ros_acomms/src/acomms_codecs/ros_packet_codec.py", line 147, in decode_payload
id = payload_bits.read('uint:8')
File "/home/eric/.local/lib/python3.8/site-packages/bitstring/bitstream.py", line 349, in read
val = dtype.read_fn(self, self._pos)
File "/home/eric/.local/lib/python3.8/site-packages/bitstring/dtypes.py", line 297, in read_fn
return self.get_fn(bs[start:start + length])
File "/home/eric/.local/lib/python3.8/site-packages/bitstring/dtypes.py", line 285, in allowed_length_checked_get_fn
return get_fn(bs)
File "/home/eric/.local/lib/python3.8/site-packages/bitstring/bits.py", line 661, in _getuint
raise bitstring.InterpretError("Cannot interpret a zero length bitstring as an integer.")
ValueError: Cannot interpret a zero length bitstring as an integer.
From the documentation, ReadError is the intended behavior:
Reads from current bit position pos in the bitstring according the format string and returns a single result. If not enough bits are available then a ReadError is raised.
In earlier versions, reading past the end of a
BitStream
raised aReadError
.Now, it seems that it raises a
ValueError
. Example:From the documentation, ReadError is the intended behavior:
Reads from current bit position pos in the bitstring according the format string and returns a single result. If not enough bits are available then a ReadError is raised.