Skip to main content

A Python library to simplify the creation of presentations using Reveal.js.

Project description

PyReveal

PyReveal is a Python library for building Reveal.js presentations programmatically. It bundles reveal.js 6.x and exports standalone HTML decks.

Features

  • Two-class API: build Slide objects, add them to Presentation
  • No HTML required: title, text, bullets, code, image, fragments, notes
  • Typed choices: Theme, Transition, Plugin, FragmentEffect, and more
  • Reorderable vertical slides: slide.vertical = [child_a, child_b]
  • Themes, transitions, backgrounds (color, image, video, iframe, gradient)
  • Plugins: notes, highlight, markdown, math (KaTeX/MathJax), search, zoom
  • configure() for Reveal.js options (hash URLs, progress bar, scroll view, etc.)
  • Export self-contained HTML with bundled reveal.js assets

Requirements

  • Python 3.10+
  • uv (recommended) or pip

After cloning, initialize the reveal.js submodule:

git submodule update --init --recursive

Installation

pip install pyreveal

Or with uv:

uv add pyreveal

For local development:

uv sync --dev

Quick start

from pyreveal import Plugin, Presentation, Slide, Theme, Transition

intro = Slide()
intro.title = "Welcome"
intro.subtitle("Build decks in Python")
intro.vertical = [
    Slide.make_text("First point"),
    Slide.make_text("Second point"),
]

(
    Presentation("My Presentation", theme=Theme.WHITE, transition=Transition.SLIDE)
    .configure(hash=True, progress=True, slideNumber="c/t")
    .plugins(Plugin.NOTES)
    .add(intro)
    .save("my_presentation.html")
)

Define slides with Slide(), add them with Presentation.add(). PyReveal is an alias for Presentation.

Slides

from pyreveal import BackgroundSize, FragmentEffect, Presentation, Slide, Theme

welcome = Slide()
welcome.title = "Agenda"
welcome.fragment("Introduction", effect=FragmentEffect.GROW)
welcome.bullets(["One", "Two", "Three"])

chart = Slide()
chart.heading("Chart")
chart.image("chart.png")
chart.bg("bg.jpg", size=BackgroundSize.COVER)

Presentation("Demo", theme=Theme.BLACK).add(welcome, chart)

Backgrounds accept color strings ("#222"), image paths, or dicts. No extra classes needed.

Auto-animate

Presentation("Demo").animate(
    [
        {"title": "Before"},
        {"title": "After"},
    ]
)

Documentation

Versioned documentation is published with Zensical and mike:

https://tavallaie.github.io/pyreveal/

Preview locally:

uv sync --group docs
uv run zensical serve

See docs/development/versioning.md for publishing new doc versions.

Development

uv sync --dev
uv run pytest
uv build

Links

License

MIT. See LICENSE.

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

pyreveal-1.0.0.tar.gz (8.2 MB view details)

Uploaded Source

Built Distribution

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

pyreveal-1.0.0-py3-none-any.whl (8.3 MB view details)

Uploaded Python 3

File details

Details for the file pyreveal-1.0.0.tar.gz.

File metadata

  • Download URL: pyreveal-1.0.0.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyreveal-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7fc6f18860e76ab330ed851997560b15e2f7b47bfa2c617e9c1e10f28e858774
MD5 11451e426b22e99da5a8b86a383f6dcc
BLAKE2b-256 f5ef4b46bbde19e1501022adf9ea4e8da765ceb7d936809972e3f8f9b50de93b

See more details on using hashes here.

File details

Details for the file pyreveal-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyreveal-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyreveal-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c580f6338e15fc6d487a4e5d31459f105962dd4ed7118ecf6f2b7cf12c38001
MD5 d0b5df24ba627c4d06fe90f6ce8301cb
BLAKE2b-256 21b73c3aa0769ee09a31b5d9b7a80acc2301005c697a0c7fc91046a03b37a666

See more details on using hashes here.

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