Background
booldog.io.interaction_networks.read_graphml's yEd arrow-head parsing matches parsed GraphML edge data back onto igraph edges via the edge id attribute. python-igraph==1.0.0 has a regression where this id is overwritten with node ids (or left blank) instead of the correct GraphML edge id (igraph/igraph#2892, reported by @carissableker). The fix was merged (igraph/igraph#2894), but no python-igraph release contains it yet (the latest release 1.0.0 predates the fix).
Because of this, pyproject.toml pins igraph==0.11.9 exactly (the last known-good version). However, anyone who installs igraph outside that pinned path can silently pull in 1.0.0. Before eacf683, hitting this bug silently corrupted parsed networks (edges with unresolved type were dropped, only a warning). eacf683 makes read_graphml raise instead.
Plan
- Watch for a python-igraph release with the #2894 fix.
- Bump the igraph pin in pyproject.toml.
- Simplify read_graphml: drop the edge_attrs two-pass workaround and the ValueError guard from 3ff18c1.
Background
booldog.io.interaction_networks.read_graphml's yEd arrow-head parsing matches parsed GraphML edge data back onto igraph edges via the edge id attribute.python-igraph==1.0.0has a regression where this id is overwritten with node ids (or left blank) instead of the correct GraphML edge id (igraph/igraph#2892, reported by @carissableker). The fix was merged (igraph/igraph#2894), but no python-igraph release contains it yet (the latest release 1.0.0 predates the fix).Because of this, pyproject.toml pins
igraph==0.11.9exactly (the last known-good version). However, anyone who installs igraph outside that pinned path can silently pull in 1.0.0. Before eacf683, hitting this bug silently corrupted parsed networks (edges with unresolved type were dropped, only a warning). eacf683 makes read_graphml raise instead.Plan