From 929d7f86d50b21ac10ad7fea73d3b9c4cf63b18a Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Mon, 2 May 2016 18:30:02 -0400 Subject: [PATCH] Clarify IDLE-console differences with respect to the sys module. The reload(sys) effect was the crux of a Stackoverflow question. --- Doc/library/idle.rst | 16 +++++++++------- Lib/idlelib/help.html | 22 ++++++++++++---------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst index df08fe8b5b1..2140e85f048 100644 --- a/Doc/library/idle.rst +++ b/Doc/library/idle.rst @@ -550,14 +550,16 @@ IDLE-console differences As much as possible, the result of executing Python code with IDLE is the same as executing the same code in a console window. However, the different -interface and operation occasionally affects results. +interface and operation occasionally affects visible results. For instance, +``sys.modules`` starts with more entries. -For instance, IDLE normally executes user code in a separate process from -the IDLE GUI itself. The IDLE versions of sys.stdin, .stdout, and .stderr in the -execution process get input from and send output to the GUI process, -which keeps control of the keyboard and screen. This is normally transparent, -but code that access these object will see different attribute values. -Also, functions that directly access the keyboard and screen will not work. +IDLE also replaces ``sys.stdin``, ``sys.stdout``, and ``sys.stderr`` with +objects that get input from and send output to the Shell window. +When this window has the focus, it controls the keyboard and screen. +This is normally transparent, but functions that directly access the keyboard +and screen will not work. If ``sys`` is reset with ``importlib.reload(sys)``, +IDLE's changes are lost and things li ke ``input``, ``raw_input``, and +``print`` will not work correctly. With IDLE's Shell, one enters, edits, and recalls complete statements. Some consoles only work with a single physical line at a time. diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html index 3823613a24c..ec0b2188741 100644 --- a/Lib/idlelib/help.html +++ b/Lib/idlelib/help.html @@ -163,7 +163,7 @@ be undone.
Find Selection
Search for the currently selected string, if there is one.
Find in Files...
-
Open a file search dialog. Put results in an new output window.
+
Open a file search dialog. Put results in a new output window.
Replace...
Open a search-and-replace dialog.
Go to Line
@@ -517,13 +517,15 @@ set in the Options dialog.

25.5.3.2. IDLE-console differencesΒΆ

As much as possible, the result of executing Python code with IDLE is the same as executing the same code in a console window. However, the different -interface and operation occasionally affects results.

-

For instance, IDLE normally executes user code in a separate process from -the IDLE GUI itself. The IDLE versions of sys.stdin, .stdout, and .stderr in the -execution process get input from and send output to the GUI process, -which keeps control of the keyboard and screen. This is normally transparent, -but code that access these object will see different attribute values. -Also, functions that directly access the keyboard and screen will not work.

+interface and operation occasionally affects visible results. For instance, +sys.modules starts with more entries.

+

IDLE also replaces sys.stdin, sys.stdout, and sys.stderr with +objects that get input from and send output to the Shell window. +When this window has the focus, it controls the keyboard and screen. +This is normally transparent, but functions that directly access the keyboard +and screen will not work. If sys is reset with importlib.reload(sys), +IDLE’s changes are lost and things li ke input, raw_input, and +print will not work correctly.

With IDLE’s Shell, one enters, edits, and recalls complete statements. Some consoles only work with a single physical line at a time.

@@ -694,12 +696,12 @@ are currently: