[Python-checkins] gh-97527: IDLE - fix buggy macosx patch (GH-98313)
miss-islington
webhook-mailer at python.org
Sun Oct 16 12:00:52 EDT 2022
https://github.com/python/cpython/commit/21fbf1631d37fd5f769fde5795c62e1f1e90842a
commit: 21fbf1631d37fd5f769fde5795c62e1f1e90842a
branch: 3.11
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2022-10-16T09:00:47-07:00
summary:
gh-97527: IDLE - fix buggy macosx patch (GH-98313)
GH-97530 fixed IDLE tests possibly crashing on a Mac without a GUI.
But it resulted in IDLE not starting in 3.10.8, 3.12.0a1, and
Microsoft Python 3.10.2288.0 when test/* is not installed.
After this patch, test.* is only imported when testing on Mac.
(cherry picked from commit 35fa5d5e7f2b0971b39b2659dc70cb77e34a7dd6)
Co-authored-by: Terry Jan Reedy <tjreedy at udel.edu>
files:
A Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
M Lib/idlelib/NEWS.txt
M Lib/idlelib/macosx.py
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 7fa7facf8cf7..e64e96f75e6c 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -4,6 +4,11 @@ Released on 2022-10-03
=========================
+gh-97527: Fix a bug in the previous bugfix that caused IDLE to not
+start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python
+3.10.2288.0 installed without the Lib/test package. 3.11.0 was never
+affected.
+
gh-65802: Document handling of extensions in Save As dialogs.
gh-95191: Include prompts when saving Shell (interactive input/output).
diff --git a/Lib/idlelib/macosx.py b/Lib/idlelib/macosx.py
index 12399f152aea..89b645702d33 100644
--- a/Lib/idlelib/macosx.py
+++ b/Lib/idlelib/macosx.py
@@ -4,7 +4,6 @@
from os.path import expanduser
import plistlib
from sys import platform # Used in _init_tk_type, changed by test.
-from test.support import requires, ResourceDenied
import tkinter
@@ -16,27 +15,38 @@
def _init_tk_type():
""" Initialize _tk_type for isXyzTk functions.
+
+ This function is only called once, when _tk_type is still None.
"""
global _tk_type
if platform == 'darwin':
- try:
- requires('gui')
- except ResourceDenied: # Possible when testing.
- _tk_type = "cocoa" # Newest and most common.
- else:
- root = tkinter.Tk()
- ws = root.tk.call('tk', 'windowingsystem')
- if 'x11' in ws:
- _tk_type = "xquartz"
- elif 'aqua' not in ws:
- _tk_type = "other"
- elif 'AppKit' in root.tk.call('winfo', 'server', '.'):
+
+ # When running IDLE, GUI is present, test/* may not be.
+ # When running tests, test/* is present, GUI may not be.
+ # If not, guess most common. Does not matter for testing.
+ from idlelib.__init__ import testing
+ if testing:
+ from test.support import requires, ResourceDenied
+ try:
+ requires('gui')
+ except ResourceDenied:
_tk_type = "cocoa"
- else:
- _tk_type = "carbon"
- root.destroy()
+ return
+
+ root = tkinter.Tk()
+ ws = root.tk.call('tk', 'windowingsystem')
+ if 'x11' in ws:
+ _tk_type = "xquartz"
+ elif 'aqua' not in ws:
+ _tk_type = "other"
+ elif 'AppKit' in root.tk.call('winfo', 'server', '.'):
+ _tk_type = "cocoa"
+ else:
+ _tk_type = "carbon"
+ root.destroy()
else:
_tk_type = "other"
+ return
def isAquaTk():
"""
diff --git a/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst b/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
new file mode 100644
index 000000000000..e7fda8974194
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
@@ -0,0 +1,3 @@
+Fix a bug in the previous bugfix that caused IDLE to not start when run with
+3.10.8, 3.12.0a1, and at least Microsoft Python 3.10.2288.0 installed
+without the Lib/test package. 3.11.0 was never affected.
More information about the Python-checkins
mailing list