diff options
author | Ross Barnowski <rossbar@berkeley.edu> | 2022-02-12 12:21:10 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-12 12:21:10 -0800 |
commit | 8964bcec0ac826d1a746f7e3656e1023ef8da924 (patch) | |
tree | 12dc4a07bcb3187cfec4827e19ab33ae04483768 /networkx/drawing | |
parent | 34d9d630bb02426d297d3e20fedb7da8c3ced03a (diff) | |
download | networkx-8964bcec0ac826d1a746f7e3656e1023ef8da924.tar.gz |
Add informative exception for drawing multiedge labels. (#5316)
Diffstat (limited to 'networkx/drawing')
-rw-r--r-- | networkx/drawing/nx_pylab.py | 7 | ||||
-rw-r--r-- | networkx/drawing/tests/test_pylab.py | 15 |
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) |