Skip to main content

utility for a2l files

Project description

branch build coverage
master Python package code coverage
develop Python package code coverage

License Gitter

Package description

the purpose of this package is to provide an easy way to access and navigate in a2l formatted file.
once the file has been loaded, a tree of Python objects is generated, allowing the user to access nodes.

Installation

Using pip

Install the last released version of the package by running the following command: pip install pya2l

or install the most recent version of the package (master branch) by running the following command: pip install git+https://github.com/Sauci/pya2l.git@master

Example of usage

Command line tool

Once the package installed, the pya2l command will be available. It provides several different commands:

  • Convert an A2L file to JSON with pya2l -v <source>.a2l to_json -o <output.json> -i 2
  • Convert an A2L file to A2L with pya2l -v <source.a2l> to_a2l -o <output.a2l> -i 2
  • Convert a JSON-formatted A2L file to JSON with pya2l -v <source>.json to_json -o <output.json> -i 2
  • Convert a JSON-formatted A2L file to A2L with pya2l -v <source>.json to_a2l -o <output.a2l> -i 2

Python API

the bellow code snippet shows how properties of a node in an a2l string can be retrieved using this package.

from pya2l.parser import A2lParser as Parser

a2l_string = """/begin PROJECT project_name "example project"
    /begin MODULE first_module "first module long identifier"
        /begin CHARACTERISTIC
            example_of_characteristic
            "first characteristic long identifier"
            VALUE
            0
            DAMOS_SST
            0
            first_characteristic_conversion
            -4.5
            12.0
        /end CHARACTERISTIC
    /end MODULE
/end PROJECT
"""

with Parser() as p:
    # get the AST.
    ast = p.tree_from_a2l(a2l_string.encode())

    # get a list of available properties for a specific node.
    assert set(ast.PROJECT.properties) == {'Name', 'LongIdentifier', 'HEADER', 'MODULE'}

    # access nodes explicitly.
    assert ast.PROJECT.MODULE[0].CHARACTERISTIC[0].Name.Value == 'example_of_characteristic'
    assert ast.PROJECT.MODULE[0].CHARACTERISTIC[0].LowerLimit.Value == -4.5
    assert ast.PROJECT.MODULE[0].CHARACTERISTIC[0].UpperLimit.Value == 12.0

a2l_string = """/begin PROJECT project_name "example project"
    /begin MODULE first_module "first module long identifier"
    /end MODULE
/end PROJECT
"""

with Parser() as p:
    # get the AST.
    ast = p.tree_from_a2l(a2l_string.encode())

    # convert node to json-formatted string.
    assert p.json_from_tree(ast, indent=2).decode() == """{
  "PROJECT": {
    "Name": {
      "Value": "project_name"
    },
    "LongIdentifier": {
      "Value": "example project"
    },
    "MODULE": [
      {
        "Name": {
          "Value": "first_module"
        },
        "LongIdentifier": {
          "Value": "first module long identifier"
        }
      }
    ]
  }
}"""

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pya2l-0.0.9.tar.gz (18.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pya2l-0.0.9-py3-none-any.whl (18.8 MB view details)

Uploaded Python 3

File details

Details for the file pya2l-0.0.9.tar.gz.

File metadata

  • Download URL: pya2l-0.0.9.tar.gz
  • Upload date:
  • Size: 18.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pya2l-0.0.9.tar.gz
Algorithm Hash digest
SHA256 b8df8063e3913395b96ef8cde9b472e9ec2883ad0a0f63052038eabc70fb4c35
MD5 f64a00e1d26e74673445192908b92dde
BLAKE2b-256 63af7406d4d3f5fa8e9d20f070c34c62d4cc1c86293a01d0961b14c7aac0b4de

See more details on using hashes here.

File details

Details for the file pya2l-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: pya2l-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 18.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pya2l-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 58ae06f6cd6ce2d7da51350e4d0d54cd9d808d2689f16bec08df8118a629472e
MD5 696c04a19669bafd0fd9c97955ed2546
BLAKE2b-256 4c37c77320c748df26ee139177f946fac46eea4ba126ffd339c8548a1272d29d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page