summaryrefslogtreecommitdiffstats
path: root/pym/portage/dep.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/dep.py')
-rw-r--r--pym/portage/dep.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/pym/portage/dep.py b/pym/portage/dep.py
index e2eeb6d5b..282fe749d 100644
--- a/pym/portage/dep.py
+++ b/pym/portage/dep.py
@@ -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",