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.1.4.tar.gz (50.3 MB view details)

Uploaded Source

Built Distribution

pya2l-0.1.4-py3-none-any.whl (50.7 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pya2l-0.1.4.tar.gz
  • Upload date:
  • Size: 50.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pya2l-0.1.4.tar.gz
Algorithm Hash digest
SHA256 297fdaa4b8f2c3b267cc08361f83a99df18c0aa1216f7255a3343b54970f228f
MD5 c1efee14caf47fd249d31dd1dc4a206f
BLAKE2b-256 cfac2fe9c2bcb1bf64c238d1a6d127d5d94e473df89174feefe45920f395c36c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pya2l-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 50.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pya2l-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a735b37d722e060b8e873af947753f856cb0bbff71a709ba31b5475fca5782d2
MD5 ff1740d3ccf3af035dba6aafece90353
BLAKE2b-256 f8fb229eacb328c3394bc23af0ca6de80a7fc48434ef380f64867d1011dc1b5e

See more details on using hashes here.

Supported by

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