Andrei Kulakov <andrei....@gmail.com> added the comment:

Łukasz:

Thanks for looking at this!

 - I agree OSError is not ideal, but I chose it because it's consistent with 
how inspect reports similar errors. For example, see all instances of OSError, 
except for first, in this function:

https://github.com/python/cpython/blob/7915c96ffd7ddc5cb6d54015ee4c31255a416892/Lib/inspect.py#L930

I think it's an implementation detail that class source is not available on 
interactive prompt, for example function source is available via 
`inspect.getsource()`.

If a user can do getsource(func) and getsource(cls) in a file, and 
getsource(func) on interactive prompt, it seems wrong to return a ValueError 
when the user is trying to getsource(cls) in interactive.

I'm open to change it to ValueError though because I think the err message here 
is more important to avoid user confusion.

 - good point about __main__.py files, I didn't remember about them. However 
they will have the __file__ attribute set, so they will return that right above 
the check for '__main__' in my patch.

I tested it to make sure:
import inspect
class A: 0
print(inspect.getsource(A))


./python.exe ~/temp/__main__.py                                                 
class A: 0

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44648>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to