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.1.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.1.1-py3-none-any.whl (18.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pya2l-0.1.1.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.1.1.tar.gz
Algorithm Hash digest
SHA256 166e3c86c4b053871eebd3aaad992ba5a752866dbcfa4ac40e2cfcef77eebbee
MD5 bbf8b2d6d6fbfff5fdec052fd4fafb88
BLAKE2b-256 58d0d65930857a636ff37b2750ddc4c8b7299d03e5cfc9114d7e5ab63478fe21

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pya2l-0.1.1-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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09042ac9c10b27f57847d51ebfae18335e1b7458c10c98e80020967db0f59123
MD5 85e4ebadc909db526d63183989d6c13f
BLAKE2b-256 832381bb7206d4d4dc1793461c58baf3aa700082a3ee753e9bd68146d4a1d272

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