[elbe-devel] [PATCH v2] fix use of encode instead of decode

Torben Hohn torben.hohn at linutronix.de
Thu Jan 16 09:23:34 CET 2020


On Wed, Jan 15, 2020 at 09:27:18PM +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.  However, decode is the right
> function to be used here because a u"" string is expected as a result.
> 
> Signed-off-by: Bastian Germann <bage at linutronix.de>
> ---
>  elbepack/efilesystem.py | 4 ++--
>  elbepack/licencexml.py  | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/elbepack/efilesystem.py b/elbepack/efilesystem.py
> index 231471777..83551f2f1 100644
> --- a/elbepack/efilesystem.py
> +++ b/elbepack/efilesystem.py
> @@ -154,10 +154,10 @@ class ElbeFilesystem(Filesystem):
>                  lic_text = "Error while processing license file %s: '%s'" % (
>                      copyright_file, e.strerror)
>  
> -            lic_text = lic_text.encode(encoding='utf-8', errors='replace')
> +            lic_text = lic_text.decode(encoding='utf-8', errors='replace')

this one is correct. lic_text is supposed to be bytes before.
although in case of an IOError, it would be 'str' which is ok in
python2, but not ok in python3.

Note: a python3 string only has an encode method. decode is a method of
bytes.

so... you must make sure, that

lic_text = "Error while processing license file %s: '%s'" % (copyright_file, e.strerror)

also yields bytes, or move that into the try: block.



>  
>              if f is not None:
> -                f.write(pkg.encode(encoding='utf-8', errors='replace'))
> +                f.write(pkg.decode(encoding='utf-8', errors='replace'))

pkg is a str and the encoding should already be set as a file attribute.
i dont think, that encode is actually necessary here.

>                  f.write(u":\n======================================"
>                          "==========================================")
>                  f.write(u"\n")
> diff --git a/elbepack/licencexml.py b/elbepack/licencexml.py
> index 09ab3cff7..ac84b330c 100644
> --- a/elbepack/licencexml.py
> +++ b/elbepack/licencexml.py
> @@ -60,7 +60,7 @@ class copyright_xml (object):
>          txtnode = xmlpkg.append('text')
>          txtnode.et.text = copyright_text
>  
> -        bytesio = io.StringIO(txtnode.et.text.encode(encoding='utf-8', errors='replace'))
> +        bytesio = io.StringIO(txtnode.et.text.decode(encoding='utf-8', errors='replace'))

txtnode.et.text is a string also.
i believe, that this was correct.

>          try:
>              c = Copyright(bytesio)
>              files = []
> -- 
> 2.20.1
> 

-- 
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99

Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
can be found here): https://linutronix.de/kontakt/Datenschutz.php

Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen | 
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700 
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner



More information about the elbe-devel mailing list