From 9348fb23b43a49d65bfb420ec9fa478ec4bb9ef9 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Fri, 17 Dec 2021 12:38:13 +0100 Subject: [PATCH] Fix mypy issues --- setup.py | 2 +- starlette/testclient.py | 81 +++++++++++++++++--------------- tests/middleware/test_session.py | 2 +- 3 files changed, 45 insertions(+), 40 deletions(-) diff --git a/setup.py b/setup.py index 12197922ab..b0820bebe9 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ import os import re -from setuptools import find_packages, setup +from setuptools import setup, find_packages def get_version(package): diff --git a/starlette/testclient.py b/starlette/testclient.py index 5df7f34798..b605c8eecb 100644 --- a/starlette/testclient.py +++ b/starlette/testclient.py @@ -234,6 +234,8 @@ def handle_request(self, request: httpx.Request) -> httpx.Response: for key, value in request.headers.items() ] + scope: Dict[str, Any] + if scheme in {"ws", "wss"}: subprotocol = request.headers.get("sec-websocket-protocol", None) if subprotocol is None: @@ -355,8 +357,8 @@ async def send(message: ASGISendEvent) -> None: response = httpx.Response(**raw_kwargs, request=request) if template is not None: - response.template = template - response.context = context + response.template = template # type: ignore[attr-defined] + response.context = context # type: ignore[attr-defined] return response @@ -408,42 +410,45 @@ def _portal_factory(self) -> Generator[anyio.abc.BlockingPortal, None, None]: with anyio.start_blocking_portal(**self.async_backend) as portal: yield portal - # def request( - # self, - # method: str, - # url: httpx._types.URLTypes, - # *, - # content: httpx._types.RequestContent = None, - # data: httpx._types.RequestData = None, - # files: httpx._types.RequestFiles = None, - # json: Any = None, - # params: httpx._types.QueryParamTypes = None, - # headers: httpx._types.HeaderTypes = None, - # cookies: httpx._types.CookieTypes = None, - # auth: Union[httpx._types.AuthTypes, httpx._client.UseClientDefault] = ..., - # follow_redirects: Union[bool, httpx._client.UseClientDefault] = ..., - # timeout: Union[ - # httpx._client.TimeoutTypes, httpx._client.UseClientDefault - # ] = ..., - # extensions: dict = None, - # ) -> httpx.Response: - # # NOTE: This is not necessary. - # url = self.base_url.join(url) - # return super().request( - # method, - # url, - # content=content, - # data=data, - # files=files, - # json=json, - # params=params, - # headers=headers, - # cookies=cookies, - # auth=auth, - # follow_redirects=follow_redirects, - # timeout=timeout, - # extensions=extensions, - # ) + def request( + self, + method: str, + url: httpx._types.URLTypes, + *, + content: httpx._types.RequestContent = None, + data: httpx._types.RequestData = None, + files: httpx._types.RequestFiles = None, + json: Any = None, + params: httpx._types.QueryParamTypes = None, + headers: httpx._types.HeaderTypes = None, + cookies: httpx._types.CookieTypes = None, + auth: Union[ + httpx._types.AuthTypes, httpx._client.UseClientDefault + ] = httpx._client.USE_CLIENT_DEFAULT, + follow_redirects: Union[ + bool, httpx._client.UseClientDefault + ] = httpx._client.USE_CLIENT_DEFAULT, + timeout: Union[ + httpx._client.TimeoutTypes, httpx._client.UseClientDefault + ] = httpx._client.USE_CLIENT_DEFAULT, + extensions: dict = None, + ) -> httpx.Response: + url = self.base_url.join(url) + return super().request( + method, + url, + content=content, + data=data, + files=files, + json=json, + params=params, + headers=headers, + cookies=cookies, + auth=auth, + follow_redirects=follow_redirects, + timeout=timeout, + extensions=extensions, + ) def websocket_connect( self, url: str, subprotocols: Sequence[str] = None, **kwargs: Any diff --git a/tests/middleware/test_session.py b/tests/middleware/test_session.py index ab20517c1e..548bae0110 100644 --- a/tests/middleware/test_session.py +++ b/tests/middleware/test_session.py @@ -112,7 +112,7 @@ def test_session_cookie_subpath(test_client_factory): second_app.add_middleware(SessionMiddleware, secret_key="example") app.mount("/second_app", second_app) client = test_client_factory(app, base_url="http://testserver/second_app") - response = client.post("/second_app/update_session", json={"some": "data"}) + response = client.post("second_app/update_session", json={"some": "data"}) cookie = response.headers["set-cookie"] cookie_path = re.search(r"; path=(\S+);", cookie).groups()[0] assert cookie_path == "/second_app"