@@ -982,19 +982,21 @@ def getmodule(object, _filename=None):
982982 return object
983983 if hasattr (object , '__module__' ):
984984 return sys .modules .get (object .__module__ )
985- code = _getcode (object )
986- if code and hash (code ) in _moduleless :
987- return None
988985 # Try the filename to modulename cache
989986 if _filename is not None and _filename in modulesbyfile :
990987 return sys .modules .get (modulesbyfile [_filename ])
988+ # Compute hash to track moduleless objects
989+ code = _getcode (object )
990+ hashcode = hash (code ) if code else None
991+ if hashcode and hashcode in _moduleless :
992+ return None
991993 # Try the cache again with the absolute file name
992994 try :
993995 file = getabsfile (object , _filename )
994996 except (TypeError , FileNotFoundError ):
995- _moduleless .add (hash ( code ) )
997+ _moduleless .add (hashcode )
996998 return None
997- if code and hash ( code ) in _moduleless :
999+ if hashcode and hashcode in _moduleless :
9981000 return None
9991001 if file in modulesbyfile :
10001002 return sys .modules .get (modulesbyfile [file ])
@@ -1016,7 +1018,7 @@ def getmodule(object, _filename=None):
10161018 # Check the main module
10171019 main = sys .modules ['__main__' ]
10181020 if not hasattr (object , '__name__' ):
1019- _moduleless .add (hash ( code ) )
1021+ _moduleless .add (hashcode )
10201022 return None
10211023 if hasattr (main , object .__name__ ):
10221024 mainobject = getattr (main , object .__name__ )
@@ -1028,7 +1030,7 @@ def getmodule(object, _filename=None):
10281030 builtinobject = getattr (builtin , object .__name__ )
10291031 if builtinobject is object :
10301032 return builtin
1031- _moduleless .add (hash ( code ) )
1033+ _moduleless .add (hashcode )
10321034 return None
10331035
10341036
0 commit comments