On Mon, Jan 18, 2016 at 01:01:40PM +0100, Michael Stahl wrote:
> 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:

  Ah yes the SAX example driver is not something I checked after adding python3
support, pushed:

  
https://git.gnome.org/browse/libxml2/commit/?id=65112cb36aa56bb27697c38ff52c1489cc21cba5


  thanks !

Daniel

> > #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


-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veill...@redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to