From 193172efba730c4bb0b4a20ee8728f13f5bc9601 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Wed, 19 Oct 2022 20:40:37 +0300 Subject: [PATCH] Mark `mock` as completed (#8919) Co-authored-by: Jelle Zijlstra --- stubs/mock/METADATA.toml | 3 +++ stubs/mock/mock/backports.pyi | 11 +++++++++++ stubs/mock/mock/mock.pyi | 8 +++++++- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 stubs/mock/mock/backports.pyi diff --git a/stubs/mock/METADATA.toml b/stubs/mock/METADATA.toml index 3188e8fc2..1ebdb5134 100644 --- a/stubs/mock/METADATA.toml +++ b/stubs/mock/METADATA.toml @@ -1 +1,4 @@ version = "4.0.*" + +[tool.stubtest] +ignore_missing_stub = false diff --git a/stubs/mock/mock/backports.pyi b/stubs/mock/mock/backports.pyi new file mode 100644 index 000000000..3984dd881 --- /dev/null +++ b/stubs/mock/mock/backports.pyi @@ -0,0 +1,11 @@ +import sys + +if sys.version_info >= (3, 8): + from asyncio import iscoroutinefunction as iscoroutinefunction + from unittest import IsolatedAsyncioTestCase as IsolatedAsyncioTestCase +else: + import unittest + + class IsolatedAsyncioTestCase(unittest.TestCase): ... + # It is a typeguard, but its signature is to complex to duplicate. + def iscoroutinefunction(obj: object) -> bool: ... diff --git a/stubs/mock/mock/mock.pyi b/stubs/mock/mock/mock.pyi index 9c072f588..d369f6ec7 100644 --- a/stubs/mock/mock/mock.pyi +++ b/stubs/mock/mock/mock.pyi @@ -1,10 +1,12 @@ from _typeshed import Self -from collections.abc import Callable, Mapping, Sequence +from collections.abc import Awaitable, Callable, Mapping, Sequence +from contextlib import AbstractContextManager from types import TracebackType from typing import Any, Generic, TypeVar, overload from typing_extensions import Literal _F = TypeVar("_F", bound=Callable[..., Any]) +_AF = TypeVar("_AF", bound=Callable[..., Awaitable[Any]]) _T = TypeVar("_T") _TT = TypeVar("_TT", bound=type[Any]) _R = TypeVar("_R") @@ -159,6 +161,10 @@ class _patch(Generic[_T]): def __call__(self, func: Callable[..., _R]) -> Callable[..., _R]: ... def decorate_class(self, klass: _TT) -> _TT: ... def decorate_callable(self, func: _F) -> _F: ... + def decorate_async_callable(self, func: _AF) -> _AF: ... + def decoration_helper( + self, patched: Any, args: tuple[Any, ...], keywargs: dict[str, Any] + ) -> AbstractContextManager[tuple[tuple[Any, ...], dict[str, Any]]]: ... def get_original(self) -> tuple[Any, bool]: ... target: Any temp_original: Any