Curry Leaves Presenter
Turn markdown into a presentation — a small, dependency-light Python library and CLI with self-contained HTML output, keyboard navigation, transitions, and charts.
Plain markdown works out of the box. An optional directive dialect adds columns, charts, callouts, timelines, and more for when you want finer control.
Install
pip install curry-leaves-presenter
CLI
curry-presenter build talk.md # writes talk.html
curry-presenter build talk.md -o out.html --theme minimal-dark --open
curry-presenter validate talk.md # print diagnostics, exit 1 on errors
curry-presenter themes # list built-in themes
Library
from curry_leaves_presenter import Deck
deck = Deck.from_file("talk.md")
deck.validate() # -> list[Diagnostic]
deck.to_html("talk.html", theme="minimal-dark")
html = deck.render_html() # in-memory string, no file written
Plain markdown mode
Any markdown file works. Slides are separated by --- on its own line; the first
heading on a slide becomes its title. A <!-- notes: ... --> comment becomes speaker
notes.
---
title: My Talk
theme: minimal-dark
---
# My Talk
A subtitle line here
---
## Agenda
- Point one
- Point two
<!-- notes: remember to slow down here -->
---
> A pull-quote slide
> renders in the "quote" layout automatically
Layout is chosen automatically: a lone H1 + short subtitle → title slide; a heading with no body → section slide; an all-blockquote body → quote slide; anything else → content slide.
Directive mode
Wrap slides in :::slide ... ::: to unlock layouts, charts, columns, callouts,
timelines, textboxes, and more:
---
title: Quarterly Review
theme: enterprise-blue
---
:::slide layout="two-column"
# Results
:::column
Revenue grew 40% quarter over quarter, driven mostly by the new
enterprise tier.
|
:::chart type="bar"
- Q1: 40
- Q2: 65
- Q3: 82
- Q4: 110
:::
:::
:::
:::slide layout="content"
# Key Risks
:::callout type="warning"
Churn ticked up 2pts in the SMB segment.
:::
:::
Directive blocks: slide, column, notes, chart (bar/pie/line/doughnut),
wordart (gradient/shadow/outline), callout (info/warning/error/success), timeline,
compare, image, textbox, clock, timer.
Layouts: title, content, two-column, three-column, section, blank,
big-stat, quote, agenda, image-split.
Both modes can appear in the same deck — if any :::slide block is found, directive
mode is used for the whole file.
See docs/syntax-reference.md for the full front matter field list, every directive's attributes and defaults, the auto-layout rules, the theme YAML schema, and every diagnostic code.
Themes
Eight built-in themes: enterprise-blue, minimal-dark, clean-white,
executive-navy, startup-violet, nature-green, warm-coral, high-contrast.
Pass a path to a custom theme YAML to --theme / theme= — schema documented in
docs/syntax-reference.md.
Diagnostics
Parsing and validation never raise on malformed input — they collect Diagnostic
objects instead (severity, code, message, slide_index). curry-presenter build
prints these to stderr and exits non-zero on errors (or on warnings with --strict).
Full code list in docs/syntax-reference.md.
What's not in v1
PPTX and PDF export are planned (pip install curry-leaves-presenter[pptx] / [pdf]
are reserved) but not wired up yet — v1 ships self-contained HTML only.
License
MIT
Release files for curry-leaves-presenter 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| curry_leaves_presenter-1.1.0.tar.gz | 5.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| curry_leaves_presenter-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.2 MB
Release files / curry_leaves_presenter-1.1.0.tar.gz
| Download URL | curry_leaves_presenter-1.1.0.tar.gz |
|---|---|
| Size | 5.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eceeff1981a6561c8befb86cc1893438123a3cc07d6956dc96e7a7f803c31bfa
|
|
BLAKE2b-256 checksum How to use checksums |
90adc90be7ee2ada9c1372440922453b774ae882d8fe0f023b0a89fc2045847b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / curry_leaves_presenter-1.1.0-py3-none-any.whl
| Download URL | curry_leaves_presenter-1.1.0-py3-none-any.whl |
|---|---|
| Size | 108.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e2a03fbdc8072224caec29ea3f83f85cbb0cdb63b1cf3bf065e6f50d4fe7567e
|
|
BLAKE2b-256 checksum How to use checksums |
34b073c42503db2b45336b754ef71993ab555d0c6931df979dda020b6ffe08a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|