Skip to main content

Generate self-contained, interactive HTML reports from data in Python

Project description

tessera

CI

Build self-contained, interactive HTML reports from Python — one file you can commit, or serve, with no runtime and no dependencies on the viewer's machine. Designed for batch-generated data and ML output: loop over your experiments, runs, or segments and emit a report per iteration.

Content is laid out on a grid of typed cells (charts, tables, metrics, code, images, diagrams), and the whole deck embeds into a single .html.

Documentation

https://tessera-report.readthedocs.io/

Installation

pip install tessera-report

Quick start

from tessera import Deck

deck = Deck(
    title="My Report",
)

deck.add_title("My Report", subtitle="Subtitle here")
deck.add_section("1 — Introduction")

slide = deck.add_slide("Results", ncols=2)

slide.add_metric(value=98.7, label="Efficiency (%)", delta=+2.3)
slide.add_text("Text with **markdown** and LaTeX: $E = mc^2$")

deck.write("report", open_browser=True)

Batch generation

The core use case — one report per run, generated in a loop:

deck = Deck(title=f"Experiment Results", author="Company name", date="Jun 20th, 2026")

for run in experiment_runs:
    
    deck.add_section(title=f"Run #{run.id}")    
    
    slide = deck.add_slide("Metrics", nrows=1, ncols=3)
    
    slide.add_metric(value=run.accuracy, label="Accuracy", delta=run.delta)
    slide.add_plotly(run.loss_curve)
    slide.add_table(run.results_table, caption="Results")

deck.write("report")

Cell types

Method Cell Description
add_text TextCell Markdown + LaTeX (MathJax)
add_metric MetricCell KPI card with value, label and delta
add_table TableCell CSV, dict, list or DataFrame
add_image ImageCell Image with lightbox and zoom/pan
add_image_slider ImageSliderCell Image carousel
add_list ListCell Bullet or numbered list
add_code CodeCell Code with syntax highlighting
add_plotly PlotlyCell Interactive Plotly chart
add_mermaid MermaidCell Declarative diagram (flowchart, etc.)
add_html HtmlCell Raw HTML without escaping
add_iframe IframeCell Embed external content
add_empty EmptyCell Reserves space in the grid

Common cell options

All add_* methods accept:

slide.add_text(
    "content",
    colspan=2,          # spans 2 columns
    rowspan=1,
    caption="Caption",
    overflow=True,      # internal scroll
    expand_button=True, # expand to fullscreen button
    copy_button=True,   # copy button (CodeCell)
    transparent=True,   # hides cell border and background
)

License

MIT

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

tessera_report-0.5.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

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

tessera_report-0.5.0-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

Details for the file tessera_report-0.5.0.tar.gz.

File metadata

  • Download URL: tessera_report-0.5.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for tessera_report-0.5.0.tar.gz
Algorithm Hash digest
SHA256 dbd25519d063d7882fd5177121e30aaeaca8cc686c2b6197e62dd221edbcc663
MD5 f1f70acf688652f49c851b65c4261067
BLAKE2b-256 e582da34a24305f026c5edd3cda9b7546332433890d746f08a5fd73a1a4000e6

See more details on using hashes here.

File details

Details for the file tessera_report-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: tessera_report-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for tessera_report-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6efa60b81dbc29d1b53bb599c927c02944434b29d56211aee4e52dc8bb7c28b
MD5 4b7164b48abbb4cb876b328334a487a2
BLAKE2b-256 746786673bb674fe005ded160f50605789800ab2aac015fd7b35fade0be93ac3

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