A Python wrapper for the D2 diagram scripting language.
pip install d2-python-wrapper
from d2_python import D2
d2 = D2()
# Simple diagram
with open("test.d2", "w") as f:
f.write("x -> y")
# Default SVG output
d2.render("test.d2", "output.svg")
# PDF output with specific theme
d2.render("test.d2", "output.pdf", format="pdf", theme="dark")
pip install pytest pytest-mock
pytest test_d2.py -v
- Automatic platform detection and binary management
- Support for multiple output formats (svg, png, pdf)
- Theme customization with dark mode support
- Layout engine options (dagre, elk)
- Hand-drawn sketch mode
- SVG enhancements:
- Asset bundling
- Center alignment
- Custom scaling
- Animation support
- Create virtual environment:
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
- Get D2 locally:
curl -L "https://github.com/terrastruct/d2/releases/download/v0.6.8/d2-v0.6.8-linux-amd64.tar.gz" -o linux.tar.gz
tar xzf linux.tar.gz
mkdir -p d2_python/bin/linux
cp d2-v0.6.8/bin/d2 d2_python/bin/linux/d2-bin
chmod +x d2_python/bin/linux/d2-bin
- Install in development mode:
pip install -e .
- Render a diagram
echo "hello -> world" > test.d2
from d2_python import D2
d2 = D2()
d2.render("test.d2", "output.svg")
input_source
: Path to D2 source file or string contentoutput_file
: Path for output file- Options:
format
: Output format ('svg', 'png', 'pdf'). Default: 'svg'theme
: Theme ID (0-11) or name. Default: system themedark_theme
: Theme ID for dark mode. Default: None (uses same as light)layout
: Layout engine ('dagre', 'elk'). Default: 'dagre'pad
: Padding in pixels. Default: 100sketch
: Render in hand-drawn style. Default: Falsecenter
: Center SVG in viewbox. Default: Falsescale
: Output scaling (-1 for auto). Default: -1bundle
: Bundle SVG assets. Default: Trueforce_appendix
: Force tooltip appendix. Default: Falsetimeout
: Execution timeout in seconds. Default: 120animate_interval
: Animation interval in ms. Default: 0target
: Target board to render. Default: "*"- Font customization:
font_regular
: Path to regular .ttffont_italic
: Path to italic .ttffont_bold
: Path to bold .ttffont_semibold
: Path to semibold .ttf
Mozilla Public License Version 2.0 (same as https://github.com/terrastruct/d2)