xml/metadata: implement XMLParser.doctype()
authorZac Medico <zmedico@gentoo.org>
Thu, 1 Sep 2011 02:52:58 +0000 (19:52 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 1 Sep 2011 02:55:45 +0000 (19:55 -0700)
Avoid deprecation warnings again, like in commit
63035acd702ab0cdaac31e33676b5a20a91eae47.

pym/portage/xml/metadata.py

index ef335e29fa3351d7b211650865b3bc0c5f9a279d..9e1886927bde0d5a3b723b308ac00730dbe3a817 100644 (file)
@@ -36,10 +36,19 @@ except ImportError:
        import xml.etree.ElementTree as etree
 
 import re
+import xml.etree.ElementTree
 import portage
 from portage import os
 from portage.util import unique_everseen
 
+class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder):
+       """
+       Implements doctype() as required to avoid deprecation warnings with
+       Python >=2.7.
+       """
+       def doctype(self, name, pubid, system):
+               pass
+
 class _Maintainer(object):
        """An object for representing one maintainer.
 
@@ -173,7 +182,8 @@ class MetaDataXML(object):
                self._xml_tree = None
 
                try:
-                       self._xml_tree = etree.parse(metadata_xml_path)
+                       self._xml_tree = etree.parse(metadata_xml_path,
+                               parser=etree.XMLParser(target=_MetadataTreeBuilder()))
                except ImportError:
                        pass
 
@@ -208,7 +218,8 @@ class MetaDataXML(object):
 
                if self._herdstree is None:
                        try:
-                               self._herdstree = etree.parse(self._herds_path)
+                               self._herdstree = etree.parse(self._herds_path,
+                                       parser=etree.XMLParser(target=_MetadataTreeBuilder()))
                        except (ImportError, IOError, SyntaxError):
                                return None