aboutsummaryrefslogtreecommitdiff
blob: e57d4f4849e49131ee05fa4751d9e44ab8658afe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class WritableObject:
    """Class for buffering output

    used in various places for catching stdout/stderr of emerge 
    library functions
    """
    def __init__(self):
        self.content = []
    def write(self, string):
        self.content.append(string)
    def isatty(self):
        return 0
    def flush(self):
        pass
    def getvalue(self):
        ret = ""
        for part in self.content:
            ret = ret + part
        return ret

def flatten_deps(deps):
    """
    Takes nested deps returned from portage.dep.use_reduce and flattens them to simple list

    @param deps: list of dependencies returned from portage.dep.use_reduce()
    @type deps: List
    @rtype: List
    @return: Flattened list of deps
    """
    result = []
    for el in deps:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten_deps(el))
        else:
            result.append(el)
    return result