From 81671b4c8d6c79c9576b18a8698085cebc0f7811 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Fri, 8 Jul 2022 12:38:32 +0100 Subject: [PATCH] Fix typeshed regression in unittest --- mypy/typeshed/stdlib/_typeshed/__init__.pyi | 3 +++ mypy/typeshed/stdlib/unittest/case.pyi | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/mypy/typeshed/stdlib/_typeshed/__init__.pyi b/mypy/typeshed/stdlib/_typeshed/__init__.pyi index 162c40522224..005849e0fb05 100644 --- a/mypy/typeshed/stdlib/_typeshed/__init__.pyi +++ b/mypy/typeshed/stdlib/_typeshed/__init__.pyi @@ -78,6 +78,9 @@ class SupportsRAdd(Protocol[_T_contra, _T_co]): class SupportsSub(Protocol[_T_contra, _T_co]): def __sub__(self, __x: _T_contra) -> _T_co: ... +class SupportsRSub(Protocol[_T_contra, _T_co]): + def __rsub__(self, __x: _T_contra) -> _T_co: ... + class SupportsDivMod(Protocol[_T_contra, _T_co]): def __divmod__(self, __other: _T_contra) -> _T_co: ... diff --git a/mypy/typeshed/stdlib/unittest/case.pyi b/mypy/typeshed/stdlib/unittest/case.pyi index 15b573edeebb..4f69c0a1f3b8 100644 --- a/mypy/typeshed/stdlib/unittest/case.pyi +++ b/mypy/typeshed/stdlib/unittest/case.pyi @@ -1,7 +1,7 @@ import logging import sys import unittest.result -from _typeshed import Self, SupportsDunderGE, SupportsSub +from _typeshed import Self, SupportsDunderGE, SupportsRSub, SupportsSub from collections.abc import Callable, Container, Iterable, Mapping, Sequence, Set as AbstractSet from contextlib import AbstractContextManager from types import TracebackType @@ -196,6 +196,15 @@ class TestCase: delta: None = ..., ) -> None: ... @overload + def assertAlmostEqual( + self, + first: _T, + second: SupportsRSub[_T, SupportsAbs[SupportsRound[object]]], + places: int | None = ..., + msg: Any = ..., + delta: None = ..., + ) -> None: ... + @overload def assertNotAlmostEqual(self, first: _S, second: _S, places: None, msg: Any, delta: _SupportsAbsAndDunderGE) -> None: ... @overload def assertNotAlmostEqual( @@ -210,6 +219,15 @@ class TestCase: msg: Any = ..., delta: None = ..., ) -> None: ... + @overload + def assertNotAlmostEqual( + self, + first: _T, + second: SupportsRSub[_T, SupportsAbs[SupportsRound[object]]], + places: int | None = ..., + msg: Any = ..., + delta: None = ..., + ) -> None: ... def assertRegex(self, text: AnyStr, expected_regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ... def assertNotRegex(self, text: AnyStr, unexpected_regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ... def assertCountEqual(self, first: Iterable[Any], second: Iterable[Any], msg: Any = ...) -> None: ...