Skip to main content

An AnyWidget for displaying declarative diagrams written in D2

Project description

PyPI MIT License

D2 Widget d2-widget logo

Bring the power of D2 to Python notebooks.

d2-widget is an AnyWidget for displaying declarative diagrams written in D2.

  • 🎨 D2 Diagram Rendering: Create and display interactive D2 diagrams directly in Python notebooks
  • ⚙️ Configurability: Support for all D2 compilation options including themes, layouts, and rendering configurations
  • 📤 SVG Export: Programmatically access the SVG representation for use in other documents
  • Jupyter Cell Magic: Use the convenient %%d2 cell magic for quick diagram creation
  • 🧩 Notebook Compatibility: Works in Jupyter, Google Colab, Marimo, and other AnyWidget-enabled Python notebook environments
  • 🎬 Animation Support: Create animated diagrams with D2's native animation capabilities

Playground

Visit the interactive playground to try out what d2-widget can do.

playground

Installation

pip install d2-widget

or with uv:

uv add d2-widget

Usage

The following examples demonstrate how to use Widget with increasing complexity.

Basic Usage

The simplest way to use Widget is to pass a D2 diagram as a string to the constructor.

from d2_widget import Widget

Widget("x -> y")
simple example

Inline Configuration

You can add direction and layout settings directly in the D2 markup.

from d2_widget import Widget

Widget("""
direction: right
x -> y
""")
simple example with inline configuration

Compile Options

You can specify compile options using the second argument to the constructor. You can read about the semantics of the options in the D2 documentation.

from d2_widget import Widget

Widget("""
direction: right
x -> y
""",
  {
      "themeID": 200,  # ID of the "Dark mauve" theme
      "pad": 0,        # Disable padding
      "sketch": True,  # Enable sketch mode
  },
)
example with compile options

Accessing the SVG

You can access the generated SVG using the svg attribute.

from d2_widget import Widget

w = Widget("x -> y")
w.svg

%%d2 Cell Magic

You can use the %%d2 cell magic to display a D2 diagram in a Jupyter notebook.

First, you need to load the extension:

%load_ext d2_widget

Then, you can use the %%d2 cell magic to display a D2 diagram. You can pass compile options to the cell magic using keyword arguments.

%%d2 sketch=True themeID=200
direction: right
x -> y
y -> z { style.animated: true }
z -> x
example with cell magic

Contributing

Contributor setup, dev workflow, and QA commands are in CONTRIBUTING.md.

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

d2_widget-0.1.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

d2_widget-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file d2_widget-0.1.0.tar.gz.

File metadata

  • Download URL: d2_widget-0.1.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for d2_widget-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9b0bf80eedbf5cdf67f65c4753c77991c6fb93039210d4786e5d1e4b35d42bd4
MD5 0114d8a9fa087366290e0f9e3a6f26f4
BLAKE2b-256 071eeebc8a8893090b84086dcf4d65dd32092ee52795d67d9e10fe76f70650cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for d2_widget-0.1.0.tar.gz:

Publisher: python-publish.yml on peter-gy/d2-widget

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file d2_widget-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: d2_widget-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for d2_widget-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4608f409c568c2cf1109ea0e2ac3c6485b42927dab95c2bd45a966bf1ddbb1a
MD5 edf324ce8af914d3589d1b51f68cc030
BLAKE2b-256 58fdaed10b0ee7c6c6335da46f3db20c9a3005f6a3fd9fa959766eeead774530

See more details on using hashes here.

Provenance

The following attestation bundles were made for d2_widget-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on peter-gy/d2-widget

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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