Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Sun, 13 Apr 2014 14:27:40 +0000 (16:27 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sun, 13 Apr 2014 14:28:59 +0000 (16:28 +0200)
1  2 
pdm/perf.py

diff --cc pdm/perf.py
@@@ -165,8 -165,32 +165,32 @@@ class staticdir(perfobj)
          return self.map[name]
  
      def pdm_protocols(self):
 -        return super(staticdir, self).pdm_protocols() + ["dir"]
 +        return super().pdm_protocols() + ["dir"]
  
 -        super(simplefunc, self).__init__(*args)
+ class simplefunc(perfobj):
+     """An implementation of the `invoke' interface. Put callables in
+     it using the normal dict assignment syntax, and it will call them
+     when invoked with the corresponding method name. Additionally, it
+     updates itself with any keyword-arguments it is initialized with."""
+     def __init__(self, *args, **kwargs):
 -        return super(simplefunc, self).pdm_protocols() + ["invoke"]
++        super().__init__(*args)
+         self.map = {}
+         self.map.update(kwargs)
+     def __setitem__(self, name, func):
+         self.map[name] = func
+     def __delitem__(self, name):
+         del self.map[name]
+     def invoke(self, method, *args, **kwargs):
+         if method not in self.map:
+             raise AttributeError(method)
+         self.map[method](*args, **kwargs)
+     def pdm_protocols(self):
++        return super().pdm_protocols() + ["invoke"]
  class event(object):
      """This class should be subclassed by all event objects sent via
      the `event' interface. Its main utility is that it keeps track of