Skip to main content

The Eclipse BaSyx Python SDK, an implementation of the Asset Administration Shell for Industry 4.0 systems

Project description

Eclipse BaSyx Python SDK

(formerly known as PyI40AAS – Python Industry 4.0 Asset Administration Shell)

The Eclipse BaSyx Python project focuses on providing a Python implementation of the Asset Administration Shell (AAS) for Industry 4.0 Systems.

Features

  • Modelling of AASs as Python objects
    • except for: HasDataSpecification
  • Reading and writing of AASX package files
  • (De-)serialization of AAS objects into/from JSON and XML
  • Storing of AAS objects in CouchDB, Backend infrastructure for easy expansion
  • Compliance checking of AAS XML and JSON files

Project Structure

The BaSyx Python SDK project provides the basax.aas Python package with 6 submodules:

  • basyx.aas.model: The AAS metamodel implemented in python
  • basyx.aas.adapter: Adapters for various file formats
  • basyx.aas.backend: Backend infrastructure for storing and retrieving AAS objects
  • basyx.aas.util: Provides utilities
  • basyx.aas.examples: Example data and tutorials

License

The BaSyx Python SDK project is licensed under the terms of the MIT License.

SPDX-License-Identifier: MIT

For more information, especially considering the licenses of included third-party works, please consult the NOTICE file.

Dependencies

The BaSyx Python SDK requires the following Python packages to be installed for production usage. These dependencies are listed in pyproject.toml to be fetched automatically when installing with pip:

  • lxml (BSD 3-clause License, using libxml2 under MIT License)
  • python-dateutil (BSD 3-clause License)
  • pyecma376-2 (Apache License v2.0)

Development/testing/documentation/example dependencies:

  • mypy (MIT License)
  • pycodestyle (MIT License)
  • codeblocks (Apache License v2.0)
  • coverage (Apache License v2.0)
  • jsonschema (MIT License, Apache License, PSF License)
  • schemathesis (MIT License)
  • hypothesis (MPL v2.0)
  • lxml-stubs (Apache License)
  • types-python-dateutil (Apache License v2.0)

Dependencies for building the documentation (see docs/add-requirements.txt):

  • Sphinx and its dependencies (BSD 2-clause License, MIT License, Apache License)
  • sphinx-rtd-theme and its dependencies (MIT License, PSF License)
  • sphinx-argparse (MIT License)

Getting Started

Installation

Eclipse BaSyx Python SDK can be installed from PyPI, the Python Package Index, just as nearly every other Python package:

pip install basyx-python-sdk

For working with the current development version, you can also install the package directly from GitHub, using Pip's Git feature:

pip install --no-cache-dir git+https://github.com/eclipse-basyx/basyx-python-sdk@main#subdirectory=sdk

You may want to use a Python's venv or a similar tool to install BaSyx Python SDK and its dependencies only in a project-specific local environment.

Example

The following code example shows how to create a Submodel with a Property serialize it into an XML file using the Eclipse BaSyx Python SDK:

Create a Submodel:

from basyx.aas import model  # Import all BaSyx Python SDK classes from the model package

identifier = 'https://acplt.org/Simple_Submodel'
submodel = model.Submodel(identifier)

Create a Property and add it to the Submodel:

# create an external reference to a semantic description of the property
semantic_reference = model.ExternalReference(
    (model.Key(
        type_=model.KeyTypes.GLOBAL_REFERENCE,
        value='http://acplt.org/Properties/SimpleProperty'
    ),)
)
property = model.Property(
    id_short='ExampleProperty',  # Identifying string of the element within the submodel namespace
    value_type=model.datatypes.String,  # Data type of the value
    value='exampleValue',  # Value of the property
    semantic_id=semantic_reference  # set the semantic reference
)
submodel.submodel_element.add(property)

Serialize the Submodel to XML:

from basyx.aas.adapter.xml import write_aas_xml_file

data: model.DictObjectStore[model.Identifiable] = model.DictObjectStore()
data.add(submodel)
write_aas_xml_file(file='Simple_Submodel.xml', data=data)

Examples and Tutorials

For further examples and tutorials, check out the basyx.aas.examples-package. Here is a quick overview:

  • tutorial_create_simple_aas: Create an Asset Administration Shell, including an Asset object and a Submodel
  • tutorial_storage: Manage a larger number of Asset Administration Shells in an ObjectStore and resolve references
  • tutorial_serialization_deserialization: Use the JSON and XML serialization/deserialization for single objects or full standard-compliant files
  • tutorial_aasx: Export Asset Administration Shells with related objects and auxiliary files to AASX package files
  • tutorial_backend_couchdb: Use the CouchDBObjectStore to manage and retrieve AAS objects in a CouchDB document database

Documentation

A detailed, complete API documentation is available on Read the Docs: https://basyx-python-sdk.readthedocs.io

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

basyx_python_sdk-2.0.1.tar.gz (207.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

basyx_python_sdk-2.0.1-py3-none-any.whl (161.5 kB view details)

Uploaded Python 3

File details

Details for the file basyx_python_sdk-2.0.1.tar.gz.

File metadata

  • Download URL: basyx_python_sdk-2.0.1.tar.gz
  • Upload date:
  • Size: 207.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for basyx_python_sdk-2.0.1.tar.gz
Algorithm Hash digest
SHA256 d665cd2a6bcac5d10237192e10fe10ea54ef5ef93f9cdc8b2148c5afef05a147
MD5 d195de0d4e36ba50722e71e53007fb84
BLAKE2b-256 44d3fa3c3abdef26fddbe386f3b06c266df37d52277d48f2b2e40a45925ccae9

See more details on using hashes here.

File details

Details for the file basyx_python_sdk-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for basyx_python_sdk-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 23a003f4867c60755e4e1a195180011eeea847e46152894a7e912800c508583a
MD5 b8ab42e43d5b5b8927d8c7a2c89fefe0
BLAKE2b-256 566f789f65ad3c3cd5797bba4e41a0038420458a9ccbad1a2455ba6f677535bd

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