* This drops the import for cElementTree as it is deprecated. See: https://docs.python.org/3/library/xml.etree.elementtree.html
* Drop the error checking as these modules are a part of stdlib. * Additionally, the pyexpat issue was fixed in 3.2. See: https://bugs.python.org/issue14988 Signed-off-by: Aaron Bauman <b...@gentoo.org> --- lib/portage/xml/metadata.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 646edb5b9..808ba2246 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -31,29 +31,16 @@ __all__ = ('MetaDataXML', 'parse_metadata_use') -try: - import xml.etree.cElementTree as etree -except (SystemExit, KeyboardInterrupt): - raise -except (ImportError, SystemError, RuntimeError, Exception): - # broken or missing xml support - # https://bugs.python.org/issue14988 - import xml.etree.ElementTree as etree - -try: - from xml.parsers.expat import ExpatError -except (SystemExit, KeyboardInterrupt): - raise -except (ImportError, SystemError, RuntimeError, Exception): - ExpatError = SyntaxError - import re -import xml.etree.ElementTree +import xml.etree.ElementTree as etree + +from xml.parsers.expat import ExpatError + from portage import _encodings, _unicode_encode from portage.util import cmp_sort_key, unique_everseen -class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder): +class _MetadataTreeBuilder(etree.TreeBuilder): """ Implements doctype() as required to avoid deprecation warnings with Python >=2.7. @@ -198,8 +185,8 @@ class MetaDataXML: try: self._xml_tree = etree.parse(_unicode_encode(metadata_xml_path, - encoding=_encodings['fs'], errors='strict'), - parser=etree.XMLParser(target=_MetadataTreeBuilder())) + encoding = _encodings['fs'], errors='strict'), + parser = etree.XMLParser(target=_MetadataTreeBuilder())) except ImportError: pass except ExpatError as e: @@ -238,7 +225,7 @@ class MetaDataXML: try: self._herdstree = etree.parse(_unicode_encode(self._herds_path, encoding=_encodings['fs'], errors='strict'), - parser=etree.XMLParser(target=_MetadataTreeBuilder())) + parser = etree.XMLParser(target=_MetadataTreeBuilder())) except (ImportError, IOError, SyntaxError): return None -- 2.28.0