[Python-Dev] bitwise operations for bytes and bytearray (original) (raw)

Blake Griffith blake.a.griffith at gmail.com
Sat Jan 9 19:17:49 EST 2016


A little update, I got ^, &, and | working for bytearrays. You can view the diff here: https://github.com/python/cpython/compare/master...cowlicks:bitwise-bytes?expand=1

How does it look? Joe, is this how I should allocate the arrays? Am I freeing them properly? Am I checking the input enough?

After some feedback, I'll probably add bitshifting and negation. Then work on bytes objects.

Does this warrant a pep?

On Fri, Jan 8, 2016 at 2:08 AM, Cameron Simpson <cs at zip.com.au> wrote:

On 07Jan2016 16:12, Python-Dev <python-dev at python.org> wrote:

On Jan 7, 2016, at 15:57, Martin Panter <vadmium+py at gmail.com> wrote:

On 7 January 2016 at 22:26, Blake Griffith <blake.a.griffith at gmail.com> wrote: I'm interested in adding the functionality to do something like:

b'a' ^ b'b'

b'\x03' Instead of the good ol' TypeError. I think both bytes and bytearray should support all the bitwise operations. There is a bug open about adding this kind of functionality: <https://bugs.python.org/issue19251>. And it's in the needs patch stage, which makes it perfect for the OP: in addition to learning how to hack on builtin types, he can also learn the other parts of the dev process. (Even if the bug is eventually rejected, as seems likely given that it sat around for three years with no compelling use case and then Guido added a "very skeptical" comment.) The use case which springs immediately to my mind is cryptography. To encrypt a stream symmetrically you can go: cleartext-bytes ^ cryptographicly-random-bytes-from-cipher so with this one could write: def crypted(byteses, cryptosource): ''' Accept an iterable source of bytes objects and a preprimed source of crypto bytes, yield encrypted versions of the bytes objects. ''' for bs in byteses: cbs = cryptosource.nextbytes(len(bs)) yield bs ^ cbs Cheers, Cameron Simpson <cs at zip.com.au>


Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/blake.a.griffith%40gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20160110/85a9c9cb/attachment.html>



More information about the Python-Dev mailing list