Skip to content

IDLE: ScrolledCanvas.zoom_height calls idlelib.zoomheight.zoom_height, which has not existed since 2019 #157762

Description

@tony-CloseAI

Bug report

idlelib.tree.ScrolledCanvas.zoom_height calls a module-level function that has not existed since 2019, so the binding raises as soon as it fires.

Where: Lib/idlelib/tree.py, ScrolledCanvas.zoom_height (line 459 on main), bound to <Alt-2> on the canvas:

def zoom_height(self, event):
    zoomheight.zoom_height(self.master)

idlelib/zoomheight.py has had no module-level zoom_height since the Zoom Height rework (gh-81220, PRs #13576 and #13678, 2019): zooming is now ZoomHeight(editwin).zoom_height(), which only reads editwin.top.

Reproduce (3.13.5, but the call is the same on main):

>>> from idlelib import zoomheight
>>> zoomheight.zoom_height
AttributeError: module 'idlelib.zoomheight' has no attribute 'zoom_height'. Did you mean: 'ZoomHeight'?

Pressing Alt-2 in a tree window (Path Browser, Module Browser, the debugger's stack viewer) raises the same AttributeError out of the Tk callback.

Proposed fixZoomHeight needs only the toplevel window of what it zooms:

+from types import SimpleNamespace
+
 from idlelib import zoomheight
@@
     def zoom_height(self, event):
-        zoomheight.zoom_height(self.master)
+        # ZoomHeight needs only the toplevel window of what it zooms.
+        top = self.canvas.winfo_toplevel()
+        zoomheight.ZoomHeight(SimpleNamespace(top=top)).zoom_height()
         return "break"

Checked by calling ScrolledCanvas.zoom_height from main's sources against a stand-in toplevel: the current code raises AttributeError; the fixed code maximizes the window height (400x300+10+20 -> 400x760+10+0).

If a SimpleNamespace stand-in is not wanted here, ZoomHeight.zoom_height could instead take the toplevel directly; happy to send a PR either way.

Environment: Windows 11, CPython 3.13.5; the line is unchanged on main.


Found while auditing installed code with a verification tool I am building; the reproduction above was run on the version named, and the proposed fix was applied to a local copy and run as well. Report drafted with AI assistance.

Linked PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-IDLEtype-bugAn unexpected behavior, bug, or error

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions