When in strict mode, make paren_reduce() detect missing whitespace around
authorZac Medico <zmedico@gentoo.org>
Sat, 15 Mar 2008 23:10:58 +0000 (23:10 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 15 Mar 2008 23:10:58 +0000 (23:10 -0000)
parenthesis tokens and raise an InvalidDependString exception. Strict mode
is not enabled when handling installed packages, so this will only affect
repoman and packages that haven't been installed yet. Thanks to zlin for
reporting.

svn path=/main/trunk/; revision=9471

pym/portage/dep.py

index 2a1a3cfa59a8e090d4ada8687cf9ffc4081ba780..1a09d71840ba0a3e2d2da520606662aa7a8d2817 100644 (file)
@@ -65,6 +65,8 @@ def strip_empty(myarr):
        """
        return [x for x in myarr if x]
 
+_paren_whitespace_re = re.compile(r'\S(\(|\))|(\(|\))\S')
+
 def paren_reduce(mystr,tokenize=1):
        """
        Take a string and convert all paren enclosed entities into sublists, optionally
@@ -83,6 +85,12 @@ def paren_reduce(mystr,tokenize=1):
        @rtype: Array
        @return: The reduced string in an array
        """
+       global _dep_check_strict, _paren_whitespace_re
+       if _dep_check_strict:
+               m = _paren_whitespace_re.search(mystr)
+               if m is not None:
+                       raise portage.exception.InvalidDependString(
+                               "missing space by parenthesis: '%s'" % m.group(0))
        mylist = []
        while mystr:
                left_paren = mystr.find("(")