root/gaphor/tags/gaphor-0.12.0/gaphor/misc/partial.py

Revision 1135, 0.7 kB (checked in by arjanmol, 2 years ago)

cleanup

Line 
1 """
2 Backport of Python2.5 functools.partial method.
3
4 >>> import operator
5 >>> x = partial(operator.add, 2)
6 >>> x(3)
7 5
8
9 """
10
11 try:
12     from functools import partial
13 except ImportError:
14
15     class partial(object):
16
17         def __init__(*args, **kw):
18             self = args[0]
19             self.fn, self.args, self.kw = (args[1], args[2:], kw)
20
21         def __call__(self, *args, **kw):
22             if kw and self.kw:
23                 d = self.kw.copy()
24                 d.update(kw)
25             else:
26                 d = kw or self.kw
27             return self.fn(*(self.args + args), **d)
28
29
30 if __name__ == '__main__':
31     import doctest
32     doctest.testmod()
33
34 # vim:sw=4:et
Note: See TracBrowser for help on using the browser.