Skip to content

eclipse-esmf/esmf-sdk-py-aspect-model-loader

Repository files navigation

ESMF SDK Python Aspect Model Loader

Table of Contents

Introduction

The ESMF SDK Python Aspect Model Loader contains artifacts and resources for all parties that intent to use, extend or integrate with the Semantic Aspect Meta Model, e.g., Solution Developers, Domain Experts or OEMs.

At its core are components which help to work with the Semantic Aspect Meta Model (SAMM).

This repository contains a detailed developer documentation written in AsciiDoc. The source files (AsciiDoc) are python-sdk-guide and are built using Antora which generates the documentation as HTML files.

Getting help

Are you having trouble with ESMF SDK Python Aspect Model Loader? We want to help!

Getting Started

This document provides an overall overview of the SDK and the concepts applied throughout it. Detailed documentation and concepts for each component can be found in the respective subfolders or sub-repositories.

SDK Structure

To ease navigation through the SDK and its components, the following structure is employed:

esmf-sdk-py-aspect-model-loader
 │
 ├─── core                                      # e.g. meta model implementation etc.
 │     ├─── esmf-aspect-meta-model-python
 │     ├─── ...

Python Core Components

The Python core components are those to be consumed by developers that aim to build applications or tools dealing with SAMM.

esmf-aspect-meta-model-python

Contains the Python implementation of the SAMM.

An aspect meta model can be primarily used dynamically instantiate an Aspect Model. This is done by tooling and applications that don't have any a-prior knowledge except for the aspect model file/URN and also don't or can't use generated source code artifacts. Any form of source code generator will use the meta model this way.

Version Handling

The aspect meta model loader work with the SAMM versions specified in the download_samm_release.py. This version will be used for deployment.

As SAMM evolves over time, the Aspect Meta Model Loader should also adapt and evolve accordingly. Due to this fact it is important to understand the versioning concept that is applied to the SAMM, APIs and SDK components that are derived from them.

In case of a prerelease there will be a postfix added and it will be released under Github. The way to access the artifact is described in Github-Installing a package

SAMM Versioning

For the SAMM, semantic versioning (major.minor.micro) is applied with the following rules:

  • A breaking change increases the major part
  • Backwards compatible new features increase the minor part
  • Changes to existing features or bug fixes increase the micro part

A new SAMM version always comprises new releases of the aspect meta model loader that depend on the SAMM, and new releases of aspect meta model loader may be crafted that are built on the existing SAMM version.

About

Building

The Python SDK is built using python-poetry. Each SDK component is a poetry package. In order to e.g. build a package or run the tests for a package navigate to the packages root directory.

install dependencies

poetry install

build package

poetry build

run all checks: tests and code style

poetry run tox

run tests

poetry run tox -e py310

run code style

poetry run tox -e pep8

Contributors

... and you? Feel free to add yourself to this list when issuing your PR!

Contribution Guidelines

We highly appreciate any contributions! Feel free to issue a PR at any time.

3rd Party Licenses

The following 3rd party libraries are used within the SDK. Further dependencies should only be included when strictly necessary. Especially for consumer facing components dependencies should be kept at an absolute minimum to avoid introducing too many transitive dependencies downstream.

Name License Type
python-poetry/poetry MIT License (MIT) Dependency Management
rdflib LICENSE AGREEMENT FOR RDFLIB Dependency
requests Apache Software License (Apache 2.0) Dependency
tox MIT License (MIT) Dependency
zipfile37 Python Software Foundation License Dependency
psf/black MIT License (MIT) Development dependency
nedbat/coverage Apache Software License (Apache 2.0) Development dependency
isort MIT License (MIT) Development dependency
python/mypy MIT License (MIT) Development dependency
pytest MIT License (MIT) Development dependency
pytest-dev/pytest-cov MIT License (MIT) Development dependency
pytest-sugar BSD License (BSD) Development dependency
types-requests Apache Software License (Apache 2.0) Development dependency

Documentation

Further documentation and howto's are provided in the official Python SDK User Documentation

License

SPDX-License-Identifier: MPL-2.0

This program and the accompanying materials are made available under the terms of the Mozilla Public License, v. 2.0.

The Notice file details contained third party materials.