Skip to main content

Python Process User Intent: A high-level abstract UI system (TUI, Web, Voice)

Project description

PPUI: Python Process User Intent 🎭

A high-level abstract UI system for Python scripts.

PPUI (pronounced "pui") is the Python implementation of the PUI (Process User Intent) philosophy.

The goal isn't just to "draw a menu"—it's to capture what the user wants to do next. Whether that intent is captured via a terminal hotkey, a web click, or a voice command, the script's logic remains the same.

PPUI: Because your scripts should care about what you want, not just how you say it.

Features

  • High-level Abstractions: Use concepts like Selection and Input without caring about the rendering engine.
  • TUI Implementation: Professional, hotkey-driven terminal menus.
  • Submenu Support: Nested selections with push (drill-down) or inline (expandable) behaviors.
  • Rich Integration: Full support for Rich-formatted output and panels.
  • Presentable Blocks: High-level CodeBlock, DataTable, and PanelSection primitives for showing code, tables, and sections.

Installation

pip install ppui

Usage

High-Level Menu Class

The Menu class provides a declarative way to build interactive loops with callback support.

from ppui import Menu

def run_setup():
    print("Running setup...")

def main():
    menu = Menu("Project Manager", style="bold green")
    menu.add_option("Setup Project", run_setup)
    menu.add_option("View Dashboard", "view_dash")
    
    # Submenu support
    advanced = Menu("Advanced Settings")
    advanced.add_option("DNS Config", lambda: print("Configuring DNS..."))
    menu.add_submenu("Advanced...", advanced, behavior="push")
    
    menu.add_back_item() 
    menu.add_quit_item()
    
    selection = menu.run()

Notes for AI Coding Agents

  • Think in intents, not widgets

    • Use PPUI to capture user intent (selections, confirmations, inputs), not to directly manipulate low-level UI widgets.
    • Application code should express what the user is choosing or providing, not how it is rendered.
  • Allowed imports in application code (e.g. services/*, media/*, utils/*):

    • From ppui:
      • Menu, UIElement, Selection, Option, Presentable
      • CodeBlock, DataTable, PanelSection for high-level code/table/section rendering
      • prompt_yes_no, console, prompt_toolkit_menu, format_menu_choices, copy_to_clipboard
    • From helpers.core:
      • run_command, load_pas_config, save_pas_config, and other non-UI helpers.
  • Forbidden in application code:

    • Direct imports from low-level UI libraries such as:
      • from rich.panel import Panel
      • from rich.syntax import Syntax
      • from rich.table import Table
    • Direct prompt_toolkit or questionary usage.
    • These are implementation details inside PPUI, not part of the public surface for tools.
  • Menu pattern to use (example):

from ppui import Menu, prompt_yes_no, console

def manage_project(path):
    while True:
        console.print(f"Managing: {path}")
        menu = Menu("Project Actions", style="bold cyan")
        menu.add_option("Deploy to Staging", deploy_staging)
        menu.add_option("Deploy to Prod", deploy_prod)
        menu.add_back_item()
        menu.add_quit_item()
        selection = menu.run(loop=False)
        if selection in ["back", "quit"]:
            break
  • Extending PPUI
    • If you need richer concepts (forms, layouts, dashboards, etc.), add new abstractions to PPUI (e.g. Form, Layout) and implement them here.
    • Do not introduce new rich/prompt_toolkit imports in application code; route them through PPUI so the same intent can later be rendered as TUI, web, or voice.

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

ppui-2026.1.24.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

ppui-2026.1.24-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file ppui-2026.1.24.tar.gz.

File metadata

  • Download URL: ppui-2026.1.24.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for ppui-2026.1.24.tar.gz
Algorithm Hash digest
SHA256 05773988a91ee3d01cdc311960d9505bbea2f2961a770e04d32aa4c7dd2e2218
MD5 823bf125ba8fb6709d435da0a871c4be
BLAKE2b-256 e878f625dd183edb488ccfe8ec55628755a0739a10752f3b3a5474b7f0f65a3f

See more details on using hashes here.

File details

Details for the file ppui-2026.1.24-py3-none-any.whl.

File metadata

  • Download URL: ppui-2026.1.24-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for ppui-2026.1.24-py3-none-any.whl
Algorithm Hash digest
SHA256 464deab4ad8f7ec93dc19a0d629b2b897709499b59f53fa2cdaaa1c4dd46bc14
MD5 6bcfdbf2e8d389cb7d231143333df575
BLAKE2b-256 ed63e39c748db8b7c93cf907a6c0a2ff8561ae19d7d61c7c13d34ca75eca5302

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