The documentation of __loader__.get_source() says

"Returns None if no source is available (e.g. a built-in module)."

But what does "no source is available" mean precisely? It could mean either of two things:

(A) I am absolutely certain that there is no source anywhere to be found.

(B) I don't know where to find the source, but if you look hard enough, you may find it.

Currently, linecache interprets it as (A). Is there any chance that we can either change the interpretation for returning None to (B) or to provide an officially documented way to answer (B)? This could be using a new return value (say, NotImplemented) or by not implementing get_source at all (such that __loader__.get_source raises AttributeError). The latter is probably how things already work in practice, but it isn't really documented that way.

The context for this question/proposal is https://bugs.python.org/issue32797

When the linecache module is asked for the source code of a certain file, it queries the __loader__.get_source() for the source code. If this returns None, that's the end: no source is returned.

However, linecache is also passed the filename! So even if it could find the source by filename, it won't even try that if get_source() returns None.


Jeroen.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to