Skip to content

Commit b57ba35

Browse files
committed
Linter and types
1 parent 732f6c5 commit b57ba35

File tree

4 files changed

+77
-82
lines changed

4 files changed

+77
-82
lines changed

scc/drivers/ds5drv.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -436,14 +436,11 @@ def __repr__(self):
436436
return "<DS5Controller %s>" % (self.get_id(),)
437437

438438
def _generate_id(self):
439-
"""
440-
ID is generated as 'ds5' or 'ds5:X' where 'X' starts as 1 and increases
441-
as controllers with same ids are connected.
442-
"""
439+
"""ID is generated as 'ds5' or 'ds5:X' where 'X' starts as 1 and increases as controllers with same ids are connected."""
443440
magic_number = 1
444441
id = "ds5"
445442
while id in self.daemon.get_active_ids():
446-
id = "ds5:%s" % (magic_number,)
443+
id = f"ds5:{magic_number}"
447444
magic_number += 1
448445
return id
449446

scc/drivers/evdevdrv.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Universal driver for gamepads managed by evdev.
1+
"""Universal driver for gamepads managed by evdev
22
33
Handles no devices by default. Instead of trying to guess which evdev device
44
is a gamepad and which user actually wants to be handled by SCC, list of enabled
@@ -397,7 +397,7 @@ def handle_new_device(self, syspath: str, *bunchofnones) -> bool:
397397
try:
398398
dev = evdev.InputDevice(eventnode)
399399
assert dev.path == eventnode
400-
config_fn = "evdev-%s.json" % (dev.name.strip().replace("/", ""),)
400+
config_fn = "evdev-{}.json".format(dev.name.strip().replace("/", ""))
401401
config_file = os.path.join(get_config_path(), "devices", config_fn)
402402
except OSError as ose:
403403
if ose.errno == 13:

scc/drivers/steamdeck.py

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""SCC - Steam Deck Driver.
1+
"""SCC - Steam Deck Driver
22
33
Based on sc_by_cable and steamdeck.c
44
@@ -66,35 +66,35 @@ class DeckInput(ctypes.Structure):
6666

6767

6868
class DeckButton(IntEnum):
69-
DOTS = 0b100000000000000000000000000000000000000000000000000
70-
RSTICKTOUCH = 0b000100000000000000000000000000000000000000000000000
71-
LSTICKTOUCH = 0b000010000000000000000000000000000000000000000000000
72-
RGRIP2 = 0b000000001000000000000000000000000000000000000000000
73-
LGRIP2 = 0b000000000100000000000000000000000000000000000000000
74-
RSTICKPRESS = 0b000000000000000000000000100000000000000000000000000
75-
LSTICKPRESS = 0b000000000000000000000000000010000000000000000000000
69+
DOTS = 0b100000000000000000000000000000000000000000000000000
70+
RSTICKTOUCH = 0b000100000000000000000000000000000000000000000000000
71+
LSTICKTOUCH = 0b000010000000000000000000000000000000000000000000000
72+
RGRIP2 = 0b000000001000000000000000000000000000000000000000000
73+
LGRIP2 = 0b000000000100000000000000000000000000000000000000000
74+
RSTICKPRESS = 0b000000000000000000000000100000000000000000000000000
75+
LSTICKPRESS = 0b000000000000000000000000000010000000000000000000000
7676
# bit 21 unused?
77-
RPADTOUCH = 0b000000000000000000000000000000100000000000000000000
78-
LPADTOUCH = 0b000000000000000000000000000000010000000000000000000
79-
RPADPRESS = 0b000000000000000000000000000000001000000000000000000
80-
LPADPRESS = 0b000000000000000000000000000000000100000000000000000
81-
RGRIP = 0b000000000000000000000000000000000010000000000000000
82-
LGRIP = 0b000000000000000000000000000000000001000000000000000
83-
START = 0b000000000000000000000000000000000000100000000000000
84-
C = 0b000000000000000000000000000000000000010000000000000
85-
BACK = 0b000000000000000000000000000000000000001000000000000
86-
DPAD_DOWN = 0b000000000000000000000000000000000000000100000000000
87-
DPAD_LEFT = 0b000000000000000000000000000000000000000010000000000
88-
DPAD_RIGHT = 0b000000000000000000000000000000000000000001000000000
89-
DPAD_UP = 0b000000000000000000000000000000000000000000100000000
90-
A = 0b000000000000000000000000000000000000000000010000000
91-
X = 0b000000000000000000000000000000000000000000001000000
92-
B = 0b000000000000000000000000000000000000000000000100000
93-
Y = 0b000000000000000000000000000000000000000000000010000
94-
LB = 0b000000000000000000000000000000000000000000000001000
95-
RB = 0b000000000000000000000000000000000000000000000000100
96-
LT = 0b000000000000000000000000000000000000000000000000010
97-
RT = 0b000000000000000000000000000000000000000000000000001
77+
RPADTOUCH = 0b000000000000000000000000000000100000000000000000000
78+
LPADTOUCH = 0b000000000000000000000000000000010000000000000000000
79+
RPADPRESS = 0b000000000000000000000000000000001000000000000000000
80+
LPADPRESS = 0b000000000000000000000000000000000100000000000000000
81+
RGRIP = 0b000000000000000000000000000000000010000000000000000
82+
LGRIP = 0b000000000000000000000000000000000001000000000000000
83+
START = 0b000000000000000000000000000000000000100000000000000
84+
C = 0b000000000000000000000000000000000000010000000000000
85+
BACK = 0b000000000000000000000000000000000000001000000000000
86+
DPAD_DOWN = 0b000000000000000000000000000000000000000100000000000
87+
DPAD_LEFT = 0b000000000000000000000000000000000000000010000000000
88+
DPAD_RIGHT = 0b000000000000000000000000000000000000000001000000000
89+
DPAD_UP = 0b000000000000000000000000000000000000000000100000000
90+
A = 0b000000000000000000000000000000000000000000010000000
91+
X = 0b000000000000000000000000000000000000000000001000000
92+
B = 0b000000000000000000000000000000000000000000000100000
93+
Y = 0b000000000000000000000000000000000000000000000010000
94+
LB = 0b000000000000000000000000000000000000000000000001000
95+
RB = 0b000000000000000000000000000000000000000000000000100
96+
LT = 0b000000000000000000000000000000000000000000000000010
97+
RT = 0b000000000000000000000000000000000000000000000000001
9898

9999

100100
DIRECTLY_TRANSLATABLE_BUTTONS = (0
@@ -111,13 +111,12 @@ def map_button(i, from_, to):
111111
return to if (i.buttons & from_) else 0
112112

113113

114-
def map_dpad(i, low, hi):
114+
def map_dpad(i, low, hi) -> int:
115115
if (i.buttons & low) != 0:
116116
return STICK_PAD_MIN
117-
elif (i.buttons & hi) != 0:
117+
if (i.buttons & hi) != 0:
118118
return STICK_PAD_MAX
119-
else:
120-
return 0
119+
return 0
121120

122121

123122
def apply_deadzone(value, deadzone):
@@ -156,20 +155,20 @@ def set_gyro_enabled(self, enabled):
156155
# Always on on deck
157156
pass
158157

159-
def get_gyro_enabled(self):
158+
def get_gyro_enabled(self) -> bool:
160159
# Always on on deck
161160
return True
162161

163-
def get_type(self):
162+
def get_type(self) -> str:
164163
return "deck"
165164

166-
def __repr__(self):
167-
return "<Deck %s>" % (self.get_id(),)
165+
def __repr__(self) -> str:
166+
return f"<Deck {self.get_id()}>"
168167

169-
def get_gui_config_file(self):
168+
def get_gui_config_file(self) -> str:
170169
return "deck.config.json"
171170

172-
def configure(self, idle_timeout=None, enable_gyros=None, led_level=None):
171+
def configure(self, idle_timeout=None, enable_gyros=None, led_level=None) -> None:
173172
FORMAT = b'>BBBB60x'
174173
# Timeout & Gyros
175174
self._driver.overwrite_control(self._ccidx, struct.pack(
@@ -183,7 +182,7 @@ def clear_mappings(self):
183182

184183
def on_serial_got(self):
185184
log.debug("Got SteamDeck with serial %s", self._serial)
186-
self._id = "deck%s" % (self._serial,)
185+
self._id = f"deck{self._serial}"
187186
self.set_input_interrupt(ENDPOINT, 64, self._on_input)
188187

189188
def _on_input(self, endpoint, data):
@@ -239,7 +238,7 @@ def turnoff(self):
239238

240239

241240
def init(daemon, config):
242-
""" Registers hotplug callback for controller dongle """
241+
"""Register hotplug callback for controller dongle"""
243242
def cb(device, handle):
244243
return Deck(device, handle, daemon)
245244

scc/drivers/usb.py

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ def __init__(self, device: USBDevice, handle: USBDeviceHandle) -> None:
3636
self._transfer_list = []
3737

3838

39-
def set_input_interrupt(self, endpoint, size, callback):
40-
"""Set up input transfer.
39+
def set_input_interrupt(self, endpoint: int, size: int, callback) -> None:
40+
"""Set up input transfer
4141
4242
callback(endpoint, data) is called repeadedly with every packed received.
4343
"""
44-
def callback_wrapper(transfer):
44+
def callback_wrapper(transfer) -> None:
4545
if (transfer.getStatus() != usb1.TRANSFER_COMPLETED or
4646
transfer.getActualLength() != size):
4747
return
@@ -98,16 +98,16 @@ def make_request(self, index, callback, data, size=64):
9898
"""
9999
self._rmsg.append((
100100
(
101-
0x21, # request_type
102-
0x09, # request
103-
0x0300, # value
104-
index, data
105-
), index, size, callback
101+
0x21, # request_type
102+
0x09, # request
103+
0x0300, # value
104+
index, data,
105+
), index, size, callback,
106106
))
107107

108108

109109
def flush(self):
110-
"""Flushes all prepared control messages to the device."""
110+
"""Flush all prepared control messages to the device."""
111111
while len(self._cmsg):
112112
msg = self._cmsg.pop()
113113
self.handle.controlWrite(*msg)
@@ -116,10 +116,10 @@ def flush(self):
116116
msg, index, size, callback = self._rmsg.pop()
117117
self.handle.controlWrite(*msg)
118118
data = self.handle.controlRead(
119-
0xA1, # request_type
120-
0x01, # request
121-
0x0300, # value
122-
index, size
119+
0xA1, # request_type
120+
0x01, # request
121+
0x0300, # value
122+
index, size,
123123
)
124124
callback(data)
125125

@@ -135,19 +135,18 @@ def force_restart(self):
135135

136136

137137
def claim(self, number):
138-
"""
139-
Helper method; Remembers list of claimed interfaces and allows to
140-
unclaim them all at once using unclaim() method or automatically when
141-
device is closed.
138+
"""Remember list of claimed interfaces and allow to unclaim them all at once using unclaim() method
139+
140+
or automatically when device is closed.
142141
"""
143142
self.handle.claimInterface(number)
144143
self._claimed.append(number)
145144

146145

147-
def claim_by(self, klass, subclass, protocol):
148-
"""
149-
Claims all interfaces with specified parameters.
150-
Returns number of claimed interfaces
146+
def claim_by(self, klass, subclass, protocol) -> int:
147+
"""Claim all interfaces with specified parameters.
148+
149+
Return number of claimed interfaces
151150
"""
152151
rv = 0
153152
for inter in self.device[0]:
@@ -197,7 +196,7 @@ def __init__(self):
197196
self._started = False
198197
self._retry_devices = []
199198
self._retry_devices_timer = 0
200-
self._ctx = None # Set by start method
199+
self._ctx = None # Set by start method
201200
self._changed = 0
202201

203202

@@ -250,8 +249,8 @@ def handle_new_device(self, syspath: str, vendor: int, product: int) -> bool | N
250249
return
251250
if self.daemon:
252251
self.daemon.add_error(
253-
"usb:%s:%s" % (tp[0], tp[1]),
254-
"Failed to open USB device: %s" % (e,)
252+
f"usb:{tp[0]}:{tp[1]}",
253+
f"Failed to open USB device: {e}",
255254
)
256255
return
257256
else:
@@ -269,8 +268,8 @@ def handle_new_device(self, syspath: str, vendor: int, product: int) -> bool | N
269268
return False
270269
if self.daemon:
271270
self.daemon.add_error(
272-
"usb:%s:%s" % (tp[0], tp[1]),
273-
"Failed to claim USB device: %s" % (e,)
271+
f"usb:{tp[0]}:{tp[1]}",
272+
f"Failed to claim USB device: {e}",
274273
)
275274
self._retry_devices.append((syspath, tp))
276275
device.close()
@@ -279,14 +278,14 @@ def handle_new_device(self, syspath: str, vendor: int, product: int) -> bool | N
279278
self._devices[device] = handled_device
280279
self._syspaths[syspath] = device
281280
log.debug("USB device added: %.4x:%.4x", *tp)
282-
self.daemon.remove_error("usb:%s:%s" % (tp[0], tp[1]))
281+
self.daemon.remove_error(f"usb:{tp[0]}:{tp[1]}")
283282
return True
284283
log.warning("Known USB device ignored: %.4x:%.4x", *tp)
285284
device.close()
286285
return False
287286

288287

289-
def handle_removed_device(self, syspath: str, vendor: int, product: int):
288+
def handle_removed_device(self, syspath: str, vendor: int, product: int) -> None:
290289
if syspath in self._syspaths:
291290
device = self._syspaths[syspath]
292291
handled_device = self._devices[device]
@@ -296,11 +295,11 @@ def handle_removed_device(self, syspath: str, vendor: int, product: int):
296295
try:
297296
device.close()
298297
except usb1.USBErrorNoDevice:
299-
# Safe to ignore, happens when device is physiucally removed
298+
# Safe to ignore, happens when device is physically removed
300299
pass
301300

302301

303-
def register_hotplug_device(self, callback, vendor_id: int, product_id: int, on_failure):
302+
def register_hotplug_device(self, callback, vendor_id: int, product_id: int, on_failure) -> None:
304303
self._known_ids[vendor_id, product_id] = callback
305304
if on_failure:
306305
self._fail_cbs[vendor_id, product_id] = on_failure
@@ -310,7 +309,7 @@ def register_hotplug_device(self, callback, vendor_id: int, product_id: int, on_
310309
log.debug("Registered USB driver for %.4x:%.4x", vendor_id, product_id)
311310

312311

313-
def unregister_hotplug_device(self, callback, vendor_id, product_id):
312+
def unregister_hotplug_device(self, callback, vendor_id: int, product_id: int) -> None:
314313
if self._known_ids.get((vendor_id, product_id)) == callback:
315314
del self._known_ids[vendor_id, product_id]
316315
if (vendor_id, product_id) in self._fail_cbs:
@@ -347,13 +346,13 @@ def init(daemon: SCCDaemon, config: dict) -> bool:
347346
daemon.add_mainloop(_usb.mainloop)
348347
return True
349348

350-
def start(daemon: SCCDaemon):
349+
def start(daemon: SCCDaemon) -> None:
351350
_usb.start()
352351

353352

354-
def register_hotplug_device(callback, vendor_id: int, product_id: int, on_failure=None):
353+
def register_hotplug_device(callback, vendor_id: int, product_id: int, on_failure=None) -> None:
355354
_usb.register_hotplug_device(callback, vendor_id, product_id, on_failure)
356355

357356

358-
def unregister_hotplug_device(callback, vendor_id: int, product_id: int):
357+
def unregister_hotplug_device(callback, vendor_id: int, product_id: int) -> None:
359358
_usb.unregister_hotplug_device(callback, vendor_id, product_id)

0 commit comments

Comments
 (0)