Normalize fabro_graphviz imports to use shorter re-exported paths

Replace fabro_graphviz::graph::types:: with fabro_graphviz::graph::
everywhere, since graph/mod.rs re-exports types::*. Also simplify
the From<GraphvizError> impl.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-03-17 11:26:23 -04:00
parent b822a76f79
commit 49c7e329dd
No known key found for this signature in database
7 changed files with 40 additions and 41 deletions

View file

@ -11,7 +11,7 @@ use git2::{Oid, Repository, Signature};
use crate::checkpoint::Checkpoint;
use crate::git::MetadataStore;
use fabro_graphviz::graph::types::Graph;
use fabro_graphviz::graph::Graph;
/// Rewind a workflow run to an earlier checkpoint.
#[derive(Debug, Args)]
@ -708,50 +708,50 @@ mod tests {
#[test]
fn parallel_interior_detection() {
let mut graph = Graph::new("test");
let mut parallel_node = fabro_graphviz::graph::types::Node::new("parallel1");
let mut parallel_node = fabro_graphviz::graph::Node::new("parallel1");
parallel_node.attrs.insert(
"shape".to_string(),
fabro_graphviz::graph::types::AttrValue::String("component".to_string()),
fabro_graphviz::graph::AttrValue::String("component".to_string()),
);
graph.nodes.insert("parallel1".to_string(), parallel_node);
let mut fan_in = fabro_graphviz::graph::types::Node::new("fan_in1");
let mut fan_in = fabro_graphviz::graph::Node::new("fan_in1");
fan_in.attrs.insert(
"shape".to_string(),
fabro_graphviz::graph::types::AttrValue::String("tripleoctagon".to_string()),
fabro_graphviz::graph::AttrValue::String("tripleoctagon".to_string()),
);
graph.nodes.insert("fan_in1".to_string(), fan_in);
let mut a = fabro_graphviz::graph::types::Node::new("a");
let mut a = fabro_graphviz::graph::Node::new("a");
a.attrs.insert(
"shape".to_string(),
fabro_graphviz::graph::types::AttrValue::String("box".to_string()),
fabro_graphviz::graph::AttrValue::String("box".to_string()),
);
graph.nodes.insert("a".to_string(), a);
let mut b = fabro_graphviz::graph::types::Node::new("b");
let mut b = fabro_graphviz::graph::Node::new("b");
b.attrs.insert(
"shape".to_string(),
fabro_graphviz::graph::types::AttrValue::String("box".to_string()),
fabro_graphviz::graph::AttrValue::String("box".to_string()),
);
graph.nodes.insert("b".to_string(), b);
graph.edges.push(fabro_graphviz::graph::types::Edge {
graph.edges.push(fabro_graphviz::graph::Edge {
from: "parallel1".to_string(),
to: "a".to_string(),
attrs: HashMap::new(),
});
graph.edges.push(fabro_graphviz::graph::types::Edge {
graph.edges.push(fabro_graphviz::graph::Edge {
from: "parallel1".to_string(),
to: "b".to_string(),
attrs: HashMap::new(),
});
graph.edges.push(fabro_graphviz::graph::types::Edge {
graph.edges.push(fabro_graphviz::graph::Edge {
from: "a".to_string(),
to: "fan_in1".to_string(),
attrs: HashMap::new(),
});
graph.edges.push(fabro_graphviz::graph::types::Edge {
graph.edges.push(fabro_graphviz::graph::Edge {
from: "b".to_string(),
to: "fan_in1".to_string(),
attrs: HashMap::new(),

View file

@ -59,7 +59,7 @@ fn resolve_cli_goal(
/// Apply goal to the graph from TOML config or CLI flag.
/// Precedence: CLI `--goal` / `--goal-file` > TOML `goal` > DOT `graph [goal="..."]`.
fn apply_goal_override(
graph: &mut fabro_graphviz::graph::types::Graph,
graph: &mut fabro_graphviz::graph::Graph,
cli_goal: Option<&str>,
toml_goal: Option<&str>,
) {
@ -68,7 +68,7 @@ fn apply_goal_override(
debug!(goal = %goal, "overriding graph goal");
graph.attrs.insert(
"goal".to_string(),
fabro_graphviz::graph::types::AttrValue::String(goal.to_string()),
fabro_graphviz::graph::AttrValue::String(goal.to_string()),
);
}
}
@ -81,7 +81,7 @@ fn resolve_model_provider(
cli_provider: Option<&str>,
run_cfg: Option<&WorkflowRunConfig>,
run_defaults: &RunDefaults,
graph: &fabro_graphviz::graph::types::Graph,
graph: &fabro_graphviz::graph::Graph,
) -> (String, Option<String>) {
let toml_model = run_cfg
.and_then(|c| c.llm.as_ref())
@ -403,13 +403,13 @@ pub async fn run_command(
apply_goal_override(&mut graph, cli_goal.as_deref(), toml_goal);
// Inline @file references in the (possibly overridden) goal
if let Some(fabro_graphviz::graph::types::AttrValue::String(goal)) = graph.attrs.get("goal") {
if let Some(fabro_graphviz::graph::AttrValue::String(goal)) = graph.attrs.get("goal") {
let fallback = dirs::home_dir().map(|h| h.join(".fabro"));
let resolved = crate::transform::resolve_file_ref(goal, dot_dir, fallback.as_deref());
if resolved != *goal {
graph.attrs.insert(
"goal".to_string(),
fabro_graphviz::graph::types::AttrValue::String(resolved),
fabro_graphviz::graph::AttrValue::String(resolved),
);
}
}
@ -1928,7 +1928,7 @@ fn print_assets(run_dir: &std::path::Path, styles: &Styles) {
/// a styled check report.
#[allow(clippy::too_many_arguments)]
async fn run_preflight(
graph: &fabro_graphviz::graph::types::Graph,
graph: &fabro_graphviz::graph::Graph,
run_cfg: &Option<run_config::WorkflowRunConfig>,
args: &RunArgs,
run_defaults: &RunDefaults,
@ -2113,7 +2113,7 @@ async fn run_preflight(
// Collect all distinct (model, provider) pairs from LLM nodes
let mut model_providers = std::collections::BTreeSet::new();
for node in graph.nodes.values() {
if !fabro_graphviz::graph::types::is_llm_handler_type(node.handler_type()) {
if !fabro_graphviz::graph::is_llm_handler_type(node.handler_type()) {
continue;
}
let node_model = node.model().unwrap_or(&model);
@ -2501,7 +2501,7 @@ mod tests {
#[test]
fn apply_goal_override_cli_wins_over_toml() {
use fabro_graphviz::graph::types::{AttrValue, Graph};
use fabro_graphviz::graph::{AttrValue, Graph};
let mut graph = Graph::new("test");
graph.attrs.insert(
"goal".to_string(),
@ -2513,7 +2513,7 @@ mod tests {
#[test]
fn apply_goal_override_toml_wins_over_dot() {
use fabro_graphviz::graph::types::{AttrValue, Graph};
use fabro_graphviz::graph::{AttrValue, Graph};
let mut graph = Graph::new("test");
graph.attrs.insert(
"goal".to_string(),
@ -2525,7 +2525,7 @@ mod tests {
#[test]
fn apply_goal_override_noop_when_none() {
use fabro_graphviz::graph::types::{AttrValue, Graph};
use fabro_graphviz::graph::{AttrValue, Graph};
let mut graph = Graph::new("test");
graph.attrs.insert(
"goal".to_string(),
@ -2558,7 +2558,7 @@ mod tests {
#[test]
fn resolve_model_provider_defaults() {
let graph = fabro_graphviz::graph::types::Graph::new("test");
let graph = fabro_graphviz::graph::Graph::new("test");
let defaults = RunDefaults::default();
let (model, provider) = resolve_model_provider(None, None, None, &defaults, &graph);
assert_eq!(model, "claude-opus-4-6");
@ -2568,7 +2568,7 @@ mod tests {
#[test]
fn resolve_model_provider_cli_overrides_toml() {
let graph = fabro_graphviz::graph::types::Graph::new("test");
let graph = fabro_graphviz::graph::Graph::new("test");
let defaults = RunDefaults::default();
let cfg = run_config::WorkflowRunConfig {
version: 1,
@ -2603,8 +2603,8 @@ mod tests {
#[test]
fn resolve_model_provider_toml_overrides_graph() {
use fabro_graphviz::graph::types::AttrValue;
let mut graph = fabro_graphviz::graph::types::Graph::new("test");
use fabro_graphviz::graph::AttrValue;
let mut graph = fabro_graphviz::graph::Graph::new("test");
graph.attrs.insert(
"default_model".to_string(),
AttrValue::String("graph-model".to_string()),
@ -2642,8 +2642,8 @@ mod tests {
#[test]
fn resolve_model_provider_graph_attrs_used_as_fallback() {
use fabro_graphviz::graph::types::AttrValue;
let mut graph = fabro_graphviz::graph::types::Graph::new("test");
use fabro_graphviz::graph::AttrValue;
let mut graph = fabro_graphviz::graph::Graph::new("test");
graph.attrs.insert(
"default_model".to_string(),
AttrValue::String("gpt-5.2".to_string()),
@ -2661,7 +2661,7 @@ mod tests {
#[test]
fn resolve_model_provider_alias_expansion() {
let graph = fabro_graphviz::graph::types::Graph::new("test");
let graph = fabro_graphviz::graph::Graph::new("test");
let defaults = RunDefaults::default();
let (model, provider) = resolve_model_provider(Some("opus"), None, None, &defaults, &graph);
assert_eq!(model, "claude-opus-4-6");
@ -2670,7 +2670,7 @@ mod tests {
#[test]
fn resolve_model_provider_run_defaults_used() {
let graph = fabro_graphviz::graph::types::Graph::new("test");
let graph = fabro_graphviz::graph::Graph::new("test");
let defaults = RunDefaults {
llm: Some(run_config::LlmConfig {
model: Some("default-model".to_string()),
@ -2686,7 +2686,7 @@ mod tests {
#[test]
fn resolve_model_provider_toml_overrides_run_defaults() {
let graph = fabro_graphviz::graph::types::Graph::new("test");
let graph = fabro_graphviz::graph::Graph::new("test");
let defaults = RunDefaults {
llm: Some(run_config::LlmConfig {
model: Some("default-model".to_string()),

View file

@ -419,9 +419,8 @@ impl From<SdkError> for FabroError {
impl From<fabro_graphviz::error::GraphvizError> for FabroError {
fn from(e: fabro_graphviz::error::GraphvizError) -> Self {
match e {
fabro_graphviz::error::GraphvizError::Parse(msg) => FabroError::Parse(msg),
}
let fabro_graphviz::error::GraphvizError::Parse(msg) = e;
Self::Parse(msg)
}
}

View file

@ -95,7 +95,7 @@ impl Handler for SubWorkflowHandler {
let poll_interval = node
.attrs
.get("manager.poll_interval")
.and_then(fabro_graphviz::graph::types::AttrValue::as_duration)
.and_then(fabro_graphviz::graph::AttrValue::as_duration)
.unwrap_or_else(|| {
let raw = node
.attrs
@ -108,7 +108,7 @@ impl Handler for SubWorkflowHandler {
let max_cycles = node
.attrs
.get("manager.max_cycles")
.and_then(fabro_graphviz::graph::types::AttrValue::as_i64)
.and_then(fabro_graphviz::graph::AttrValue::as_i64)
.unwrap_or(1000);
let max_cycles = u64::try_from(max_cycles).unwrap_or(1000).max(1);

View file

@ -312,7 +312,7 @@ impl Handler for ParallelHandler {
let max_parallel = node
.attrs
.get("max_parallel")
.and_then(fabro_graphviz::graph::types::AttrValue::as_i64)
.and_then(fabro_graphviz::graph::AttrValue::as_i64)
.unwrap_or(4);
let max_parallel = usize::try_from(max_parallel).unwrap_or(4).max(1);

View file

@ -1,5 +1,5 @@
use crate::error::FabroError;
use fabro_graphviz::graph::types::{AttrValue, Graph};
use fabro_graphviz::graph::{AttrValue, Graph};
/// A parsed stylesheet selector.
#[derive(Debug, Clone, PartialEq, Eq)]
@ -235,7 +235,7 @@ pub fn apply_stylesheet(stylesheet: &Stylesheet, graph: &mut Graph) {
#[cfg(test)]
mod tests {
use super::*;
use fabro_graphviz::graph::types::Node;
use fabro_graphviz::graph::Node;
#[test]
fn parse_empty_stylesheet() {

View file

@ -2,7 +2,7 @@ use std::path::Path;
use fabro_graphviz::parser::parse;
fn parse_attractor_dot(filename: &str) -> Result<fabro_graphviz::graph::types::Graph, String> {
fn parse_attractor_dot(filename: &str) -> Result<fabro_graphviz::graph::Graph, String> {
let path = Path::new(env!("CARGO_MANIFEST_DIR"))
.join("../../../test/attractor")
.join(filename);