preCICE Config Graph
A Python library that builds a graph from a preCICE configuration file for validation and visualization purposes and enables to recreate a precice-config.xml from it.
How does this differ from the preCICE Config-Visualizer? The graph built by this library is not (directly) meant to be displayed. The focus is on building a graph that represents the structure of a preCICE configuration in a way that is useful in checking for logical errors. This logic can also be used to generate a precice-config.xml from a given set of nodes.
[!NOTE] This library assumes the config file to adhere to preCICE conguration-file syntax. For example, references by name are assumed to exist. If the config file passes the preCICE-built-in checks (
precice-tools checkbefore preCICE version 3.3.0;precice-config-validateafter preCICE version 3.3.0) without errors, then it is also read correctly by this library. Ifprecice-config-validatedoes not succeed, the behavior of this library is undefined (it will probably crash).
Requirements
- Python 3.10+
- Pip
- Git for cloning the repository
- PyQt6
Installation
- Clone this repository:
git clone https://github.com/precice/config-graph
cd config-graph
- Create a new Python Virtual Environment (optional, but recommended):
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
- Install required dependencies:
pip install .
Project Structure
config-graph
├── .github, .idea, etc…
│
├── docs # Useful information for understanding how this library works
│ └── …
│
├── debugging # Utility for debugging graph generation. See section in this README on the topic.
│ └── cli.py # Call this script to visualize a provided config
│
├── precice_config_graph # Main library files
│ ├── edges.py # Definition of edge types
│ ├── graph.py # Main logic for building the graph from parsed XML
│ ├── nodes.py # Definition of node types
│ ├── enums.py # Definition enums used for node-creation
│ └── xml_processing.py # preCICE-specific utilities for reading XML files correctly
│
├── test # All files for automated testing
│ └── example-configs # Contains sample configurations that are then tested one by one
│ └── <case-name>
│ ├── precice-config.xml
│ └── test.py # File that tests the graph that is produced from precice-config.xml for validity
│
├── .gitignore, LICENSE, README.md
│
├── pyproject.toml # Project configuration (dependencies etc.)
└── shell.nix # Dependencies for anyone using NixOS / the nix-package manager. Should be replaced by a flake in the future.
Using in your project
This library is published to PyPi as precice-config-graph.
It can be installed via
pip install precice-config-graph
Otherwise, it can also be imported into your pyproject.toml like so:
# …
dependencies = [
"precice_config_graph @ git+https://github.com/precice/config-graph.git",
# …
]
# …
Then, run pip install . in your project. To build a graph, use the following code snippet:
from precice_config_graph import graph, xml_processing
path = "./some/path/to/your/precice-config.xml"
root = xml_processing.parse_file(path)
G = graph.get_graph(root)
# use, traverse inspect the graph
# to view the graph
graph.print_graph(G)
Debugging graph generation
This module includes a small utility that helps with debugging the output graph. You can pass a custom
precice-config.xml and it displays the graph it built in a pop-up window.
To get started, run
python debugging/cli.py "./path-to-your/precice-config.xml"
Graph structure
The types of nodes and edges are documented under docs/Nodes-and-Edges.md.
Release files for precice-config-graph 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| precice_config_graph-3.0.0.tar.gz | 25.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| precice_config_graph-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.6 kB
Release files / precice_config_graph-3.0.0.tar.gz
| Download URL | precice_config_graph-3.0.0.tar.gz |
|---|---|
| Size | 25.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2016f655a29693c1a472e53954820699e16f6ed4573e5d84558d608b37a0ccc8
|
|
BLAKE2b-256 checksum How to use checksums |
664a2b77524f88f7d36b43e2f5722603280ff2ea155ff2e60ff8685d85dfefde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 8, 2026.
Transparency logRelease files / precice_config_graph-3.0.0-py3-none-any.whl
| Download URL | precice_config_graph-3.0.0-py3-none-any.whl |
|---|---|
| Size | 26.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee31dd7ed4dda3f89e5156ae2a2ab21edcfecb7facfebff8407ef4e7a87e1095
|
|
BLAKE2b-256 checksum How to use checksums |
ad7ded11ae2aeaa3421e43972decc8ae7235e8df102432700a8507e8138fb6b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 8, 2026.
Transparency log