Generate implementations and schemas based on an AAS meta-model.
Project description
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:
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
{csharp,cpp,golang,java,jsonschema,python,typescript,rdf_shacl,xsd,jsonld_context,protobuf,python_protobuf,opcua}
[--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 {csharp,cpp,golang,java,jsonschema,python,typescript,rdf_shacl,xsd,jsonld_context,protobuf,python_protobuf,opcua}
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aas_core_codegen-0.0.22.tar.gz.
File metadata
- Download URL: aas_core_codegen-0.0.22.tar.gz
- Upload date:
- Size: 710.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d727d9fc8fb517acac7543d2dbcb4fb0f8acece1fe9c1f8b140903610b55e39
|
|
| MD5 |
8653e33cc62e1dcdbe7760e5939305ba
|
|
| BLAKE2b-256 |
f66519e3f0b82ad94045d9f74c0742cbaeb2c497038637f8abb726852a2fc7c8
|
File details
Details for the file aas_core_codegen-0.0.22-py3-none-any.whl.
File metadata
- Download URL: aas_core_codegen-0.0.22-py3-none-any.whl
- Upload date:
- Size: 895.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37b7b4a27c471e750ed04ed269b3792265da9a3269dd82faf0ed061ca8d5d88d
|
|
| MD5 |
bfa1c30a705d1b172d8631ad1c5bda24
|
|
| BLAKE2b-256 |
6075935bc58edd00381f128e8b536c0179668efac3b2b0d773412955b67812e3
|