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.3

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.3
File Size Uploaded
functualize_inline-0.1.3.tar.gz 12.2 kB Details

Built distribution (wheel)

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

Total release size: 21.7 kB

Release files / functualize_inline-0.1.3.tar.gz

Download URL functualize_inline-0.1.3.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dd27b071ad4bfe2710154203808202d2d3825058d788675e2da30fa89eb09ede
BLAKE2b-256 checksum
How to use checksums
1ea323fe024fced17727d43bb3266d23b64f5e79dfef2b4c39343893e970b9d7
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 3, 2026.

Transparency log

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

Download URL functualize_inline-0.1.3-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
120569c5743fad1426c3289f3cc89da4f8aed93fd33ff78392a874d5e62c82f7
BLAKE2b-256 checksum
How to use checksums
e52bcf90c47823d4ae9cef82b22659e3b385b995b5b6152d92c4f9bb155bf51c
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 3, 2026.

Transparency log

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

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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