commit:     65fc4d8a8e0e841e7888893b3f020c4caeb84ecc
Author:     Dirkjan Ochtman <dirkjan <AT> ochtman <DOT> nl>
AuthorDate: Mon Jan 25 19:40:29 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 14 18:29:40 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=65fc4d8a

repoman: Move parse_metadata_use function to the pkgmetadata.py

Add missing basestring compat code

 pym/repoman/metadata.py                          | 50 ---------------------
 pym/repoman/modules/scan/metadata/pkgmetadata.py | 56 +++++++++++++++++++++++-
 2 files changed, 55 insertions(+), 51 deletions(-)

diff --git a/pym/repoman/metadata.py b/pym/repoman/metadata.py
index a980184..7c64c8e 100644
--- a/pym/repoman/metadata.py
+++ b/pym/repoman/metadata.py
@@ -17,7 +17,6 @@ except ImportError:
 # import our initialized portage instance
 from repoman._portage import portage
 
-from portage import exception
 from portage import os
 from portage import shutil
 from portage.output import green
@@ -34,55 +33,6 @@ metadata_xsd_uri = 
'http://www.gentoo.org/xml-schema/metadata.xsd'
 metadata_xsd_ctime_interval = 60 * 60 * 24 * 7  # 7 days
 
 
-def parse_metadata_use(xml_tree):
-       """
-       Records are wrapped in XML as per GLEP 56
-       returns a dict with keys constisting of USE flag names and values
-       containing their respective descriptions
-       """
-       uselist = {}
-
-       usetags = xml_tree.findall("use")
-       if not usetags:
-               return uselist
-
-       # It's possible to have multiple 'use' elements.
-       for usetag in usetags:
-               flags = usetag.findall("flag")
-               if not flags:
-                       # DTD allows use elements containing no flag elements.
-                       continue
-
-               for flag in flags:
-                       pkg_flag = flag.get("name")
-                       if pkg_flag is None:
-                               raise exception.ParseError("missing 'name' 
attribute for 'flag' tag")
-                       flag_restrict = flag.get("restrict")
-
-                       # emulate the Element.itertext() method from python-2.7
-                       inner_text = []
-                       stack = []
-                       stack.append(flag)
-                       while stack:
-                               obj = stack.pop()
-                               if isinstance(obj, basestring):
-                                       inner_text.append(obj)
-                                       continue
-                               if isinstance(obj.text, basestring):
-                                       inner_text.append(obj.text)
-                               if isinstance(obj.tail, basestring):
-                                       stack.append(obj.tail)
-                               stack.extend(reversed(obj))
-
-                       if pkg_flag not in uselist:
-                               uselist[pkg_flag] = {}
-
-                       # (flag_restrict can be None)
-                       uselist[pkg_flag][flag_restrict] = " 
".join("".join(inner_text).split())
-
-       return uselist
-
-
 def fetch_metadata_xsd(metadata_xsd, repoman_settings):
        """
        Fetch metadata.xsd if it doesn't exist or the ctime is older than

diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py 
b/pym/repoman/modules/scan/metadata/pkgmetadata.py
index a7150a9..af53f4b 100644
--- a/pym/repoman/modules/scan/metadata/pkgmetadata.py
+++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py
@@ -23,7 +23,7 @@ except (ImportError, SystemError, RuntimeError, Exception):
 
 # import our initialized portage instance
 from repoman._portage import portage
-from repoman.metadata import metadata_dtd_uri, parse_metadata_use
+from repoman.metadata import metadata_dtd_uri
 from repoman.checks.herds.herdbase import get_herd_base
 from repoman.checks.herds.metadata import check_metadata, UnknownHerdsError
 from repoman._xml import _XMLParser, _MetadataTreeBuilder, XmlLint
@@ -32,16 +32,70 @@ from repoman.modules.scan.scanbase import ScanBase
 from portage.exception import InvalidAtom
 from portage import os
 from portage import _encodings, _unicode_encode
+from portage import exception
 from portage.dep import Atom
 
 from .use_flags import USEFlagChecks
 
+if sys.hexversion >= 0x3000000:
+       # pylint: disable=W0622
+       basestring = str
+
 metadata_xml_encoding = 'UTF-8'
 metadata_xml_declaration = '<?xml version="1.0" encoding="%s"?>' \
        % (metadata_xml_encoding,)
 metadata_doctype_name = 'pkgmetadata'
 
 
+def parse_metadata_use(xml_tree):
+       """
+       Records are wrapped in XML as per GLEP 56
+       returns a dict with keys constisting of USE flag names and values
+       containing their respective descriptions
+       """
+       uselist = {}
+
+       usetags = xml_tree.findall("use")
+       if not usetags:
+               return uselist
+
+       # It's possible to have multiple 'use' elements.
+       for usetag in usetags:
+               flags = usetag.findall("flag")
+               if not flags:
+                       # DTD allows use elements containing no flag elements.
+                       continue
+
+               for flag in flags:
+                       pkg_flag = flag.get("name")
+                       if pkg_flag is None:
+                               raise exception.ParseError("missing 'name' 
attribute for 'flag' tag")
+                       flag_restrict = flag.get("restrict")
+
+                       # emulate the Element.itertext() method from python-2.7
+                       inner_text = []
+                       stack = []
+                       stack.append(flag)
+                       while stack:
+                               obj = stack.pop()
+                               if isinstance(obj, basestring):
+                                       inner_text.append(obj)
+                                       continue
+                               if isinstance(obj.text, basestring):
+                                       inner_text.append(obj.text)
+                               if isinstance(obj.tail, basestring):
+                                       stack.append(obj.tail)
+                               stack.extend(reversed(obj))
+
+                       if pkg_flag not in uselist:
+                               uselist[pkg_flag] = {}
+
+                       # (flag_restrict can be None)
+                       uselist[pkg_flag][flag_restrict] = " 
".join("".join(inner_text).split())
+
+       return uselist
+
+
 class PkgMetadata(ScanBase, USEFlagChecks):
        '''Package metadata.xml checks'''
 

Reply via email to