I have completed this work: https://github.com/malthe/google-protobuf.
– in as much as that all tests run without fail on both 2.7 and 3.3. I have used a single-source approach (which is only really feasible starting with those two for syntax compatibility reasons). Python 2.4, 2.5 and I believe even 2.6 simply aren't going to work. It's too much effort. \malthe On Saturday, September 22, 2012 3:16:41 AM UTC+2, 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 unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/protobuf?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
