Skip to content

Commit 3337ae9

Browse files
committed
fix some typing issues
Signed-off-by: Maximilian Deubel <maximilian.deubel@nordicsemi.no>
1 parent a7c6083 commit 3337ae9

3 files changed

Lines changed: 29 additions & 27 deletions

File tree

src/nrfcredstore/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def run(argv=sys.argv):
143143
comms = Comms(rtt=True, baudrate=args.baudrate, timeout=args.timeout)
144144
# If dev is just numbers, assume it's an rtt device
145145
elif args.dev.isdigit():
146-
comms = Comms(rtt = True, serial_number = int(args.dev), timeout=args.timeout)
146+
comms = Comms(rtt = True, serial=int(args.dev), timeout=args.timeout)
147147
# Otherwise, assume it's a serial device
148148
else:
149149
comms = Comms(port=args.dev, baudrate=args.baudrate, timeout=args.timeout)

src/nrfcredstore/command_interface.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import hashlib
1414
import coloredlogs, logging
1515
import re
16+
from typing import List, Tuple, Optional
1617

1718
logger = logging.getLogger(__name__)
1819

@@ -32,27 +33,27 @@ def write_raw(self, command: str):
3233
self.comms.write_line(command)
3334

3435
@abstractmethod
35-
def write_credential(self, sectag: int, cred_type: int, cred_text: str):
36+
def write_credential(self, sectag: int, cred_type: int, cred_text: str) -> bool:
3637
"""Write a credential string to the command interface"""
37-
return
38+
return False
3839

3940
@abstractmethod
40-
def delete_credential(self, sectag: int, cred_type: int):
41+
def delete_credential(self, sectag: int, cred_type: int) -> bool:
4142
"""Delete a credential using command interface"""
42-
return
43+
return False
4344

4445
@abstractmethod
45-
def check_credential_exists(self, sectag: int, cred_type: int, get_hash=True):
46+
def check_credential_exists(self, sectag: int, cred_type: int, get_hash=True) -> tuple[bool, Optional[str]]:
4647
"""Verify that a credential is installed. If check_hash is true, retrieve the SHA hash."""
47-
return
48+
return False, None
4849

4950
@abstractmethod
50-
def calculate_expected_hash(self, cred_text: str):
51+
def calculate_expected_hash(self, cred_text: str) -> str:
5152
"""Returns the expected digest/hash for a given credential as a string"""
52-
return
53+
return ""
5354

5455
@abstractmethod
55-
def get_csr(self, sectag: int, attributes: str):
56+
def get_csr(self, sectag: int, attributes: str) -> Optional[str]:
5657
"""Generate a private/public keypair and a corresponding Certificate Signing Request.
5758
5859
Returns:
@@ -61,17 +62,17 @@ def get_csr(self, sectag: int, attributes: str):
6162
return
6263

6364
@abstractmethod
64-
def go_offline(self):
65+
def go_offline(self) -> bool:
6566
"""Tell the device to go offline so that credentials can be modified"""
66-
return
67+
return False
6768

6869
@abstractmethod
69-
def get_imei(self):
70+
def get_imei(self) -> Optional[str]:
7071
"""Get device IMEI, if applicable"""
7172
return
7273

7374
@abstractmethod
74-
def get_mfw_version(self):
75+
def get_mfw_version(self) -> Optional[str]:
7576
"""Get modem firmware version, if applicable"""
7677
return
7778

@@ -275,7 +276,7 @@ def get_csr(self, sectag=0, attributes=""):
275276

276277
def go_offline(self):
277278
# TLS credentials shell has no concept of online/offline. Just no-op.
278-
pass
279+
return True
279280

280281
def get_imei(self):
281282
raise RuntimeError("The TLS Credentials Shell does not support IMEI extraction")

src/nrfcredstore/comms.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
# Both serial and RTT backends are supported.
1010

1111
from serial.tools import list_ports
12+
from serial.tools.list_ports_common import ListPortInfo
1213
import serial
1314
from collections import defaultdict
1415
import sys
@@ -19,7 +20,7 @@
1920
import coloredlogs, logging
2021
import re
2122
import platform
22-
from typing import Tuple, List, Union
23+
from typing import Tuple, List, Union, Optional
2324

2425
logger = logging.getLogger(__name__)
2526

@@ -103,7 +104,7 @@ def parser_add_comms_args(parser):
103104

104105

105106
# Returns a list of printable name, serial number and serial port for connected Nordic boards
106-
def get_connected_nordic_boards() -> List[Tuple[str, Union[str, int], serial.Serial]]:
107+
def get_connected_nordic_boards() -> List[Tuple[str, Union[str, int], ListPortInfo]]:
107108
if platform.system() == 'Darwin':
108109
ports = sorted(list_ports.comports(), key=lambda x: x.device)
109110
else:
@@ -129,7 +130,7 @@ def get_connected_jlinks() -> List[int]:
129130

130131

131132
# For a serial device, return the serial number
132-
def extract_serial_number_from_serial_device(dev : serial.Serial) -> Union[str, int, None]:
133+
def extract_serial_number_from_serial_device(dev: ListPortInfo) -> Union[str, int, None]:
133134
hwid = dev.hwid
134135
# Get serial number from hwid, because port.serial_number is not always available
135136
serial = [x[4:] for x in hwid.split(" ") if x.startswith("SER=")]
@@ -142,7 +143,7 @@ def extract_serial_number_from_serial_device(dev : serial.Serial) -> Union[str,
142143

143144
return serial
144145

145-
def extract_product_name_from_serial_device(dev : serial.Serial) -> str:
146+
def extract_product_name_from_serial_device(dev: ListPortInfo) -> str:
146147
for pattern, name, main_port in usb_patterns:
147148
if f"SER={pattern}" in dev.hwid:
148149
return name
@@ -151,16 +152,16 @@ def extract_product_name_from_serial_device(dev : serial.Serial) -> str:
151152
return text
152153
return ''
153154

154-
def extract_product_name_from_jlink_serial(serial : str) -> str:
155-
serial = f"{serial:012}"
155+
def extract_product_name_from_jlink_serial(serial : int) -> str:
156+
serial_str = f"{serial:012}"
156157
for pattern, name, main_port in usb_patterns:
157-
if pattern in serial:
158+
if pattern in serial_str:
158159
return name
159160
return ''
160161

161162

162163
# Find the main port for a device if it's a Nordic board
163-
def get_port_index(dev : serial.Serial) -> Union[int, None]:
164+
def get_port_index(dev: ListPortInfo) -> Optional[int]:
164165
for pattern, name, main_port in usb_patterns:
165166
if f"SER={pattern}" in dev.hwid:
166167
return main_port
@@ -195,7 +196,7 @@ def select_jlink(jlinks : List[int], list_all: bool) -> int:
195196
return answer["serial"]
196197

197198

198-
def select_device_by_serial(serial_number : Union[str, int], list_all : bool) -> Tuple[serial.Serial, Union[str, int]]:
199+
def select_device_by_serial(serial_number : Union[str, int], list_all : bool) -> Tuple[ListPortInfo, Union[str, int]]:
199200
serial_devices = [
200201
x
201202
for x in list_ports.comports()
@@ -222,7 +223,7 @@ def select_device_by_serial(serial_number : Union[str, int], list_all : bool) ->
222223

223224

224225
# Returns serial_port, serial_number of selected device
225-
def select_device(rtt : bool, serial_number : Union[None, int, str], port : Union[None, serial.Serial], list_all : bool) -> Tuple[serial.Serial, Union[str, int]]:
226+
def select_device(rtt : bool, serial_number : Optional[Union[str, int]], port : Optional[ListPortInfo], list_all : bool) -> Tuple[Optional[ListPortInfo], Optional[Union[str, int]]]:
226227
if type(serial_number) == str and serial_number.isdigit():
227228
serial_number = int(serial_number)
228229

@@ -372,7 +373,7 @@ def write_line(self, data : str):
372373
logger.debug(f"> {data}")
373374
self.write((data + self.line_ending).encode('ascii'))
374375

375-
def _readline_rtt(self) -> str:
376+
def _readline_rtt(self) -> Optional[str]:
376377
time_end = time.time() + self.timeout
377378
while time.time() < time_end:
378379
self._rtt_line_buffer += self.jlink_api.rtt_read(channel_index=0, length=4096)
@@ -387,7 +388,7 @@ def _readline_rtt(self) -> str:
387388
time.sleep(0.1)
388389
return None
389390

390-
def _readline_serial(self) -> str:
391+
def _readline_serial(self) -> Optional[str]:
391392
# Read a line from the serial port
392393
line = self.serial_api.readline()
393394
if line:

0 commit comments

Comments
 (0)