diff -ur old/inspect.py new/inspect.py --- old/inspect.py 2013-03-25 21:26:37.000000000 -0700 +++ new/inspect.py 2013-03-25 21:26:54.000000000 -0700 @@ -550,7 +550,7 @@ file = getfile(object) sourcefile = getsourcefile(object) - if not sourcefile and file[0] + file[-1] != '<>': + if not sourcefile and (not file or file[0] + file[-1] != '<>'): raise IOError('source code not available') file = sourcefile if sourcefile else file diff -ur old/test_inspect.py new/test_inspect.py --- old/test_inspect.py 2013-03-25 21:22:58.000000000 -0700 +++ new/test_inspect.py 2013-03-25 21:23:58.000000000 -0700 @@ -416,6 +416,11 @@ finally: del linecache.cache[co.co_filename] + def test_findsource_empty_filename(self): + lines = ["x=1"] + co = compile(lines[0], "", "exec") + self.assertRaises(IOError, inspect.findsource, co) + class TestNoEOL(GetSourceBase): def __init__(self, *args, **kwargs): self.tempdir = TESTFN + '_dir'