mirror of https://github.com/python/cpython
merge
This commit is contained in:
commit
f400ab40e4
|
@ -212,11 +212,10 @@ def nsmallest(n, iterable):
|
||||||
pop = result.pop
|
pop = result.pop
|
||||||
los = result[-1] # los --> Largest of the nsmallest
|
los = result[-1] # los --> Largest of the nsmallest
|
||||||
for elem in it:
|
for elem in it:
|
||||||
if los <= elem:
|
if elem < los:
|
||||||
continue
|
insort(result, elem)
|
||||||
insort(result, elem)
|
pop()
|
||||||
pop()
|
los = result[-1]
|
||||||
los = result[-1]
|
|
||||||
return result
|
return result
|
||||||
# An alternative approach manifests the whole iterable in memory but
|
# An alternative approach manifests the whole iterable in memory but
|
||||||
# saves comparisons by heapifying all at once. Also, saves time
|
# saves comparisons by heapifying all at once. Also, saves time
|
||||||
|
|
|
@ -211,12 +211,6 @@ class TestHeapC(TestHeap):
|
||||||
self.assertEqual(hsort(data, LT), target)
|
self.assertEqual(hsort(data, LT), target)
|
||||||
self.assertRaises(TypeError, data, LE)
|
self.assertRaises(TypeError, data, LE)
|
||||||
|
|
||||||
# As an early adopter, we sanity check the
|
|
||||||
# test.support.import_fresh_module utility function
|
|
||||||
def test_accelerated(self):
|
|
||||||
self.assertTrue(sys.modules['heapq'] is self.module)
|
|
||||||
self.assertFalse(hasattr(self.module.heapify, '__code__'))
|
|
||||||
|
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
|
||||||
|
@ -319,16 +313,16 @@ class TestErrorHandling(unittest.TestCase):
|
||||||
|
|
||||||
def test_non_sequence(self):
|
def test_non_sequence(self):
|
||||||
for f in (self.module.heapify, self.module.heappop):
|
for f in (self.module.heapify, self.module.heappop):
|
||||||
self.assertRaises(TypeError, f, 10)
|
self.assertRaises((TypeError, AttributeError), f, 10)
|
||||||
for f in (self.module.heappush, self.module.heapreplace,
|
for f in (self.module.heappush, self.module.heapreplace,
|
||||||
self.module.nlargest, self.module.nsmallest):
|
self.module.nlargest, self.module.nsmallest):
|
||||||
self.assertRaises(TypeError, f, 10, 10)
|
self.assertRaises((TypeError, AttributeError), f, 10, 10)
|
||||||
|
|
||||||
def test_len_only(self):
|
def test_len_only(self):
|
||||||
for f in (self.module.heapify, self.module.heappop):
|
for f in (self.module.heapify, self.module.heappop):
|
||||||
self.assertRaises(TypeError, f, LenOnly())
|
self.assertRaises((TypeError, AttributeError), f, LenOnly())
|
||||||
for f in (self.module.heappush, self.module.heapreplace):
|
for f in (self.module.heappush, self.module.heapreplace):
|
||||||
self.assertRaises(TypeError, f, LenOnly(), 10)
|
self.assertRaises((TypeError, AttributeError), f, LenOnly(), 10)
|
||||||
for f in (self.module.nlargest, self.module.nsmallest):
|
for f in (self.module.nlargest, self.module.nsmallest):
|
||||||
self.assertRaises(TypeError, f, 2, LenOnly())
|
self.assertRaises(TypeError, f, 2, LenOnly())
|
||||||
|
|
||||||
|
@ -353,7 +347,7 @@ class TestErrorHandling(unittest.TestCase):
|
||||||
for f in (self.module.heapify, self.module.heappop,
|
for f in (self.module.heapify, self.module.heappop,
|
||||||
self.module.heappush, self.module.heapreplace,
|
self.module.heappush, self.module.heapreplace,
|
||||||
self.module.nlargest, self.module.nsmallest):
|
self.module.nlargest, self.module.nsmallest):
|
||||||
self.assertRaises(TypeError, f, 10)
|
self.assertRaises((TypeError, AttributeError), f, 10)
|
||||||
|
|
||||||
def test_iterable_args(self):
|
def test_iterable_args(self):
|
||||||
for f in (self.module.nlargest, self.module.nsmallest):
|
for f in (self.module.nlargest, self.module.nsmallest):
|
||||||
|
|
Loading…
Reference in New Issue