]> granicus.if.org Git - python/commitdiff
Fix for SF bug 620190: getargspec() doesn't work with methods.
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Jun 2003 18:14:39 +0000 (18:14 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Jun 2003 18:14:39 +0000 (18:14 +0000)
Lib/inspect.py

index eca5e8ca78ef88cde32faa4bfeafab293096695d..4619edb3c911e979f5b947300fa8b4a546a63d00 100644 (file)
@@ -593,7 +593,9 @@ def getargs(co):
     Three things are returned: (args, varargs, varkw), where 'args' is
     a list of argument names (possibly containing nested lists), and
     'varargs' and 'varkw' are the names of the * and ** arguments or None."""
-    if not iscode(co): raise TypeError, 'arg is not a code object'
+
+    if not iscode(co):
+        raise TypeError('arg is not a code object')
 
     code = co.co_code
     nargs = co.co_argcount
@@ -642,8 +644,13 @@ def getargspec(func):
     A tuple of four things is returned: (args, varargs, varkw, defaults).
     'args' is a list of the argument names (it may contain nested lists).
     'varargs' and 'varkw' are the names of the * and ** arguments or None.
-    'defaults' is an n-tuple of the default values of the last n arguments."""
-    if not isfunction(func): raise TypeError, 'arg is not a Python function'
+    'defaults' is an n-tuple of the default values of the last n arguments.
+    """
+
+    if ismethod(func):
+        func = func.im_func
+    if not isfunction(func):
+        raise TypeError('arg is not a Python function')
     args, varargs, varkw = getargs(func.func_code)
     return args, varargs, varkw, func.func_defaults