Move portage.flatten to portage.dep.flatten.
authorZac Medico <zmedico@gentoo.org>
Sun, 21 Feb 2010 09:16:58 +0000 (09:16 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 21 Feb 2010 09:16:58 +0000 (09:16 -0000)
svn path=/main/trunk/; revision=15413

pym/portage/__init__.py
pym/portage/dep.py

index 77d36ffb513a179ffebee8154e08c18ad2253458..25057f36c278d1e6b6d2c2ce10e9378230918450 100644 (file)
@@ -85,7 +85,7 @@ try:
                        'uid,userland,userpriv_groups,wheelgid',
                'portage.dep',
                'portage.dep:best_match_to_list,dep_getcpv,dep_getkey,' + \
-                       'get_operator,isjustname,isspecific,isvalidatom,' + \
+                       'flatten,get_operator,isjustname,isspecific,isvalidatom,' + \
                        'match_from_list,match_to_list',
                'portage.eclass_cache',
                'portage.env.loaders',
@@ -673,17 +673,6 @@ def listdir(mypath, recursive=False, filesonly=False, ignorecvs=False, ignorelis
 
        return rlist
 
-def flatten(mytokens):
-       """this function now turns a [1,[2,3]] list into
-       a [1,2,3] list and returns it."""
-       newlist=[]
-       for x in mytokens:
-               if isinstance(x, list):
-                       newlist.extend(flatten(x))
-               else:
-                       newlist.append(x)
-       return newlist
-
 #beautiful directed graph object
 
 class digraph(object):
index e2eeb6d5bf34b6b2386880df95be1e036669a224..282fe749d96aba6b4d1c8230171a7b0e5e5b5232 100644 (file)
@@ -3,6 +3,16 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+__all__ = [
+       'Atom', 'best_match_to_list', 'cpvequal',
+       'dep_getcpv', 'dep_getkey', 'dep_getslot',
+       'dep_getusedeps', 'dep_opconvert', 'flatten',
+       'get_operator', 'isjustname', 'isspecific',
+       'isvalidatom', 'match_from_list', 'match_to_list',
+       'paren_enclose', 'paren_normalize', 'paren_reduce',
+       'remove_slot', 'strip_empty', 'use_reduce'
+]
+
 # DEPEND SYNTAX:
 #
 # 'use?' only affects the immediately following word!
@@ -343,6 +353,28 @@ def dep_opconvert(deplist):
                x += 1
        return retlist
 
+def flatten(mylist):
+       """
+       Recursively traverse nested lists and return a single list containing
+       all non-list elements that are found.
+
+       Example usage:
+               >>> flatten([1, [2, 3, [4]]])
+               [1, 2, 3, 4]
+
+       @param mylist: A list containing nested lists and non-list elements.
+       @type mylist: List
+       @rtype: List
+       @return: A single list containing only non-list elements.
+       """
+       newlist = []
+       for x in mylist:
+               if isinstance(x, list):
+                       newlist.extend(flatten(x))
+               else:
+                       newlist.append(x)
+       return newlist
+
 class _use_dep(object):
 
        __slots__ = ("__weakref__", "conditional",