Re: [Python-Dev] bitwise operations for bytes and bytearray

2016-01-09 Thread Blake Griffith
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  wrote:

> On 07Jan2016 16:12, Python-Dev  wrote:
>
>> On Jan 7, 2016, at 15:57, Martin Panter  wrote:
>>
>>> On 7 January 2016 at 22:26, Blake Griffith 
>>>> 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
> ofcrypto 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 
> ___
> 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


Re: [Python-Dev] bitwise operations for bytes and bytearray

2016-01-07 Thread Blake Griffith
Thanks for the quick responses y'all. I have something compiling on my
branch, which is enough for me tonight.

I asked a question about this on stackoverflow a while ago, it wasn't very
popular
https://stackoverflow.com/questions/32658420/why-cant-you-xor-bytes-objects-in-python

Someone there pointed out this feature was suggested on the mailing list a
while back (2006)
https://mail.python.org/pipermail/python-dev/2006-March/061980.html

On Fri, Jan 8, 2016 at 1:12 AM, Andrew Barnert  wrote:

> On Jan 7, 2016, at 15:57, Martin Panter  wrote:
> >
> >> On 7 January 2016 at 22:26, Blake Griffith 
> 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.)
___
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


[Python-Dev] bitwise operations for bytes and bytearray

2016-01-07 Thread Blake Griffith
Hi!

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.

I've never hacked on cpython before. I'm starting by just trying to add xor
to bytearray. I have a ByteArray_Xor function that I think should do this
here
https://github.com/cowlicks/cpython/commit/d6dddb11cdb33032b39dcb9dfdaa7b10d4377b5f

But I'm not sure how to hook this in to the rest of cypython. I tried
adding it where bytearray_as_sequence is declared in this bytearrayobject.c
file. But that gave me compiler warnings and broke things.

So now that I have this ByteArray_Xor function, how do I make it be
bytearray.__xor___?

Thanks!

Blake
___
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