diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d11ab1bfa32..dc3e65cf52f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -48,24 +48,24 @@ repos: entry: ./tools/check_changes.py pass_filenames: false - repo: https://github.com/pre-commit/pre-commit-hooks - rev: 'v4.0.1' + rev: 'v4.6.0' hooks: - id: check-merge-conflict - repo: https://github.com/asottile/yesqa - rev: v1.3.0 + rev: v1.5.0 hooks: - id: yesqa - repo: https://github.com/PyCQA/isort - rev: '5.11.5' + rev: '5.13.2' hooks: - id: isort - repo: https://github.com/psf/black - rev: '22.3.0' + rev: '24.4.0' hooks: - id: black language_version: python3 # Should be a command that runs python - repo: https://github.com/pre-commit/pre-commit-hooks - rev: 'v4.0.1' + rev: 'v4.6.0' hooks: - id: end-of-file-fixer exclude: >- @@ -97,12 +97,12 @@ repos: - id: detect-private-key exclude: ^examples/ - repo: https://github.com/asottile/pyupgrade - rev: 'v2.29.0' + rev: 'v3.15.2' hooks: - id: pyupgrade args: ['--py37-plus'] - repo: https://github.com/PyCQA/flake8 - rev: '4.0.1' + rev: '7.0.0' hooks: - id: flake8 additional_dependencies: diff --git a/aiohttp/client_reqrep.py b/aiohttp/client_reqrep.py index afe719da16e..a5c711609a8 100644 --- a/aiohttp/client_reqrep.py +++ b/aiohttp/client_reqrep.py @@ -566,7 +566,7 @@ def update_body_from_data(self, body: Any) -> None: # copy payload headers assert body.headers - for (key, value) in body.headers.items(): + for key, value in body.headers.items(): if key in self.headers: continue if key in self.skip_auto_headers: @@ -820,9 +820,9 @@ def __init__( # work after the response has finished reading the body. if session is None: # TODO: Fix session=None in tests (see ClientRequest.__init__). - self._resolve_charset: Callable[ - ["ClientResponse", bytes], str - ] = lambda *_: "utf-8" + self._resolve_charset: Callable[["ClientResponse", bytes], str] = ( + lambda *_: "utf-8" + ) else: self._resolve_charset = session._resolve_charset if loop.get_debug(): diff --git a/aiohttp/client_ws.py b/aiohttp/client_ws.py index d9c74a30f52..1ba6f78f514 100644 --- a/aiohttp/client_ws.py +++ b/aiohttp/client_ws.py @@ -90,9 +90,11 @@ def _reset_heartbeat(self) -> None: self._send_heartbeat, self._heartbeat, self._loop, - timeout_ceil_threshold=self._conn._connector._timeout_ceil_threshold - if self._conn is not None - else 5, + timeout_ceil_threshold=( + self._conn._connector._timeout_ceil_threshold + if self._conn is not None + else 5 + ), ) def _send_heartbeat(self) -> None: @@ -108,9 +110,11 @@ def _send_heartbeat(self) -> None: self._pong_not_received, self._pong_heartbeat, self._loop, - timeout_ceil_threshold=self._conn._connector._timeout_ceil_threshold - if self._conn is not None - else 5, + timeout_ceil_threshold=( + self._conn._connector._timeout_ceil_threshold + if self._conn is not None + else 5 + ), ) def _pong_not_received(self) -> None: diff --git a/aiohttp/compression_utils.py b/aiohttp/compression_utils.py index 9631d377e9a..ab4a2f1cc84 100644 --- a/aiohttp/compression_utils.py +++ b/aiohttp/compression_utils.py @@ -50,9 +50,11 @@ def __init__( max_sync_chunk_size: Optional[int] = MAX_SYNC_CHUNK_SIZE, ): super().__init__( - mode=encoding_to_mode(encoding, suppress_deflate_header) - if wbits is None - else wbits, + mode=( + encoding_to_mode(encoding, suppress_deflate_header) + if wbits is None + else wbits + ), executor=executor, max_sync_chunk_size=max_sync_chunk_size, ) diff --git a/aiohttp/connector.py b/aiohttp/connector.py index 90f7c3bb8c0..6e84aa45bb4 100644 --- a/aiohttp/connector.py +++ b/aiohttp/connector.py @@ -242,9 +242,9 @@ def __init__( self._limit = limit self._limit_per_host = limit_per_host self._acquired: Set[ResponseHandler] = set() - self._acquired_per_host: DefaultDict[ - ConnectionKey, Set[ResponseHandler] - ] = defaultdict(set) + self._acquired_per_host: DefaultDict[ConnectionKey, Set[ResponseHandler]] = ( + defaultdict(set) + ) self._keepalive_timeout = cast(float, keepalive_timeout) self._force_close = force_close diff --git a/aiohttp/helpers.py b/aiohttp/helpers.py index 284033b7a04..afaa0d7e3b8 100644 --- a/aiohttp/helpers.py +++ b/aiohttp/helpers.py @@ -818,8 +818,7 @@ def set_exception( self, exc: BaseException, exc_cause: BaseException = ..., - ) -> None: - ... # pragma: no cover + ) -> None: ... # pragma: no cover def set_exception( @@ -905,12 +904,10 @@ def __init_subclass__(cls) -> None: ) @overload # type: ignore[override] - def __getitem__(self, key: AppKey[_T]) -> _T: - ... + def __getitem__(self, key: AppKey[_T]) -> _T: ... @overload - def __getitem__(self, key: str) -> Any: - ... + def __getitem__(self, key: str) -> Any: ... def __getitem__(self, key: Union[str, AppKey[_T]]) -> Any: for mapping in self._maps: @@ -921,16 +918,13 @@ def __getitem__(self, key: Union[str, AppKey[_T]]) -> Any: raise KeyError(key) @overload # type: ignore[override] - def get(self, key: AppKey[_T], default: _S) -> Union[_T, _S]: - ... + def get(self, key: AppKey[_T], default: _S) -> Union[_T, _S]: ... @overload - def get(self, key: AppKey[_T], default: None = ...) -> Optional[_T]: - ... + def get(self, key: AppKey[_T], default: None = ...) -> Optional[_T]: ... @overload - def get(self, key: str, default: Any = ...) -> Any: - ... + def get(self, key: str, default: Any = ...) -> Any: ... def get(self, key: Union[str, AppKey[_T]], default: Any = None) -> Any: try: diff --git a/aiohttp/http_exceptions.py b/aiohttp/http_exceptions.py index 72eac3a3cac..c43ee0d9659 100644 --- a/aiohttp/http_exceptions.py +++ b/aiohttp/http_exceptions.py @@ -1,6 +1,5 @@ """Low-level http related exceptions.""" - from textwrap import indent from typing import Optional, Union diff --git a/aiohttp/tracing.py b/aiohttp/tracing.py index 62847a0bf7c..66007cbeb2c 100644 --- a/aiohttp/tracing.py +++ b/aiohttp/tracing.py @@ -19,8 +19,7 @@ def __call__( __client_session: ClientSession, __trace_config_ctx: SimpleNamespace, __params: _ParamT_contra, - ) -> Awaitable[None]: - ... + ) -> Awaitable[None]: ... __all__ = ( @@ -50,9 +49,9 @@ class TraceConfig: def __init__( self, trace_config_ctx_factory: Type[SimpleNamespace] = SimpleNamespace ) -> None: - self._on_request_start: Signal[ - _SignalCallback[TraceRequestStartParams] - ] = Signal(self) + self._on_request_start: Signal[_SignalCallback[TraceRequestStartParams]] = ( + Signal(self) + ) self._on_request_chunk_sent: Signal[ _SignalCallback[TraceRequestChunkSentParams] ] = Signal(self) @@ -89,12 +88,12 @@ def __init__( self._on_dns_resolvehost_end: Signal[ _SignalCallback[TraceDnsResolveHostEndParams] ] = Signal(self) - self._on_dns_cache_hit: Signal[ - _SignalCallback[TraceDnsCacheHitParams] - ] = Signal(self) - self._on_dns_cache_miss: Signal[ - _SignalCallback[TraceDnsCacheMissParams] - ] = Signal(self) + self._on_dns_cache_hit: Signal[_SignalCallback[TraceDnsCacheHitParams]] = ( + Signal(self) + ) + self._on_dns_cache_miss: Signal[_SignalCallback[TraceDnsCacheMissParams]] = ( + Signal(self) + ) self._on_request_headers_sent: Signal[ _SignalCallback[TraceRequestHeadersSentParams] ] = Signal(self) diff --git a/aiohttp/web_app.py b/aiohttp/web_app.py index b143cdc1db9..4d27714e3ba 100644 --- a/aiohttp/web_app.py +++ b/aiohttp/web_app.py @@ -184,12 +184,10 @@ def __eq__(self, other: object) -> bool: return self is other @overload # type: ignore[override] - def __getitem__(self, key: AppKey[_T]) -> _T: - ... + def __getitem__(self, key: AppKey[_T]) -> _T: ... @overload - def __getitem__(self, key: str) -> Any: - ... + def __getitem__(self, key: str) -> Any: ... def __getitem__(self, key: Union[str, AppKey[_T]]) -> Any: return self._state[key] @@ -203,12 +201,10 @@ def _check_frozen(self) -> None: ) @overload # type: ignore[override] - def __setitem__(self, key: AppKey[_T], value: _T) -> None: - ... + def __setitem__(self, key: AppKey[_T], value: _T) -> None: ... @overload - def __setitem__(self, key: str, value: Any) -> None: - ... + def __setitem__(self, key: str, value: Any) -> None: ... def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None: self._check_frozen() @@ -233,16 +229,13 @@ def __iter__(self) -> Iterator[Union[str, AppKey[Any]]]: return iter(self._state) @overload # type: ignore[override] - def get(self, key: AppKey[_T], default: None = ...) -> Optional[_T]: - ... + def get(self, key: AppKey[_T], default: None = ...) -> Optional[_T]: ... @overload - def get(self, key: AppKey[_T], default: _U) -> Union[_T, _U]: - ... + def get(self, key: AppKey[_T], default: _U) -> Union[_T, _U]: ... @overload - def get(self, key: str, default: Any = ...) -> Any: - ... + def get(self, key: str, default: Any = ...) -> Any: ... def get(self, key: Union[str, AppKey[_T]], default: Any = None) -> Any: return self._state.get(key, default) diff --git a/aiohttp/web_request.py b/aiohttp/web_request.py index 4bc670a798c..7d1694584ea 100644 --- a/aiohttp/web_request.py +++ b/aiohttp/web_request.py @@ -99,10 +99,10 @@ class FileField: qdtext=_QDTEXT, quoted_pair=_QUOTED_PAIR ) -_FORWARDED_PAIR: Final[ - str -] = r"({token})=({token}|{quoted_string})(:\d{{1,4}})?".format( - token=_TOKEN, quoted_string=_QUOTED_STRING +_FORWARDED_PAIR: Final[str] = ( + r"({token})=({token}|{quoted_string})(:\d{{1,4}})?".format( + token=_TOKEN, quoted_string=_QUOTED_STRING + ) ) _QUOTED_PAIR_REPLACE_RE: Final[Pattern[str]] = re.compile(r"\\([\t !-~])") diff --git a/aiohttp/web_response.py b/aiohttp/web_response.py index 07030305329..78d3fe32949 100644 --- a/aiohttp/web_response.py +++ b/aiohttp/web_response.py @@ -176,7 +176,7 @@ def enable_compression( ) -> None: """Enables response compression encoding.""" # Backwards compatibility for when force was a bool <0.17. - if type(force) == bool: + if isinstance(force, bool): force = ContentCoding.deflate if force else ContentCoding.identity warnings.warn( "Using boolean for force is deprecated #3318", DeprecationWarning @@ -674,7 +674,7 @@ def body(self, body: bytes) -> None: # copy payload headers if body.headers: - for (key, value) in body.headers.items(): + for key, value in body.headers.items(): if key not in headers: headers[key] = value diff --git a/aiohttp/web_routedef.py b/aiohttp/web_routedef.py index d79cd32a14a..93802141c56 100644 --- a/aiohttp/web_routedef.py +++ b/aiohttp/web_routedef.py @@ -162,12 +162,10 @@ def __repr__(self) -> str: return f"" @overload - def __getitem__(self, index: int) -> AbstractRouteDef: - ... + def __getitem__(self, index: int) -> AbstractRouteDef: ... @overload - def __getitem__(self, index: slice) -> List[AbstractRouteDef]: - ... + def __getitem__(self, index: slice) -> List[AbstractRouteDef]: ... def __getitem__(self, index): # type: ignore[no-untyped-def] return self._items[index] diff --git a/aiohttp/web_server.py b/aiohttp/web_server.py index 52faacb164a..3cd31c8ff10 100644 --- a/aiohttp/web_server.py +++ b/aiohttp/web_server.py @@ -1,4 +1,5 @@ """Low level HTTP server.""" + import asyncio from typing import Any, Awaitable, Callable, Dict, List, Optional # noqa diff --git a/aiohttp/web_ws.py b/aiohttp/web_ws.py index 9fe66527539..c34e30e62de 100644 --- a/aiohttp/web_ws.py +++ b/aiohttp/web_ws.py @@ -113,9 +113,11 @@ def _reset_heartbeat(self) -> None: self._send_heartbeat, self._heartbeat, self._loop, - timeout_ceil_threshold=self._req._protocol._timeout_ceil_threshold - if self._req is not None - else 5, + timeout_ceil_threshold=( + self._req._protocol._timeout_ceil_threshold + if self._req is not None + else 5 + ), ) def _send_heartbeat(self) -> None: @@ -132,9 +134,11 @@ def _send_heartbeat(self) -> None: self._pong_not_received, self._pong_heartbeat, self._loop, - timeout_ceil_threshold=self._req._protocol._timeout_ceil_threshold - if self._req is not None - else 5, + timeout_ceil_threshold=( + self._req._protocol._timeout_ceil_threshold + if self._req is not None + else 5 + ), ) def _pong_not_received(self) -> None: diff --git a/tests/test_circular_imports.py b/tests/test_circular_imports.py index 516326444c5..d513e9bde8b 100644 --- a/tests/test_circular_imports.py +++ b/tests/test_circular_imports.py @@ -8,6 +8,7 @@ * https://github.com/pytest-dev/pytest/blob/d18c75b/testing/test_meta.py * https://twitter.com/codewithanthony/status/1229445110510735361 """ + import os import pkgutil import socket @@ -30,14 +31,16 @@ def _mark_aiohttp_worker_for_skipping( importables: List[str], ) -> List[Union[str, "ParameterSet"]]: return [ - pytest.param( - importable, - marks=pytest.mark.skipif( - not hasattr(socket, "AF_UNIX"), reason="It's a UNIX-only module" - ), + ( + pytest.param( + importable, + marks=pytest.mark.skipif( + not hasattr(socket, "AF_UNIX"), reason="It's a UNIX-only module" + ), + ) + if importable == "aiohttp.worker" + else importable ) - if importable == "aiohttp.worker" - else importable for importable in importables ] diff --git a/tests/test_http_parser.py b/tests/test_http_parser.py index 6afef1a3df8..187f9d27a77 100644 --- a/tests/test_http_parser.py +++ b/tests/test_http_parser.py @@ -1475,9 +1475,7 @@ def test_parse_bad_method_for_c_parser_raises(loop, protocol): class TestParsePayload: async def test_parse_eof_payload(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out) p.feed_data(b"data") p.feed_eof() @@ -1486,9 +1484,7 @@ async def test_parse_eof_payload(self, stream) -> None: assert [(bytearray(b"data"), 4)] == list(out._buffer) async def test_parse_length_payload_eof(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=4) p.feed_data(b"da") @@ -1497,9 +1493,7 @@ async def test_parse_length_payload_eof(self, stream) -> None: p.feed_eof() async def test_parse_chunked_payload_size_error(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, chunked=True) with pytest.raises(http_exceptions.TransferEncodingError): p.feed_data(b"blah\r\n") @@ -1562,9 +1556,7 @@ async def test_parse_chunked_payload_split_end_trailers4(self, protocol) -> None assert b"asdf" == b"".join(out._buffer) async def test_http_payload_parser_length(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=2) eof, tail = p.feed_data(b"1245") assert eof @@ -1577,9 +1569,7 @@ async def test_http_payload_parser_deflate(self, stream) -> None: COMPRESSED = b"x\x9cKI,I\x04\x00\x04\x00\x01\x9b" length = len(COMPRESSED) - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=length, compression="deflate") p.feed_data(COMPRESSED) assert b"data" == b"".join(d for d, _ in out._buffer) @@ -1591,9 +1581,7 @@ async def test_http_payload_parser_deflate_no_hdrs(self, stream: Any) -> None: COMPRESSED = b"KI,I\x04\x00" length = len(COMPRESSED) - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=length, compression="deflate") p.feed_data(COMPRESSED) assert b"data" == b"".join(d for d, _ in out._buffer) @@ -1604,18 +1592,14 @@ async def test_http_payload_parser_deflate_light(self, stream) -> None: COMPRESSED = b"\x18\x95KI,I\x04\x00\x04\x00\x01\x9b" length = len(COMPRESSED) - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=length, compression="deflate") p.feed_data(COMPRESSED) assert b"data" == b"".join(d for d, _ in out._buffer) assert out.is_eof() async def test_http_payload_parser_deflate_split(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, compression="deflate") # Feeding one correct byte should be enough to choose exact # deflate decompressor @@ -1625,9 +1609,7 @@ async def test_http_payload_parser_deflate_split(self, stream) -> None: assert b"data" == b"".join(d for d, _ in out._buffer) async def test_http_payload_parser_deflate_split_err(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, compression="deflate") # Feeding one wrong byte should be enough to choose exact # deflate decompressor @@ -1637,9 +1619,7 @@ async def test_http_payload_parser_deflate_split_err(self, stream) -> None: assert b"data" == b"".join(d for d, _ in out._buffer) async def test_http_payload_parser_length_zero(self, stream) -> None: - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=0) assert p.done assert out.is_eof() @@ -1647,9 +1627,7 @@ async def test_http_payload_parser_length_zero(self, stream) -> None: @pytest.mark.skipif(brotli is None, reason="brotli is not installed") async def test_http_payload_brotli(self, stream) -> None: compressed = brotli.compress(b"brotli data") - out = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + out = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) p = HttpPayloadParser(out, length=len(compressed), compression="br") p.feed_data(compressed) assert b"brotli data" == b"".join(d for d, _ in out._buffer) @@ -1658,9 +1636,7 @@ async def test_http_payload_brotli(self, stream) -> None: class TestDeflateBuffer: async def test_feed_data(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") dbuf.decompressor = mock.Mock() @@ -1671,9 +1647,7 @@ async def test_feed_data(self, stream) -> None: assert [b"line"] == list(d for d, _ in buf._buffer) async def test_feed_data_err(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") exc = ValueError() @@ -1686,9 +1660,7 @@ async def test_feed_data_err(self, stream) -> None: dbuf.feed_data(b"xsomedata", 9) async def test_feed_eof(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") dbuf.decompressor = mock.Mock() @@ -1699,9 +1671,7 @@ async def test_feed_eof(self, stream) -> None: assert buf._eof async def test_feed_eof_err_deflate(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") dbuf.decompressor = mock.Mock() @@ -1712,9 +1682,7 @@ async def test_feed_eof_err_deflate(self, stream) -> None: dbuf.feed_eof() async def test_feed_eof_no_err_gzip(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "gzip") dbuf.decompressor = mock.Mock() @@ -1725,9 +1693,7 @@ async def test_feed_eof_no_err_gzip(self, stream) -> None: assert [b"line"] == list(d for d, _ in buf._buffer) async def test_feed_eof_no_err_brotli(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "br") dbuf.decompressor = mock.Mock() @@ -1738,9 +1704,7 @@ async def test_feed_eof_no_err_brotli(self, stream) -> None: assert [b"line"] == list(d for d, _ in buf._buffer) async def test_empty_body(self, stream) -> None: - buf = aiohttp.FlowControlDataQueue( - stream, 2**16, loop=asyncio.get_event_loop() - ) + buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") dbuf.feed_eof() diff --git a/tests/test_proxy_functional.py b/tests/test_proxy_functional.py index 099922ac77f..4dfa80d7db8 100644 --- a/tests/test_proxy_functional.py +++ b/tests/test_proxy_functional.py @@ -192,13 +192,16 @@ async def test_https_proxy_unsupported_tls_in_tls( r"$" ) - with pytest.warns(RuntimeWarning, match=expected_warning_text,), pytest.raises( + with pytest.warns( + RuntimeWarning, + match=expected_warning_text, + ), pytest.raises( ClientConnectionError, match=expected_exception_reason, ) as conn_err: await sess.get(url, proxy=secure_proxy_url, ssl=client_ssl_ctx) - assert type(conn_err.value.__cause__) == TypeError + assert isinstance(conn_err.value.__cause__, TypeError) assert match_regex(f"^{type_err!s}$", str(conn_err.value.__cause__)) await sess.close()