New submission from Eric Snow <ericsnowcurren...@gmail.com>:

Now that __file__ is set on frozen (stdlib) modules, we can add an 
implementation for FrozenImporter.get_filename().  This would make 
FrozenImporter and implementation of ExecutionLoader. [1]

There is a caveat: in spec_from_loader() [2] we infer the presence of 
get_filename() to mean the loader is file-based, which FrozenImporter isn't. 
 In that case we call spec_from_file_location() [3], which should not be used 
for frozen modules.  Most importantly, spec.origin for frozen modules should 
remain "frozen", spec.cached should remain None, and spec.has_location should 
remain False.  That's because the module was imported frozen and not from a 
file (even though it originated in a file).


[1] 
https://docs.python.org/3/library/importlib.html#importlib.abc.ExecutionLoader
[2] in Lib/import/_bootstrap.py
[3] in Lib/import/_bootstrap_external.py

----------
components: Library (Lib)
messages: 405225
nosy: FFY00, eric.snow
priority: normal
severity: normal
stage: needs patch
status: open
title: Add FrozenImporter.get_filename().
type: behavior
versions: Python 3.11

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

Reply via email to