Skip to main content

Provides access to Capella MBSE projects in Python

Project description

Python-Capellambse

PyPI - Python Version Code QA License: Apache-2.0 REUSE status Code style: ruff

A Python 3 headless implementation of the Capella modeling tool

Intro

capellambse allows you reading and writing Capella models from Python without Java or the Capella tool on any (reasonable) platform. We wanted to "talk" to Capella models from Python, but without any Java on the way. We thought this project will help individuals and organisations getting through the MBSE adoption journey with Capella faster and so we made it public and open-source.

With capellambse you can access all (or almost all) Capella model elements, and render diagrams as SVG and PNG. We made it for automation of Systems Engineering work, so it integrates nicely into most CI/CD toolchains. We also found it at the core of our artifact generation pipelines (model to documents, model to SW interfaces).

The library works with PVMT and Requirements extensions without any additional efforts.

It started as a basic library somewhere mid 2019. Since then it was re-architected a few times and now has a full read/write capability for most of the present Capella ontology. We are continuously improving the API (introducing shortcuts), increasing the meta-model coverage and have more engineering automations and improvements in the pipeline to share.

Related projects

  • capellambse-context-diagrams — A capellambse extension that visualizes the context of Capella objects, and exposes it on element attributes like .context_diagram, .tree_view, etc.

  • capella-diff-tools — A set of tools to compare Capella models.

  • capella-polarion — Synchronize information from the Capella model into a Polarion project

  • capella-ros-tools — Import and export ROS *.msg files to/from Capella models, or transform *.msg files into a declarative YAML file.

Did you make something cool that is using or extending capellambse? Tell us about it, so we can add it to this list!

Documentation and examples

The library is designed to be easy to use and discover, especially in an interactive environment such as JupyterLab. Additionally, API documentation is automatically generated and published whenever new features and bug fixes are added.

You are encouraged to explore our test models and demo notebooks. Click on the button below to launch a Jupyter notebook server on the public myBinder service, and get started in seconds:

myBinder

Warning: Do not enter confidential information, such as passwords for non-public models, into a notebook hosted on myBinder. If you want to try out capellambse with those models, please install and run it in a local, trusted environment!

The docs/source/examples directory contains several hands-on example notebooks that you can immediately run and start experimenting with. Below is a short summary of each notebook's goal. If you are in the JupyterLab environment, you can click the notebook names to directly open them in a new lab tab. On Github, you will be shown a statically rendered preview of the notebook.

  • 01 Introduction.ipynb provides a high-level overview of the library features. It visualizes examples like a Component - Function allocation table by leveraging Jupyter's and IPython's rich display functionality.

  • 02 Intro to Physical Architecture.ipynb explores some more advanced concepts on the example of the Physical Architecture Layer. It shows how to derive tabular data, like a Bill of Materials or a Software to Hardware allocation table, by using pandas dataframes.

  • 03 Data Values.ipynb shows how the API can be used to explore classes, class instances and other objects related to data modeling.

  • 04 Intro to Jinja templating.ipynb demonstrates how to effectively combine capellambse with the powerful Jinja templating engine. This enables the creation of all sorts of model-derived documents and artifacts, including interactive web pages, PDF documents and any other textual representations of your models.

  • 05 Introduction to Libraries.ipynb shows how to use Capella Library Projects within capellambse. In this example you'll learn how the API can be used to open a project that is based on a library and find objects in both models.

  • 06 Introduction to Requirement access and management.ipynb shows how the API can be used to work with requirements objects, introduced by the Capella Requirements Viewpoint. In this example you'll see how to find requirements in the model, see which objects requirements are linked / traced to and even export requirements to Excel or ReqIF formats.

  • 07 Code Generation.ipynb shows how to generate code from class diagrams. In particular, we focus on Interface Descriptive Languages with concrete examples for Class to ROS2 IDL and Google Protocol Buffers. We also show how simple Python stubs could be generated given a Class object.

  • 08 Property Values.ipynb shows how to access property values and property value groups, as well as the Property Value Management (PVMT) extension.

  • 09 Context Diagrams.ipynb shows the capellambse-context-diagrams extension that visualizes contexts of Capella objects. The extension is external to the capellambse library and needs to be installed separately.

  • 10 Declarative Modeling.ipynb demonstrates a basic application of the declarative approach to modeling on a coffee machine example.

  • 11 Complexity Assessment.ipynb quickly demonstrates how to use and view the model complexity badge for a Capella model.

We are constantly working on improving everything shown here, as well as adding even more useful functionality and helpful demos. If you have any new ideas that were not mentioned yet, don't hesitate to contribute!

Installation

In order to use private models that are not publicly available, please install and use capellambse in a local, trusted environment.

You can install the latest released version directly from PyPI.

pip install capellambse

On supported platforms, the downloaded wheel includes an optional native module, which provides faster implementations of some functions. Other platforms will fall back to a pure Python wheel without this speedup. To build the native module, a Rust compiler is required.

Development

For details on how to set up a local development environment, please refer to the CONTRIBUTING guide.

Current limitations

As we started in mid 2019 and there was no such thing as Python4Capella yet, we are not API compatible with that project.

The generated diagrams are currently not persisted in .aird files, and currently there is no plan to implement this. If there is a genuine usecase for that we may re-consider it - feel free to create an issue or add comments to an existing one.

Contributing

We'd love to see your bug reports and improvement suggestions! Please take a look at our guidelines for contributors for details.

Licenses

This project is compliant with the REUSE Specification Version 3.0.

Copyright DB InfraGO AG, licensed under Apache 2.0 (see full text in LICENSES/Apache-2.0.txt)

Dot-files are licensed under CC0-1.0 (see full text in LICENSES/CC0-1.0.txt)

To provide the same look and feel across platforms, we distribute our library bundled with the OpenSans font (capellambse/OpenSans-Regular.ttf). The OpenSans font is Copyright 2020 The Open Sans Project Authors, licensed under OFL-1.1 (see full text in LICENSES/OFL-1.1.txt).

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

capellambse-0.8.1.tar.gz (5.1 MB view details)

Uploaded Source

Built Distributions

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

capellambse-0.8.1-py3-none-any.whl (430.9 kB view details)

Uploaded Python 3

capellambse-0.8.1-cp311-abi3-win_amd64.whl (566.4 kB view details)

Uploaded CPython 3.11+Windows x86-64

capellambse-0.8.1-cp311-abi3-win32.whl (563.3 kB view details)

Uploaded CPython 3.11+Windows x86

capellambse-0.8.1-cp311-abi3-musllinux_1_2_x86_64.whl (787.3 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

capellambse-0.8.1-cp311-abi3-musllinux_1_2_aarch64.whl (773.0 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

capellambse-0.8.1-cp311-abi3-manylinux_2_28_x86_64.whl (716.2 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

capellambse-0.8.1-cp311-abi3-manylinux_2_28_aarch64.whl (706.6 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

capellambse-0.8.1-cp311-abi3-macosx_11_0_x86_64.whl (683.3 kB view details)

Uploaded CPython 3.11+macOS 11.0+ x86-64

capellambse-0.8.1-cp311-abi3-macosx_11_0_arm64.whl (677.0 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file capellambse-0.8.1.tar.gz.

File metadata

  • Download URL: capellambse-0.8.1.tar.gz
  • Upload date:
  • Size: 5.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for capellambse-0.8.1.tar.gz
Algorithm Hash digest
SHA256 b5f9528e3936f60d95fd2cec60d92fdbee06030ff80e6e99baa8a38d2f899b7e
MD5 77d83f7c2d09dc9ed493f39b7549b99e
BLAKE2b-256 2acfcd894179975960d554d8a2bf9371b2cc951d398bfaed9cdaa30047ee16e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1.tar.gz:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: capellambse-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 430.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for capellambse-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 69d16c7082bc559d0925532c48cef175309fdcc23504dafc81721f3cc8d5309d
MD5 a72d950da46a8f929c18bfeebc81deb5
BLAKE2b-256 76de82388783f2da3c013f772393461c290ed40b9667fd730c3aba2adb376a75

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-py3-none-any.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: capellambse-0.8.1-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 566.4 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 79e68b0dc27fdaa8db51ff8c828f8d403d79e40c411b39883987d79a932f8ecb
MD5 5de93da5a99515f8c07691729dc0d8d2
BLAKE2b-256 759298ee4d7c499d9daea17f225719179adb582b846c7cc4364715917cd037aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-win_amd64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-win32.whl.

File metadata

  • Download URL: capellambse-0.8.1-cp311-abi3-win32.whl
  • Upload date:
  • Size: 563.3 kB
  • Tags: CPython 3.11+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 bc7fbbfeb1a76bf247cf3857088107033b5ddca5e2219ba5fabd29decb1b6bda
MD5 baa6a3f4c3dc6ddef2ca6c8192c1a376
BLAKE2b-256 c6c04e7df5f802246ca1c6962e051f1078566dbcc46d2edbd6f63fbf2610d408

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-win32.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e94fcc97e80aa5c3487ecb3efdf1dd1d999919d47375af46622f139a4e8c64f9
MD5 6fd8f04b4fc6967cf533338c3609f2e3
BLAKE2b-256 04d6a49760ab6a937df12aac0651014817d5d5c6160f489ab9d016af4bd01d7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-musllinux_1_2_x86_64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cd3049f3f305f67076ff2180192906331a8dbe0b7becfa3cd2d4aa1969b3f627
MD5 e7071aed4517ec1a3a5b244717d5daaa
BLAKE2b-256 fed840ffa2d4f0ee57e8cefef9224b1e7f08a7c37b4420cb731a802203792b1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-musllinux_1_2_aarch64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f45fdb2ba7b20a01f6b897727cd2c814a84a0fcd71f7c17e1313ecc93be795e7
MD5 226460e7eb831846abb561c71d954974
BLAKE2b-256 2e74fa600688f180cc4b610d3d5da85ff9756bc7c9a3e908cd70a1d2001f9b69

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-manylinux_2_28_x86_64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b8274a20a760cf45feec0ce6bc12dd332b0d2508572e408a7fc5d6de58826ff0
MD5 9dd2a401b8eea6e6fcfdb7031d143def
BLAKE2b-256 f153aeb2725ccfa1c9a5eac905d309215b8e524066a726e06518fd5d5f876028

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-manylinux_2_28_aarch64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 fb66239bde08ae747b15666f8f18eab459ddd235d1762157aaeff912f0191aa6
MD5 dc43a6e4d2ea5b9fd26793bba82278ea
BLAKE2b-256 4b54727847f0f6c3426e1069662e9253a24dee5585c4da6cc1ab2c07ca233f68

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-macosx_11_0_x86_64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file capellambse-0.8.1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for capellambse-0.8.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 939be01e5ff0c6903ebc798ada43dd0631bb3b6af64943ea739d16c67044b67b
MD5 a829a624e6972bddd5157c5caff207bc
BLAKE2b-256 f3d3aa78ddcd538dfc935dabfaca6f15a09ff02f11cdb9a55d66644a81200978

See more details on using hashes here.

Provenance

The following attestation bundles were made for capellambse-0.8.1-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: code-qa.yml on dbinfrago/py-capellambse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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