[PATCH 1 of 2] py3: convert to unicode to pass into encode()
Yuya Nishihara
yuya at tcha.org
Fri Oct 7 09:42:59 EDT 2016
On Fri, 07 Oct 2016 14:05:41 +0200, Pulkit Goyal wrote:
> # HG changeset patch
> # User Pulkit Goyal <7895pulkit at gmail.com>
> # Date 1475835208 -7200
> # Fri Oct 07 12:13:28 2016 +0200
> # Node ID 480cfc1623c2ad732300d942bbfab41343f7b8c5
> # Parent 91a3c58ecf938ed675f5364b88f0d663f12b0047
> py3: convert to unicode to pass into encode()
>
> encoding.encoding is bytes, we need to pass it to encode() which accepts
> unicodes in py3, so used pycomapt.sysstr() Also this can't be done using
> transformer as that only transforms the string values not variables.
>
> diff -r 91a3c58ecf93 -r 480cfc1623c2 mercurial/i18n.py
> --- a/mercurial/i18n.py Mon Oct 03 13:24:56 2016 +0200
> +++ b/mercurial/i18n.py Fri Oct 07 12:13:28 2016 +0200
> @@ -12,7 +12,10 @@
> import os
> import sys
>
> -from . import encoding
> +from . import (
> + encoding,
> + pycompat,
> +)
>
> # modelled after templater.templatepath:
> if getattr(sys, 'frozen', None) is not None:
> @@ -85,6 +88,7 @@
> # means u.encode(sys.getdefaultencoding()).decode(enc). Since
> # the Python encoding defaults to 'ascii', this fails if the
> # translated string use non-ASCII characters.
> + encoding.encoding = pycompat.sysstr(encoding.encoding)
We shouldn't convert encoding.encoding to unicode because it would break
_('checking encoding (%s)...\n') % encoding.encoding, bytes % unicode, for
example.
> _msgcache[message] = u.encode(encoding.encoding, "replace")
More information about the Mercurial-devel
mailing list