IronLanguages / IronLanguages/ironpython3
Replace io.BytesIO backing buffer with ArrayData<byte>
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 316
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 1
Description
Replacing the backing buffer with ArrayData<byte> would allow the following scenario:
import io
b = io.BytesIO()
m = b.getbuffer()
b.write(b"aaaaaa")
which should raise:
BufferError: Existing exports of data: object cannot be re-sized
This scenario is covered by CPython.test_memoryio.CBytesIOTest.test_getbuffer.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the io.BytesIO behavior described in the issue and inspect the ArrayData backing-buffer implementation. Run CPython.test_memoryio.CBytesIOTest.test_getbuffer to establish the expected behavior. Done means an existing getbuffer export causes the subsequent write to raise BufferError instead of resizing the buffer.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100