# dbinfrago/py-capellambse architecture

> Architecture diagram of the GitHub repository dbinfrago/py-capellambse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dbinfrago/py-capellambse
- Repository: https://github.com/dbinfrago/py-capellambse

## Overview

Python-Capellambse is a headless Python library for reading and writing Capella systems-engineering models, with diagram rendering and model-derived automation. A typical workflow opens a project through a file handler, loads its model, and uses the model-object and metamodel APIs to inspect or modify it; users can then render diagrams or apply extensions and declarative changes. The README also documents requirements export, PVMT, validation, metrics, and declarative modeling. These latter capabilities are shown as branches; their internal wiring is not established by the sampled excerpts.

Main entry points: [`src/capellambse/diagram`](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/diagram) (Diagram API), [`src/capellambse/model`](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/model) (Model objects), [`src/capellambse/loader/core.py`](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/loader/core.py) (Project loader), [`src/capellambse/__init__.py`](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/__init__.py) (Python API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_model_io["Model access"]
  node_public_api["Python API<br/>[__init__.py]"]
  node_handlers["File handlers"]
  node_loader["Project loader<br/>[core.py]"]
end

subgraph group_model_api["Model semantics"]
  node_model["Model objects"]
  node_metamodel["Capella ontology"]
end

subgraph group_visualization["Diagram rendering"]
  node_diagram_api["Diagram API"]
  node_aird["AIR diagram parsing"]
  node_svg["SVG generation"]
  node_diagram_cache["Diagram cache<br/>[diagram_cache.py]"]
end

subgraph group_extensions["Model extensions"]
  node_pvmt["PVMT extension"]
  node_reqif["Requirements access"]
  node_reqif_export["ReqIF exporter<br/>[exporter.py]"]
  node_validation["Model validation"]
  node_metrics["Complexity metrics"]
  node_filtering["Model filtering<br/>[filtering.py]"]
end

subgraph group_automation["Automation"]
  node_declarative["Declarative modeling<br/>[decl.py]"]
end

node_engineer(("Engineer"))
node_external_reqif(("ReqIF consumer"))

node_engineer -->|"uses"| node_public_api
node_public_api -->|"opens models"| node_loader
node_loader -->|"reads resources"| node_handlers
node_loader -->|"loads model"| node_model
node_model -->|"uses types"| node_metamodel
node_engineer -->|"applies YAML"| node_declarative
node_declarative -->|"modifies model"| node_model
node_engineer -->|"requests diagrams"| node_diagram_api
node_diagram_api -->|"reads elements"| node_model
node_diagram_api -->|"parses diagrams"| node_aird
node_diagram_api -->|"renders output"| node_svg
node_diagram_api -->|"caches diagrams"| node_diagram_cache
node_engineer -->|"uses properties"| node_pvmt
node_engineer -->|"manages requirements"| node_reqif
node_reqif_export -->|"exports ReqIF"| node_external_reqif
node_engineer -->|"validates model"| node_validation
node_engineer -->|"assesses complexity"| node_metrics
node_engineer -->|"filters model"| node_filtering

click node_public_api "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/__init__.py"
click node_handlers "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/filehandler"
click node_loader "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/loader/core.py"
click node_model "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/model"
click node_metamodel "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/metamodel"
click node_declarative "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/decl.py"
click node_diagram_api "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/diagram"
click node_aird "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/aird"
click node_svg "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/svg"
click node_diagram_cache "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/diagram_cache.py"
click node_pvmt "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/pvmt"
click node_reqif "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/reqif"
click node_reqif_export "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/extensions/reqif/exporter.py"
click node_validation "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/validation"
click node_metrics "https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/metrics"
click node_filtering "https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/extensions/filtering.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_public_api,node_handlers,node_loader toneBlue
class node_model,node_metamodel toneAmber
class node_diagram_api,node_aird,node_svg,node_diagram_cache toneMint
class node_pvmt,node_reqif,node_reqif_export,node_validation,node_metrics,node_filtering toneRose
class node_declarative,node_engineer,node_external_reqif toneIndigo
```

## Components

### Model access

- [Python API](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/__init__.py): `src/capellambse/__init__.py`
- [File handlers](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/filehandler): `src/capellambse/filehandler`
- [Project loader](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/loader/core.py): `src/capellambse/loader/core.py`

### Model semantics

- [Model objects](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/model): `src/capellambse/model`
- [Capella ontology](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/metamodel): `src/capellambse/metamodel`

### Diagram rendering

- [Diagram API](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/diagram): `src/capellambse/diagram`
- [AIR diagram parsing](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/aird): `src/capellambse/aird`
- [SVG generation](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/svg): `src/capellambse/svg`
- [Diagram cache](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/diagram_cache.py): `src/capellambse/diagram_cache.py`

### Model extensions

- [PVMT extension](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/pvmt): `src/capellambse/extensions/pvmt`
- [Requirements access](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/reqif): `src/capellambse/extensions/reqif`
- [ReqIF exporter](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/extensions/reqif/exporter.py): `src/capellambse/extensions/reqif/exporter.py`
- [Model validation](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/validation): `src/capellambse/extensions/validation`
- [Complexity metrics](https://github.com/dbinfrago/py-capellambse/tree/master/src/capellambse/extensions/metrics): `src/capellambse/extensions/metrics`
- [Model filtering](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/extensions/filtering.py): `src/capellambse/extensions/filtering.py`

### Automation

- [Declarative modeling](https://github.com/dbinfrago/py-capellambse/blob/master/src/capellambse/decl.py): `src/capellambse/decl.py`

### Other components

- **Engineer**
- **ReqIF consumer**

## Connections

- Engineer → Python API: uses
- Python API → Project loader: opens models
- Project loader → File handlers: reads resources
- Project loader → Model objects: loads model
- Model objects → Capella ontology: uses types
- Engineer → Declarative modeling: applies YAML
- Declarative modeling → Model objects: modifies model
- Engineer → Diagram API: requests diagrams
- Diagram API → Model objects: reads elements
- Diagram API → AIR diagram parsing: parses diagrams
- Diagram API → SVG generation: renders output
- Diagram API → Diagram cache: caches diagrams
- Engineer → PVMT extension: uses properties
- Engineer → Requirements access: manages requirements
- ReqIF exporter → ReqIF consumer: exports ReqIF
- Engineer → Model validation: validates model
- Engineer → Complexity metrics: assesses complexity
- Engineer → Model filtering: filters model
