All notable changes to pya2ldb are documented here. Format follows Keep a Changelog.
import_a2l(),open_existing(),open_create(),export_a2l()— module-level entry points (preferred over the deprecatedDBclass wrapper).force_overwrite: bool = Falseparameter onimport_a2l()andA2LParser.parse(). WhenTruethe existing.a2ldbis silently replaced; whenFalseand the file already exists the CLI prompts for confirmation instead of raisingOSError.-f/--force-overwriteCLI flag fora2ldb-imex -i.-q/--quietCLI flag — sets log level to CRITICAL and disables the progress bar; useful for scripting.pya2l.api.validate.Validator— five new checks:- Namespace uniqueness (duplicate names within a module, same name in multiple namespaces).
- Cross-reference validation: MEASUREMENT / CHARACTERISTIC / AXIS_PTS → COMPU_METHOD; CHARACTERISTIC / AXIS_PTS → RECORD_LAYOUT.
- C-identifier length (ISO C90 limit of 32 characters).
- Two new
Diagnosticsenum values:MISSING_COMPU_METHOD,MISSING_RECORD_LAYOUT. __all__defined inpya2l/__init__.py,pya2l/exceptions.py,pya2l/api/inspect.py, andpya2l/api/create.py.pya2l.model._register_migration/_migrate_schema— schema migration chain with full docstring and usage example.pya2l/tests/test_validator.py— 13 tests covering all newValidatorchecks.pya2l/tests/test_schema_migration.py— 4 smoke tests for the migration chain..github/dependabot.yml— weekly Dependabot updates for GitHub Actions and pip..github/release.yml— automatic release-note categories (features, bugs, maintenance, docs, CI).
- Logger architecture:
Logger.__init__now always keeps the named loggerpya2l.<name>; Rich is used only as alogging.Handler, not as the logger itself. Application-level logging config (logging.getLogger("pya2l")) is now respected. Logger.error(exc_info=True)now logs the traceback at ERROR level (was DEBUG).pya2l/utils.py:print()calls replaced bylogging.getLogger("pya2l.utils").pya2l/api/inspect.py: remainingprint()calls replaced by_logger.pya2l/functions.py:print()→_logger.warning(); specific exception types instead of bareexcept Exception.pya2l/imex/json_exporter.py,imex/a2l_exporter.py: float-conversion catch narrowed to(TypeError, ValueError).pya2l/aml/classes.py:_try()catch narrowed toAttributeError.pya2l/model/__init__.py: metadata query catch narrowed tosqlalchemy.exc.SQLAlchemyError.a2ldb-imex --versionexit code fixed from1to0.a2ldb-imeximport errors now show a Rich Panel instead of a raw Python traceback.pythonapp.yml(CI):upload_pypinow depends on arun_testsgate job — wheels can no longer be published with failing tests.pythonapp.yml(CI):build_sdistnow runstwine check dist/*.pyproject.tomlmypy config:no_implicit_optional = true,warn_return_any = true,[[tool.mypy.overrides]]for generated files.
- Deleted
pya2l/preprocessor_orig.py(replaced by the C++ extension). - Deleted
pya2l/trie_stuff.pyandpya2l/trie_stuff.cpp(experimental, never integrated). - Removed stale ANTLR Python-file references from
MANIFEST.in. - Removed unused
from pya2l import DBfrompya2l/api/validate.py. - Removed ~60 lines of dead commented-out code from
pya2l/api/validate.py.
pya2l.DB— emitsDeprecationWarningsince this release. Use the module-level functionsimport_a2l(),open_existing(),open_create(), andexport_a2l()instead.DBwill be removed in a future major release. See the Migration guide indocs/getting_started.rst.
pya2l/cgen/templates/a2l.tmpl: fixedCOMPU_TAB/COMPU_VTAB/COMPU_VTAB_RANGEpair export loop (was broken, causing export round-trip failures).DEFAULT_VALUE_NUMERICexport format corrected to a single-line keyword.
Release notes for versions before this changelog was introduced are available on the GitHub Releases page.