New submission from Brodie Rao <[EMAIL PROTECTED]>: Calling inspect.findsource() on a module whose __file__ attribute points to a shared library causes findsource() to return the binary's data:
>>> import time >>> time.__file__ '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/ lib-dynload/time.so' >>> import inspect >>> inspect.findsource(time) (['\xca\xfe\xba\xbe\x00\x00\x00\x04\x00\x00\x00\x12\x00\x00\x00\n', '\x00\x00\x10\x00\x00\x00Jt\x00... It should raise an error saying it can't retrieve the source. It doesn't do this because when it tries to find the source file it calls both getsourcefile() - and getfile() when that fails. It should call only getsourcefile() - which checks to see if __file__ points to a binary - and if the result is None, raise an error. I'm attaching a patch against trunk that fixes this. The issue affects 3.0, 2.6, 2.5, and probably previous versions. ---------- components: Library (Lib) files: inspect-findsource-binary.diff keywords: patch messages: 74358 nosy: brodierao severity: normal status: open title: inspect.findsource() returns binary data for shared library modules type: behavior versions: Python 2.5, Python 2.6, Python 3.0 Added file: http://bugs.python.org/file11706/inspect-findsource-binary.diff _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue4050> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com