Skip to main content

Turn Python-defined pipeline graphs into presentation-ready SVG and PNG diagrams.

Project description

frameplot

PyPI version Python versions CI License

Turn Python-defined pipeline graphs into presentation-ready SVG and PNG diagrams.

한국어 README

frameplot hero image

frameplot is a compact Python library for rendering left-to-right pipeline diagrams with clean defaults. Define nodes, edges, groups, and optional detail panels in plain Python, then export polished SVG for documentation or PNG for slides and papers.

Why frameplot?

  • Clean and Professional: Left-to-right architecture diagrams with modern defaults.
  • Diagram as Code: Define your pipeline in Python, get deterministic SVG/PNG outputs.
  • Detail Panels: Unique feature to expand a summary node into a lower inset mini-graph for deep dives.
  • Deep Customization: Fine-tune typography, spacing, colors, and corner radii via Theme.
  • Presentation Ready: High-quality SVG for web/docs and PNG for slides or papers.

Install

python -m pip install frameplot

PNG export depends on CairoSVG and may require Cairo or libffi packages from the host OS.

Quickstart

from frameplot import Edge, Group, Node, Pipeline

pipeline = Pipeline(
    nodes=[
        Node("start", "Start", "Receive request"),
        Node("fetch", "Fetch Data", "Load source tables"),
        Node("retry", "Retry", "Loop on transient failure", fill="#FFF2CC"),
        Node("done", "Done", "Return result", fill="#D9EAD3"),
    ],
    edges=[
        Edge("e1", "start", "fetch"),
        Edge("e2", "fetch", "retry", dashed=True),
        Edge("e3", "retry", "fetch", color="#C0504D"),
        Edge("e4", "fetch", "done"),
    ],
    groups=[
        Group("g1", "Execution", ["start", "fetch", "retry"], edge_ids=["e2"]),
    ],
)

svg = pipeline.to_svg()
pipeline.save_svg("pipeline.svg")
pipeline.save_png("pipeline.png")

Quickstart result

Public API

Top-level imports are the supported public API:

  • Node(id, title, subtitle=None, fill=None, stroke=None, text_color=None, metadata=None, width=None, height=None)
  • Edge(id, source, target, color=None, dashed=False, metadata=None)
  • Group(id, label, node_ids, edge_ids=(), stroke=None, fill=None, metadata=None)
  • DetailPanel(id, focus_node_id, label, nodes, edges, groups=(), stroke=None, fill=None, metadata=None)
  • Theme(...)
  • Pipeline(nodes, edges, groups=(), detail_panel=None, theme=None)

Pipeline exposes:

  • to_svg() -> str
  • save_svg(path) -> None
  • to_png_bytes() -> bytes
  • save_png(path) -> None

Advanced Example: Multi-cloud Data Pipeline

The hero image at the top is a practical example of a Multi-cloud Data Pipeline architecture, generated from examples/hero_new.py. It showcases:

  • Complex Routing: Seamlessly connecting AWS (S3/Lambda) to GCP (Pub/Sub/Dataflow) services.
  • Contextual Details: Using a DetailPanel to explain the internal Spark Job Pipeline of the "Dataflow" node.
  • Dark Mode Styling: Applying a sophisticated Slate/Zinc dark theme for a modern look.

Design Notes

  • Layout is intentionally left-to-right in v0.x.
  • Edge labels are not supported yet.
  • Groups are visual overlays and do not constrain layout.
  • Detail panels render as separate lower insets attached to a focus node in the main flow.

Development

python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
python -m pytest -q

Release publishing is automated through GitHub Actions and PyPI Trusted Publishing. Bump the version in pyproject.toml, create a tag like v0.1.0, and push the tag to trigger a release from .github/workflows/workflow.yml.

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

frameplot-0.2.0.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

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

frameplot-0.2.0-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file frameplot-0.2.0.tar.gz.

File metadata

  • Download URL: frameplot-0.2.0.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for frameplot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7c27a519acc8d040643fe6bd35a80bc1cde7a1e9315300248482f6813283ead6
MD5 749cacf669e3d1299a772e8c0d0af7b5
BLAKE2b-256 9b49d37a2daffb26f5deb06307bde941eb4c170a2e6bb1b942cf3a5e79d1becd

See more details on using hashes here.

Provenance

The following attestation bundles were made for frameplot-0.2.0.tar.gz:

Publisher: workflow.yml on smturtle2/frameplot

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

File details

Details for the file frameplot-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: frameplot-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for frameplot-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 84afecee1204abece605f5bc87a3e19c5179191b53326bb9b32b1a81d50a7a4e
MD5 8a412ccd2f97ab07026b95fc217ee571
BLAKE2b-256 c28c69cfbf1a61f4216d5764fc4ba72de6e4adccfe502c7bdba1644451f69725

See more details on using hashes here.

Provenance

The following attestation bundles were made for frameplot-0.2.0-py3-none-any.whl:

Publisher: workflow.yml on smturtle2/frameplot

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