From 7d2ab73a872840ea77d06fad7c3891d3db99d6fb Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 11 May 2026 17:47:12 +0300 Subject: [PATCH 1/5] Delete tkinter.Grid.content, tkinter.Pack.content and tkinter.Place.content --- stdlib/@tests/stubtest_allowlists/py315.txt | 5 +++++ stdlib/tkinter/__init__.pyi | 15 ++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/stdlib/@tests/stubtest_allowlists/py315.txt b/stdlib/@tests/stubtest_allowlists/py315.txt index d179f14d8234..5be3acbcc070 100644 --- a/stdlib/@tests/stubtest_allowlists/py315.txt +++ b/stdlib/@tests/stubtest_allowlists/py315.txt @@ -224,3 +224,8 @@ profiling.sampling.heatmap_collector.TreeNode profiling.sampling.module_utils profiling.sampling.opcode_utils profiling.sampling.sample + +# These conflicting aliases are just like tkinter.*.slaves in common.txt. +tkinter.Grid.content +tkinter.Pack.content +tkinter.Place.content diff --git a/stdlib/tkinter/__init__.pyi b/stdlib/tkinter/__init__.pyi index e1f3016b70b7..251737da5769 100644 --- a/stdlib/tkinter/__init__.pyi +++ b/stdlib/tkinter/__init__.pyi @@ -634,7 +634,6 @@ class Misc: def pack_content(self) -> list[Widget]: ... def grid_content(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... def place_content(self) -> list[Widget]: ... - content = pack_content slaves = pack_slaves def event_add(self, virtual: str, *sequences: str) -> None: ... def event_delete(self, virtual: str, *sequences: str) -> None: ... @@ -1113,7 +1112,6 @@ class Pack: def pack_info(self) -> _PackInfo: ... # errors if widget hasn't been packed if sys.version_info >= (3, 15): def pack_content(self) -> list[Widget]: ... - content = pack_content pack = pack_configure forget = pack_forget propagate = Misc.pack_propagate @@ -1154,7 +1152,6 @@ class Place: def place_info(self) -> _PlaceInfo: ... if sys.version_info >= (3, 15): def place_content(self) -> list[Widget]: ... - content = place_content place = place_configure info = place_info @@ -1206,7 +1203,7 @@ class BaseWidget(Misc): def destroy(self) -> None: ... # This class represents any widget except Toplevel or Tk. -class Widget(BaseWidget, Pack, Place, Grid): # type: ignore[misc] # content aliases differ across geometry mixins. +class Widget(BaseWidget, Pack, Place, Grid): # Allow bind callbacks to take e.g. Event[Label] instead of Event[Misc]. # Tk and Toplevel get notified for their child widgets' events, but other # widgets don't. @@ -1378,7 +1375,7 @@ class Button(Widget): def flash(self) -> None: ... def invoke(self) -> Any: ... -class Canvas(Widget, XView, YView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Canvas(Widget, XView, YView): def __init__( self, master: Misc | None = None, @@ -2148,7 +2145,7 @@ class Checkbutton(Widget): def select(self) -> None: ... def toggle(self) -> None: ... -class Entry(Widget, XView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Entry(Widget, XView): def __init__( self, master: Misc | None = None, @@ -2391,7 +2388,7 @@ class Label(Widget): def configure(self, cnf: str) -> tuple[str, str, str, Any, Any]: ... config = configure -class Listbox(Widget, XView, YView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Listbox(Widget, XView, YView): def __init__( self, master: Misc | None = None, @@ -3193,7 +3190,7 @@ _WhatToCount: TypeAlias = Literal[ "chars", "displaychars", "displayindices", "displaylines", "indices", "lines", "xpixels", "ypixels" ] -class Text(Widget, XView, YView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Text(Widget, XView, YView): def __init__( self, master: Misc | None = None, @@ -3981,7 +3978,7 @@ class BitmapImage(Image, _BitmapImageLike): def image_names() -> tuple[str, ...]: ... def image_types() -> tuple[str, ...]: ... -class Spinbox(Widget, XView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Spinbox(Widget, XView): def __init__( self, master: Misc | None = None, From 9691a5a789512dd213f0cd6ec3f1fa5645358f2a Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 11 May 2026 18:01:54 +0300 Subject: [PATCH 2/5] Fixing --- stdlib/tkinter/__init__.pyi | 1 + stdlib/tkinter/ttk.pyi | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/stdlib/tkinter/__init__.pyi b/stdlib/tkinter/__init__.pyi index 251737da5769..864e313747d7 100644 --- a/stdlib/tkinter/__init__.pyi +++ b/stdlib/tkinter/__init__.pyi @@ -635,6 +635,7 @@ class Misc: def grid_content(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... def place_content(self) -> list[Widget]: ... slaves = pack_slaves + content = pack_content def event_add(self, virtual: str, *sequences: str) -> None: ... def event_delete(self, virtual: str, *sequences: str) -> None: ... def event_generate( diff --git a/stdlib/tkinter/ttk.pyi b/stdlib/tkinter/ttk.pyi index c3285549b405..f546c2851860 100644 --- a/stdlib/tkinter/ttk.pyi +++ b/stdlib/tkinter/ttk.pyi @@ -316,7 +316,7 @@ class Checkbutton(Widget): config = configure def invoke(self) -> Any: ... -class Entry(Widget, tkinter.Entry): # type: ignore[misc] # content aliases differ across geometry mixins. +class Entry(Widget, tkinter.Entry): def __init__( self, master: tkinter.Misc | None = None, @@ -718,7 +718,7 @@ class Notebook(Widget): def tabs(self): ... def enable_traversal(self) -> None: ... -class Panedwindow(Widget, tkinter.PanedWindow): # type: ignore[misc] # content aliases differ across geometry mixins. +class Panedwindow(Widget, tkinter.PanedWindow): def __init__( self, master: tkinter.Misc | None = None, @@ -1106,7 +1106,7 @@ class _TreeviewColumnDict(TypedDict): anchor: Literal["nw", "n", "ne", "w", "center", "e", "sw", "s", "se"] id: str -class Treeview(Widget, tkinter.XView, tkinter.YView): # type: ignore[misc] # content aliases differ across geometry mixins. +class Treeview(Widget, tkinter.XView, tkinter.YView): def __init__( self, master: tkinter.Misc | None = None, From d406b347f0b464b35632303d3f01475b075f0d57 Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 11 May 2026 18:03:06 +0300 Subject: [PATCH 3/5] Rearrange it in a way that is hopefully less confusing --- stdlib/tkinter/__init__.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/tkinter/__init__.pyi b/stdlib/tkinter/__init__.pyi index 864e313747d7..969f6ce63678 100644 --- a/stdlib/tkinter/__init__.pyi +++ b/stdlib/tkinter/__init__.pyi @@ -630,12 +630,12 @@ class Misc: def pack_slaves(self) -> list[Widget]: ... def grid_slaves(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... def place_slaves(self) -> list[Widget]: ... + slaves = pack_slaves if sys.version_info >= (3, 15): def pack_content(self) -> list[Widget]: ... def grid_content(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... def place_content(self) -> list[Widget]: ... - slaves = pack_slaves - content = pack_content + content = pack_content def event_add(self, virtual: str, *sequences: str) -> None: ... def event_delete(self, virtual: str, *sequences: str) -> None: ... def event_generate( From d6513001d873eb1f128ed5433ad9d19343d0fc3e Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 11 May 2026 18:06:14 +0300 Subject: [PATCH 4/5] One more --- stdlib/tkinter/__init__.pyi | 1 - 1 file changed, 1 deletion(-) diff --git a/stdlib/tkinter/__init__.pyi b/stdlib/tkinter/__init__.pyi index 969f6ce63678..1540343b6c92 100644 --- a/stdlib/tkinter/__init__.pyi +++ b/stdlib/tkinter/__init__.pyi @@ -1192,7 +1192,6 @@ class Grid: def grid_info(self) -> _GridInfo: ... if sys.version_info >= (3, 15): def grid_content(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... - content = grid_content grid = grid_configure location = Misc.grid_location size = Misc.grid_size From f806a688d2887dd2cdd4566a751d3cf17a9f4215 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 15:07:07 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/tkinter/__init__.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stdlib/tkinter/__init__.pyi b/stdlib/tkinter/__init__.pyi index 1540343b6c92..1d7c9998ec43 100644 --- a/stdlib/tkinter/__init__.pyi +++ b/stdlib/tkinter/__init__.pyi @@ -636,6 +636,7 @@ class Misc: def grid_content(self, row: int | None = None, column: int | None = None) -> list[Widget]: ... def place_content(self) -> list[Widget]: ... content = pack_content + def event_add(self, virtual: str, *sequences: str) -> None: ... def event_delete(self, virtual: str, *sequences: str) -> None: ... def event_generate(