From 1acfe456ce1a45639256d1d23029c720450853ea Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Sat, 18 Mar 2017 14:00:33 -0700 Subject: [PATCH 1/2] Fixes to unittest stubs --- stdlib/3/unittest/__init__.pyi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/3/unittest/__init__.pyi b/stdlib/3/unittest/__init__.pyi index 0755fc4c0fbf..a1583a0831a4 100644 --- a/stdlib/3/unittest/__init__.pyi +++ b/stdlib/3/unittest/__init__.pyi @@ -70,7 +70,7 @@ class TestCase: @overload def assertRaises(self, # type: ignore exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - callable: Callable[..., Any] = ..., + callable: Callable[..., Any], *args: Any, **kwargs: Any) -> None: ... @overload def assertRaises(self, @@ -79,7 +79,7 @@ class TestCase: @overload def assertRaisesRegex(self, # type: ignore exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - callable: Callable[..., Any] = ..., + callable: Callable[..., Any], *args: Any, **kwargs: Any) -> None: ... @overload def assertRaisesRegex(self, @@ -88,7 +88,7 @@ class TestCase: @overload def assertWarns(self, # type: ignore exception: Union[Type[Warning], Tuple[Type[Warning], ...]], - callable: Callable[..., Any] = ..., + callable: Callable[..., Any], *args: Any, **kwargs: Any) -> None: ... @overload def assertWarns(self, @@ -97,7 +97,7 @@ class TestCase: @overload def assertWarnsRegex(self, # type: ignore exception: Union[Type[Warning], Tuple[Type[Warning], ...]], - callable: Callable[..., Any] = ..., + callable: Callable[..., Any], *args: Any, **kwargs: Any) -> None: ... @overload def assertWarnsRegex(self, @@ -189,7 +189,7 @@ class FunctionTestCase(TestCase): description: Optional[str] = ...) -> None: ... class _AssertRaisesContext: - exception = ... # type: Exception + exception = ... # type: Any def __enter__(self) -> _AssertRaisesContext: ... def __exit__(self, exc_type: Optional[type], exc_val: Optional[Exception], exc_tb: Optional[TracebackType]) -> bool: ... From 7de4ff3a61ead51a5a1c7e722000ecf4b5c46599 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Sat, 18 Mar 2017 14:32:03 -0700 Subject: [PATCH 2/2] Make types more precise --- stdlib/3/unittest/__init__.pyi | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/stdlib/3/unittest/__init__.pyi b/stdlib/3/unittest/__init__.pyi index a1583a0831a4..7357cffb85d0 100644 --- a/stdlib/3/unittest/__init__.pyi +++ b/stdlib/3/unittest/__init__.pyi @@ -2,7 +2,7 @@ from typing import ( Any, Callable, Dict, Iterable, Iterator, List, Optional, Pattern, Sequence, - Set, TextIO, Tuple, Type, TypeVar, Union, + Set, TextIO, Tuple, Type, TypeVar, Union, Generic, overload, ) import logging @@ -13,6 +13,7 @@ from contextlib import ContextManager _T = TypeVar('_T') _FT = TypeVar('_FT', Callable[[Any], Any]) +_E = TypeVar('_E', bound=Exception) def skip(reason: str) -> Callable[[_FT], _FT]: ... @@ -74,8 +75,8 @@ class TestCase: *args: Any, **kwargs: Any) -> None: ... @overload def assertRaises(self, - exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - msg: Any = ...) -> _AssertRaisesContext: ... + exception: Union[Type[_E], Tuple[Type[_E], ...]], + msg: Any = ...) -> _AssertRaisesContext[_E]: ... @overload def assertRaisesRegex(self, # type: ignore exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], @@ -83,8 +84,8 @@ class TestCase: *args: Any, **kwargs: Any) -> None: ... @overload def assertRaisesRegex(self, - exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - msg: Any = ...) -> _AssertRaisesContext: ... + exception: Union[Type[_E], Tuple[Type[_E], ...]], + msg: Any = ...) -> _AssertRaisesContext[_E]: ... @overload def assertWarns(self, # type: ignore exception: Union[Type[Warning], Tuple[Type[Warning], ...]], @@ -159,8 +160,8 @@ class TestCase: *args: Any, **kwargs: Any) -> None: ... @overload def failUnlessRaises(self, - exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - msg: Any = ...) -> _AssertRaisesContext: ... + exception: Union[Type[_E], Tuple[Type[_E], ...]], + msg: Any = ...) -> _AssertRaisesContext[_E]: ... def failUnlessAlmostEqual(self, first: float, second: float, places: int = ..., msg: Any = ...) -> None: ... def assertAlmostEquals(self, first: float, second: float, places: int = ..., @@ -179,8 +180,8 @@ class TestCase: *args: Any, **kwargs: Any) -> None: ... @overload def assertRaisesRegexp(self, - exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]], - msg: Any = ...) -> _AssertRaisesContext: ... + exception: Union[Type[_E], Tuple[Type[_E], ...]], + msg: Any = ...) -> _AssertRaisesContext[_E]: ... class FunctionTestCase(TestCase): def __init__(self, testFunc: Callable[[], None], @@ -188,9 +189,9 @@ class FunctionTestCase(TestCase): tearDown: Optional[Callable[[], None]] = ..., description: Optional[str] = ...) -> None: ... -class _AssertRaisesContext: - exception = ... # type: Any - def __enter__(self) -> _AssertRaisesContext: ... +class _AssertRaisesContext(Generic[_E]): + exception = ... # type: _E + def __enter__(self) -> _AssertRaisesContext[_E]: ... def __exit__(self, exc_type: Optional[type], exc_val: Optional[Exception], exc_tb: Optional[TracebackType]) -> bool: ...