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: