Issue 24212: Idle, 2.7, backport idlelib.main, enable py -m idlelib (original) (raw)

Issue24212

Created on 2015-05-16 21:46 by terry.reedy, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (7)
msg243369 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-05-16 21:46
Discussion on another issue suggested that 3.x idlelib.__main__ be backported to 2.7 so 'python -m idlelib would work with 2.7 as with 3.x. The current file: """ IDLE main entry point Run IDLE as python -m idlelib """ import idlelib.PyShell idlelib.PyShell.main() When I tried this, it failed two ways. 1. The AutoComplete and CallTips extensions did not import properly. The error messages are printed from the except clause in EditorWindow.load_standard_extensions. I presume this call results from "import EditorWindow" in PyShell. Failed to load extension 'AutoComplete' Traceback (most recent call last): File "C:\Programs\Python27\lib\idlelib\EditorWindow.py", line 1068, in load_standard_extensions self.load_extension(name) File "C:\Programs\Python27\lib\idlelib\EditorWindow.py", line 1083, in load_extension cls = getattr(mod, name) AttributeError: 'module' object has no attribute 'AutoComplete' Somehow AutoComplete was imported without an ImportError even though the class AutoComplete statement did not create the class asstribute. AutoComplete and CallTips are the two extensions containing "import __main__". Adding idlelib.__main__ somehow causes weird behavior in 2.7, though not in 3.x. Commenting out these imports removes the import problem. 2. Even with 1 temporarily fixed with '#', an unsaved file 'named' C:\users\terry\NNNNN.py is open in an editor window. ("Unsaved' and'named' areusually mutually exclusive.) Two shell windows, instead of one, are opened. One fails to connect to a subprocess. Clicking away the message box raises SystemExit. Changing __main__.py to ... from idlelib.PyShell import * main() had no effect. I will add a reference to this issue in the file. (If should be removed if this issue is fixed.)
msg243373 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-05-16 22:31
New changeset 44fc6db34b69 by Terry Jan Reedy in branch '3.4': Issue #24212: Put reference in idle.__main__ to issue with explanation. https://hg.python.org/cpython/rev/44fc6db34b69
msg243385 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-05-17 05:30
Why idlelib.__main__ should be backported? You can start IDLE as "python -m idlelib.idle" in 2.7 and this works as well in 3.x.
msg243409 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-05-17 15:36
The idea, obviously, is for python -m idlelib to also work on all systems. When this was requested as part of the discussion on another issue, I thought there was no idlelib.__main__ because __main__ did not work on 2.7. Someone corrected me and the expectation of me and others was that the absence was just an easily corrected oversight. Turns out not so. I wanted to at least document that the backport is not trivial. I am rather curious why the same code behaves so differently on 2.7.
msg296379 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-19 21:42
I am no longer patching IDLE for 2.7.
msg296384 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-06-19 22:22
I wanted this for the same reason you backported test.__main__ in #30223, but I'm not going to fix the problems.
msg301095 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-09-01 12:26
#27099 converts extensions, including autocomplete and calltips, to features. Buggy versions of the patch had similar import problems. After the PR is merged, I may try this again, and perhaps try moving the __main__ import into the functions that use it.
History
Date User Action Args
2022-04-11 14:58:16 admin set github: 68400
2017-09-01 14:00:34 terry.reedy unlink issue31319 superseder
2017-09-01 12:26:22 terry.reedy set messages: +
2017-09-01 07:11:42 serhiy.storchaka link issue31319 superseder
2017-06-19 22:22:37 terry.reedy set messages: +
2017-06-19 21:42:32 terry.reedy set status: open -> closedmessages: + assignee: terry.reedycomponents: + IDLEresolution: wont fixstage: needs patch -> resolved
2015-05-19 08:09:15 Arfrever set nosy: + Arfrever
2015-05-17 15:36:12 terry.reedy set messages: +
2015-05-17 05:30:58 serhiy.storchaka set nosy: + serhiy.storchakamessages: +
2015-05-16 22:31:57 python-dev set nosy: + python-devmessages: +
2015-05-16 21:46:53 terry.reedy create