[elbe-devel] [PATCH v3] license text: fix encoding for both py2 and py3

torben.hohn at linutronix.de torben.hohn at linutronix.de
Fri Jan 24 20:56:23 CET 2020


On Mon, Jan 20, 2020 at 05:59:29PM +0100, bage at linutronix.de wrote:
> From: Bastian Germann <bage at linutronix.de>
> 
> 91b938d2491 ("Python3: use encode instead of unicode() function") changed the
> Python 2 only unicode() calls to encode() calls.
> 
> As Yegor pointed out, this led to the following error:
> 
> Traceback (most recent call last):
>   File "/var/cache/elbe/devel/elbepack/asyncworker.py", line 186, in execute
>     skip_pbuild=self.skip_pbuilder)
>   File "/var/cache/elbe/devel/elbepack/elbeproject.py", line 585, in build
>     self.buildenv.rfs.write_licenses(f, pkgnames, lic_xml_fname)
>   File "/var/cache/elbe/devel/elbepack/efilesystem.py", line 161, in
> write_licenses
>     f.write(pkg.encode(encoding='utf-8', errors='replace'))
> TypeError: write() argument 1 must be unicode, not str
> 
> Unify the encoding approach over both major Python version so that we get rid of
> this error.
> 
> Signed-off-by: Christian Teklenborg <chris at linutronix.de>
> Signed-off-by: Bastian Germann <bage at linutronix.de>

Reviewed-by: Torben Hohn <torbenh.hohn at linutronix.de>

> ---
>  elbepack/efilesystem.py | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/elbepack/efilesystem.py b/elbepack/efilesystem.py
> index 050a95d95..f244ec9f6 100644
> --- a/elbepack/efilesystem.py
> +++ b/elbepack/efilesystem.py
> @@ -147,18 +147,17 @@ class ElbeFilesystem(Filesystem):
>              copyright_file = os.path.join('/usr/share/doc', pkg, 'copyright')
>              copyright_fname = self.fname(copyright_file)
>              try:
> -                with io.open(copyright_fname, "rb") as lic:
> +                with io.open(copyright_fname, "r",
> +                             encoding="utf-8", errors="replace") as lic:
>                      lic_text = lic.read()
>              except IOError as e:
>                  logging.exception("Error while processing license file %s",
>                                    copyright_fname)
> -                lic_text = "Error while processing license file %s: '%s'" % (
> +                lic_text = u"Error while processing license file %s: '%s'" % (
>                      copyright_file, e.strerror)
>  
> -            lic_text = lic_text.encode(encoding='utf-8', errors='replace')
> -
>              if f is not None:
> -                f.write(pkg.encode(encoding='utf-8', errors='replace'))
> +                f.write(pkg)
>                  f.write(u":\n======================================"
>                          "==========================================")
>                  f.write(u"\n")
> -- 
> 2.20.1
> 



More information about the elbe-devel mailing list