[Python-checkins] [3.11] gh-104496: IDLE - fix About for mixed tcl/tk versions (GH-104585) (#104587)

terryjreedy webhook-mailer at python.org
Wed May 17 16:31:32 EDT 2023


https://github.com/python/cpython/commit/0560fd3f9874d577f0fe3d7a47fd3c46b16af068
commit: 0560fd3f9874d577f0fe3d7a47fd3c46b16af068
branch: 3.11
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: terryjreedy <tjreedy at udel.edu>
date: 2023-05-17T20:31:22Z
summary:

[3.11] gh-104496: IDLE - fix About for mixed tcl/tk versions (GH-104585) (#104587)

gh-104496: IDLE - fix About for mixed tcl/tk versions (GH-104585)

Print both if they are different, as may happen in the future.
(cherry picked from commit aed643baa968b4959b830d37750080cac546fba7)

Co-authored-by: Terry Jan Reedy <tjreedy at udel.edu>

files:
A Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst
M Lib/idlelib/NEWS.txt
M Lib/idlelib/help_about.py
M Lib/idlelib/idle_test/test_help_about.py

diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 987c9924ea92..8e8e6c33bd3e 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -4,6 +4,9 @@ Released after 2022-10-24
 =========================
 
 
+gh-104486: Make About print both tcl and tk versions if different,
+as is expected someday.
+
 gh-88496 Fix IDLE test hang on macOS.
 
 gh-103314 Support sys.last_exc after exceptions in Shell.
diff --git a/Lib/idlelib/help_about.py b/Lib/idlelib/help_about.py
index a0085a40b980..cfa4ca781f08 100644
--- a/Lib/idlelib/help_about.py
+++ b/Lib/idlelib/help_about.py
@@ -11,15 +11,12 @@
 
 from idlelib import textview
 
-version = python_version()
+pyver = python_version()
 
-
-def build_bits():
-    "Return bits for platform."
-    if sys.platform == 'darwin':
-        return '64' if sys.maxsize > 2**32 else '32'
-    else:
-        return architecture()[0][:2]
+if sys.platform == 'darwin':
+    bits = '64' if sys.maxsize > 2**32 else '32'
+else:
+    bits = architecture()[0][:2]
 
 
 class AboutDialog(Toplevel):
@@ -45,7 +42,7 @@ def __init__(self, parent, title=None, *, _htest=False, _utest=False):
         self.create_widgets()
         self.resizable(height=False, width=False)
         self.title(title or
-                   f'About IDLE {version} ({build_bits()} bit)')
+                   f'About IDLE {pyver} ({bits} bit)')
         self.transient(parent)
         self.grab_set()
         self.protocol("WM_DELETE_WINDOW", self.ok)
@@ -76,8 +73,8 @@ def create_widgets(self):
                        bg=self.bg, font=('courier', 24, 'bold'))
         header.grid(row=0, column=0, sticky=E, padx=10, pady=10)
 
-        tk_patchlevel = self.info_patchlevel()
-        ext = '.png' if tk_patchlevel >= (8, 6) else '.gif'
+        tkpatch = self._root().getvar('tk_patchLevel')
+        ext = '.png' if tkpatch >= '8.6' else '.gif'
         icon = os.path.join(os.path.abspath(os.path.dirname(__file__)),
                             'Icons', f'idle_48{ext}')
         self.icon_image = PhotoImage(master=self._root(), file=icon)
@@ -102,13 +99,11 @@ def create_widgets(self):
               height=2, bg=self.bg).grid(row=8, column=0, sticky=EW,
                                          columnspan=3, padx=5, pady=5)
 
-        pyver = Label(frame_background,
-                      text='Python version:  ' + version,
-                      fg=self.fg, bg=self.bg)
-        pyver.grid(row=9, column=0, sticky=W, padx=10, pady=0)
-        tkver = Label(frame_background, text=f'Tk version:  {tk_patchlevel}',
-                      fg=self.fg, bg=self.bg)
-        tkver.grid(row=9, column=1, sticky=W, padx=2, pady=0)
+        tclver = str(self.info_patchlevel())
+        tkver = ' and ' + tkpatch if tkpatch != tclver else ''
+        versions = f"Python {pyver} with tcl/tk {tclver}{tkver}"
+        vers = Label(frame_background, text=versions, fg=self.fg, bg=self.bg)
+        vers.grid(row=9, column=0, sticky=W, padx=10, pady=0)
         py_buttons = Frame(frame_background, bg=self.bg)
         py_buttons.grid(row=10, column=0, columnspan=2, sticky=NSEW)
         self.py_license = Button(py_buttons, text='License', width=8,
@@ -128,10 +123,10 @@ def create_widgets(self):
               height=2, bg=self.bg).grid(row=11, column=0, sticky=EW,
                                          columnspan=3, padx=5, pady=5)
 
-        idlever = Label(frame_background,
-                        text='IDLE version:   ' + version,
+        idle = Label(frame_background,
+                        text='IDLE',
                         fg=self.fg, bg=self.bg)
-        idlever.grid(row=12, column=0, sticky=W, padx=10, pady=0)
+        idle.grid(row=12, column=0, sticky=W, padx=10, pady=0)
         idle_buttons = Frame(frame_background, bg=self.bg)
         idle_buttons.grid(row=13, column=0, columnspan=3, sticky=NSEW)
         self.readme = Button(idle_buttons, text='README', width=8,
diff --git a/Lib/idlelib/idle_test/test_help_about.py b/Lib/idlelib/idle_test/test_help_about.py
index b915535acac0..8b79487b15d4 100644
--- a/Lib/idlelib/idle_test/test_help_about.py
+++ b/Lib/idlelib/idle_test/test_help_about.py
@@ -36,7 +36,7 @@ def tearDownClass(cls):
         del cls.root
 
     def test_build_bits(self):
-        self.assertIn(help_about.build_bits(), ('32', '64'))
+        self.assertIn(help_about.bits, ('32', '64'))
 
     def test_dialog_title(self):
         """Test about dialog title"""
@@ -107,7 +107,7 @@ def test_dialog_title(self):
         """Test about dialog title"""
         self.assertEqual(self.dialog.title(),
                          f'About IDLE {python_version()}'
-                         f' ({help_about.build_bits()} bit)')
+                         f' ({help_about.bits} bit)')
 
 
 class CloseTest(unittest.TestCase):
diff --git a/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst b/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst
new file mode 100644
index 000000000000..18d83150e94f
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2023-05-17-15-11-11.gh-issue-104496.wjav-y.rst
@@ -0,0 +1 @@
+About prints both tcl and tk versions if different (expected someday).



More information about the Python-checkins mailing list