More precise overloads for get/pop methods (#10501)

Fixes #10293

Co-authored-by: AlexWaygood <alex.waygood@gmail.com>
This commit is contained in:
Eugene Toder
2023-07-26 11:37:32 -04:00
committed by GitHub
parent 21e8f7b02b
commit e86c61da86
7 changed files with 38 additions and 14 deletions

View File

@@ -25,10 +25,14 @@ class ContextVar(Generic[_T]):
def get(self) -> _T: ...
if sys.version_info >= (3, 8):
@overload
def get(self, default: _D | _T) -> _D | _T: ...
def get(self, default: _T) -> _T: ...
@overload
def get(self, default: _D) -> _D | _T: ...
else:
@overload
def get(self, __default: _D | _T) -> _D | _T: ...
def get(self, __default: _T) -> _T: ...
@overload
def get(self, __default: _D) -> _D | _T: ...
def set(self, __value: _T) -> Token[_T]: ...
def reset(self, __token: Token[_T]) -> None: ...
@@ -53,7 +57,9 @@ def copy_context() -> Context: ...
class Context(Mapping[ContextVar[Any], Any]):
def __init__(self) -> None: ...
@overload
def get(self, __key: ContextVar[_T]) -> _T | None: ...
def get(self, __key: ContextVar[_T], __default: None = None) -> _T | None: ... # type: ignore[misc] # overlapping overloads
@overload
def get(self, __key: ContextVar[_T], __default: _T) -> _T: ...
@overload
def get(self, __key: ContextVar[_T], __default: _D) -> _T | _D: ...
def run(self, callable: Callable[_P, _T], *args: _P.args, **kwargs: _P.kwargs) -> _T: ...