Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit aeed94b

Browse files
authored
Merge pull request #6712 from tacaswell/mnt_fix_npflatiter_as_input
FIX: support np.flatiter is input again
2 parents 7cad938 + 8d03299 commit aeed94b

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/matplotlib/cbook.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2550,6 +2550,15 @@ def index_of(y):
25502550

25512551
def safe_first_element(obj):
25522552
if isinstance(obj, collections.Iterator):
2553+
# needed to accept `array.flat` as input.
2554+
# np.flatiter reports as an instance of collections.Iterator
2555+
# but can still be indexed via [].
2556+
# This has the side effect of re-setting the iterator, but
2557+
# that is acceptable.
2558+
try:
2559+
return obj[0]
2560+
except TypeError:
2561+
pass
25532562
raise RuntimeError("matplotlib does not support generators "
25542563
"as input")
25552564
return next(iter(obj))

lib/matplotlib/tests/test_cbook.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,3 +499,15 @@ class dummy():
499499
base_set = mapping[ref(objs[0])]
500500
for o in objs[1:]:
501501
assert mapping[ref(o)] is base_set
502+
503+
504+
def test_flatiter():
505+
x = np.arange(5)
506+
it = x.flat
507+
assert 0 == next(it)
508+
assert 1 == next(it)
509+
ret = cbook.safe_first_element(it)
510+
assert ret == 0
511+
512+
assert 0 == next(it)
513+
assert 1 == next(it)

0 commit comments

Comments
 (0)