From 15ad132393f3da521ea8338a8bd59639832f9824 Mon Sep 17 00:00:00 2001 From: Bertrand Bonnefoy-Claudet Date: Thu, 14 Jun 2018 18:04:18 +0200 Subject: [PATCH] Werkzeug stub fixes (#2229) * Fix stub for werkzeug.exceptions.Aborter and abort * `werkzeug.exceptions.abort` [1] was missing and is thus added here. It's also commonly used in Flask as `flask.abort`. * They both always raise [2], hence the `NoReturn` return type. [1]: http://werkzeug.pocoo.org/docs/0.14/exceptions/#werkzeug.exceptions.abort [2]: https://github.com/pallets/werkzeug/blob/d129d17066768238139b8f8a5d667d9a4f4d68db/werkzeug/exceptions.py#L708-L713 * Fix stub for werkzeug.wrappers.AuthorizationMixin The code [1] uses `@cached_property` [2], which is basically a Python property, and optionally returns an `Authorization` [3] object. [1]: https://github.com/pallets/werkzeug/blob/d129d17066768238139b8f8a5d667d9a4f4d68db/werkzeug/wrappers.py#L1462-L1466 [2]: https://github.com/pallets/werkzeug/blob/d129d17066768238139b8f8a5d667d9a4f4d68db/werkzeug/utils.py#L35 [3]: https://github.com/pallets/werkzeug/blob/d129d17066768238139b8f8a5d667d9a4f4d68db/werkzeug/datastructures.py#L2438 --- third_party/2and3/werkzeug/exceptions.pyi | 6 ++++-- third_party/2and3/werkzeug/wrappers.pyi | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/third_party/2and3/werkzeug/exceptions.pyi b/third_party/2and3/werkzeug/exceptions.pyi index 6289d80fa..44ffbc054 100644 --- a/third_party/2and3/werkzeug/exceptions.pyi +++ b/third_party/2and3/werkzeug/exceptions.pyi @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any, Dict, NoReturn class HTTPException(Exception): code = ... # type: Any @@ -147,4 +147,6 @@ class HTTPVersionNotSupported(HTTPException): class Aborter: mapping = ... # type: Any def __init__(self, mapping=None, extra=None): ... - def __call__(self, code, *args, **kwargs): ... + def __call__(self, code, *args, **kwargs) -> NoReturn: ... + +def abort(status: Any, *args: Any, **kwargs: Any) -> NoReturn: ... diff --git a/third_party/2and3/werkzeug/wrappers.pyi b/third_party/2and3/werkzeug/wrappers.pyi index 49920eb6c..37db383a4 100644 --- a/third_party/2and3/werkzeug/wrappers.pyi +++ b/third_party/2and3/werkzeug/wrappers.pyi @@ -6,7 +6,7 @@ from typing import ( from wsgiref.types import WSGIEnvironment, InputStream from .datastructures import ( - CombinedMultiDict, EnvironHeaders, Headers, ImmutableMultiDict, + Authorization, CombinedMultiDict, EnvironHeaders, Headers, ImmutableMultiDict, MultiDict, TypeConversionDict, HeaderSet, ) @@ -139,7 +139,8 @@ class UserAgentMixin: def user_agent(self): ... class AuthorizationMixin: - def authorization(self): ... + @property + def authorization(self) -> Optional[Authorization]: ... class StreamOnlyMixin: disable_data_descriptor = ... # type: Any