Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

lazy-cuh

lazy-cuh is an experimental Python framework for building lazygit-style terminal user interfaces on top of Textual.

It provides reusable building blocks for terminal apps that need pane-based navigation, compact key hints, modal flows, and list/tree content that behaves consistently.

Status

Pre-alpha. The package is useful for experimentation and early dogfooding, but APIs are expected to change before a stable release.

Features

  • bordered panels with numbered titles and tabs
  • vim-like item navigation and optional line numbers
  • reusable list, tree, text, and option-style views
  • contextual keybars and expandable help hints
  • confirm, input, info, and notice models
  • action, command, and keybinding primitives
  • clear separation between app state, rendering, navigation, viewport, and Textual widget adapters

Installation

pip install lazy-cuh

Pre-release versions may need:

pip install --pre lazy-cuh

Quick Example

from rich.text import Text

import lazy_cuh as lc

items = (
    lc.core.NavigableItem(id="panels", label=Text("Composable panels and tabs")),
    lc.core.NavigableItem(id="navigation", label=Text("Vim-style item navigation")),
    lc.core.NavigableItem(id="keybars", label=Text("Context-aware keybars")),
)

view = lc.view.ListViewModel(
    items=items,
    cursor_index=1,
    spec=lc.view.ListViewSpec(
        width=60,
        line_numbers=lc.layout.LineNumberSpec(lc.layout.LineNumberMode.RELATIVE),
    ),
)

for line in view.rendered_lines():
    print(line.plain)

Examples

After installing from source, run the interactive demo:

uv run lazy-cuh-demo

Focused examples are also available:

uv run lazy-cuh-example-app-shell
uv run lazy-cuh-example-text-wrap
uv run lazy-cuh-example-help-modal
uv run lazy-cuh-example-help-keybar
uv run lazy-cuh-example-options

Documentation

The documentation lives in docs/ and is built with Astro Starlight. Start with the quick start for a minimal view, then use the app-structure guide for the recommended full-app composition path. The docs also cover lists, trees, panels, keybars, modals, and Textual adapters.

Development

For local development:

uv sync --extra dev --extra release
uv run pytest
uv run pyright
uv run ruff check .

Nix users can enter the packaged development shell with:

nix develop

Metadata

Release files for lazy-cuh 0.1.0a5

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

Source distribution (sdist)

Source distribution for lazy-cuh 0.1.0a5
File Size Uploaded Provenance
lazy_cuh-0.1.0a5.tar.gz 104.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for lazy-cuh 0.1.0a5
File Interpreter ABI Platform
lazy_cuh-0.1.0a5-py3-none-any.whl Python 3 none any Details

Total release size: 204.3 kB

Release files / lazy_cuh-0.1.0a5.tar.gz

Download URL lazy_cuh-0.1.0a5.tar.gz
Size 104.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5dc1a7347e3d4d7eae506684f4629353d9b6f5e7c085e554943a30c65bb4f902
BLAKE2b-256 checksum
How to use checksums
2ddf68e4a4f66013e47ac695b82ddaf7743b7480456ec6eecdc2733be5978d0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jul 7, 2026.

Transparency log

Release files / lazy_cuh-0.1.0a5-py3-none-any.whl

Download URL lazy_cuh-0.1.0a5-py3-none-any.whl
Size 100.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5cfb779d8f99492ff205014af6b9f48dfc430d4a03f8b31db848c3b744f5259
BLAKE2b-256 checksum
How to use checksums
f613f795622b2ef87b8849061ef36821714430d1ad7147013d0bec80f84110e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Jul 7, 2026.

Transparency log

Security for lazy-cuh 0.1.0a5

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for lazy_cuh-0.1.0a5.tar.gz

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 Jul 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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