On 15 June 2014 14:57, Nikolaus Rath <Nikolaus at rath.org> wrote: > On 06/14/2014 09:31 PM, Nick Coghlan wrote: >> On 15 June 2014 10:41, Benjamin Peterson <benjamin at python.org> wrote: >>> On Sat, Jun 14, 2014, at 15:39, Nikolaus Rath wrote: >>>> It seems to me that a much cleaner solution would be to simply declare >>>> _pyio's readinto to only work with bytearrays, and to explicitly raise a >>>> (more helpful) TypeError if anything else is passed in. >>> >>> That seems reasonable. I don't think _pyio's behavior is terribly >>> important compared to the C _io module. >> >> _pyio was written before the various memoryview fixes that were >> implemented in Python 3.3 - it seems to me it would make more sense to >> use memoryview to correctly handle arbitrary buffer exporters (we >> implemented similar fixes for the base64 module in 3.4). > > Definitely. But is there a way to do that without writing C code? Yes, Python level reshaping and typecasting of memory views is one of the key enhancements Stefan implemented for 3.3. >>> from array import array >>> a = array('b', b'x'*10) >>> am = memoryview(a) >>> a array('b', [120, 120, 120, 120, 120, 120, 120, 120, 120, 120]) >>> am[:3] = memoryview(b'foo').cast('b') >>> a array('b', [102, 111, 111, 120, 120, 120, 120, 120, 120, 120]) Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4