Beware! This is a major release! It contains at least the following API changes:
* The `initial` attribute of `Signal` objects now always holds the initial signal value as a scaled quantity, unifying its semantics with that of `Signal.minimum` and `Signal.maximum`. Previously, `initial` used raw values for databases loaded from DBC files, while using scaled ones for databases loaded from ARXML. (The loaders for other file formats do not currently set the `initial` attribute.)
* The machinery for storing decimal numbers without rounding errors (`*.decimal` attributes) has been removed. In its place small rounding errors in load-store-load cycles are now accepted. To remediate this, the resulting database objects can now be compared approximately using the [`Database.is_similar()`](https://github.com/cantools/cantools/blob/master/cantools/database/can/database.py#L144) method.
What's Changed
* Fix BA_DEF_REL_ with empty STRING by zariiii9003 in https://github.com/cantools/cantools/pull/526
* Run ruff linter in CI by zariiii9003 in https://github.com/cantools/cantools/pull/528
* Update bitstruct to >=8.16.1 by zariiii9003 in https://github.com/cantools/cantools/pull/527
* Check for unused imports by zariiii9003 in https://github.com/cantools/cantools/pull/529
* do not intercept raised exceptions in debug mode by andlaus in https://github.com/cantools/cantools/pull/525
* Make scale and offset attribute of Decimal mandatory by zariiii9003 in https://github.com/cantools/cantools/pull/531
* Activate pyflakes check by zariiii9003 in https://github.com/cantools/cantools/pull/530
* Misc fixes by andlaus in https://github.com/cantools/cantools/pull/541
* Add raw_initial, scaled_initial and raw_invalid to Signal by zariiii9003 in https://github.com/cantools/cantools/pull/536
* Improve error message for encoding with incorrect datatype by zariiii9003 in https://github.com/cantools/cantools/pull/542
* Activate pycodestyle checks by zariiii9003 in https://github.com/cantools/cantools/pull/543
* Add option to generate defines for the Signal names when generating C source. by guy-radford-sunswap in https://github.com/cantools/cantools/pull/548
* Add default signal initialization function to C sources generator by ArseniSoitu in https://github.com/cantools/cantools/pull/552
* move the NamedSignalValue class into its own file by andlaus in https://github.com/cantools/cantools/pull/558
* signal: slightly refactor `scaled_to_raw()` and `raw_to_scaled()` by andlaus in https://github.com/cantools/cantools/pull/557
* remove obsolete checks for Python 2 by andlaus in https://github.com/cantools/cantools/pull/560
* C codegen: minor simplifications by andlaus in https://github.com/cantools/cantools/pull/559
* rename `field` to `signal` by andlaus in https://github.com/cantools/cantools/pull/561
* Implement Conversion Classes by zariiii9003 in https://github.com/cantools/cantools/pull/563
* Fix CAN-FD detection for dbc files by 1atabey1 in https://github.com/cantools/cantools/pull/567
* DBC: parse bus comments even when no DBName specified by mon in https://github.com/cantools/cantools/pull/565
* dbc: dump_string: set GenSigStartValue from Signal.raw_initial by malsyned in https://github.com/cantools/cantools/pull/569
* Activate pyflakes-bugbear and flake8-comprehensions checks by zariiii9003 in https://github.com/cantools/cantools/pull/575
* set name option for multiplexer signal by hyihua in https://github.com/cantools/cantools/pull/579
* Move project configuration to pyproject.toml by zariiii9003 in https://github.com/cantools/cantools/pull/583
* Remove usage of Decimal objects by andlaus in https://github.com/cantools/cantools/pull/555
* Fix ImportError by zariiii9003 in https://github.com/cantools/cantools/pull/585
* Remove Decimal from docs by zariiii9003 in https://github.com/cantools/cantools/pull/586
* Fix arxml AttributeError with empty comments by zariiii9003 in https://github.com/cantools/cantools/pull/595
New Contributors
* guy-radford-sunswap made their first contribution in https://github.com/cantools/cantools/pull/548
* ArseniSoitu made their first contribution in https://github.com/cantools/cantools/pull/552
* malsyned made their first contribution in https://github.com/cantools/cantools/pull/569
* hyihua made their first contribution in https://github.com/cantools/cantools/pull/579
**Full Changelog**: https://github.com/cantools/cantools/compare/38.0.2...39.0.0