with python3-libxml2-2.9.3-2.fc23.x86_64 RPM i get this exception: > Traceback (most recent call last): > File "/usr/lib64/python3.4/threading.py", line 920, in _bootstrap_inner > self.run() > File "/data/lo/master/bin/get-bugzilla-attachments-by-mimetype", line 515, > in run > get_through_rss_query(uri, mimetype, prefix, extension) > File "/data/lo/master/bin/get-bugzilla-attachments-by-mimetype", line 264, > in get_through_rss_query > process(query, True, get_file_bz_ids(files, prefix)) > File "/data/lo/master/bin/get-bugzilla-attachments-by-mimetype", line 226, > in process > d = feedparser.parse(url) > File "/usr/lib/python3.4/site-packages/feedparser.py", line 3957, in parse > saxparser.parse(source) > File "/usr/lib64/python3.4/site-packages/drv_libxml2.py", line 189, in parse > eltName = (_d(reader.NamespaceUri()),\ > File "/usr/lib64/python3.4/site-packages/drv_libxml2.py", line 70, in _d > return _decoder(s)[0] > File "/usr/lib64/python3.4/encodings/utf_8.py", line 16, in decode > return codecs.utf_8_decode(input, errors, True) > TypeError: 'str' does not support the buffer interface
looks like python/types.c actually creates Unicode str that don't benefit from decoding: > #define PY_IMPORT_STRING PyUnicode_FromString
>From d44c6c1bbaced5f41b00e54a256e11bc098f2639 Mon Sep 17 00:00:00 2001 From: Michael Stahl <mst...@redhat.com> Date: Mon, 18 Jan 2016 12:46:41 +0100 Subject: [PATCH] python 3: libxml2.c wrappers create Unicode str already ... so stop decoding these, which only results in "TypeError: 'str' does not support the buffer interface". --- python/drv_libxml2.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/python/drv_libxml2.py b/python/drv_libxml2.py index c2ec3e2..71b1c67 100644 --- a/python/drv_libxml2.py +++ b/python/drv_libxml2.py @@ -44,8 +44,18 @@ if sys.version_info[0] < 3: __author__ = codecs.unicode_escape_decode(__author__)[0] StringTypes = (str, unicode) + # libxml2 returns strings as UTF8 + _decoder = codecs.lookup("utf8")[1] + def _d(s): + if s is None: + return s + else: + return _decoder(s)[0] else: StringTypes = str + # s is Unicode `str` already + def _d(s): + return s from xml.sax._exceptions import * from xml.sax import xmlreader, saxutils @@ -61,14 +71,6 @@ from xml.sax.handler import \ property_dom_node, \ property_xml_string -# libxml2 returns strings as UTF8 -_decoder = codecs.lookup("utf8")[1] -def _d(s): - if s is None: - return s - else: - return _decoder(s)[0] - try: import libxml2 except ImportError: -- 2.5.0
_______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml@gnome.org https://mail.gnome.org/mailman/listinfo/xml