[PATCH 01 of 10] py3: explicitly convert a list to str and then bytes to pass in ui.debug

Yuya Nishihara yuya at tcha.org
Sat May 6 22:00:10 EDT 2017


On Sat, 06 May 2017 08:31:13 +0530, Pulkit Goyal wrote:
> # HG changeset patch
> # User Pulkit Goyal <7895pulkit at gmail.com>
> # Date 1493837589 -19800
> #      Thu May 04 00:23:09 2017 +0530
> # Node ID 72a79c82aa8913f1661af3d7dc3b14d856679bd9
> # Parent  e4a4ebfd9d8ee96412ee5909b1e4d97694fd55c2
> py3: explicitly convert a list to str and then bytes to pass in ui.debug
> 
> Here pats is a list obviously. Since we can't pass unicodes to ui.debug, we
> have to pass this as bytes. So this patch first convert that list to str and
> then to bytes to pass into ui.debug().
> 
> diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
> --- a/hgext/largefiles/overrides.py
> +++ b/hgext/largefiles/overrides.py
> @@ -17,6 +17,7 @@
>  from mercurial import (
>      archival,
>      cmdutil,
> +    encoding,
>      error,
>      hg,
>      match as matchmod,
> @@ -380,8 +381,8 @@
>              r = origmatchfn(f)
>              return r
>          m.matchfn = lfmatchfn
> -
> -        ui.debug('updated patterns: %s\n' % sorted(pats))
> +        bytespats = encoding.unitolocal(r'%s' % sorted(pats))
> +        ui.debug('updated patterns: %s\n' % bytespats)

No. '%s' % sorted(paths) is bytes on Python 2, and pats[n] is bytes on
both Pythons. We need to format the list by e.g. ', '.join(sorted(paths)).


More information about the Mercurial-devel mailing list