Skip to main content

graph-easy

A Python port of Graph::Easy, the Perl tool that lays out directed/undirected graphs and renders them as ASCII art (box-and-wire diagrams rendered in the terminal).

This project faithfully translates the original Perl implementation to Python, in order to provide the same functionality to Python users / as a native Python library and command-line tool.

Provenance & License

  • Original: Graph::Easy, Copyright (C) 2004 - 2008 by Tels (http://bloodgate.com/).
  • Upstream repository: https://github.com/ironcamel/Graph-Easy
  • This port is licensed under the GNU General Public License, version 2 or (at your option) any later version — the same license as the original Graph::Easy, because a port is a derivative work.

See LICENSE for the full LGPL/ GPL text.

Third-party color schemes

This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/), used under the Apache-Style Software License for ColorBrewer Color Schemes v1.1, © 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University. See the header of the original Graph::Easy::Attributes for the full notice.

Status

Actively-developed port. Currently implemented:

  • DSL parser: [ label ]/bare nodes, --> <-- <--> -- arrows, labelled edges (-- label -->), multiline labels (\n), comments
  • Layout engine: longest-path layering with orthogonal edge routing — chains, branches, merges and cycles all render correctly; independent components stack as separate diagrams
  • Edge line styles (faithful to upstream Parser::_edge_style): -- solid, .. dotted, == double, ~~ wave, ## bold, .-/..- dot-dash
  • Two output charsets: Unicode box-drawing by default (┌──┐ ──> ══ ║ ·), plain ASCII via --ascii

The heavier automatic layout engine (Graph::Easy::Layout grid solver) is a follow-up milestone.

Usage

$ printf '[ Bonn ] --> [ Berlin ] --> [ Hamburg ]\n' | graph-easy
┌──────┐         ┌────────┐         ┌─────────┐
│ Bonn │ ───────>│ Berlin │ ───────>│ Hamburg │
└──────┘         └────────┘         └─────────┘

# plain-ASCII output
$ printf '[ A ] ..> [ B ]\n' | graph-easy --ascii
+---+         +---+
| A | .......>| B |
+---+         +---+

Development

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

Acknowledgments

Thanks to Tels and the Graph::Easy contributors whose careful layout and rendering work this port builds upon.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

graph_easy-0.0.2.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

graph_easy-0.0.2-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file graph_easy-0.0.2.tar.gz.

File metadata

  • Download URL: graph_easy-0.0.2.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for graph_easy-0.0.2.tar.gz
Algorithm Hash digest
SHA256 658dab36359bf5b4da16cc8ada9165bf07e8f96e743b3aa52da534f27323a19d
MD5 8ee234784761b0b439d08de175efff81
BLAKE2b-256 8b8e7bd6a3f85808122bc88a2a4a1856fb8bf19fe437a37ae46bc1151db35b2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for graph_easy-0.0.2.tar.gz:

Publisher: publish.yml on y9c/graph-easy-py

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

File details

Details for the file graph_easy-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: graph_easy-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for graph_easy-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 279d3c491ee5529343208a06a7bc3036999c416154b97b2436808cce9722efbf
MD5 208e07b1f10890d8a27696dc4d24bce3
BLAKE2b-256 86411f3d7e1ac3558904f92670dbf20188e64a9c7b68646a630c853e07f2072c

See more details on using hashes here.

Provenance

The following attestation bundles were made for graph_easy-0.0.2-py3-none-any.whl:

Publisher: publish.yml on y9c/graph-easy-py

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

Release history Release notifications | RSS feed

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

This release

0.0.2 This release

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page