Skip to content

Commit

Permalink
backends/winrt: improve error messages with enums
Browse files Browse the repository at this point in the history
It has been noted that IntEnum.__str__() has changed in Python 3.11 and
now only prints integers instead of the name of the enum. This changes
all logging messages that use enums in the WinRT backend to use %r for
repr() so that we get both the name and the value.

Fixes: #1284

Also changes uses of str.format() to f-strings and remove uses of
format string from loggers while we are touching this.
  • Loading branch information
dlech committed Jul 19, 2023
1 parent 579e589 commit f651ce5
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to `Semantic Versioning <https://semver.org/spec/v2.0.0
Changed
-------
- Improved error messages when failing to get services in WinRT backend.
- Improved error messages with enum values in WinRT backend. Fixes #1284.

Fixed
-----
Expand Down
8 changes: 4 additions & 4 deletions bleak/backends/winrt/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ def handle_session_status_changed(
args: GattSessionStatusChangedEventArgs,
):
if args.error != BluetoothError.SUCCESS:
logger.error(f"Unhandled GATT error {args.error}")
logger.error("Unhandled GATT error %r", args.error)

if args.status == GattSessionStatus.ACTIVE:
for e in self._session_active_events:
Expand All @@ -324,7 +324,7 @@ def session_status_changed_event_handler(
sender: GattSession, args: GattSessionStatusChangedEventArgs
):
logger.debug(
"session_status_changed_event_handler: id: %s, error: %s, status: %s",
"session_status_changed_event_handler: id: %s, error: %r, status: %r",
sender.device_id.id,
args.error,
args.status,
Expand Down Expand Up @@ -566,7 +566,7 @@ def handler(sender, args):
raise BleakError(f"Could not pair with device: {pairing_result.status}")
else:
logger.info(
"Paired to device with protection level %d.",
"Paired to device with protection level %r.",
pairing_result.protection_level_used,
)
return True
Expand Down Expand Up @@ -887,7 +887,7 @@ async def write_gatt_descriptor(
_ensure_success(
await descriptor.obj.write_value_with_result_async(buf),
None,
f"Could not write value {data} to descriptor {handle:04X}",
f"Could not write value {data!r} to descriptor {handle:04X}",
)

logger.debug("Write Descriptor %04X : %s", handle, data)
Expand Down
16 changes: 8 additions & 8 deletions bleak/backends/winrt/scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@


def _format_bdaddr(a: int) -> str:
return ":".join("{:02X}".format(x) for x in a.to_bytes(6, byteorder="big"))
return ":".join(f"{x:02X}" for x in a.to_bytes(6, byteorder="big"))


def _format_event_args(e: BluetoothLEAdvertisementReceivedEventArgs) -> str:
Expand Down Expand Up @@ -101,7 +101,7 @@ def _received_handler(
):
"""Callback for AdvertisementWatcher.Received"""
# TODO: Cannot check for if sender == self.watcher in winrt?
logger.debug("Received {0}.".format(_format_event_args(event_args)))
logger.debug("Received %s.", _format_event_args(event_args))

# REVISIT: if scanning filters with BluetoothSignalStrengthFilter.OutOfRangeTimeout
# are in place, an RSSI of -127 means that the device has gone out of range and should
Expand Down Expand Up @@ -209,9 +209,9 @@ def _received_handler(

def _stopped_handler(self, sender, e):
logger.debug(
"{0} devices found. Watcher status: {1}.".format(
len(self.seen_devices), sender.status
)
"%s devices found. Watcher status: %r.",
len(self.seen_devices),
sender.status,
)
self._stopped_event.set()

Expand Down Expand Up @@ -247,15 +247,15 @@ async def stop(self) -> None:
await self._stopped_event.wait()
else:
logger.debug(
"skipping waiting for stop because status is %s",
self.watcher.status.name,
"skipping waiting for stop because status is %r",
self.watcher.status,
)

try:
self.watcher.remove_received(self._received_token)
self.watcher.remove_stopped(self._stopped_token)
except Exception as e:
logger.debug("Could not remove event handlers: {0}...".format(e))
logger.debug("Could not remove event handlers: %s", e)

self._stopped_token = None
self._received_token = None
Expand Down

0 comments on commit f651ce5

Please sign in to comment.