From c92e3cb228d478a4cbd8f53072cae608dcf2f6c4 Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 5 Mar 2021 13:12:18 -0700 Subject: [PATCH] Update pyright CI test to use the latest version of pyright (1.1.118). (#5092) Update pyright CI test to use the latest version of pyright (1.1.118). Enable all but one of pyright's strictest checks. Add a "# type: ignore" to `__new__` method in `weakref.KeyRef` because it uses a non-standard name for the `cls` parameter, which is flagged as an error by pyright. Co-authored-by: Eric Traut --- pyrightconfig.json | 12 ++++++++---- stdlib/builtins.pyi | 3 ++- stdlib/weakref.pyi | 3 ++- tests/pyright_test.py | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pyrightconfig.json b/pyrightconfig.json index bbb3168a8..88af7fe45 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -76,8 +76,12 @@ "reportUnboundVariable": "error", "reportInvalidStubStatement": "error", "reportUnsupportedDunderAll": "error", - "reportInvalidTypeVarUse": "none", - "reportOverlappingOverload": "none", - "reportPropertyTypeMismatch": "none", - "reportSelfClsParameterName": "none" + "reportInvalidTypeVarUse": "error", + "reportPropertyTypeMismatch": "error", + "reportSelfClsParameterName": "error", + // Overloapping overloads cannot be enabled at this time because + // of the "factions.Fraction.__pow__" method and "tasks.gather" function. + // Mypy's overlapping overload logic misses these issues (see mypy + // issue #10143 and #10157). + "reportOverlappingOverload": "none" } \ No newline at end of file diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index ca0779db7..d38d3aa1a 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -88,8 +88,9 @@ class object: __annotations__: Dict[str, Any] @property def __class__(self: _T) -> Type[_T]: ... + # Ignore errors about type mismatch between property getter and setter @__class__.setter - def __class__(self, __type: Type[object]) -> None: ... # noqa: F811 + def __class__(self, __type: Type[object]) -> None: ... # type: ignore # noqa: F811 def __init__(self) -> None: ... def __new__(cls) -> Any: ... def __setattr__(self, name: str, value: Any) -> None: ... diff --git a/stdlib/weakref.pyi b/stdlib/weakref.pyi index 7685e0ba4..98f57ea60 100644 --- a/stdlib/weakref.pyi +++ b/stdlib/weakref.pyi @@ -76,7 +76,8 @@ class WeakValueDictionary(MutableMapping[_KT, _VT]): class KeyedRef(ref[_T], Generic[_KT, _T]): key: _KT - def __new__(type, ob: _T, callback: Callable[[_T], Any], key: _KT) -> KeyedRef[_KT, _T]: ... + # This __new__ method uses a non-standard name for the "cls" parameter + def __new__(type, ob: _T, callback: Callable[[_T], Any], key: _KT) -> KeyedRef[_KT, _T]: ... # type: ignore def __init__(self, ob: _T, callback: Callable[[_T], Any], key: _KT) -> None: ... class WeakKeyDictionary(MutableMapping[_KT, _VT]): diff --git a/tests/pyright_test.py b/tests/pyright_test.py index 2d4f0a8e6..6f9899518 100755 --- a/tests/pyright_test.py +++ b/tests/pyright_test.py @@ -5,7 +5,7 @@ import subprocess import sys from pathlib import Path -_PYRIGHT_VERSION = "1.1.115" +_PYRIGHT_VERSION = "1.1.118" _WELL_KNOWN_FILE = Path("tests", "pyright_test.py")