On Thu, Dec 8, 2016 at 8:32 PM, Yuya Nishihara <y...@tcha.org> wrote:
> On Thu, 08 Dec 2016 00:06:40 +0530, Pulkit Goyal wrote:
>> # HG changeset patch
>> # User Pulkit Goyal <7895pul...@gmail.com>
>> # Date 1481127783 -19800
>> #      Wed Dec 07 21:53:03 2016 +0530
>> # Node ID 85d610c83bda09dea2393c22e415dd9656f5a7f2
>> # Parent  ced854b9dfaa7298b241ac085627b12ecb796dcd
>> py3: utility functions to convert keys of kwargs to bytes/unicodes
>
>> --- a/mercurial/pycompat.py   Tue Dec 06 06:36:36 2016 +0530
>> +++ b/mercurial/pycompat.py   Wed Dec 07 21:53:03 2016 +0530
>> @@ -103,6 +103,22 @@
>>          args = [a.encode('latin-1') for a in args]
>>          return opts, args
>>
>> +    # keys of keyword arguments in Python need to be strings which are 
>> unicodes
>> +    # Python 3. This function take keyword arguments, convert the keys to 
>> str
>> +    # if they are in bytes.
>> +    def strkwargs(dic):
>> +        dic = {(k.decode('latin-1') if isinstance(k, bytes) else k): v
>> +                                                    for k, v in dic.items()}
>> +        return dic
>> +
>> +    # keys of keyword arguments need to be unicode while passing into a
>> +    # a function. This function helps us to convert those keys back to bytes
>> +    # again as we need to deal with bytes.
>> +    def byteskwargs(dic):
>> +        dic = {(k.encode('latin-1') if isinstance(k, str) else k): v
>> +                                                    for k, v in dic.items()}
>> +        return dic
>
> I think we can assume the type of keys must be either bytes or unicode, so
> we won't need isinstance() checks.

On python 3, if passed value is bytes, then .encode() will result in
error. So have to specific on Python 3.

> And no dict comprehension. The code must be parseable by Python 2.6.

Yeah I remember, actually this code is under a if statement which is
executed if sys.version >= 3.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to