asciidag - draw DAGs as ASCII art
|build-status| |win-build-status| |coverage| |requires|
.. |build-status| image:: https://travis-ci.org/sambrightman/asciidag.svg?branch=master
:target: https://travis-ci.org/sambrightman/asciidag
:alt: Travis CI status
.. |win-build-status| image:: https://ci.appveyor.com/api/projects/status/t4dv71xsfcifk8mg/branch/master?svg=true
:target: https://ci.appveyor.com/project/sambrightman/asciidag
:alt: AppVeyor CI status
.. |coverage| image:: https://coveralls.io/repos/github/sambrightman/asciidag/badge.svg?branch=master
:target: https://coveralls.io/github/sambrightman/asciidag?branch=master
:alt: Coverage
.. |requires| image:: https://requires.io/github/sambrightman/asciidag/requirements.svg?branch=master
:target: https://requires.io/github/sambrightman/asciidag/requirements/?branch=master
:alt: Requirements Status
Overview
This is a direct port of the Git
_ log graphing code, which draws
directed acyclic commit graphs as ASCII art. It was done very
mechanically and quickly, so the code is not Pythonic. Dependencies on
Git
_ specifics should be gone but look and feel remains.
This project is alpha quality and subject to breaking API changes.
.. note::
💡
If you are thinking about doing a large refactoring, please submit
an issue for discussion first; I consider it potentially worthwhile
to stay close to the `Git`_ source.
Installation
Available for install/upgrade from PyPI
_:
.. code-block:: bash
pip install -U asciidag
As usual, it is best to install your packages into a virtual environment
_.
Usage
examples/demo.py
is included in the installation directory and is
executable. The core functionality is:
.. code:: python
from asciidag.graph import Graph
from asciidag.node import Node
graph = Graph()
root = Node('root')
grandpa = Node('grandpa', parents=[root])
tips = [
Node('child', parents=[
Node('mom', parents=[
Node('grandma', parents=[
Node('greatgrandma', parents=[]),
]),
grandpa,
]),
Node('dad', parents=[
Node('bill', parents=[
Node('martin'),
Node('james'),
Node('paul'),
Node('jon'),
])]),
Node('stepdad', parents=[grandpa]),
]),
Node('foo', [Node('bar')]),
]
graph.show_nodes(tips)
Output:
.. image:: https://raw.githubusercontent.com/sambrightman/asciidag/master/images/demo.png
:alt: Demonstration screenshot
:copyright: © 2016 Sam Brightman
:license: GNU General Public License v2.0, see LICENSE for more details.
.. _virtual environment: http://docs.python-guide.org/en/latest/dev/virtualenvs
.. _Git: https://git-scm.com
.. _PyPI: https://pypi.python.org