From ea4d7004ba6dc6f10ebc216158ddb93668592009 Mon Sep 17 00:00:00 2001 From: Marcell Perger Date: Fri, 20 Jun 2025 13:26:34 +0100 Subject: [PATCH 1/5] Improve some of the incomplete types in `tkinter.filedialog` --- stdlib/tkinter/filedialog.pyi | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/stdlib/tkinter/filedialog.pyi b/stdlib/tkinter/filedialog.pyi index af033dae97c3..f003ce015382 100644 --- a/stdlib/tkinter/filedialog.pyi +++ b/stdlib/tkinter/filedialog.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete, StrOrBytesPath from collections.abc import Iterable -from tkinter import Button, Entry, Frame, Listbox, Misc, Scrollbar, StringVar, Toplevel, commondialog -from typing import IO, ClassVar, Literal +from tkinter import Button, Entry, Event, Frame, Listbox, Misc, Scrollbar, StringVar, Toplevel, commondialog +from typing import IO, ClassVar, Hashable, Literal __all__ = [ "FileDialog", @@ -19,12 +19,12 @@ __all__ = [ "askdirectory", ] -dialogstates: dict[Incomplete, tuple[Incomplete, Incomplete]] +dialogstates: dict[Hashable, tuple[str, str]] class FileDialog: title: str - master: Incomplete - directory: Incomplete | None + master: Misc + directory: str | None top: Toplevel botframe: Frame selection: Entry @@ -38,23 +38,23 @@ class FileDialog: filter_button: Button cancel_button: Button def __init__( - self, master, title=None + self, master: Misc, title: str | None = None ) -> None: ... # title is usually a str or None, but e.g. int doesn't raise en exception either - how: Incomplete | None - def go(self, dir_or_file=".", pattern: str = "*", default: str = "", key=None): ... - def quit(self, how=None) -> None: ... - def dirs_double_event(self, event) -> None: ... - def dirs_select_event(self, event) -> None: ... - def files_double_event(self, event) -> None: ... - def files_select_event(self, event) -> None: ... - def ok_event(self, event) -> None: ... + how: str | None + def go(self, dir_or_file: StrOrBytesPath = ".", pattern: str = "*", default: str = "", key: Hashable | None = None): ... + def quit(self, how: str | None = None) -> None: ... + def dirs_double_event(self, event: Event) -> None: ... + def dirs_select_event(self, event: Event) -> None: ... + def files_double_event(self, event: Event) -> None: ... + def files_select_event(self, event: Event) -> None: ... + def ok_event(self, event: Event) -> None: ... def ok_command(self) -> None: ... - def filter_command(self, event=None) -> None: ... - def get_filter(self): ... - def get_selection(self): ... - def cancel_command(self, event=None) -> None: ... - def set_filter(self, dir, pat) -> None: ... - def set_selection(self, file) -> None: ... + def filter_command(self, event: Event = None) -> None: ... + def get_filter(self) -> tuple[str, str]: ... + def get_selection(self) -> str: ... + def cancel_command(self, event: Event = None) -> None: ... + def set_filter(self, dir: StrOrBytesPath, pat: str) -> None: ... + def set_selection(self, file: str) -> None: ... class LoadFileDialog(FileDialog): title: str From 3b261f833142ed41bfe2f74899aaec86997bc884 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 20 Jun 2025 12:31:36 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/tkinter/filedialog.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/tkinter/filedialog.pyi b/stdlib/tkinter/filedialog.pyi index f003ce015382..e644ac5b1d6d 100644 --- a/stdlib/tkinter/filedialog.pyi +++ b/stdlib/tkinter/filedialog.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete, StrOrBytesPath -from collections.abc import Iterable +from collections.abc import Hashable, Iterable from tkinter import Button, Entry, Event, Frame, Listbox, Misc, Scrollbar, StringVar, Toplevel, commondialog -from typing import IO, ClassVar, Hashable, Literal +from typing import IO, ClassVar, Literal __all__ = [ "FileDialog", From 7554a271b6b1abc3671ee75a4f56dbf26b140ea2 Mon Sep 17 00:00:00 2001 From: Marcell Perger Date: Fri, 20 Jun 2025 13:31:54 +0100 Subject: [PATCH 3/5] Fix stubtest error --- stdlib/tkinter/filedialog.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/tkinter/filedialog.pyi b/stdlib/tkinter/filedialog.pyi index f003ce015382..469c45cdfde6 100644 --- a/stdlib/tkinter/filedialog.pyi +++ b/stdlib/tkinter/filedialog.pyi @@ -49,10 +49,10 @@ class FileDialog: def files_select_event(self, event: Event) -> None: ... def ok_event(self, event: Event) -> None: ... def ok_command(self) -> None: ... - def filter_command(self, event: Event = None) -> None: ... + def filter_command(self, event: Event | None = None) -> None: ... def get_filter(self) -> tuple[str, str]: ... def get_selection(self) -> str: ... - def cancel_command(self, event: Event = None) -> None: ... + def cancel_command(self, event: Event | None = None) -> None: ... def set_filter(self, dir: StrOrBytesPath, pat: str) -> None: ... def set_selection(self, file: str) -> None: ... From 264405022d0093975b04c4b1f10cccea0d5f7f73 Mon Sep 17 00:00:00 2001 From: Marcell Perger Date: Fri, 20 Jun 2025 15:03:52 +0100 Subject: [PATCH 4/5] Fix path parameter types --- stdlib/tkinter/filedialog.pyi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/tkinter/filedialog.pyi b/stdlib/tkinter/filedialog.pyi index 91f72bc8c454..0f2d0be2a0ae 100644 --- a/stdlib/tkinter/filedialog.pyi +++ b/stdlib/tkinter/filedialog.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete, StrOrBytesPath +from _typeshed import Incomplete, StrPath, StrOrBytesPath from collections.abc import Hashable, Iterable from tkinter import Button, Entry, Event, Frame, Listbox, Misc, Scrollbar, StringVar, Toplevel, commondialog from typing import IO, ClassVar, Literal @@ -41,7 +41,7 @@ class FileDialog: self, master: Misc, title: str | None = None ) -> None: ... # title is usually a str or None, but e.g. int doesn't raise en exception either how: str | None - def go(self, dir_or_file: StrOrBytesPath = ".", pattern: str = "*", default: str = "", key: Hashable | None = None): ... + def go(self, dir_or_file: StrPath = ".", pattern: StrPath = "*", default: StrPath = "", key: Hashable | None = None): ... def quit(self, how: str | None = None) -> None: ... def dirs_double_event(self, event: Event) -> None: ... def dirs_select_event(self, event: Event) -> None: ... @@ -53,8 +53,8 @@ class FileDialog: def get_filter(self) -> tuple[str, str]: ... def get_selection(self) -> str: ... def cancel_command(self, event: Event | None = None) -> None: ... - def set_filter(self, dir: StrOrBytesPath, pat: str) -> None: ... - def set_selection(self, file: str) -> None: ... + def set_filter(self, dir: StrPath, pat: StrPath) -> None: ... + def set_selection(self, file: StrPath) -> None: ... class LoadFileDialog(FileDialog): title: str From d10c43e522f0239e6e1f45ec3ae5a151cfa81c27 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 20 Jun 2025 14:05:45 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/tkinter/filedialog.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/tkinter/filedialog.pyi b/stdlib/tkinter/filedialog.pyi index 0f2d0be2a0ae..b6ef8f45d035 100644 --- a/stdlib/tkinter/filedialog.pyi +++ b/stdlib/tkinter/filedialog.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete, StrPath, StrOrBytesPath +from _typeshed import Incomplete, StrOrBytesPath, StrPath from collections.abc import Hashable, Iterable from tkinter import Button, Entry, Event, Frame, Listbox, Misc, Scrollbar, StringVar, Toplevel, commondialog from typing import IO, ClassVar, Literal