Skip to main content

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 job
    • on_log(level, message) — Render a log message
    • on_status_change(old_status, new_status, message) — Handle status transitions
    • on_phase_change(step, action) — Add or update a job phase node
    • on_invoke_start(child_job_name, kwargs) — Begin tracking a nested invocation
    • on_invoke_end(child_job_name, result) — Complete a nested invocation
    • on_job_end(job_name, result) — Finalize the tree and render final state
    • on_event(event) — Handle custom structured events
    • render_log(message, level) — OutputRenderer protocol: render log
    • render_phase(phase, status) — OutputRenderer protocol: render phase update
    • render_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 children
  • InlineTTYRenderer — ANSI-based renderer for interactive terminals with background refresh
  • PlainTextRenderer — 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.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-flow-viz 0.2.0
File Size Uploaded
functualize_flow_viz-0.2.0.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for functualize-flow-viz 0.2.0
File Interpreter ABI Platform
functualize_flow_viz-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.3 kB

Release files / functualize_flow_viz-0.2.0.tar.gz

Download URL functualize_flow_viz-0.2.0.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5cb93b3122f2a6e7e9e4ac7a952d4e5c5018ac9d1dc329d2ac5fd30c1341bc38
BLAKE2b-256 checksum
How to use checksums
2ae68e4e71cff9b5e1f8db89c86e5e31e1dede93171ae979b203d47e9e073065
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_flow_viz-0.2.0-py3-none-any.whl

Download URL functualize_flow_viz-0.2.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4552974a8830609e6a4808cfe2ef713ed8880aec5416bfabfef5e0e79c788f80
BLAKE2b-256 checksum
How to use checksums
eac1dbbafccc655508037116983a0df9dce9dec255f05fd51df8223693e0f553
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

This release

0.2.0 This release

2 release files

0.1.3

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