Skip to main content

An unofficial, fully typed python interface for building .d2 graph files in python.

Project description

py-d2

Banner

An unofficial, fully typed python interface for building .d2 diagram files in python.

Installation

pip install py-d2

Usage

from py_d2 import D2Diagram, D2Shape, D2Connection, D2Style

shapes = [
    D2Shape(name="shape_name1", style=D2Style(fill="red")),
    D2Shape(name="shape_name2", style=D2Style(fill="blue"))]
connections = [
    D2Connection(shape_1="shape_name1", shape_2="shape_name2")
]

diagram = D2Diagram(shapes=shapes, connections=connections)

with open("graph.d2", "w", encoding="utf-8") as f:
    f.write(str(diagram))

produces the following graph.d2 file:

shape_name1: {
  style: {
    fill: red
  }
}
shape_name2: {
  style: {
    fill: blue
  }
}
shape_name1 -> shape_name2

This can be rendered using d2 graph.d2 graph.svg && open graph.svg or https://play.d2lang.com/ to produce

example graph

See the tests for more detailed usage examples.

Supported Features

  • Shapes (nodes)
  • Connections (links)
  • Styles
  • Containers (nodes/links in nodes)
  • Shapes in shapes
  • Arrow directions
  • Markdown / block strings / code in shapes
  • Icons in shapes
  • SQL table shapes
  • Class shapes
  • Comments

Development

Prerequisite

Installation

following the steps below to setup the project:

```bash
# Clone the repository
git clone git@github.com:MrBlenny/py-d2.git && cd py-d2

# Install all dependencies
poetry install --sync --all-extras --with dev,test,coverage

# install git hook scripts for development
pre-commit install

# Install dependencies with group 'dev'、'test' for development
poetry install --with dev,test
# Only install required dependencies for production
poetry install

Usage

There are some useful commands for development:

# Run the example
poetry run example

# Debug with ipdb3
poetry run ipdb3 ./src/py_d2/main.py

# Code test
poetry run pytest -s

# Run default coverage test
poetry run tox

# Run example project coverage test at python 3.9 and 3.10
poetry run tox -e py{39,310}-py-d2

# Lint with black
poetry run black ./src --check

# Format code with black
poetry run black ./src

# Check with mypy
poetry run mypy ./src

# Check import order with isort
poetry run isort ./src --check

# Lint with flake8
poetry run flake8 ./src

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

py_d2-1.0.1.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

py_d2-1.0.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file py_d2-1.0.1.tar.gz.

File metadata

  • Download URL: py_d2-1.0.1.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.12 Linux/6.5.0-1018-azure

File hashes

Hashes for py_d2-1.0.1.tar.gz
Algorithm Hash digest
SHA256 36b1a81f9acf3b21923a359439c5ed631768c54eee7c9740ca270bd0ee08874b
MD5 63d7e75b91ab60ab69136cb9233aad57
BLAKE2b-256 9ddcafcf4ac8e1ab9e0556edf30d878c1553a5620c7d2b3e98b0d8be9e8a5bce

See more details on using hashes here.

File details

Details for the file py_d2-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: py_d2-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.12 Linux/6.5.0-1018-azure

File hashes

Hashes for py_d2-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 730a17e1527767b3ade14f48a185d9456a4ced90731d49689c7ed99038400eda
MD5 6de35865fee64680f5daaecfecbb4f78
BLAKE2b-256 c0bdb579380325bde2968117d836bc772e0dc7e377542d954dc0c4990f1f92e9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page