Visualization¶
Module: agentspype.visualization
The visualization subsystem generates pydot diagrams for agents and their components. All classes inherit from BaseVisualization and produce pydot.Dot objects that can be rendered to PNG (or other Graphviz output formats).
BaseVisualization¶
Module: agentspype.visualization.base_visualization
Abstract base class for all visualization components. Provides shared graph-building utilities and the top-level visualize() orchestration method.
Class Variables (Style Constants)¶
| Name | Value | Description |
|---|---|---|
FONT_NAME |
"Arial" |
Font for all graph text |
FONT_SIZE |
"10pt" |
Font size for all graph text |
GRAPH_RANKDIR |
"LR" |
Graph direction (left to right) |
Class Methods¶
create_graph(name, graph_type="digraph") -> pydot.Dot¶
Creates a pydot.Dot graph with default styling applied.
graph = BaseVisualization.create_graph("My Agent")
create_node(node_id, label, shape, style, final, fillcolor, color) -> pydot.Node¶
Creates a styled pydot.Node.
| Parameter | Default | Description |
|---|---|---|
node_id |
— | Unique node identifier |
label |
— | Display text |
shape |
"rectangle" |
Node shape |
style |
"rounded, filled" |
Node style |
final |
False |
If True, draws double border (peripheries=2) |
fillcolor |
"white" |
Fill color |
color |
"black" |
Border color |
create_edge(source, target, label, style, color) -> pydot.Edge¶
Creates a styled pydot.Edge.
save_diagram(graph, filename, output_dir) -> str¶
Saves graph as a PNG file. Creates output_dir if it does not exist. Appends .png if not already present. Returns the full file path.
Methods¶
create_visualization(target, graph, **kwargs) -> pydot.Dot (abstract)¶
Implemented by each subclass to build the diagram for target. If graph is provided, nodes and edges are added to it; otherwise a new graph is created.
visualize(target, save_file, filename, output_dir, **kwargs) -> pydot.Dot¶
Calls create_visualization(target, **kwargs) then optionally saves the result. Returns the pydot.Dot object.
graph = viz.visualize(target, save_file=True, filename="output", output_dir=".diagrams")
StateMachineVisualization¶
Module: agentspype.visualization.state_machine_visualization
Visualizes an AgentStateMachine instance using pydot with custom AgentsPype styling.
Methods¶
create_visualization(target, graph, current_state, **kwargs) -> pydot.Dot¶
| Parameter | Description |
|---|---|
target |
An AgentStateMachine instance |
graph |
Optional existing graph to add into |
current_state |
Optional State to highlight in gold |
Node styling:
- States in states_map → light blue, dark blue border, rounded
- Node "i" (initial marker) → light green, dark green border
- Node "end" → light coral, dark red border
- Current state → gold fill, orange border, bold
Edge styling:
- start → dark green, dashed
- stop → dark red, dashed
- Registered events → dark blue, bold
- Empty label → gray, dotted
visualize_with_current_state(state_machine, save_file, filename, output_dir, **kwargs) -> pydot.Dot¶
Convenience method that reads state_machine.current_state and passes it to visualize as current_state.
PublishingVisualization¶
Module: agentspype.visualization.publishing_visualization
Visualizes an AgentPublishing class (or instance). Calls get_event_definitions() to enumerate EventPublication attributes.
Graph Structure¶
- Central publisher node (light green, dark green border, double border)
- For each
EventPublication: - Event node (light blue, dark blue border) — connected from publisher with "publishes" label
- Event tag node (light yellow, orange border) — connected from event with "tagged as" (dashed)
- Event class node (light cyan, dark blue border) — connected from event with "data type" (dotted)
- If no events: "No Events" placeholder node (gray, dotted)
Methods¶
create_visualization(target, graph, **kwargs) -> pydot.Dot¶
| Parameter | Description |
|---|---|
target |
An AgentPublishing class or instance |
graph |
Optional existing graph to add into |
ListeningVisualization¶
Module: agentspype.visualization.listening_visualization
Visualizes an AgentListening class (or instance). Calls get_event_definitions() to enumerate callback methods.
Graph Structure¶
- Central listener node (light blue, dark blue border, double border)
- For each callback:
- Callback node (light green, dark green border) — connected from listener with "calls" label
- If event tag is available: tag node (light yellow, orange) → callback with "triggers" (dashed)
- If publisher class is available: publisher node (light cyan, dark green) → tag or callback with "publishes"
- If no callbacks: "No Subscriptions" placeholder node (gray, dotted)
Methods¶
create_visualization(target, graph, **kwargs) -> pydot.Dot¶
| Parameter | Description |
|---|---|
target |
An AgentListening class or instance |
graph |
Optional existing graph to add into |
AgentVisualization¶
Module: agentspype.visualization.agent_visualization
Top-level orchestrator that combines StateMachineVisualization, PublishingVisualization, and ListeningVisualization into a comprehensive agent diagram. This is the class used by Agent.visualize() and related methods.
Constructor¶
AgentVisualization()
Creates instances of the three component visualizers.
Methods¶
create_visualization(target, graph, include_state_machine, include_publishing, include_listening, show_current_state, **kwargs) -> pydot.Dot¶
Creates the comprehensive diagram. The agent class name becomes the central node (light pink, dark red border, double border). Component subgraphs are merged into the main graph and connected via colored edges: - Red edge → state machine - Green edge → publisher - Blue edge → listener
visualize_state_machine_only(agent, save_file, filename, output_dir, **kwargs) -> pydot.Dot¶
Delegates to StateMachineVisualization.visualize_with_current_state.
visualize_publishing_only(agent, save_file, filename, output_dir, **kwargs) -> pydot.Dot¶
Delegates to PublishingVisualization.visualize with type(agent.publishing).
visualize_listening_only(agent, save_file, filename, output_dir, **kwargs) -> pydot.Dot¶
Delegates to ListeningVisualization.visualize with type(agent.listening).
create_component_diagrams(agent, save_files, output_dir, **kwargs) -> dict[str, pydot.Dot]¶
Creates and returns all four diagrams:
{
"state_machine": pydot.Dot,
"publishing": pydot.Dot,
"listening": pydot.Dot,
"comprehensive": pydot.Dot,
}