On 06Aug2015 00:58, Nick Coghlan
On 5 August 2015 at 19:01, Cameron Simpson
wrote: Ah, ok, many thanks. I've now read this, particularly this section: http://legacy.python.org/dev/peps/pep-0395/#fixing-pickling-without-breaking... [...] From an *implementation* perspective, you'll want to look at Eric's own PEP 451: https://www.python.org/dev/peps/pep-0451/
Ah. Yes. Thanks. On that basis I withdraw my .__qualname__ suggestion because there exists module.__spec__.name. So it now reduces the proposal to making the -m option do this: % python -m module.name ... runs (framed loosely like https://www.python.org/dev/peps/pep-0451/#how-loading-will-work): # pseudocode, with values hardwired for clarity import sys module = ModuleType('module.name') module.__name__ = '__main__' sys.modules['__main__'] = module sys.modules['module.name'] = module ... load module code ... I suspect "How Reloading Will Work" would need to track both module.__name__ and module.__spec__.name to reattach the module to both entires in sys.modules.
In particular, __spec__.name already holds the additional state we need to fix this behaviour (i.e. the original module name), I just haven't found the opportunity to go back and update runpy to take advantage of PEP 451 to address this and other limitations. It would definitely be good to have a PEP addressing that.
I'd like to have a go at addressing just the change I outline above, in the
interests of just getting it done. Is that too narrow a change or PEP topic?
Are there specific other things I should be considering/addressing that might
be affected by my suggestion?
Also, where do I find to source for runpy to preruse?
Cheers,
Cameron Simpson