99
1010import logging
1111import re
12- from typing import Dict , List , Optional , Tuple
12+ from typing import Optional
1313
1414import usb .core
1515import usb .util
@@ -78,7 +78,7 @@ def build_bus_id(device: usb.core.Device) -> str:
7878 return f"{ device .bus } -{ device .address } "
7979
8080 @staticmethod
81- def parse_bus_id (bus_id : str ) -> Tuple [int , Tuple [int , ...]]:
81+ def parse_bus_id (bus_id : str ) -> tuple [int , tuple [int , ...]]:
8282 """Parse a bus ID string into bus number and port numbers.
8383
8484 Args:
@@ -113,9 +113,7 @@ def _load_strings(self) -> None:
113113
114114 try :
115115 if self .device .iManufacturer :
116- raw_manufacturer = usb .util .get_string (
117- self .device , self .device .iManufacturer
118- )
116+ raw_manufacturer = usb .util .get_string (self .device , self .device .iManufacturer )
119117 self ._manufacturer = self .clean_usb_string (raw_manufacturer )
120118 except (usb .core .USBError , ValueError ) as error :
121119 logger .debug ("Could not read manufacturer string: %s" , error )
@@ -137,12 +135,12 @@ def _load_strings(self) -> None:
137135 @property
138136 def vendor_id (self ) -> int :
139137 """Get the vendor ID (VID) of the device."""
140- return self .device .idVendor
138+ return int ( self .device .idVendor )
141139
142140 @property
143141 def product_id (self ) -> int :
144142 """Get the product ID (PID) of the device."""
145- return self .device .idProduct
143+ return int ( self .device .idProduct )
146144
147145 @property
148146 def manufacturer (self ) -> Optional [str ]:
@@ -170,7 +168,7 @@ def device_id(self) -> str:
170168 return f"{ self .vendor_id :04x} :{ self .product_id :04x} :{ self ._serial_number } "
171169 return f"{ self .vendor_id :04x} :{ self .product_id :04x} "
172170
173- def to_dict (self ) -> Dict [str , Optional [str ]]:
171+ def to_dict (self ) -> dict [str , Optional [str ]]:
174172 """Get basic device information as a dictionary.
175173
176174 Returns:
@@ -259,19 +257,15 @@ def claim(self) -> bool:
259257 access_denied = True
260258 logger .debug ("Access denied for interface %d" , interface_number )
261259 else :
262- logger .warning (
263- "Could not claim interface %d: %s" , interface_number , error
264- )
260+ logger .warning ("Could not claim interface %d: %s" , interface_number , error )
265261
266262 except usb .core .USBError as error :
267263 if error .errno == 13 :
268264 access_denied = True
269265 logger .warning ("Error claiming device: %s" , error )
270266
271267 if access_denied :
272- logger .error (
273- "Insufficient permissions to access USB device. Try running with sudo."
274- )
268+ logger .error ("Insufficient permissions to access USB device. Try running with sudo." )
275269 return False
276270
277271 return True
@@ -291,9 +285,7 @@ def release(self) -> None:
291285 usb .util .release_interface (self .device , interface_number )
292286 logger .debug ("Released interface %d" , interface_number )
293287 except usb .core .USBError as error :
294- logger .debug (
295- "Could not release interface %d: %s" , interface_number , error
296- )
288+ logger .debug ("Could not release interface %d: %s" , interface_number , error )
297289 except usb .core .USBError as error :
298290 logger .debug ("Could not get configuration for release: %s" , error )
299291
@@ -363,7 +355,7 @@ def __init__(self) -> None:
363355 """Initialize the USBDeviceManager."""
364356 self ._logger = logging .getLogger (__name__ )
365357
366- def list_devices (self ) -> List [USBDevice ]:
358+ def list_devices (self ) -> list [USBDevice ]:
367359 """List all available USB devices.
368360
369361 Returns:
@@ -443,7 +435,7 @@ def find_by_identity(
443435
444436 return None
445437
446- def find_by_binding (self , binding : Dict [str , str ]) -> Optional [USBDevice ]:
438+ def find_by_binding (self , binding : dict [str , str ]) -> Optional [USBDevice ]:
447439 """Find a device that matches a binding configuration.
448440
449441 The binding dictionary should contain 'vendor_id', 'product_id',
0 commit comments