Skip to content

Commit dbc74ad

Browse files
committed
Fix min/max functions not allowing 'None' as default
1 parent b64245c commit dbc74ad

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/future/builtins/new_min_max.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
else:
77
from builtins import max as _builtin_max, min as _builtin_min
88

9+
_SENTINEL = object()
10+
911

1012
def newmin(*args, **kwargs):
1113
return new_min_max(_builtin_min, *args, **kwargs)
@@ -31,15 +33,15 @@ def new_min_max(_builtin_func, *args, **kwargs):
3133
if len(args) == 0:
3234
raise TypeError
3335

34-
if len(args) != 1 and kwargs.get('default') is not None:
36+
if len(args) != 1 and kwargs.get('default', _SENTINEL) is not _SENTINEL:
3537
raise TypeError
3638

3739
if len(args) == 1:
3840
iterator = iter(args[0])
3941
try:
4042
first = next(iterator)
4143
except StopIteration:
42-
if kwargs.get('default') is not None:
44+
if kwargs.get('default', _SENTINEL) is not _SENTINEL:
4345
return kwargs.get('default')
4446
else:
4547
raise ValueError('iterable is an empty sequence')

tests/test_future/test_builtins.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,7 @@ def test_max(self):
11051105
with self.assertRaises(TypeError):
11061106
max(1, 2, default=0)
11071107
self.assertEqual(max([], default=0), 0)
1108+
self.assertIs(max([], default=None), None)
11081109

11091110
def test_min(self):
11101111
self.assertEqual(min('123123'), '1')
@@ -1150,6 +1151,7 @@ def __getitem__(self, index):
11501151
sorted(data, key=f)[0])
11511152
self.assertEqual(min([], default=5), 5)
11521153
self.assertEqual(min([], default=0), 0)
1154+
self.assertIs(min([], default=None), None)
11531155
with self.assertRaises(TypeError):
11541156
max(None, default=5)
11551157
with self.assertRaises(TypeError):

0 commit comments

Comments
 (0)