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.1.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.1.1
File Size Uploaded
functualize_flow_viz-0.1.1.tar.gz 10.9 kB Details

Built distribution (wheel)

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

Total release size: 19.1 kB

Release files / functualize_flow_viz-0.1.1.tar.gz

Download URL functualize_flow_viz-0.1.1.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4ccaca26ae877c51c444da3b9ab7ae4bb765883a6a280123f0f36055a9e2c7b1
BLAKE2b-256 checksum
How to use checksums
442371dd0bf2177687ddf0d9380e5500bf1dbcbc9aec4d0b1ba38dec1d6247b9
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 Aug 29, 2026.

Transparency log

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

Download URL functualize_flow_viz-0.1.1-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
de99d7c43698cc0fee7d21f40e961b1aa260c9106102c1614ca2c22b127c13b3
BLAKE2b-256 checksum
How to use checksums
0373b818d6c69b318e9112edd9175909a3db3859747f669d42fa802bd8fdbe44
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 Aug 29, 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

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

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