Skip to main content

Limelight

Limelight is a portable package format for data-driven figures and analysis stories, and a desktop app for reading them.

A Limelight package is a folder, or an archive with the same layout, named with either a .limelight or a .ll extension, holding a project.dhall manifest alongside the datasets it describes, the figure specs drawn from them, and a story that walks a reader through the analysis. The app opens either form, validates the manifest, resolves the data, renders the figures, and follows the story.

Packages are meant to be produced by libraries and tools rather than by hand; limelight.writer is the Python library for building them, and limelight.reader for opening them without the app.

Installing

pip install "limelight-app[gui]"    # the desktop app, the CLI and the library
pip install limelight-app           # the library and CLI only: no Qt

The distribution is limelight-app (PyPI would not allow plain limelight), but the package imports as limelight and the commands are named as below. The gui extra is Qt (PySide6), which only the desktop app and LL pdf need; a program that builds or reads packages with limelight.writer and limelight.reader leaves it out.

A package's project.dhall manifest is read by a built-in evaluator, so nothing beyond the Python dependencies is needed. A hand-written manifest that uses Dhall features beyond what the writer emits (functions, if, merge, interpolation) is handed to dhall-to-json instead, if one is on PATH or named by LIMELIGHT_DHALL_TO_JSON.

Native installers for Windows, macOS and Linux are built by packaging/; see packaging/README.md.

Using it

limelight-gui example.limelight            # open a package in the desktop app
limelight-cli summary example.limelight    # print a summary of a package
limelight-cli verify example.limelight     # validate one or more packages
limelight-cli pdf example.limelight        # render a package's story to PDF
limelight-cli meta example.limelight       # print a package's metadata as JSON

LL is the short form of both: LL example.limelight opens the app, and LL verify example.limelight (or summary, json, pdf) runs the CLI.

On a Linux desktop, LL desktop-entry gives a pip or uv install what the native installers have: an entry in the applications menu, a taskbar icon, and .limelight files that open with Limelight. LL desktop-entry --remove takes it away again.

The scripts in examples/ build sample packages into _build/examples/, and src/limelight/language-reference/ holds the Dhall types a manifest is written against; the writer copies them into every package it builds.

Type

A document says how every kind of its text is set - body, headings, code, captions, figure titles, axis and tick labels, legends, annotations, table text - in the typography block of its story: a stack of fonts, a size in points, a weight and a slant for each, so the document reads the same on every machine, on screen and in its PDF. The block also sets two of the figures' distances, in points: axisLabelPadPt between an axis and its label and figureTitlePadPt between the axes and the title. The writer fills the block in; Typography and TextStyle change it. File › Document Information shows what a document is set in, and which face each style really gets on this machine.

Fonts are declared in the manifest's fonts list. Limelight ships Ubuntu, Ubuntu Mono, Noto Sans, and matplotlib's DejaVu Sans and DejaVu Sans Mono, so a document that names only those (the default: Ubuntu, falling back to Noto Sans) needs nothing installed. A system font is used where the reader's machine has it and skipped where it does not, so it goes first in a stack, never last. A bundled font travels in the package, one static file per weight with its licence beside it (Project.add_bundled_font); most open licences allow this and ask for exactly that, while a font that came with an operating system usually may not be redistributed. The fonts Limelight ships are under the Ubuntu Font Licence and the SIL Open Font Licence, in src/limelight/fonts/ with their licence texts.

Developing

uv sync --all-extras --all-groups
uv run pytest

Metadata

Release files for limelight-app 0.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for limelight-app 0.0.17
File Size Uploaded
limelight_app-0.0.17.tar.gz 5.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for limelight-app 0.0.17
File Interpreter ABI Platform
limelight_app-0.0.17-py3-none-any.whl Python 3 none any Details

Total release size: 7.5 MB

Release files / limelight_app-0.0.17.tar.gz

Download URL limelight_app-0.0.17.tar.gz
Size 5.2 MB
Tags Source
SHA-256 checksum
How to use checksums
74304aa8972150bf56167fe3061bc7da2778033b6b54e52f633840edaa6d54be
BLAKE2b-256 checksum
How to use checksums
57e4514ae0a9520a190aa1f2b950c0baf924256cf414d6665e40b005a741cc6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / limelight_app-0.0.17-py3-none-any.whl

Download URL limelight_app-0.0.17-py3-none-any.whl
Size 2.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
55f923cfc0801c9e741006a867a0e8ddc64d2a146a4f3f0d3ac1691b15f9f825
BLAKE2b-256 checksum
How to use checksums
642f09e477abf7d19f89fa33f9e0eabd80a9ab07fabd26db95203c2a00021717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

This release

0.0.17 This release

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page