[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