A Python wrapper for the D2 diagram scripting language.
pip install d2-python-wrapperfrom 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.d2from 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)