deprecated: support use as decorator (#4449)

As opposed to just a decorator factory

Co-authored-by: hauntsaninja <>
This commit is contained in:
Shantanu
2020-08-15 21:25:13 -07:00
committed by GitHub
parent e2d335b6ef
commit 3be7918eb2
2 changed files with 18 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
from typing import Any, Callable, Optional, Type, TypeVar
from typing import Any, Callable, Optional, Type, TypeVar, overload
_T = TypeVar("_T", bound=Callable[..., Any])
_F = TypeVar("_F", bound=Callable[..., Any])
class ClassicAdapter:
reason: str
@@ -11,8 +11,11 @@ class ClassicAdapter:
self, reason: str = ..., version: str = ..., action: Optional[str] = ..., category: Type[DeprecationWarning] = ...,
) -> None: ...
def get_deprecated_msg(self, wrapped: Callable[..., Any], instance: object) -> str: ...
def __call__(self, wrapped: _T) -> Callable[[_T], _T]: ...
def __call__(self, wrapped: _F) -> Callable[[_F], _F]: ...
@overload
def deprecated(__wrapped: _F) -> _F: ...
@overload
def deprecated(
*, reason: str = ..., version: str = ..., action: Optional[str] = ..., category: Optional[Type[DeprecationWarning]] = ...,
) -> Callable[[_T], _T]: ...
reason: str = ..., *, version: str = ..., action: Optional[str] = ..., category: Optional[Type[DeprecationWarning]] = ...,
) -> Callable[[_F], _F]: ...

View File

@@ -1,9 +1,9 @@
from typing import Any, Callable, Optional, Type, TypeVar
from typing import Any, Callable, Optional, Type, TypeVar, overload
from typing_extensions import Literal
from .classic import ClassicAdapter
_T = TypeVar("_T", bound=Callable[..., Any])
_F = TypeVar("_F", bound=Callable[..., Any])
class SphinxAdapter(ClassicAdapter):
directive: Literal["versionadded", "versionchanged", "deprecated"]
@@ -19,10 +19,13 @@ class SphinxAdapter(ClassicAdapter):
action: Optional[str] = ...,
category: Type[DeprecationWarning] = ...,
) -> None: ...
def __call__(self, wrapped: _T) -> Callable[[_T], _T]: ...
def __call__(self, wrapped: _F) -> Callable[[_F], _F]: ...
def versionadded(reason: str = ..., version: str = ...) -> Callable[[_T], _T]: ...
def versionchanged(reason: str = ..., version: str = ...) -> Callable[[_T], _T]: ...
def versionadded(reason: str = ..., version: str = ...) -> Callable[[_F], _F]: ...
def versionchanged(reason: str = ..., version: str = ...) -> Callable[[_F], _F]: ...
@overload
def deprecated(__wrapped: _F) -> _F: ...
@overload
def deprecated(
*, reason: str = ..., version: str = ..., action: Optional[str] = ..., category: Optional[Type[DeprecationWarning]] = ...,
) -> Callable[[_T], _T]: ...
reason: str = ..., *, version: str = ..., action: Optional[str] = ..., category: Optional[Type[DeprecationWarning]] = ...,
) -> Callable[[_F], _F]: ...