From 46a31d71bbca5389858db5f48ffe1e6b0f2bb856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Tr=C4=99bski?= Date: Sun, 3 Mar 2019 01:29:04 +0100 Subject: [PATCH 1/2] Use correct type for add_view --- aiohttp/web_routedef.py | 5 +++-- aiohttp/web_urldispatcher.py | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/aiohttp/web_routedef.py b/aiohttp/web_routedef.py index ffa8f1b6f55..91b5ef0fee8 100644 --- a/aiohttp/web_routedef.py +++ b/aiohttp/web_routedef.py @@ -10,6 +10,7 @@ List, Optional, Sequence, + Type, Union, overload, ) @@ -40,7 +41,7 @@ def register(self, router: UrlDispatcher) -> None: _SimpleHandler = Callable[[Request], Awaitable[StreamResponse]] -_HandlerType = Union[AbstractView, _SimpleHandler] +_HandlerType = Union[Type[AbstractView], _SimpleHandler] @attr.s(frozen=True, repr=False, slots=True) @@ -120,7 +121,7 @@ def delete(path: str, handler: _HandlerType, **kwargs: Any) -> RouteDef: return route(hdrs.METH_DELETE, path, handler, **kwargs) -def view(path: str, handler: AbstractView, **kwargs: Any) -> RouteDef: +def view(path: str, handler: Type[AbstractView], **kwargs: Any) -> RouteDef: return route(hdrs.METH_ANY, path, handler, **kwargs) diff --git a/aiohttp/web_urldispatcher.py b/aiohttp/web_urldispatcher.py index 1bd4fd8dc8c..6203544d531 100644 --- a/aiohttp/web_urldispatcher.py +++ b/aiohttp/web_urldispatcher.py @@ -27,6 +27,7 @@ Set, Sized, Tuple, + Type, Union, cast, ) @@ -123,7 +124,7 @@ def raw_match(self, path: str) -> bool: class AbstractRoute(abc.ABC): def __init__(self, method: str, - handler: Union[_WebHandler, AbstractView], *, + handler: Union[_WebHandler, Type[AbstractView]], *, expect_handler: _ExpectHandler=None, resource: AbstractResource=None) -> None: @@ -296,7 +297,7 @@ def __init__(self, *, name: Optional[str]=None) -> None: self._routes = [] # type: List[ResourceRoute] def add_route(self, method: str, - handler: Union[AbstractView, _WebHandler], *, + handler: Union[Type[AbstractView], _WebHandler], *, expect_handler: Optional[_ExpectHandler]=None ) -> 'ResourceRoute': @@ -825,7 +826,7 @@ class ResourceRoute(AbstractRoute): """A route with resource""" def __init__(self, method: str, - handler: Union[_WebHandler, AbstractView], + handler: Union[_WebHandler, Type[AbstractView]], resource: AbstractResource, *, expect_handler: Optional[_ExpectHandler]=None) -> None: super().__init__(method, handler, expect_handler=expect_handler, @@ -1025,7 +1026,7 @@ def add_resource(self, path: str, *, return resource def add_route(self, method: str, path: str, - handler: Union[_WebHandler, AbstractView], + handler: Union[_WebHandler, Type[AbstractView]], *, name: Optional[str]=None, expect_handler: Optional[_ExpectHandler]=None ) -> AbstractRoute: @@ -1112,7 +1113,7 @@ def add_delete(self, path: str, handler: _WebHandler, """ return self.add_route(hdrs.METH_DELETE, path, handler, **kwargs) - def add_view(self, path: str, handler: AbstractView, + def add_view(self, path: str, handler: Type[AbstractView], **kwargs: Any) -> AbstractRoute: """ Shortcut for add_route with ANY methods for a class-based view From 86faab1d253a6c23e8af349a5e773ee5b354237b Mon Sep 17 00:00:00 2001 From: Andrew Svetlov Date: Thu, 4 Jul 2019 18:26:18 +0300 Subject: [PATCH 2/2] Create 3633.bugfix --- CHANGES/3633.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 CHANGES/3633.bugfix diff --git a/CHANGES/3633.bugfix b/CHANGES/3633.bugfix new file mode 100644 index 00000000000..3c990e82e41 --- /dev/null +++ b/CHANGES/3633.bugfix @@ -0,0 +1 @@ +Use correct type for add_view and family