A JupyterLab extension for converting notebooks into HTML slide presentations
Project description
JupyPress
JupyPress is a JupyterLab extension for turning notebooks into HTML slide presentations.
It supports two output paths:
- JupyterLab-backed preview and present modes for live notebook outputs, widgets, and live code execution.
- Standalone HTML export for static, shareable presentations that do not require a running kernel.
Requirements
- Python 3.10 or newer
- JupyterLab 4.x
- A modern Chromium, Firefox, or Safari browser
Installation
pip install jupypress
jupyter lab
Open a notebook, then use the JupyPress toolbar button or the command palette command JupyPress: Open Editor.
Basic Usage
- Create slides in the JupyPress editor.
- Choose a slide layout.
- Assign notebook cells to slide slots.
- Use preview for JupyterLab-backed rendering.
- Use present mode for a browser presentation backed by the active notebook session.
- Export to HTML for a static file that can be opened without JupyterLab.
Features
- Slide metadata stored directly in the notebook.
- Built-in layouts for title, content, two-column, and multi-row slides.
- JupyterLab-backed preview and present modes using notebook output areas.
- Static HTML export with embedded presentation CSS and navigation.
- Theme support through CSS variables.
- Markdown, code, rich outputs, images, Plotly, Leaflet/Folium, and saved widget output support.
- Live code execution in JupyterLab-backed presentation mode.
Output Modes
Preview and Present
Preview and present modes run inside the JupyterLab environment and render assigned cells with JupyterLab output areas. This is the right mode for live notebook work, active kernels, widgets, and outputs that need JupyterLab renderers.
HTML Export
HTML export creates a standalone static presentation. The exported file is designed for sharing and viewing without JupyterLab. Dynamic widget kernels are not available in this mode, but saved/static DOM output is included where possible.
Screenshots
Release screenshots are stored under docs/images/:
docs/images/editor.pngdocs/images/export-html.pngdocs/images/launch.pngdocs/images/present-livecode.png
See docs/images/README.md for the intended use of each capture.
Development
git clone https://github.com/andibuwono/jupypress.git
cd jupypress
jlpm install
jlpm run build:labextension
python -m build
pip install --force-reinstall ./dist/jupypress-0.1.0-py3-none-any.whl
jupyter lab
Use jlpm rather than npm; JupyterLab manages the Yarn environment.
See:
docs/DEVELOPMENT.mdfor local setup and development workflow.docs/BACKEND_STRUCTURE.mdfor the Python backend map.docs/FRONTEND_STRUCTURE.mdfor the TypeScript/React frontend map.docs/TEST.mdfor test commands.docs/theming.mdfor theme variables.
Testing
hatch run test
jlpm run test
jlpm run build:labextension
Release
See docs/RELEASE.md for the PyPI and GitHub release checklist.
Contributing
Contributions are welcome. See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
License
JupyPress is distributed under the BSD 3-Clause License. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupypress-0.1.0.tar.gz.
File metadata
- Download URL: jupypress-0.1.0.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95a6fda3e2ac1ca1d431f70fbd6ee553667ad66c86d74651204d94b7bcf7eda9
|
|
| MD5 |
f67e8173052fa663b7a35ec5a90f7bd1
|
|
| BLAKE2b-256 |
a14ec57f6701ecac66778833753775e4fd40a240b1aaabe4dd5e279a999c396c
|
Provenance
The following attestation bundles were made for jupypress-0.1.0.tar.gz:
Publisher:
ci.yml on andibuwono/jupypress
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jupypress-0.1.0.tar.gz -
Subject digest:
95a6fda3e2ac1ca1d431f70fbd6ee553667ad66c86d74651204d94b7bcf7eda9 - Sigstore transparency entry: 1869048125
- Sigstore integration time:
-
Permalink:
andibuwono/jupypress@becbe15e5357c7c58897d1e504e141492c70ebb0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/andibuwono
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@becbe15e5357c7c58897d1e504e141492c70ebb0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file jupypress-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jupypress-0.1.0-py3-none-any.whl
- Upload date:
- Size: 120.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b17a8ca31e40e8e3d3037d73c1494ae5e75a8f278cee92716bc4c84fcd2968e9
|
|
| MD5 |
1511ab1cc8cfb813d7efd271b89e60b7
|
|
| BLAKE2b-256 |
a93bec4cb2dd478a183c5166ce69af3522e10350a19351ed3160caf32087f85c
|
Provenance
The following attestation bundles were made for jupypress-0.1.0-py3-none-any.whl:
Publisher:
ci.yml on andibuwono/jupypress
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jupypress-0.1.0-py3-none-any.whl -
Subject digest:
b17a8ca31e40e8e3d3037d73c1494ae5e75a8f278cee92716bc4c84fcd2968e9 - Sigstore transparency entry: 1869048265
- Sigstore integration time:
-
Permalink:
andibuwono/jupypress@becbe15e5357c7c58897d1e504e141492c70ebb0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/andibuwono
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@becbe15e5357c7c58897d1e504e141492c70ebb0 -
Trigger Event:
push
-
Statement type: