diff options
author | Martin K. Scherer <marscher@users.noreply.github.com> | 2022-03-04 21:04:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-04 12:04:42 -0800 |
commit | 1ca398b5daa2fbc11e48554f427c8c15a4a1fe50 (patch) | |
tree | b7a4393dba22f8a22c617c62a227321fd2dce281 /networkx/drawing | |
parent | 8feb4a645c93598bb187bf1707beb673fa27915e (diff) | |
download | networkx-1ca398b5daa2fbc11e48554f427c8c15a4a1fe50.tar.gz |
[nx_pylab] fix StopIteration, if empty dict is passed for labels. (#5372)
* [nx_pylab] fix StopIteration, if empty dict is passed for labels.
The new detection for multi-edge labels raises, if an empty dict
was passed. Before this detection that was fine, because the loop
iterating over the passed labels just passed.
Added small test as well.
* incorporate suggestions [ci skip]
* Add regression test for empty edge label dict.
* Simplify dict lookup (keys only).
Co-authored-by: Ross Barnowski <rossbar@berkeley.edu>
Diffstat (limited to 'networkx/drawing')
-rw-r--r-- | networkx/drawing/nx_pylab.py | 7 | ||||
-rw-r--r-- | networkx/drawing/tests/test_pylab.py | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/networkx/drawing/nx_pylab.py b/networkx/drawing/nx_pylab.py index 26c76134..0e392e2b 100644 --- a/networkx/drawing/nx_pylab.py +++ b/networkx/drawing/nx_pylab.py @@ -1058,7 +1058,7 @@ def draw_networkx_edge_labels( A dictionary with nodes as keys and positions as values. Positions should be sequences of length 2. - edge_labels : dictionary (default={}) + edge_labels : dictionary (default=None) Edge labels in a dictionary of labels keyed by edge two-tuple. Only labels for the keys in the dictionary are drawn. @@ -1131,11 +1131,14 @@ def draw_networkx_edge_labels( labels = edge_labels # Informative exception for multiedges try: - (u, v), d = next(iter(labels.items())) + (u, v) = next(iter(labels)) # ensures no edge key provided except ValueError as err: raise nx.NetworkXError( "draw_networkx_edge_labels does not support multiedges." ) from err + except StopIteration: + pass + 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 b8ea9423..54ea6e0c 100644 --- a/networkx/drawing/tests/test_pylab.py +++ b/networkx/drawing/tests/test_pylab.py @@ -716,3 +716,11 @@ def test_draw_networkx_edge_label_multiedge_exception(): 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) + + +def test_draw_networkx_edge_label_empty_dict(): + """Regression test for draw_networkx_edge_labels with empty dict. See + gh-5372.""" + G = nx.path_graph(3) + pos = {n: (n, n) for n in G.nodes} + assert nx.draw_networkx_edge_labels(G, pos, edge_labels={}) == {} |