An unofficial, fully typed python interface for building .d2 graph files in python.
Project description
py-d2
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36b1a81f9acf3b21923a359439c5ed631768c54eee7c9740ca270bd0ee08874b
|
|
| MD5 |
63d7e75b91ab60ab69136cb9233aad57
|
|
| BLAKE2b-256 |
9ddcafcf4ac8e1ab9e0556edf30d878c1553a5620c7d2b3e98b0d8be9e8a5bce
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
730a17e1527767b3ade14f48a185d9456a4ced90731d49689c7ed99038400eda
|
|
| MD5 |
6de35865fee64680f5daaecfecbb4f78
|
|
| BLAKE2b-256 |
c0bdb579380325bde2968117d836bc772e0dc7e377542d954dc0c4990f1f92e9
|