Skip to main content

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

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

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

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.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 files

1.0.0

2 files

0.0.2

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