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.

And no dict comprehension. The code must be parseable by Python 2.6.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to