summaryrefslogtreecommitdiff
path: root/networkx/drawing
diff options
context:
space:
mode:
authorRoss Barnowski <rossbar@berkeley.edu>2022-02-12 12:21:10 -0800
committerGitHub <noreply@github.com>2022-02-12 12:21:10 -0800
commit8964bcec0ac826d1a746f7e3656e1023ef8da924 (patch)
tree12dc4a07bcb3187cfec4827e19ab33ae04483768 /networkx/drawing
parent34d9d630bb02426d297d3e20fedb7da8c3ced03a (diff)
downloadnetworkx-8964bcec0ac826d1a746f7e3656e1023ef8da924.tar.gz
Add informative exception for drawing multiedge labels. (#5316)
Diffstat (limited to 'networkx/drawing')
-rw-r--r--networkx/drawing/nx_pylab.py7
-rw-r--r--networkx/drawing/tests/test_pylab.py15
2 files changed, 22 insertions, 0 deletions
diff --git a/networkx/drawing/nx_pylab.py b/networkx/drawing/nx_pylab.py
index b66d3d11..26c76134 100644
--- a/networkx/drawing/nx_pylab.py
+++ b/networkx/drawing/nx_pylab.py
@@ -1129,6 +1129,13 @@ def draw_networkx_edge_labels(
labels = {(u, v): d for u, v, d in G.edges(data=True)}
else:
labels = edge_labels
+ # Informative exception for multiedges
+ try:
+ (u, v), d = next(iter(labels.items()))
+ except ValueError as err:
+ raise nx.NetworkXError(
+ "draw_networkx_edge_labels does not support multiedges."
+ ) from err
text_items = {}
for (n1, n2), label in labels.items():
(x1, y1) = pos[n1]
diff --git a/networkx/drawing/tests/test_pylab.py b/networkx/drawing/tests/test_pylab.py
index 4795613d..745e6255 100644
--- a/networkx/drawing/tests/test_pylab.py
+++ b/networkx/drawing/tests/test_pylab.py
@@ -675,3 +675,18 @@ def test_edgelist_kwarg_not_ignored():
nx.draw(G, edgelist=[(0, 1), (1, 2)], ax=ax) # Exclude self-loop from edgelist
assert not ax.patches
plt.delaxes(ax)
+
+
+def test_draw_networkx_edge_label_multiedge_exception():
+ """
+ draw_networkx_edge_labels should raise an informative error message when
+ the edge label includes keys
+ """
+ exception_msg = "draw_networkx_edge_labels does not support multiedges"
+ G = nx.MultiGraph()
+ G.add_edge(0, 1, weight=10)
+ G.add_edge(0, 1, weight=20)
+ edge_labels = nx.get_edge_attributes(G, "weight") # Includes edge keys
+ pos = {n: (n, n) for n in G}
+ with pytest.raises(nx.NetworkXError, match=exception_msg):
+ nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)