Release Notes

bpack v1.2.0 (UNRELEASED)

  • Drop support to Python 3.7 and 3.8. Now bpack requires Python >= 3.9.

  • New ‘full’ installation option added to pyproject.toml.

  • No longer use deprecated syntax in sphinx configuration.

  • Improved documentation and fixed typos.

  • flake8 configuration moved to a dedicated file.

  • Do not test the backend in PyPy3.

  • New functions: - bpack.typing.type_params_to_str() - bpack.descriptors.flat_fields_iterator()

  • New module. It includes tool to generate flat binary record descriptors starting from nested ones (requires Python >= 3.10).

bpack v1.1.0 (15/04/2023)

  • Added support for signed integers to Both standard signed integers and integers encoded with sign and module are now supported.

  • Use uppercase enums in example.

  • Improved docstrings in

  • Fixed several typos.

bpack v1.0.0 (05/02/2023)

  • Fix compatibility with Python v3.11.

  • Move setup configuration from setup.cfg to pyproject.toml.

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, 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 and backends. Previously only “decoding” was supported. The only implements a partial support to encoding currently.

bpack v0.7.1 (08/03/2021)

  • Improved User Guide

  • 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 from 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