Issue #19087: Improve bytearray allocation in order to allow cheap popping of data at the front (slice deletion).
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
index f12f911..847c7a6 100644
--- a/Lib/test/test_bytes.py
+++ b/Lib/test/test_bytes.py
@@ -909,6 +909,15 @@
with self.assertRaises(ValueError):
b[3:4] = elem
+ def test_setslice_extend(self):
+ # Exercise the resizing logic (see issue #19087)
+ b = bytearray(range(100))
+ self.assertEqual(list(b), list(range(100)))
+ del b[:10]
+ self.assertEqual(list(b), list(range(10, 100)))
+ b.extend(range(100, 110))
+ self.assertEqual(list(b), list(range(10, 110)))
+
def test_extended_set_del_slice(self):
indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300)
for start in indices:
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 30eca4a..70b55b2 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -721,7 +721,7 @@
samples = [b'', b'u'*100000]
for sample in samples:
x = bytearray(sample)
- check(x, vsize('inP') + x.__alloc__())
+ check(x, vsize('n2Pi') + x.__alloc__())
# bytearray_iterator
check(iter(bytearray()), size('nP'))
# cell