elif any(filename.endswith(s) for s in
importlib.machinery.EXTENSION_SUFFIXES):
return None
+ # return a filename found in the linecache even if it doesn't exist on disk
+ if filename in linecache.cache:
+ return filename
if os.path.exists(filename):
return filename
# only return a non-existent filename if the module has a PEP 302 loader
return filename
elif getattr(getattr(module, "__spec__", None), "loader", None) is not None:
return filename
- # or it is in the linecache
- elif filename in linecache.cache:
- return filename
def getabsfile(object, _filename=None):
"""Return an absolute path to the source or compiled file for an object.