[PATCH 6 of 8 py3 v3] config: guard against setconfig specifying unicode values on py3

Yuya Nishihara yuya at tcha.org
Thu Mar 9 03:04:04 EST 2017


On Wed, 08 Mar 2017 18:22:45 -0500, Augie Fackler wrote:
> # HG changeset patch
> # User Augie Fackler <raf at durin42.com>
> # Date 1488570176 18000
> #      Fri Mar 03 14:42:56 2017 -0500
> # Node ID 9788576dc5009344c2649a7a56565cdf20713112
> # Parent  9269a48bd35f1eaafdb00c58c6056382c6a0ba88
> config: guard against setconfig specifying unicode values on py3
> 
> This was leading to some difficult to trace problems because the
> values were set in one place, but then blew up much later in the
> program. Exploding violently with an assertion seems reasonable here.
> 
> diff --git a/mercurial/config.py b/mercurial/config.py
> --- a/mercurial/config.py
> +++ b/mercurial/config.py
> @@ -13,6 +13,7 @@ import os
>  from .i18n import _
>  from . import (
>      error,
> +    pycompat,
>      util,
>  )
>  
> @@ -69,6 +70,9 @@ class config(object):
>      def items(self, section):
>          return self._data.get(section, {}).items()
>      def set(self, section, item, value, source=""):
> +        if pycompat.ispy3:
> +            assert not isinstance(value, str), (
> +                'config values may not be unicode strings on Python 3')

IIRC, internal API may set non-str such as booleans. And str on Python 3 is
unicode.


More information about the Mercurial-devel mailing list