On 3/26/19 2:16 PM, Wei Liu wrote:
> On Mon, Mar 25, 2019 at 10:20:05PM +0000, YOUNG, MICHAEL A. wrote:
>> [...]
>> --- xen-4.12.0-rc6/tools/pygrub/src/pygrub.orig      2019-03-24 
>> 22:44:05.503582025 +0000
>> +++ xen-4.12.0-rc6/tools/pygrub/src/pygrub   2019-03-24 22:48:24.446113809 
>> +0000
>> @@ -457,7 +457,7 @@
>>          # limit read size to avoid pathological cases
>>          buf = f.read(FS_READ_MAX)
>>          del f
>> -        self.cf.parse(buf)
>> +        self.cf.parse(buf.decode())
> 
> Hmm... This could be a bit problematic for 2 compatibility. I will need
> some time to check the documents.

The exact moment when you're typing .decode() or .encode() to try fix a
python2/3 problem, you're entering a world of pain (tm).

[insert big lebowski walter pointing gun gif here]

Some of the python 2 and 3 compatibility things can be fixed easily by
importing things from the future, but when dealing with strings and
bytes, you're entering the "is it really worth it" department.

In python 2, strings are bytes, and there's some added duct tape
available to do something with unicode and utf-8.

In python 3, strings are unicode and bytes are bytes, which is sooooooo
much more convenient. If the strings have to be stored in some location
that stores bytes, you can encode them. If you have some incoming byte
stream, you can decode it.

I don't really have recommendations to make both of them work with the
same lines of code since I tried and gave up when doing it myself.

What you're looking at is how the in-memory storage for a 'string' is
done and how to connect input and output to that, while looking at
python 2 and 3 functions with the same name, doing different things in
a different context. There is no sane way to do this that works with
python 2 and 3.

Hans

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to