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 <c...@zip.com.au> wrote: > On 07Jan2016 16:12, Python-Dev <python-dev@python.org> wrote: > >> On Jan 7, 2016, at 15:57, Martin Panter <vadmium...@gmail.com> wrote: >> >>> On 7 January 2016 at 22:26, Blake Griffith <blake.a.griff...@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, crypto_source): > ''' 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 = crypto_source.next_bytes(len(bs)) > yield bs ^ cbs > > Cheers, > Cameron Simpson <c...@zip.com.au> > _______________________________________________ > 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/blake.a.griffith%40gmail.com >
_______________________________________________ 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