File: pycompat.py

package info (click to toggle)
bzr-svn 1.0.3-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 1,716 kB
  • ctags: 3,153
  • sloc: python: 23,764; makefile: 66; sh: 8; xml: 7
file content (38 lines) | stat: -rw-r--r-- 938 bytes parent folder | download
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 defaultdict(dict):

    __slots__ = ('default_factory',)

    def __init__(self, default_factory):
        if not callable(default_factory):
            raise TypeError('first argument must be callable')
        self.default_factory = default_factory

    def __getitem__(self, key):
        if key in self:
            return self.get(key)
        return self.setdefault(key, self.default_factory())


def partial(func, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = keywords.copy()
        newkeywords.update(fkeywords)
        return func(*(args + fargs), **newkeywords)
    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords
    return newfunc


def any(iterable):
    for element in iterable:
        if element:
            return True
    return False


def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True