Change Log
This is a log of changes made to the library over time. For planned upcoming changes, please check the GitHub issue list and release milestones.
Version Release Notes
Release notes for the space_packet_parser library
v5.0.1 (released)
BUGFIX: Allow raw_value representation for enums with falsy raw values. Previously these defaulted to the enum label.
v5.0.0 (released)
BREAKING: Main API changed. No need to create separate definition and parser objects any more. Create only a definition from your XTCE document and instead of
my_parser.generator, usemy_packet_definition.packet_generator.BREAKING: Removed CSV-based packet definition support. We may indirectly support this in the future via a utility for converting CSV definitions to XTCE.
BREAKING: Separated out logical pieces into separate modules rather than everything living within the xtcedef module. This means user imports may be different now.
BREAKING: Replace
bitstringobjects with native Python bytes objectsRemove dependency on the
bitstringlibraryMuch faster parsing speed
Users that are passing
bitstring.ConstBitStreamobjects togeneratorwill need to pass a binary filelike object instead
BREAKING: The
ParsedDataItemclass has been removed and the derived values are being returned now. Theraw_valueis stored as an attribute on the returned object. The other items can be accessed through the packet definition objectmy_packet_definition.named_parameters["my_item"].short_descriptionBREAKING: The return type of BinaryDataEncoding is now the raw bytes. To get the previous behavior you can convert the data to an integer and then format it as a binary string.
f"{int.from_bytes(data, byteorder='big'):0{len(data)*8}b}"BREAKING: Removed
word_sizekwarg from packet generator method. We expect all binary data to be integer number of bytes.BREAKING: Changed
packet_generatorkwargskip_header_bitstoskip_header_bytes.Fixed incorrect parsing of StringDataEncoding elements. Raw string values are now returned as byte buffers. Derived string values contain python string objects.
The
CCSDSPacketclass is now a dictionary subclass, enabling direct lookup of items from the Packet itself.A
RawPacketDataclass has been added that is a subclass of bytes. It keeps track of the current parsing location and enables reading of bit lengths as integers or raw bytes.Fix EnumeratedParameterType to handle duplicate labels
Add error reporting for unsupported and invalid parameter types
Add support for MIL-1750A floats (32-bit only)
v4.2.0 (released)
Parse short and long descriptions of parameters
Implement equality checking for SequenceContainer objects and Parameter objects
Include parameter short description and long description in ParsedDataItems
Add support for AbsoluteTimeParameterType and RelativeTimeParameterType
Add support for BooleanParameterType
Drop support for bitstring <4.0.1
Support BooleanExpression in a ContextCalibrator
Default read size is changed to a full file read on file-like objects
Improve error handling for invalid/unsupported parameter types
v4.1.1 (released)
Allow Python 3.12
v4.1.0 (released)
Bugfix in fill_buffer to allow compatibility with Bitstring 4.1.1
Add informative error if user tries to parse a TextIO object
Add documentation of some common issues and add changelog to documentation
v4.0.2 (released)
Documentation updates for Read The Docs
v4.0.1 (released)
Modify API for
PacketParser.generatorto accept a ConstBitStream or a BufferedReader or a socketThis will allow us to keep memory overhead of reading a binary stream to almost zero
Add examples directory to help users
Add CITATION.cff
Add CODE_OF_CONDUCT.md
Historical Changes (lasp_packets)
Changes documented in v3.0 and earlier correspond to development efforts undertaken before this library was
moved to GitHub (it was previously known as lasp_packets).
None of the git history is available for these versions as the git history was truncated
in preparation for the move to Github to prevent accidental release of non-public example data which may be
(but probably isn’t) present in historical commits.
v3.0 (released publicly)
Add a discussion of optimization to the documentation
Change license to BSD3 and CU copyright
Add support for Python 3.10 and 3.11
Remove support for Python 3.6
Redesign the way the parser interprets the SequenceContainer inheritance structure
This allows polymorphic packet structures based on flags in telemetry
Previous functionality is preserved
csvdef module still uses the legacy flattened_containers representation
Add Parser.generator kwargs tdocs/source/index.rsto aid in debugging
Add kwarg to only parse CCSDS headers and skip the user data
Add optional progress bar that prints to stdout when parsing a packets file.
v2.1 (released publicly)
Update documentation on release process
v2.0 (released internally)
Add link in readme to v1.2 Aug 2021 of XTCE spec
Add support for
< xtce:DiscreteLookupList >Add support for
< xtce:Condition >Add support for
< xtce:BooleanExpression >Push the evaluation logic for ParameterTypes down to DataEncodings
Add option to skip an additional header on each packet
Modify RestrictionCriteria parser to evaluate MatchCriteria elements
Add word size as an optional parameter to the parser
Add an optional header name remapping parameter to the parser
Add support for BooleanExpression in a RestrictionCriteria element
v1.3 (released internally)
Expand version compatiblity for python >=3.6, <4
v1.2 (released internally)
Remove unnecessary warning about float data types being IEEE formatted.
Switch package manager to Poetry.
Add support for instantiating definitions with pathlib.Path objects.
v1.1.0 (released internally)
Add support for CSV-based packet definitions (contribution by Michael Chambliss).
v1.0 (released internally)
Add support for all parameter types.
Add support for all data encodings.
Add support for calibrators and contextual calibrators.
Add support for variable length strings given by termination characters or preceding length fields.
Add support for variable length binary data fields in utf-8, utf-16-le, and utf-16-be.
Add build and release documentation to readme.