aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Bersenev <bay@hackerdom.ru>2014-02-17 17:55:51 +0600
committerAlexander Bersenev <bay@hackerdom.ru>2014-02-17 17:55:51 +0600
commit5a3f506c9ef1cfd78940b0509f10ef94b4434e29 (patch)
tree147c35a17a8bcd8ff467bb3063adab623da51fac /portage_with_autodep/pym/portage/xml
parentfixed a deadlock (diff)
downloadautodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.tar.gz
autodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.tar.bz2
autodep-5a3f506c9ef1cfd78940b0509f10ef94b4434e29.zip
updated portage to 2.2.8-r1
Diffstat (limited to 'portage_with_autodep/pym/portage/xml')
-rw-r--r--portage_with_autodep/pym/portage/xml/__init__.pyobin0 -> 133 bytes
-rw-r--r--portage_with_autodep/pym/portage/xml/metadata.py60
-rw-r--r--portage_with_autodep/pym/portage/xml/metadata.pyobin0 -> 15298 bytes
3 files changed, 49 insertions, 11 deletions
diff --git a/portage_with_autodep/pym/portage/xml/__init__.pyo b/portage_with_autodep/pym/portage/xml/__init__.pyo
new file mode 100644
index 0000000..15f1b77
--- /dev/null
+++ b/portage_with_autodep/pym/portage/xml/__init__.pyo
Binary files differ
diff --git a/portage_with_autodep/pym/portage/xml/metadata.py b/portage_with_autodep/pym/portage/xml/metadata.py
index 7acc1f3..25f801a 100644
--- a/portage_with_autodep/pym/portage/xml/metadata.py
+++ b/portage_with_autodep/pym/portage/xml/metadata.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2011 Gentoo Foundation
+# Copyright 2010-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
"""Provides an easy-to-use python interface to Gentoo's metadata.xml file.
@@ -30,16 +30,40 @@
__all__ = ('MetaDataXML',)
-try:
- import xml.etree.cElementTree as etree
-except ImportError:
+import sys
+
+if sys.hexversion < 0x2070000 or \
+ (sys.hexversion < 0x3020000 and sys.hexversion >= 0x3000000):
+ # Our _MetadataTreeBuilder usage is incompatible with
+ # cElementTree in Python 2.6, 3.0, and 3.1:
+ # File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 644, in findall
+ # assert self._root is not None
import xml.etree.ElementTree as etree
+else:
+ try:
+ import xml.etree.cElementTree as etree
+ except (ImportError, SystemError):
+ import xml.etree.ElementTree as etree
+
+try:
+ from xml.parsers.expat import ExpatError
+except (ImportError, SystemError):
+ ExpatError = SyntaxError
import re
+import xml.etree.ElementTree
import portage
-from portage import os
+from portage import os, _unicode_decode
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.
@@ -63,8 +87,7 @@ class _Maintainer(object):
self.description = None
self.restrict = node.get('restrict')
self.status = node.get('status')
- maint_attrs = node.getchildren()
- for attr in maint_attrs:
+ for attr in node:
setattr(self, attr.tag, attr.text)
def __repr__(self):
@@ -174,9 +197,12 @@ 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
+ except ExpatError as e:
+ raise SyntaxError(_unicode_decode("%s") % (e,))
if isinstance(herds, etree.ElementTree):
herds_etree = herds
@@ -209,7 +235,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
@@ -217,7 +244,13 @@ class MetaDataXML(object):
if herd in ('no-herd', 'maintainer-wanted', 'maintainer-needed'):
return None
- for node in self._herdstree.getiterator('herd'):
+ try:
+ # Python 2.7 or >=3.2
+ iterate = self._herdstree.iter
+ except AttributeError:
+ iterate = self._herdstree.getiterator
+
+ for node in iterate('herd'):
if node.findtext('name') == herd:
return node.findtext('email')
@@ -292,8 +325,13 @@ class MetaDataXML(object):
if self._xml_tree is None:
self._useflags = tuple()
else:
+ try:
+ # Python 2.7 or >=3.2
+ iterate = self._xml_tree.iter
+ except AttributeError:
+ iterate = self._xml_tree.getiterator
self._useflags = tuple(_Useflag(node) \
- for node in self._xml_tree.getiterator('flag'))
+ for node in iterate('flag'))
return self._useflags
diff --git a/portage_with_autodep/pym/portage/xml/metadata.pyo b/portage_with_autodep/pym/portage/xml/metadata.pyo
new file mode 100644
index 0000000..0103456
--- /dev/null
+++ b/portage_with_autodep/pym/portage/xml/metadata.pyo
Binary files differ