File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2550,6 +2550,15 @@ def index_of(y):
25502550
25512551def 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 ))
Original file line number Diff line number Diff 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 )
You can’t perform that action at this time.
0 commit comments