From 54aace050c1f3c618cbecd87e20d7b9c66811a62 Mon Sep 17 00:00:00 2001 From: MattHag <16444067+MattHag@users.noreply.github.com> Date: Sat, 28 Sep 2024 20:48:05 +0200 Subject: [PATCH] Replace action strings with constants Avoids spelling mistakes and helps readability. --- lib/hidapi/hidapi_impl.py | 16 +++++++++------- lib/hidapi/udev_impl.py | 16 ++++++++++------ lib/solaar/listener.py | 6 ++++-- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/hidapi/hidapi_impl.py b/lib/hidapi/hidapi_impl.py index 13d834a7..6764d519 100644 --- a/lib/hidapi/hidapi_impl.py +++ b/lib/hidapi/hidapi_impl.py @@ -44,6 +44,8 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) +ACTION_ADD = "add" +ACTION_REMOVE = "remove" # Global handle to hidapi _hidapi = None @@ -213,10 +215,10 @@ class _DeviceMonitor(Thread): current_devices = {tuple(dev.items()): dev for dev in _enumerate_devices()} for key, device in self.prev_devices.items(): if key not in current_devices: - self.device_callback("remove", device) + self.device_callback(ACTION_REMOVE, device) for key, device in current_devices.items(): if key not in self.prev_devices: - self.device_callback("add", device) + self.device_callback(ACTION_ADD, device) self.prev_devices = current_devices sleep(self.polling_delay) @@ -268,7 +270,7 @@ def _match(action, device, filterfn): return isDevice = filter_func.get("isDevice") - if action == "add": + if action == ACTION_ADD: d_info = DeviceInfo( path=device["path"].decode(), bus_id=bus_id, @@ -286,7 +288,7 @@ def _match(action, device, filterfn): ) return d_info - elif action == "remove": + elif action == ACTION_REMOVE: d_info = DeviceInfo( path=device["path"].decode(), bus_id=None, @@ -326,11 +328,11 @@ def monitor_glib(glib: GLib, callback, filterfn): def device_callback(action, device): # print(f"device_callback({action}): {device}") - if action == "add": + if action == ACTION_ADD: d_info = _match(action, device, filterfn) if d_info: glib.idle_add(callback, action, d_info) - elif action == "remove": + elif action == ACTION_REMOVE: # Removed devices will be detected by Solaar directly pass @@ -347,7 +349,7 @@ def enumerate(filterfn): :returns: a list of matching ``DeviceInfo`` tuples. """ for device in _enumerate_devices(): - d_info = _match("add", device, filterfn) + d_info = _match(ACTION_ADD, device, filterfn) if d_info: yield d_info diff --git a/lib/hidapi/udev_impl.py b/lib/hidapi/udev_impl.py index 58dc6644..c89b1f52 100644 --- a/lib/hidapi/udev_impl.py +++ b/lib/hidapi/udev_impl.py @@ -51,6 +51,9 @@ logger = logging.getLogger(__name__) fileopen = open +ACTION_ADD = "add" +ACTION_REMOVE = "remove" + # # exposed API # docstrings mostly copied from hidapi.h @@ -108,7 +111,8 @@ def _match(action, device, filter_func: typing.Callable[[int, int, int, bool, bo if not hidpp_short and not hidpp_long: return except Exception as e: # if can't process report descriptor fall back to old scheme - hidpp_short = hidpp_long = None + hidpp_short = None + hidpp_long = None logger.info( "Report Descriptor not processed for DEVICE %s BID %s VID %s PID %s: %s", device.device_node, bid, vid, pid, e ) @@ -119,7 +123,7 @@ def _match(action, device, filter_func: typing.Callable[[int, int, int, bool, bo interface_number = filtered_result.get("usb_interface") isDevice = filtered_result.get("isDevice") - if action == "add": + if action == ACTION_ADD: hid_driver_name = hid_device.properties.get("DRIVER") intf_device = device.find_parent("usb", "usb_interface") usb_interface = None if intf_device is None else intf_device.attributes.asint("bInterfaceNumber") @@ -157,7 +161,7 @@ def _match(action, device, filter_func: typing.Callable[[int, int, int, bool, bo ) return d_info - elif action == "remove": + elif action == ACTION_REMOVE: d_info = DeviceInfo( path=device.device_node, bus_id=None, @@ -236,11 +240,11 @@ def monitor_glib(glib: GLib, callback, filterfn): if event: action, device = event # print ("***", action, device) - if action == "add": + if action == ACTION_ADD: d_info = _match(action, device, filterfn) if d_info: glib.idle_add(cb, action, d_info) - elif action == "remove": + elif action == ACTION_REMOVE: # the GLib notification does _not_ match! pass return True @@ -272,7 +276,7 @@ def enumerate(filter_func: typing.Callable[[int, int, int, bool, bool], dict[str if logger.isEnabledFor(logging.DEBUG): logger.debug("Starting dbus enumeration") for dev in pyudev.Context().list_devices(subsystem="hidraw"): - dev_info = _match("add", dev, filter_func) + dev_info = _match(ACTION_ADD, dev, filter_func) if dev_info: yield dev_info diff --git a/lib/solaar/listener.py b/lib/solaar/listener.py index efac229e..753fbf16 100644 --- a/lib/solaar/listener.py +++ b/lib/solaar/listener.py @@ -41,6 +41,8 @@ from gi.repository import GLib # NOQA: E402 # isort:skip logger = logging.getLogger(__name__) +ACTION_ADD = "add" + _GHOST_DEVICE = namedtuple("_GHOST_DEVICE", ("receiver", "number", "name", "kind", "online")) _GHOST_DEVICE.__bool__ = lambda self: False _GHOST_DEVICE.__nonzero__ = _GHOST_DEVICE.__bool__ @@ -278,7 +280,7 @@ def start_all(): if logger.isEnabledFor(logging.INFO): logger.info("starting receiver listening threads") for device_info in base.receivers_and_devices(): - _process_receiver_event("add", device_info) + _process_receiver_event(ACTION_ADD, device_info) def stop_all(): @@ -368,6 +370,6 @@ def _process_receiver_event(action, device_info): if listener_thread is not None: assert isinstance(listener_thread, SolaarListener) listener_thread.stop() - if action == "add": + if action == ACTION_ADD: _process_add(device_info, 3) return False