Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

aas-core-codegen

Continuous integration Test coverage PyPI - version PyPI - Python Version

Aas-core-codegen:

  • generates code for different programming environments and schemas

  • to handle asset administration shells

  • based on the meta-model in simplified Python.

Motivation

The meta-model is still at the stage where it changes frequently. However, we need SDKs in different languages (C#, C++, C, Java, Golang, Erlang etc.) as well as different schemas (JSON Schema, XSD, RDF etc.). Keeping up with the changes is hard, time-consuming and error-prone as each SDK and schema needs to be reviewed independently.

To make the whole development cycle of the meta-model, SDKs and schemas more maintainable, we wrote a code and schema generator. We write a meta-model in a subset of Python language, parse it and, based on this meta-model, generate the code for different languages and schemas.

Therefore we can easily scale to many languages and schemas.

Here is a diagram to illustrate the whole process:

https://raw.githubusercontent.com/aas-core-works/aas-core-codegen/main/diagram.svg

Installation

Single-File Release

Please download and unzip the latest release from the GitHub release page.

From PyPI

The tool is also available on PyPI.

Create a virtual environment:

python -m venv venv-aas-core-codegen

Activate it (in Windows):

venv-venv-aas-core-codegen\Scripts\activate

or in Linux and OS X:

source venv-aas-core-codegen/bin/activate

Install the tool in the virtual environment:

pip3 install aas-core-codegen

Usage

Write your meta-model somewhere as well as the code snippets for implementation specific classes and functions. For example, take our test meta-model for inspiration how to write the meta-model and the snippets.

Make sure you are within the virtual environment where you installed the generator. Alternatively, if you are using the binary release, make sure the release is on your path.

Call the generator with the appropriate target:

aas-core-codegen \
    --model_path path/to/meta_model.py \
    --snippets_dir path/to/snippets \
    --output_dir path/to/output \
    --target csharp

--help

usage: aas-core-codegen [-h] --model_path MODEL_PATH --snippets_dir
                        SNIPPETS_DIR --output_dir OUTPUT_DIR --target
                        {cpp,csharp,golang,java,jsonschema,python,typescript,xsd}
                        [--cache_model] [--version]

Generate implementations and schemas based on an AAS meta-model.

options:
  -h, --help            show this help message and exit
  --model_path MODEL_PATH
                        path to the meta-model
  --snippets_dir SNIPPETS_DIR
                        path to the directory containing implementation-
                        specific code snippets
  --output_dir OUTPUT_DIR
                        path to the generated code
  --target {cpp,csharp,golang,java,jsonschema,python,typescript,xsd}
                        target language or schema
  --cache_model         If set, cache the parsed meta-model in the temporary
                        directory of your OS. This makes the repeated runs
                        faster as the meta-model does not need to be reparsed.
  --version             show the current version and exit

Versioning

We are still not clear about how to version the generator. For the moment, we use a lax incremental versioning with 0.0 prefix (0.0.1, 0.0.2``) etc.

The changelog is available in CHANGELOG.rst.

Contributing

Feature requests or bug reports are always very, very welcome!

Please see quickly if the issue does not already exist in the issue section and, if not, create a new issue.

Contributions in code are also welcome! Please see CONTRIBUTING.rst for developing guidelines.

Metadata

Release files for aas-core-codegen 0.0.27rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aas-core-codegen 0.0.27rc1
File Size Uploaded
aas_core_codegen-0.0.27rc1.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for aas-core-codegen 0.0.27rc1
File Interpreter ABI Platform
aas_core_codegen-0.0.27rc1-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / aas_core_codegen-0.0.27rc1.tar.gz

Download URL aas_core_codegen-0.0.27rc1.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
3e755ef4983f80c6e3a7dab4d2247909deeee1b67a7961ab29d66c6a5f565082
BLAKE2b-256 checksum
How to use checksums
578200d4229260bf1b2a74dfa3e30bf61b4a91df91df2cfd3db73e0d59a0d22e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / aas_core_codegen-0.0.27rc1-py3-none-any.whl

Download URL aas_core_codegen-0.0.27rc1-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1bb54be00593938890acc982e24c03c7a83ad5b5a7a8d26bbc2c221e3623ba74
BLAKE2b-256 checksum
How to use checksums
67d651236fdb0abb2014c3e6913bc5032cd33f0a1487a132c13528f8d46a2202
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page