functualize-flow-viz
Status: Published — Independently installable from PyPI.
Inline execution tree visualization plugin for functualize. Renders a live job execution tree in the terminal showing step status, durations, and nested invocations updating in real time. Automatically detects TTY capabilities and falls back to structured plain-text output for non-interactive terminals.
Installation
pip install functualize-flow-viz
Quick Start
from functualize_flow_viz import FlowVizPlugin
# Register the plugin with your functualize app
plugin = FlowVizPlugin()
plugin.on_job_start("deploy", {"env": "production"})
plugin.on_log("info", "Starting deployment...")
plugin.on_invoke_start("migrate", {"target": "latest"})
plugin.on_invoke_end("migrate", None)
plugin.on_job_end("deploy", None)
Features
- Live execution tree — Renders a real-time tree of job execution with status icons (⏳ running, ✓ success, ✗ failure, ○ pending, ⊘ timeout)
- Nested invocation tracking — Shows
rc.invoke()calls as indented children in the tree, preserving parent-child relationships - Real-time duration refresh — Background thread updates elapsed durations at ≤1s intervals for running nodes
- TTY auto-detection — Uses ANSI inline rendering on interactive terminals; falls back to plain-text output for piped/CI environments
- Custom event handling — Renders domain-specific visualizations including progress bars for events with progress payloads
- Log streaming — Buffers log messages and prints them above the inline tree widget to avoid visual corruption
API Reference
Public classes and functions exported by this plugin:
FlowVizPlugin— Main plugin class implementing the OutputRenderer protocol. Auto-selects between TTY and plain-text rendering. Methods:on_job_start(job_name, metadata)— Initialize the execution tree for a jobon_log(level, message)— Render a log messageon_status_change(old_status, new_status, message)— Handle status transitionson_phase_change(step, action)— Add or update a job phase nodeon_invoke_start(child_job_name, kwargs)— Begin tracking a nested invocationon_invoke_end(child_job_name, result)— Complete a nested invocationon_job_end(job_name, result)— Finalize the tree and render final stateon_event(event)— Handle custom structured eventsrender_log(message, level)— OutputRenderer protocol: render logrender_phase(phase, status)— OutputRenderer protocol: render phase updaterender_progress(current, total, label)— OutputRenderer protocol: render progress
Internal (non-public) classes used by FlowVizPlugin:
TreeNode— Dataclass representing a node in the execution tree with label, status, timing, and childrenInlineTTYRenderer— ANSI-based renderer for interactive terminals with background refreshPlainTextRenderer— Fallback renderer producing structured plain-text without escape sequences
Development
Run plugin tests:
uv run pytest plugins/functualize-flow-viz/tests/ -v
Release files for functualize-flow-viz 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| functualize_flow_viz-0.2.2.tar.gz | 11.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| functualize_flow_viz-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.3 kB
Release files / functualize_flow_viz-0.2.2.tar.gz
| Download URL | functualize_flow_viz-0.2.2.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf3634f5b4963fe6becd16817810414f3389fca9cec6c6fea9279535f82d0717
|
|
BLAKE2b-256 checksum How to use checksums |
2ddf7550120304599cb1ee4c71f53dfea3e07bcb21e5a4757493c6716a8e2e57
|
| 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 4, 2026.
Transparency logRelease files / functualize_flow_viz-0.2.2-py3-none-any.whl
| Download URL | functualize_flow_viz-0.2.2-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66fedfbee50829b023b385ffbf1dddc61808d79395d97cae03ec79c2a0ebc21f
|
|
BLAKE2b-256 checksum How to use checksums |
773f62b383df97146fc0ebac1da32633b752d349a43bd01368c3f8ff79c705e9
|
| 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 4, 2026.
Transparency log