nteract / vdom

🎄 Virtual DOM for Python
https://github.com/nteract/vdom/blob/master/docs/mimetype-spec.md
BSD 3-Clause "New" or "Revised" License
221 stars 34 forks source link
declarative python specification vdom

VDOM

Code style: black

Why use VDOM


Check out the power of VDOM

Create layouts by writing and running Python code. Let's see an example below to create and display a heading, styled prose, and a GIF:

from IPython.display import display
from vdom.helpers import h1, p, img, div, b

display(
    div(
        h1('Our Incredibly Declarative Example'),
        p('Can you believe we wrote this ', b('in Python'), '?'),
        img(src="https://media.giphy.com/media/xUPGcguWZHRC2HyBRS/giphy.gif"),
        p('What will ', b('you'), ' create next?'),
    )
)

Voila!

Your example created a layout and served it below:

Now Incredibly Declarative

Can you believe we wrote this in Python?

What will you create next?


Getting started

Install the Python package

pip install vdom

Usage

First, import vdom.helpers for headings, text, and images:

from vdom.helpers import h1, p, img, div, b

Create a layout using the VDOM helpers in Python code. Here's an example code layout block:

my_pretty_layout = div(
    h1('Our Incredibly Declarative Example'),
    p('Can you believe we wrote this ', b('in Python'), '?'),
    img(src="https://media.giphy.com/media/xUPGcguWZHRC2HyBRS/giphy.gif"),
    p('What will ', b('you'), ' create next?'),
)

To display the layout, use IPython's display method:

from IPython.display import display

display(my_pretty_layout)

The full example, including rendered output, is found above.

Documentation

Contribute to VDOM

Developer install from source code

git clone https://github.com/nteract/vdom
cd vdom
pip install -e .

Contributing Guidelines and Releases

We follow these Contributing Guidelines.

For contributors helping with creating releases, the [RELEASING.md] document outlines the process.

Find out more about nteract

Take a look at the nteract website to see other projects that we are working on.