Skip to content

v0.10.0

Compare
Choose a tag to compare
@c4deszes c4deszes released this 02 Oct 21:39
· 33 commits to master since this release
7ce0638

Added

  • LinVersion class was added that allows better version handling than the previous floating point
    values
  • Event Triggered Frames are now parsed correctly and stored in LinEventTriggeredFrame objects
  • Pylint has been introduced into the CI pipeline

Changed

  • Tabs have been replaced with spaces in order to conform with PEP8
  • Frame, Signal and LDF classes were moved into their on modules
  • Unconditional frame handling has been moved from LinFrame class into LinUnconditionalFrame
  • Language and protocol version is now parsed as strings, see migration guide for more information
  • LDF class has been completely replaced, see migration guide on how to update

Fixed

  • Fixed configurable frames being resolved with None when event triggered frames were referenced

Deprecated

  • parseLDF, parseLDFtoDict, parseComments were deprecated in favor of the same methods with a
    snake case signature

  • LDF::frame(x), LDF::signal(x), LDF::slave(x) were deprecated, they were replaced with proper
    getters but those contracts are slightly different

It's recommended to replace the deprecated functions as they will be removed in 1.0.0, most of
them have drop in replacements.

Migration guide for 0.10.0

Imports and classes

  • A few modules were reorganized, this might cause certain import statements to be broken, imports
    that only use the ldfparser package are backwards compatible

  • Previously LinFrame represented unconditional frames and was used to encode and decode frames,
    this was changed in order to support the other frame types later. LinFrame now only contains
    the most basic properties, name and identifier, while the rest has been transferred out into
    LinUnconditionalFrame and LinEventTriggeredFrame. This change should only affect scripts that
    directly reference the LinFrame class, when using queries through the LDF objects the behavior
    is identical.

Dictionary object

  • protocol_version and language_version were changed to be of string type, the previous floating
    point values were good for comparing versions but it's overall problematic due to precision issues,
    if you still need floating point values then you must convert them in your scripts

LDF object

  • Previously the LDF class contained only a few methods that allowed searching in the collections,
    but everything else had to be accessed through the member fields. This is changed in 0.10.0 in
    order to allow a better deprecation process in the future.
    • All fields have been prefixed with _ to mark them as internal, they should not be accessed
      directly
    • Getters were added, they are direct replacements of the old member fields, e.g.: ldf.signals
      was replaced with ldf.get_signals()
    • Lookup methods in the LDF are now more performant because they don't rely on linear search, however
      the behavior was changed, instead of returning None the new methods will raise a LookupError
    • Properties are used to keep compatibility with older versions where these fields are referenced,
      in the future there may be warnings enabled and possibly removed in later releases

Parsing

  • Replace ldf.parseLDF(x) with ldf.parse_ldf(x), signatures are slightly different but functionally identical
  • Replace ldf.parseLDFtoDict(x) with ldf.parse_ldf_to_dict(x)