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

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.1
File Size Uploaded
functualize_flow_viz-0.2.1.tar.gz 11.1 kB Details

Built distribution (wheel)

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

Total release size: 19.3 kB

Release files / functualize_flow_viz-0.2.1.tar.gz

Download URL functualize_flow_viz-0.2.1.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0da86464806d5ef76436958fa13a1ec61b0d0647af054256610b4de05686ce4a
BLAKE2b-256 checksum
How to use checksums
21552f0b0ca89b2b6723ba09135bcd9e137644109718d4866a02ab714fc3676d
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

Release files / functualize_flow_viz-0.2.1-py3-none-any.whl

Download URL functualize_flow_viz-0.2.1-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
647149c6ea17406467369c08a43d18b554c78ab002f509bb3993ee22361dccba
BLAKE2b-256 checksum
How to use checksums
a9f4bdc62f6454b5e2750df8083bb979c7cfce6bc12758b188b9ea236a7f3d42
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

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

This release

0.2.1 This release

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

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