hook: restore use of callable() since it was readded in Python 3.2
authorAugie Fackler <raf@durin42.com>
Mon, 23 Jun 2014 09:24:38 -0400
changeset 21797 b009dd135aa0
parent 21796 8225bb1f0ad3
child 21798 f2c617ff2abc
hook: restore use of callable() since it was readded in Python 3.2
mercurial/hook.py
--- a/mercurial/hook.py	Mon Jun 23 09:24:24 2014 -0400
+++ b/mercurial/hook.py	Mon Jun 23 09:24:38 2014 -0400
@@ -19,7 +19,7 @@
     unmodified commands (e.g. mercurial.commands.update) can
     be run as hooks without wrappers to convert return values.'''
 
-    if util.safehasattr(funcname, '__call__'):
+    if callable(funcname):
         obj = funcname
         funcname = obj.__module__ + "." + obj.__name__
     else:
@@ -70,7 +70,7 @@
             raise util.Abort(_('%s hook is invalid '
                                '("%s" is not defined)') %
                              (hname, funcname))
-        if not util.safehasattr(obj, '__call__'):
+        if not callable(obj):
             raise util.Abort(_('%s hook is invalid '
                                '("%s" is not callable)') %
                              (hname, funcname))
@@ -117,7 +117,7 @@
     starttime = time.time()
     env = {}
     for k, v in args.iteritems():
-        if util.safehasattr(v, '__call__'):
+        if callable(v):
             v = v()
         if isinstance(v, dict):
             # make the dictionary element order stable across Python
@@ -184,7 +184,7 @@
                     # files seem to be bogus, give up on redirecting (WSGI, etc)
                     pass
 
-            if util.safehasattr(cmd, '__call__'):
+            if callable(cmd):
                 r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
             elif cmd.startswith('python:'):
                 if cmd.count(':') >= 2: