D3536: json: reject unicode on py2 as well

Yuya Nishihara yuya at tcha.org
Sat May 12 02:52:15 EDT 2018


> -    elif isinstance(obj, str):
> -        # This branch is unreachable on Python 2, because bytes == str
> -        # and we'll return in the next-earlier block in the elif
> -        # ladder. On Python 3, this helps us catch bugs before they
> -        # hurt someone.
> +    elif isinstance(obj, (str, pycompat.unicode)):
> +        # On Python 2, we'll only get here if obj is unicode, because
> +        # str == bytes, so str is handled above.

Doh, I never thought we already had pycompat.unicode to be imported
automagically by the code transformer, and it's unavailable on Python 2!
Since we'll eventually ditch the transformer, we'll have to add
`unicode = __builtin__.unicode` to the py2 side of pycompat.

Nit: `(str,` can be removed as `pycompat.unicode` is `str` on Python 3.


More information about the Mercurial-devel mailing list