i have some problems with using YumBase.searchGenerator from the
PackageKit yum2 backend (dbus based backend).
searchlist = ['name', 'summary', 'description', 'group']
key = 'firmware'
res = self.yumbase.searchGenerator(searchlist, [key])
for (pkg,values) in res:
# do some action
i get this
org.freedesktop.DBus.Python.UnicodeDecodeError: Traceback (most recent
call last):
File "/usr/lib/python2.5/site-packages/dbus/service.py", line 655, in
_message_cb
retval = candidate_method(self, *args, **keywords)
File "./yumDBUSBackend.py", line 388, in SearchDetails
successful = self._do_search(searchlist, filters, key)
File "./yumDBUSBackend.py", line 1014, in _do_search
for (pkg,values) in res:
File
"/data/udv/work/PackageKit/backends/yum2/helpers/yum/__init__.py", line
1488, in searchGenerator
if value and value.lower().find(s) != -1:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 19:
ordinal not in range(128)
if is caused because value is a bytestring contain a non ascii char.
i can only reproduce it if the code is call from a dbus method, it works
fine if i run the code as a normal python script.
the attached patch fixes the issue, does any body have any objection to
commit the patch.
Tim
diff --git a/yum/__init__.py b/yum/__init__.py
index 1dff886..a842076 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1485,6 +1485,9 @@ class YumBase(depsolve.Depsolve):
matched_s = False
for field in fields:
value = getattr(po, field)
+ # make sure that string are in unicode
+ if isinstance(value, str):
+ value = unicode(value,'unicode-escape')
if value and value.lower().find(s) != -1:
if not matched_s:
criteria_matched += 1
_______________________________________________
Yum-devel mailing list
Yum-devel@linux.duke.edu
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel