From 09c91a00ac213f4a9e8e240a4765e17fcbda43e9 Mon Sep 17 00:00:00 2001 From: Akuli Date: Fri, 31 Jul 2020 11:53:57 +0300 Subject: [PATCH] add type hints for tkinter.Variable and its subclasses (#4378) --- stdlib/3/tkinter/__init__.pyi | 54 +++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/stdlib/3/tkinter/__init__.pyi b/stdlib/3/tkinter/__init__.pyi index 8f03107c9..eab847f99 100644 --- a/stdlib/3/tkinter/__init__.pyi +++ b/stdlib/3/tkinter/__init__.pyi @@ -2,7 +2,7 @@ import sys from enum import Enum from tkinter.constants import * # noqa: F403 from types import TracebackType -from typing import Any, Callable, Dict, Generic, Optional, Tuple, Type, TypeVar, Union, overload +from typing import Any, Callable, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union, overload from typing_extensions import Literal TclError: Any @@ -82,39 +82,45 @@ class Event(Generic[_W]): def NoDefaultRoot(): ... +_TraceMode = Literal["array", "read", "write", "unset"] + class Variable: - def __init__(self, master: Optional[Any] = ..., value: Optional[Any] = ..., name: Optional[Any] = ...): ... - def __del__(self): ... - def set(self, value): ... - initialize: Any - def get(self): ... - def trace_variable(self, mode, callback): ... - trace: Any - def trace_vdelete(self, mode, cbname): ... - def trace_vinfo(self): ... - def __eq__(self, other): ... + def __init__(self, master: Optional[Misc] = ..., value: Optional[Any] = ..., name: Optional[str] = ...) -> None: ... + def set(self, value: Any) -> None: ... + initialize = set + def get(self) -> Any: ... if sys.version_info >= (3, 6): - def trace_add(self, mode, callback): ... - def trace_remove(self, mode, cbname) -> None: ... - def trace_info(self): ... + def trace_add(self, mode: _TraceMode, callback: Callable[[str, str, str], None]) -> str: ... + def trace_remove(self, mode: _TraceMode, cbname: str) -> None: ... + def trace_info(self) -> List[Tuple[Tuple[_TraceMode, ...], str]]: ... + def trace_variable(self, mode, callback): ... # deprecated + def trace_vdelete(self, mode, cbname): ... # deprecated + def trace_vinfo(self): ... # deprecated + trace = trace_variable # deprecated class StringVar(Variable): - def __init__(self, master: Optional[Any] = ..., value: Optional[Any] = ..., name: Optional[Any] = ...): ... - def get(self): ... + def __init__(self, master: Optional[Misc] = ..., value: Optional[str] = ..., name: Optional[str] = ...) -> None: ... + def set(self, value: str) -> None: ... + initialize = set + def get(self) -> str: ... class IntVar(Variable): - def __init__(self, master: Optional[Any] = ..., value: Optional[Any] = ..., name: Optional[Any] = ...): ... - def get(self): ... + def __init__(self, master: Optional[Misc] = ..., value: Optional[int] = ..., name: Optional[str] = ...) -> None: ... + def set(self, value: int) -> None: ... + initialize = set + def get(self) -> int: ... class DoubleVar(Variable): - def __init__(self, master: Optional[Any] = ..., value: Optional[Any] = ..., name: Optional[Any] = ...): ... - def get(self): ... + def __init__(self, master: Optional[Misc] = ..., value: Optional[float] = ..., name: Optional[str] = ...) -> None: ... + def set(self, value: float) -> None: ... + initialize = set + def get(self) -> float: ... class BooleanVar(Variable): - def __init__(self, master: Optional[Any] = ..., value: Optional[Any] = ..., name: Optional[Any] = ...): ... - def set(self, value): ... - initialize: Any - def get(self): ... + def __init__(self, master: Optional[Misc] = ..., value: Optional[bool] = ..., name: Optional[str] = ...) -> None: ... + def set(self, value: bool) -> None: ... + initialize = set + def get(self) -> bool: ... def mainloop(n: int = ...): ...