Nick Coghlan added the comment:

Deleted a bunch of code, and runpy now correctly sets both __file__ and 
__cached__ (runpy previously never set the latter properly).

You can also see the reason for my rant above in the form of 
runpy._fixed_find_spec. importlib.find_loader was always kind of useless in end 
user code that needed to handle arbitrary modules, you needed to use the 
pkgutil.get_loader wrapper instead. It would be nice if importlib.find_spec 
"just worked", instead of only working for top level modules. At the very 
least, it should fail noisily if a dotted name is passed in without specifying 
a path argument.

I may have argued in favour of the side effect free find_loader in the past, if 
I have, consider this me admitting I was wrong after wasting a bunch of time 
hunting down unexpected import errors in test_runpy after the initial 
conversion to using find_spec.

There's one final change needed to address the pickle-in-main compatibility 
issue: runpy has to alias the module under its real name as well as __main__. 
Once it does that, then using __spec__.name (when available) should ensure 
pickle does the right thing.

----------
keywords: +patch
Added file: http://bugs.python.org/file33046/issue19700_runpy_spec.diff

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

Reply via email to