Release Notes

bpack v0.8.3 (UNRELEASED)

  • TBW

bpack v0.8.2 (20/03/2022)

  • Fallback to standard bitstruct if the bitstruct.c extension does not support the format string

bpack v0.8.1 (30/11/2021)

  • Drop setup.py, no longer needed.

  • Improve compatibility with typing-extensions v4.0 (closes gh-1).

  • Use the compiled extension of bitstruct when available (and compatible with the specified format string).

  • Use cbitsturct when available (preferred over the compiled extension of bitstruct).

bpack v0.8.0 (03/06/2021)

  • New “encoding” feature. Records can be now encoded into binary strings using the bpack.st and bpack.bs backends. Previously only “decoding” was supported. The bpack.np only implements a partial support to encoding currently.

bpack v0.7.1 (08/03/2021)

  • Improved User Guide

  • bpack.np.unpackbits() has been generalized and optimized.

  • New example for packet decoding.

  • Improved support for nested records.

bpack v0.7.0 (21/01/2021)

  • New packbit/unpackbit functions (provisional API).

  • Fixed a bug in decoding of nested records.

  • Added example program for Sentinel-1 space packets decoding

bpack v0.6.0 (15/01/2021)

  • New numpy based backend.

  • New bpack.enums.EByteOrder.get_native() method.

  • Now data types in descriptor definition can also be specified by means of special type annotation type (bpack.typing.T) that accepts numpy-like format strings.

  • Now it is no longer necessary to use the dataclasses.dataclass() decorator to define a descriptor. That way to define descriptors is depercated. All parameters previously specified via dataclasses.dataclass() (like e.g. frozen) shall now be passed directly to the bpack.descriptors.descriptor() decorator. With this change the use of dataclasses becomes an implementation detail.

  • The size parameter of the bpack.descriptors.field() factory function is now optional.

  • General improvements and code refactoring.

  • Improved CI testing.

  • Added automatic spell checking of documentation in CI.

  • Backward incompatible changes:

    • bpack.enums.EBaseUnits, bpack.enums.EByteOrder and bpack.enums.EBitOrder enums moved to the new bpack.enums module (the recommended way to access enums is directly form bpack, e.g. bpack.EByteOrder)

    • bpack.enums.EByteOrder.BIG and bpack.enums.EByteOrder.LITTLE enumerates have been renamed into bpack.enums.EByteOrder.BE and bpack.enums.EByteOrder.LE respectively

    • classes decorated with the bpack.descriptors.descriptor() decorator no longer have the __len__ method automatically added; the recommended way to compute the size of a descriptors (class or instance) is to use the bpack.descriptros.calcsize() function

    • the default behavior of the bpack.decorators.calcsize() has been changed to return the size of the input descriptor in the same base units of the descriptor itself; previously the default behavior was to return the size in bytes

bpack v0.5.0 (31/12/2020)

  • Initial release.

    The package implements all core functionalities but

    • the API is still not stable

    • the documentation is incomplete

    • some advanced feature is still missing