Ezio Melotti added the comment:

Attached patch adds support for memoryviews to bytes.join:

>>> b''.join([memoryview(b'foo'), b'bar'])
b'foobar'

The implementation currently has some duplication, because it does a first pass 
to calculate the total size to allocate, and another pass to create the result 
that calculates the individual sizes again.  Py_SIZE(item) can't be used here 
for memoryviews, so during the first pass it's now necessary to check for 
memoryviews and extract the len from the memoryview buffer, and then do it 
again during the second pass.
If necessary this could be optimized/improved.

I also tried to check for multi-dimensional and non-contiguous buffers, but I 
didn't manage to obtain a failure so I removed the check for now.
More tests should probably be added to cover these cases, and possibly the 
patch should be adjusted accordingly.

If/when the patch is OK I'll do the same for bytearrays.

----------
keywords: +patch
nosy: +ezio.melotti
stage: needs patch -> patch review
Added file: http://bugs.python.org/file27257/issue15958.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15958>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to