Remove duplicate type objects from isroutine() and isbuiltin().
Make getmodule() on a module return the module itself.
diff --git a/Lib/inspect.py b/Lib/inspect.py
index b1f723d..f62167b 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -123,14 +123,12 @@
__doc__ documentation string
__name__ original name of this function or method
__self__ instance to which a method is bound, or None"""
- return type(object) in [types.BuiltinFunctionType,
- types.BuiltinMethodType]
+ return type(object) is types.BuiltinFunctionType
def isroutine(object):
"""Return true if the object is any kind of function or method."""
return type(object) in [types.FunctionType, types.LambdaType,
- types.MethodType, types.BuiltinFunctionType,
- types.BuiltinMethodType]
+ types.MethodType, types.BuiltinFunctionType]
def getmembers(object, predicate=None):
"""Return all members of an object as (name, value) pairs sorted by name.
@@ -231,6 +229,8 @@
def getmodule(object):
"""Return the module an object was defined in, or None if not found."""
+ if ismodule(object):
+ return object
if isclass(object):
return sys.modules.get(object.__module__)
try: