Skip to content

Commit 03f94a3

Browse files
committed
Fix behavior of new min/max with generators. fix #510
1 parent f60f672 commit 03f94a3

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/future/builtins/new_min_max.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import itertools
2+
13
from future import utils
24
if utils.PY2:
35
from __builtin__ import max as _builtin_max, min as _builtin_min
@@ -33,17 +35,20 @@ def new_min_max(_builtin_func, *args, **kwargs):
3335
raise TypeError
3436

3537
if len(args) == 1:
38+
iterator = iter(args[0])
3639
try:
37-
next(iter(args[0]))
40+
first = next(iterator)
3841
except StopIteration:
3942
if kwargs.get('default') is not None:
4043
return kwargs.get('default')
4144
else:
4245
raise ValueError('iterable is an empty sequence')
46+
else:
47+
iterator = itertools.chain([first], iterator)
4348
if kwargs.get('key') is not None:
44-
return _builtin_func(args[0], key=kwargs.get('key'))
49+
return _builtin_func(iterator, key=kwargs.get('key'))
4550
else:
46-
return _builtin_func(args[0])
51+
return _builtin_func(iterator)
4752

4853
if len(args) > 1:
4954
if kwargs.get('key') is not None:

0 commit comments

Comments
 (0)