Skip to main content

functualize-inline

Status: Published — Independently installable from PyPI.

Textual-based inline interactivity provider for the functualize framework. This plugin renders rich terminal widgets (confirmations, selections, text inputs, progress bars) inline within the terminal using Textual's inline mode — without taking over the full screen. When Textual is unavailable (non-TTY, CI environments), it gracefully falls back to plain CLI input() prompts.

Installation

pip install functualize-inline

Quick Start

from functualize.plugin import PromptIntent, PromptRequest
from functualize_inline import InlinePlugin

plugin = InlinePlugin()

request = PromptRequest(
    intent=PromptIntent.CONFIRM_NEUTRAL,
    question="Deploy to staging?",
    default=True,
)
response = plugin.collect(request)
print(f"User answered: {response.value} (source: {response.source})")

Features

  • Rich inline widgets — Confirmation dialogs, single/multi-select lists, text inputs, secret inputs, and acknowledgment prompts rendered with Textual styling
  • Automatic CLI fallback — Detects non-TTY environments and falls back to plain input() prompts so jobs run unattended in CI
  • Structured output rendering — Implements OutputRenderer protocol with render_log, render_phase, and render_progress for formatted terminal output with icons and progress bars
  • Timeout support — Prompts can auto-dismiss after a configurable timeout, returning the default value
  • Entry-point auto-discovery — Install the package and it registers itself as an interactivity provider via the functualize.interactivity_providers entry point

API Reference

Public classes and functions exported by this plugin:

functualize_inline (top-level)

  • InlinePlugin — Main plugin class implementing InputProvider and OutputRenderer protocols. Entry point for prompt collection and terminal output rendering.

functualize_inline.apps

  • InlinePromptApp — A short-lived Textual App (inline mode) that mounts a prompt widget and returns the user's response as a (value, source) tuple.

functualize_inline.widgets

  • PromptResult — Textual Message posted by widgets when the user provides a response. Carries .value and .source attributes.
  • ConfirmDestructiveWidget — Red-bordered widget requiring the user to type "yes" to confirm dangerous actions.
  • ConfirmNeutralWidget — Standard Y/n confirmation widget with keyboard shortcuts.
  • SelectWidget — Single-select OptionList widget (max 12 visible items).
  • MultiSelectWidget — Checkbox-style multi-select widget with toggle and submit.
  • TextInputWidget — Free-text input with optional placeholder and default value.
  • SecretInputWidget — Masked password input widget.
  • AcknowledgeWidget — Press-any-key dismiss widget for informational prompts.

Development

Run plugin tests:

uv run pytest plugins/functualize-inline/tests/ -v

Run linting and formatting:

uv run ruff check plugins/functualize-inline/
uv run ruff format plugins/functualize-inline/

Release files for functualize-inline 0.1.0

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

Source distribution (sdist)

Source distribution for functualize-inline 0.1.0
File Size Uploaded
functualize_inline-0.1.0.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for functualize-inline 0.1.0
File Interpreter ABI Platform
functualize_inline-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.3 kB

Release files / functualize_inline-0.1.0.tar.gz

Download URL functualize_inline-0.1.0.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f68ff9aab98094ff5b11853ea111e99b02a43d4baf7a8822cb941e2aed708c79
BLAKE2b-256 checksum
How to use checksums
a163ea29c30e5fa8c3985d0f53e9b6d01b2ca55460079fd39f0bc3d3e507b538
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / functualize_inline-0.1.0-py3-none-any.whl

Download URL functualize_inline-0.1.0-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6224e60cb74761c68e000dfee7ee1a8a265d6dae423163ca18bc6cda92d60fd
BLAKE2b-256 checksum
How to use checksums
e1c3ff0a4a285cb7f838531b9c8d2f49b83e4bbf6c95475501ebc7ab1d73dd20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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