|
1 |
| -import datetime |
2 | 1 | import logging
|
3 | 2 | import sys
|
4 | 3 | import unittest.result
|
5 |
| -from _typeshed import Self |
| 4 | +from _typeshed import Self, SupportsDunderGE, SupportsSub |
6 | 5 | from collections.abc import Callable, Container, Iterable, Mapping, Sequence, Set as AbstractSet
|
7 | 6 | from contextlib import AbstractContextManager
|
8 | 7 | from types import TracebackType
|
9 |
| -from typing import Any, AnyStr, ClassVar, Generic, NamedTuple, NoReturn, Pattern, TypeVar, overload |
| 8 | +from typing import ( |
| 9 | + Any, |
| 10 | + AnyStr, |
| 11 | + ClassVar, |
| 12 | + Generic, |
| 13 | + NamedTuple, |
| 14 | + NoReturn, |
| 15 | + Pattern, |
| 16 | + Protocol, |
| 17 | + SupportsAbs, |
| 18 | + SupportsRound, |
| 19 | + TypeVar, |
| 20 | + overload, |
| 21 | +) |
10 | 22 | from typing_extensions import ParamSpec
|
11 | 23 | from warnings import WarningMessage
|
12 | 24 |
|
13 | 25 | if sys.version_info >= (3, 9):
|
14 | 26 | from types import GenericAlias
|
15 | 27 |
|
16 | 28 | _T = TypeVar("_T")
|
| 29 | +_S = TypeVar("_S", bound=SupportsSub[Any, Any]) |
17 | 30 | _E = TypeVar("_E", bound=BaseException)
|
18 | 31 | _FT = TypeVar("_FT", bound=Callable[..., Any])
|
19 | 32 | _P = ParamSpec("_P")
|
@@ -62,6 +75,8 @@ def skipUnless(condition: object, reason: str) -> Callable[[_FT], _FT]: ...
|
62 | 75 | class SkipTest(Exception):
|
63 | 76 | def __init__(self, reason: str) -> None: ...
|
64 | 77 |
|
| 78 | +class _SupportsAbsAndDunderGE(SupportsDunderGE, SupportsAbs[Any], Protocol): ... |
| 79 | + |
65 | 80 | class TestCase:
|
66 | 81 | failureException: type[BaseException]
|
67 | 82 | longMessage: bool
|
@@ -165,33 +180,35 @@ class TestCase:
|
165 | 180 | self, logger: str | logging.Logger | None = ..., level: int | str | None = ...
|
166 | 181 | ) -> _AssertLogsContext[None]: ...
|
167 | 182 |
|
| 183 | + @overload |
| 184 | + def assertAlmostEqual(self, first: _S, second: _S, places: None, msg: Any, delta: _SupportsAbsAndDunderGE) -> None: ... |
168 | 185 | @overload
|
169 | 186 | def assertAlmostEqual(
|
170 |
| - self, first: float, second: float, places: int | None = ..., msg: Any = ..., delta: float | None = ... |
| 187 | + self, first: _S, second: _S, places: None = ..., msg: Any = ..., *, delta: _SupportsAbsAndDunderGE |
171 | 188 | ) -> None: ...
|
172 | 189 | @overload
|
173 | 190 | def assertAlmostEqual(
|
174 | 191 | self,
|
175 |
| - first: datetime.datetime, |
176 |
| - second: datetime.datetime, |
| 192 | + first: SupportsSub[_T, SupportsAbs[SupportsRound[object]]], |
| 193 | + second: _T, |
177 | 194 | places: int | None = ...,
|
178 | 195 | msg: Any = ...,
|
179 |
| - delta: datetime.timedelta | None = ..., |
| 196 | + delta: None = ..., |
180 | 197 | ) -> None: ...
|
181 | 198 | @overload
|
182 |
| - def assertNotAlmostEqual(self, first: float, second: float, *, msg: Any = ...) -> None: ... |
| 199 | + def assertNotAlmostEqual(self, first: _S, second: _S, places: None, msg: Any, delta: _SupportsAbsAndDunderGE) -> None: ... |
183 | 200 | @overload
|
184 |
| - def assertNotAlmostEqual(self, first: float, second: float, places: int | None = ..., msg: Any = ...) -> None: ... |
185 |
| - @overload |
186 |
| - def assertNotAlmostEqual(self, first: float, second: float, *, msg: Any = ..., delta: float | None = ...) -> None: ... |
| 201 | + def assertNotAlmostEqual( |
| 202 | + self, first: _S, second: _S, places: None = ..., msg: Any = ..., *, delta: _SupportsAbsAndDunderGE |
| 203 | + ) -> None: ... |
187 | 204 | @overload
|
188 | 205 | def assertNotAlmostEqual(
|
189 | 206 | self,
|
190 |
| - first: datetime.datetime, |
191 |
| - second: datetime.datetime, |
| 207 | + first: SupportsSub[_T, SupportsAbs[SupportsRound[object]]], |
| 208 | + second: _T, |
192 | 209 | places: int | None = ...,
|
193 | 210 | msg: Any = ...,
|
194 |
| - delta: datetime.timedelta | None = ..., |
| 211 | + delta: None = ..., |
195 | 212 | ) -> None: ...
|
196 | 213 | def assertRegex(self, text: AnyStr, expected_regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ...
|
197 | 214 | def assertNotRegex(self, text: AnyStr, unexpected_regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ...
|
@@ -249,14 +266,10 @@ class TestCase:
|
249 | 266 | ) -> None: ...
|
250 | 267 | @overload
|
251 | 268 | def failUnlessRaises(self, exception: type[_E] | tuple[type[_E], ...], msg: Any = ...) -> _AssertRaisesContext[_E]: ...
|
252 |
| - def failUnlessAlmostEqual(self, first: float, second: float, places: int = ..., msg: Any = ...) -> None: ... |
253 |
| - def assertAlmostEquals( |
254 |
| - self, first: float, second: float, places: int = ..., msg: Any = ..., delta: float = ... |
255 |
| - ) -> None: ... |
256 |
| - def failIfAlmostEqual(self, first: float, second: float, places: int = ..., msg: Any = ...) -> None: ... |
257 |
| - def assertNotAlmostEquals( |
258 |
| - self, first: float, second: float, places: int = ..., msg: Any = ..., delta: float = ... |
259 |
| - ) -> None: ... |
| 269 | + failUnlessAlmostEqual = assertAlmostEqual |
| 270 | + assertAlmostEquals = assertAlmostEqual |
| 271 | + failIfAlmostEqual = assertNotAlmostEqual |
| 272 | + assertNotAlmostEquals = assertNotAlmostEqual |
260 | 273 | def assertRegexpMatches(self, text: AnyStr, regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ...
|
261 | 274 | def assertNotRegexpMatches(self, text: AnyStr, regex: AnyStr | Pattern[AnyStr], msg: Any = ...) -> None: ...
|
262 | 275 | @overload
|
|
0 commit comments