__str__ method should return byte string, not unicode string. But as we don't have a check in every KS_OBJECT.__str__ method, let's at least add try-except block to prevent UnicodeDecodeError tracebacks.
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- pykickstart/base.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/pykickstart/base.py b/pykickstart/base.py index 4ef442c..9079906 100644 --- a/pykickstart/base.py +++ b/pykickstart/base.py @@ -281,12 +281,20 @@ class BaseHandler(KickstartObject):
for prio in lst: for obj in self._writeOrder[prio]: - retval += obj.__str__() + obj_str = str(obj) + try: + retval += obj_str + except UnicodeDecodeError: + retval += obj_str.encode("utf-8")
for script in self.scripts: - retval += script.__str__() + script_str = str(script) + try: + retval += script_str + except UnicodeDecodeError: + retval += script_str.encode("utf-8")
- retval += self.packages.__str__() + retval += str(self.packages)
return retval