diff options
author | Carl Suster <carl@contraflo.ws> | 2017-01-11 22:34:34 +1100 |
---|---|---|
committer | Carl Suster <carl@contraflo.ws> | 2017-01-11 22:34:34 +1100 |
commit | 5bb9aae805947e77215ff8c433d52a987dbf75a0 (patch) | |
tree | cce970044318d5151e6e81f38cb8df87a5c049a2 | |
parent | 01027917584eafdf4228bf0590123dfd47fe14a8 (diff) |
give lxml etree BytesIO in Python 3
The lxml etree API changed in Python 3 to take BytesIO instead of
StringIO. This patch maintains the original behaviour in Python 2 but
switches to BytesIO in Python 3, decoding the XML data as UTF-8.
-rw-r--r-- | pynzb/lxml_nzb.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/pynzb/lxml_nzb.py b/pynzb/lxml_nzb.py index 790671d..b1d0dc6 100644 --- a/pynzb/lxml_nzb.py +++ b/pynzb/lxml_nzb.py @@ -6,11 +6,17 @@ except ImportError: raise ImportError("You must have lxml installed before you can use the " + "lxml NZB parser.") -try: - from cStringIO import StringIO -except ImportError: - from StringIO import StringIO +import sys +if sys.version_info.major < 3: + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO + def io(xml): return StringIO(xml) +else: + from BytesIO import BytesIO + def io(xml): return BytesIO(bytes(xml, 'utf-8')) class LXMLNZBParser(BaseETreeNZBParser): def get_etree_iter(self, xml, et=etree): - return iter(et.iterparse(StringIO(xml), events=("start", "end")))
\ No newline at end of file + return iter(et.iterparse(io(xml), events=("start", "end"))) |