diff --git a/aioesphomeapi/_frame_helper/noise.py b/aioesphomeapi/_frame_helper/noise.py index 6dd6f5399..73dfbbdda 100644 --- a/aioesphomeapi/_frame_helper/noise.py +++ b/aioesphomeapi/_frame_helper/noise.py @@ -256,13 +256,13 @@ def _decode_noise_psk(self) -> bytes: server_mac = self._server_mac try: psk_bytes = binascii.a2b_base64(psk) - except ValueError: + except ValueError as err: raise InvalidEncryptionKeyAPIError( f"{self._log_name}: Malformed PSK (length={len(psk)}), " "expected base64-encoded 32-byte value", server_name, server_mac, - ) + ) from err if len(psk_bytes) != 32: raise InvalidEncryptionKeyAPIError( f"{self._log_name}: Malformed PSK (length={len(psk)}), " diff --git a/aioesphomeapi/host_resolver.py b/aioesphomeapi/host_resolver.py index ffd07b644..a1a5d50cc 100644 --- a/aioesphomeapi/host_resolver.py +++ b/aioesphomeapi/host_resolver.py @@ -138,7 +138,7 @@ async def _async_resolve_host_getaddrinfo(host: str, port: int) -> list[AddrInfo ) except OSError as err: _LOGGER.debug("Failed to resolve %s via getaddrinfo: %s", host, err) - raise ResolveAPIError(f"Error resolving {host} to IP address: {err}") + raise ResolveAPIError(f"Error resolving {host} to IP address: {err}") from err _LOGGER.debug("Successfully resolved %s via getaddrinfo", host) diff --git a/bench/raw_ble_plain_text.py b/bench/raw_ble_plain_text.py index 00ecd314f..990ab6753 100644 --- a/bench/raw_ble_plain_text.py +++ b/bench/raw_ble_plain_text.py @@ -23,7 +23,7 @@ b"00002f6f72672f626c75657a2f686369302f6465" ), ) -for i in range(5): +for _ in range(5): adv.advertisements.append(fake_adv) type_ = 93 diff --git a/pyproject.toml b/pyproject.toml index abb409896..71eed7d66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ exclude = [ [tool.ruff.lint] select = [ "ASYNC", # async rules + "B", # flake8-bugbear "E", # pycodestyle "F", # pyflakes/autoflake "FLY", # flynt diff --git a/tests/benchmarks/test_bluetooth.py b/tests/benchmarks/test_bluetooth.py index 13aebb3f3..bd2e17c36 100644 --- a/tests/benchmarks/test_bluetooth.py +++ b/tests/benchmarks/test_bluetooth.py @@ -69,7 +69,7 @@ async def test_raw_ble_plain_text(benchmark: BenchmarkFixture) -> None: b"00002f6f72672f626c75657a2f686369302f6465" ), ) - for i in range(5): + for _ in range(5): adv.advertisements.append(fake_adv) type_ = 93 diff --git a/tests/test__frame_helper.py b/tests/test__frame_helper.py index 49e31510e..d16b4de40 100644 --- a/tests/test__frame_helper.py +++ b/tests/test__frame_helper.py @@ -155,7 +155,7 @@ async def test_plaintext_frame_helper_multiple_payloads_single_packet( # Make sure we correctly handle multiple payloads in a single packet mock_data_received(helper, in_bytes * 5) - for i in range(5): + for _ in range(5): pkt = packets.pop() type_, data = pkt diff --git a/tests/test_core.py b/tests/test_core.py index bc21800a5..2689c7c2e 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -7,7 +7,7 @@ def test_order_and_no_missing_numbers_in_message_type_to_proto(): """Test that MESSAGE_TYPE_TO_PROTO has no missing numbers.""" - for idx, (k, v) in enumerate(MESSAGE_TYPE_TO_PROTO.items()): + for idx, k in enumerate(MESSAGE_TYPE_TO_PROTO): assert idx + 1 == k diff --git a/tests/test_model.py b/tests/test_model.py index f023a9ce8..9a6571cd9 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -837,7 +837,7 @@ async def test_bluetooth_gatt_services_from_dict() -> None: ) ], ) - services == BluetoothGATTServicesModel.from_dict( + services = BluetoothGATTServicesModel.from_dict( { "services": [ { diff --git a/tests/test_reconnect_logic.py b/tests/test_reconnect_logic.py index 4b04dbfad..cd2803bf1 100644 --- a/tests/test_reconnect_logic.py +++ b/tests/test_reconnect_logic.py @@ -460,8 +460,8 @@ async def resolve_host_waiting_for_zeroconf(*args, **kwargs): # This simulates the resolver waiting for mDNS records try: await asyncio.wait_for(resolve_event.wait(), timeout=0.1) - except TimeoutError: - raise APIConnectionError("Resolution timed out") + except TimeoutError as err: + raise APIConnectionError("Resolution timed out") from err else: return # Resolution succeeded