From d89b034a1b95e0cdc47aaea33d68e16e8dcd211e Mon Sep 17 00:00:00 2001 From: lazerg Date: Thu, 24 Sep 2026 15:26:32 +0500 Subject: [PATCH 1/2] gh-158067: Keep Python files first in IDLE Open dialog from Shell --- Lib/idlelib/idle_test/test_outwin.py | 6 +++++- Lib/idlelib/iomenu.py | 4 +++- Lib/idlelib/outwin.py | 2 +- .../IDLE/2026-09-24-12-00-00.gh-issue-158067.opnPy1.rst | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2026-09-24-12-00-00.gh-issue-158067.opnPy1.rst diff --git a/Lib/idlelib/idle_test/test_outwin.py b/Lib/idlelib/idle_test/test_outwin.py index 00a7432b908873..667c1667465c3a 100644 --- a/Lib/idlelib/idle_test/test_outwin.py +++ b/Lib/idlelib/idle_test/test_outwin.py @@ -46,7 +46,11 @@ def test_save_defaults_to_text(self): io = self.window.io self.assertEqual(io.defaultextension, '.txt') # Text files are offered before Python files. - self.assertEqual(io.filetypes[0][0], 'Text files') + self.assertEqual(io.save_filetypes[0][0], 'Text files') + + def test_open_defaults_to_python(self): + # gh-158067: File Open still lists Python files first. + self.assertEqual(self.window.io.filetypes[0][0], 'Python files') def test_window_title(self): self.assertEqual(self.window.top.title(), 'Output' + ' (%s)' % platform.python_version()) diff --git a/Lib/idlelib/iomenu.py b/Lib/idlelib/iomenu.py index 96bf6078f12c3e..9ce1d45630dfab 100644 --- a/Lib/idlelib/iomenu.py +++ b/Lib/idlelib/iomenu.py @@ -386,6 +386,8 @@ def print_window(self, event): ("All files", "*"), ) + save_filetypes = filetypes + # Output windows (Shell, Output) are not Python source, so they list # text files first and default to ".txt" (gh-65339). text_filetypes = ( @@ -427,7 +429,7 @@ def asksavefile(self): if not self.savedialog: self.savedialog = filedialog.SaveAs( parent=self.text, - filetypes=self.filetypes, + filetypes=self.save_filetypes, defaultextension=self.defaultextension) filename = self.savedialog.show(initialdir=dir, initialfile=base) return filename diff --git a/Lib/idlelib/outwin.py b/Lib/idlelib/outwin.py index f7e92bb8ac0c77..b9dfeef173637c 100644 --- a/Lib/idlelib/outwin.py +++ b/Lib/idlelib/outwin.py @@ -80,7 +80,7 @@ def __init__(self, *args): self.text.bind("<>", self.goto_file_line) # Output is not Python source, so save it as text by default # (gh-65339). - self.io.filetypes = self.io.text_filetypes + self.io.save_filetypes = self.io.text_filetypes self.io.defaultextension = self.io.text_defaultextension # Customize EditorWindow diff --git a/Misc/NEWS.d/next/IDLE/2026-09-24-12-00-00.gh-issue-158067.opnPy1.rst b/Misc/NEWS.d/next/IDLE/2026-09-24-12-00-00.gh-issue-158067.opnPy1.rst new file mode 100644 index 00000000000000..2e34cf6a67b827 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2026-09-24-12-00-00.gh-issue-158067.opnPy1.rst @@ -0,0 +1,2 @@ +Fix the IDLE File Open dialog listing text files before Python files when +opened from the Shell or an Output window. From b1aaa39d5cdb3ff37f141e9e905d53cca6453aaf Mon Sep 17 00:00:00 2001 From: lazerg Date: Thu, 24 Sep 2026 16:01:41 +0500 Subject: [PATCH 2/2] Update comment for save-only text filetypes --- Lib/idlelib/iomenu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/idlelib/iomenu.py b/Lib/idlelib/iomenu.py index 9ce1d45630dfab..c2412e98fb9c4d 100644 --- a/Lib/idlelib/iomenu.py +++ b/Lib/idlelib/iomenu.py @@ -388,8 +388,8 @@ def print_window(self, event): save_filetypes = filetypes - # Output windows (Shell, Output) are not Python source, so they list - # text files first and default to ".txt" (gh-65339). + # Output windows (Shell, Output) are not Python source, so they save + # with text files listed first and default to ".txt" (gh-65339). text_filetypes = ( ("Text files", "*.txt", "TEXT"), ("Python files", py_extensions, "TEXT"),