[Python-Dev] BDFL-Delegate appointments for several PEPs

Terry Reedy tjreedy at udel.edu
Sun Mar 24 22:01:14 EDT 2019


On 3/24/2019 7:00 PM, Cameron Simpson wrote:
> On 24Mar2019 17:02, Terry Reedy <tjreedy at udel.edu> wrote:
>> On 3/24/2019 8:21 AM, Nick Coghlan wrote:
>>> * PEP 499: Binding "-m" executed modules under their module name as
>>> well as `__main__`
>>
>> My brief response: +1 unless there is a good reason not.
> 
> There turn out to be some subtle side effects. The test suite turned up 
> one (easily fixed) in pdb, but there are definitely some more things to 
> investigate.  Nick has pointed out pickle and the "python -i" option. 
> I'm digging into these. (Naturally, I have _never_ before used the pdb 
> or pickle modules, or the -i option :-)
> 
>> There have been multiple double module problems reported on 
>> python-list and likely stackoverflow.  And would there be any impact 
>> on circular imports?
> 
> Well, by binding the -m module to both __main__ and its name as denoted 
> on the command line one circular import is directly short circuited. 
> Aside from the -m module itself, I don't think there should be any other 
> direct effect on circular imports.
> 
> Did you have a specific scenario in mind?

I was thinking about IDLE and its tangled web of circular inports, but I 
am now convinced that this change will not affect it.  Indeed, 
idlelib/pyshell.py already implements idea of the proposal, ending with

if __name__ == "__main__":
     sys.modules['pyshell'] = sys.modules['__main__']
     main()

(It turns out that this fails for other reasons, which I am looking 
into.  The current recommendation is to start IDLE by runing any of 
__main__.py (via python -m idlelib), idle.py, idlew.py, or idle.bat.)

-- 
Terry Jan Reedy




More information about the Python-Dev mailing list