Skip to main content

A Library that builds a graph from a preCICE configuration file for validation and visualization purposes

Project description

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 follow some basic rules. For example, references by name are assumed to exist. If the config file passes the preCICE-built-in checks (precice-cli config check) without errors, then it is also read correctly by this library. If precice-cli config check does 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

  1. Clone this repository:
git clone https://github.com/precice/config-graph
cd config-graph
  1. Create a new Python Virtual Environment (optional, but recommended):
python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
  1. 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.

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

precice_config_graph-2.0.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

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

precice_config_graph-2.0.0-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file precice_config_graph-2.0.0.tar.gz.

File metadata

  • Download URL: precice_config_graph-2.0.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for precice_config_graph-2.0.0.tar.gz
Algorithm Hash digest
SHA256 23898b1b8d41abb51c283678c3037ec78848a9da7b89f10556aefd66f4c4611f
MD5 94158c0d9eab623940aa01801254ffb6
BLAKE2b-256 822e7b3c966b3bcfd189adb8843405b61695e65fc53ad8acea5a9b320e50570a

See more details on using hashes here.

Provenance

The following attestation bundles were made for precice_config_graph-2.0.0.tar.gz:

Publisher: release.yml on precice/config-graph

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

File details

Details for the file precice_config_graph-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for precice_config_graph-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1dacc52edda3099b0149e8d5d7f756c648af6f8396e8e4e1cd49fb1bd0f2c4ea
MD5 e01a284666ee7fdf7c19bfdfbf19753a
BLAKE2b-256 d4ceb96c3beb25de24a9f0937354bfe3ace60f04b50d6314f96f22090884bee8

See more details on using hashes here.

Provenance

The following attestation bundles were made for precice_config_graph-2.0.0-py3-none-any.whl:

Publisher: release.yml on precice/config-graph

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