NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
LDF Language support for Python
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 9 months
Nearly every release is documented
notes for 35 of 35 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
35 releases · first in 2020
One column per quarter.
Empty signal encoders are now allowed
signal.framessignal.frames to determine the owners of a signal, for
compatibility reasons signal.frame is still set, but only when a signal is associated with one
frame0-X, for example 49.9 is no longer
rounded down to 49. If this is undesired the user can in most cases offset the input by 0.5 and
it should work as previously as -0.5 rounds to 0, check
Python's round function for more.Signals overlapping error message now includes relevant information
scientific/engineeering notation values can now have upper case E
Padding in a frame can now be changed from zeros to padding with ones
Support for J2602 slave node attributes:
wakeup_time, poweron_timeAdd support for encode/decode frame with byte array signals
Support for SAE J2602 legacy version
max_header_length, response_tolerance for the master noderesponse_tolerance for slave node attributesLinUnconditionalFrame::decode no longer calls the deprecated parse_raw function
LDF_file_revisionLDF::get_frame can now return diagnostic framesLinSlave protocol version property is now the correct typeLinUnconditionalFrame::decode no longer calls the deprecated parse_raw functionRemove tests folder from python package
tests folder from python packageDiagnostic addresses section in LIN 1.3 description files are now parsed correctly, the initial_nad and configured_nad attributes will be set accordin
initial_nad and configured_nad attributes will be set according to the addressSporadic frames are parsed into Python objects
pyinstallerLDF::get_frame can also return sporadic framesBCD values are now checked when decoding physical values
The breaking change in lark that impacts ldfparser is the change in the dependency's name. Since the module name is still lark it causes two dependenc…
LDF objects can now be saved as .ldf files (experimental)LDF object now has functions to lookup encoding typesLinSignal now reference the LinUnconditionalFrame they're inlark-parser dependency to first major version, see Lark release notesLdfTransformer has been moved to a separate modulelark that impacts ldfparser is the change in the dependency's name.
Since the module name is still lark it causes two dependencies to refer to the same package
files. If you now install lark or ldfparser==0.14.0 and then you uninstall lark-parser
you will have to reinstall the lark dependency.P2_min, ST_min and N_As and N_Cr timeout default values are now set correctly
P2_min, ST_min and N_As and N_Cr timeout default values are now set correctlySchedule tables are now parsed into Python objects
UnassignFrameId command to JSON schemaldf['schedule_tables'][id]['schedule'][entry]['delay'] that assumes that
milliseconds are used as the unit has to be updated to either multiply the current value by 1000
or somehow change the assumption about the unit to seconds.
All numeric values that have an associated unit have their SI prefix removed during parsing, for
example kbps is converted into bps. The schedule entry delay was one case where it wasn't
handled accordingly.Diagnostic frames and signals are now parsed
LinUnconditionalFrame can be encoded using a List of signal valuesScientific notation is now allowed when providing floating point values
LinUnconditionalFrame's parse, parse_raw, data and raw functions were deprecated in favor of the new encoding functions
LinSignal now has a reference to it's signal representationldf.converters, instead it will try to use the default encoders but still allow users to override
the encoding type locally.LinUnconditionalFrame's parse, parse_raw, data and raw functions were deprecated in
favor of the new encoding functionsparseLDF, parseLDFtoDict, parseComments were deprecated in favor of the same methods with a snake case signature
LinVersion class was added that allows better version handling than the previous floating point
valuesLinEventTriggeredFrame objectsLinFrame class into LinUnconditionalFrameNone when event triggered frames were referencedparseLDF, 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.
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.
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 scripts0.10.0 in
order to allow a better deprecation process in the future.
_ to mark them as internal, they should not be accessed
directlyldf.signals
was replaced with ldf.get_signals()None the new methods will raise a LookupErrorldf.parseLDF(x) with ldf.parse_ldf(x), signatures are slightly different but functionally identicalldf.parseLDFtoDict(x) with ldf.parse_ldf_to_dict(x)Missing node attributes: Response Error, Fault State Signals and Configurable frames are now linked to the LinSlave object
LinSlave object ( #66 )Fixed ASCII and BCD encoding types missing from the syntax ( #56 ) by @Jules-L
subscribed_to variable on LinSlave containing the wrong objects ( #59 )Nodes section before the colons ( #61 )Standard JSON schema for parsed LDFs
KeyError instead of ValueErrorFixes frame encoder incorrectly encoding zero valued signals into their initial values
Fixes frame encoder incorrectly encoding zero valued signals into their initial values ( #40 )
Adds a CLI interface for basic LDF tasks (#33), entrypoint is added, documentation available in the docs folder LDF container now contains the source
Adds a CLI interface for basic LDF tasks (#33), entrypoint is added, documentation available in the docs folder
LDF container now contains the source dictionary, may be removed in the future for performance reasons
Frames are now linked to the publishing node
Variant value now defaults to 0 instead of None
Fixes signals incorrectly being appended to the published frame list
Signal and LIN node objects are now linked when subscribers and publishers are specified Signals with no subscribers are now allowed, while this is no
Signal and LIN node objects are now linked when subscribers and publishers are specified Signals with no subscribers are now allowed, while this is not to spec. OEMs use it ( @kayoub5 )
The following node attributes are now parsed into the LDF objects
Node attributes section can now be empty ( @kayoub5 )
Schedule table commands are now correctly parsed
Fixed AssignFrameIdRange command syntax in schedule tables ( #18 ) Allows specifying the file encoding when parsing LDF files ( #19 ) Updated comment
Fixed AssignFrameIdRange command syntax in schedule tables ( #18 ) Allows specifying the file encoding when parsing LDF files ( #19 ) Updated comment syntax to the one used in lark commons ( #17 ) this requires lark-parser >= 0.10.0
Thanks to @kayoub5 for the contributions
Added support for capturing comments present in the LDF Fixed empty block comments not being allowed
Added support for capturing comments present in the LDF Fixed empty block comments not being allowed
Reworked Lark parser to better support different LDF versions, 1.3 to 2.2 should be supported Created factory method for parsing LDF files, this break
Reworked Lark parser to better support different LDF versions, 1.3 to 2.2 should be supported Created factory method for parsing LDF files, this breaks scripts still using 0.4.1 and below Created method for converting LDF into dictionary, example showcases this feature Added support for reading node attributes Added support for array type signals Added support for BCD and ASCII values
Fixed multiple slaves not being allowed in the LDF, specified in the LIN standard, section 9.2.2.1
Fixed multiple slaves not being allowed in the LDF, specified in the LIN standard, section 9.2.2.1
Added support for comments as specified in the LIN standard, section 9.3
Added support for comments as specified in the LIN standard, section 9.3
Fixed signal encoding/decoding using MSB instead of LSB order specified in the LIN 2.1 standard
Fixed signal encoding/decoding using MSB instead of LSB order specified in the LIN 2.1 standard
Fixed negative values not being supported in physical value's scale and offset fields
Fixed negative values not being supported in physical value's scale and offset fields
Added support for LDF header information (version, baudrate)
Added support for LDF header information (version, baudrate)
### Added - Signal encoding support
Frame encoding and decoding support
Your coding agent can read these notes before it upgrades. Set up the MCP server →