On 15 June 2014 14:57, Nikolaus Rath <nikol...@rath.org> wrote: > On 06/14/2014 09:31 PM, Nick Coghlan wrote: >> On 15 June 2014 10:41, Benjamin Peterson <benja...@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 | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com