I assumed that the type/value errors are no longer valid in Python 3, so I 
removed the 3 checks in reflection_test.testStringUTF8Encoding().  All unit 
tests now pass!


On Tuesday, September 25, 2012 1:47:09 PM UTC-7, Charles Law wrote:
>
> I thought about this a little, and realized that both unicode and str type 
> strings are passed into fields that have cpp_type CPP_STRING and field_type 
> TYPE_STRING.  I know the 7-bit character limit is only imposed on str type 
> strings - all the extreme value tests use unicode strings.  In Python3, all 
> strings are unicode, so should this limit only exist in Python 2.x?
>
>
> On Friday, September 21, 2012 6:16:41 PM UTC-7, Charles Law wrote:
>>
>> I've made an attempt to create a Python3 compatible version of protobufs. 
>>  I have some code that passes pretty much all the unit tests which I've 
>> posted here:
>>
>> https://github.com/openx/python3-protobuf
>>
>> I probably won't have a chance to look at this again for a couple weeks 
>> if not longer, so I want to get it out there.  In my attempt I decided to 
>> follow the advice in another post, and treat python3 as a new language.  To 
>> get python3 working, you'll have to compile the C code.  There are also a 
>> few issues I ran into along the way:
>>
>>    - I decided to use strings where unicode is used in Python 2.  I was 
>>    originally going to try to use bytes/bytearrays, but they do not support 
>> >8 
>>    bit characters, and some of the setup.py tests use "exotic" 16 bit chrs. 
>>    (Warning: I might have something conceptually wrong here)
>>    - There are places where byte data is stored as strings, then 
>>    converted to unicode.  I ended up converting strings (I called them 
>>    bytestr's) to normal strings.  I'm not sure this is done correctly 
>>    everywhere though.
>>    - Data is packed/unpacked using struct.pack/unpack which is done 
>>    using bytes instead of strings in Python3.  I have simple 
>> string_to_bytes() 
>>    and bytes_to_string() functions to do this.
>>
>>
>> What's left is:
>>
>>    - There are a couple Exceptions that I don't throw.  They are 
>>    supposed to be where the Python2 code converts from unicode strings to 
>>    regular strings.  I am definitely missing something conceptually here - I 
>>    haven't figured out how Python 2x supports strings with "exotic" 
>>    characters, but not strings like u'a\x80a'.  If someone can solve this 
>>    problem & figure out when to throw the exceptions Python3 will be *
>>    fully* working.
>>
>>
>> I might have small bits of time here or there but I don't think I can 
>> devote the time I need to get this finished for several weeks, so if 
>> someone wants to finish this up, feel free to fork this code.  If anyone 
>> wants to see what I did, the best way to do this is to diff between the 
>> latest commit and commit 49ccf5d8b3b688c335dc35bcb9f219eca78c7210.
>> Thanks!
>> Charles
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/protobuf/-/A6oCYBAQWJ4J.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to