def xmltreefromstring(s):
    """Internal function, deals with different Python versions, unicode strings versus bytes, and with the leak bug in lxml"""
    if sys.version < '3':
        #Python 2
        if isinstance(s,unicode): #pylint: disable=undefined-variable
            s = s.encode('utf-8')
        try:
            return ElementTree.parse(StringIO(s), ElementTree.XMLParser(collect_ids=False))
        except TypeError:
            return ElementTree.parse(StringIO(s), ElementTree.XMLParser()) #older lxml, may leak!!!!
    else:
        #Python 3
        if isinstance(s,str):
            s = s.encode('utf-8')
        try:
            return ElementTree.parse(BytesIO(s), ElementTree.XMLParser(collect_ids=False))
        except TypeError:
            return ElementTree.parse(BytesIO(s), ElementTree.XMLParser())
def xmltreefromstring ( s ) : if sys . version < '3' : if isinstance ( s , unicode ) : s = s . encode ( 'utf-8' ) try : return ElementTree . parse ( StringIO ( s ) , ElementTree . XMLParser ( collect_ids = False ) ) except TypeError : return ElementTree . parse ( StringIO ( s ) , ElementTree . XMLParser ( ) ) else : if isinstance ( s , str ) : s = s . encode ( 'utf-8' ) try : return ElementTree . parse ( BytesIO ( s ) , ElementTree . XMLParser ( collect_ids = False ) ) except TypeError : return ElementTree . parse ( BytesIO ( s ) , ElementTree . XMLParser ( ) )
Internal function, deals with different Python versions, unicode strings versus bytes, and with the leak bug in lxml