File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -2550,6 +2550,15 @@ def index_of(y):
2550
2550
2551
2551
def safe_first_element (obj ):
2552
2552
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
2553
2562
raise RuntimeError ("matplotlib does not support generators "
2554
2563
"as input" )
2555
2564
return next (iter (obj ))
Original file line number Diff line number Diff line change @@ -499,3 +499,15 @@ class dummy():
499
499
base_set = mapping [ref (objs [0 ])]
500
500
for o in objs [1 :]:
501
501
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