Feature or enhancement
Proposal:
Add bytearray.resize() which wraps PyByteArray_Resize
PyByteArray_Resize is part of the C Stable API and allows efficiently expanding a bytearray object's buffer in place (when possible / most efficient) without needing to have another object which can "hold" the data temporarily or needing to copy the data from one storage to a second. (ex. bytearray.extend(itertools.range(0, 20), a = bytearray(); a += b'temp'.
This can be somewhat emulated currently with appending a itertools.range / iterator that provides __length_hint__, but that still requires copying byte data out of the iterator. PyByteArray_Resize doesn't require setting / clearing the newly allocated space, just always ensures the data ends with a null byte \0.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
Feature or enhancement
Proposal:
Add
bytearray.resize()which wrapsPyByteArray_ResizePyByteArray_Resizeis part of the C Stable API and allows efficiently expanding a bytearray object's buffer in place (when possible / most efficient) without needing to have another object which can "hold" the data temporarily or needing to copy the data from one storage to a second. (ex.bytearray.extend(itertools.range(0, 20),a = bytearray(); a += b'temp'.This can be somewhat emulated currently with appending a
itertools.range/ iterator that provides__length_hint__, but that still requires copying byte data out of the iterator.PyByteArray_Resizedoesn't require setting / clearing the newly allocated space, just always ensures the data ends with a null byte\0.Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
bytearray.resize()#129560.in bytearray.resize AC #140134bytearray.resizethread safety test for free-threading (GH-141739) #141835