Skip to content

Commit ecb5273

Browse files
committed
Fix type checking in DPO driver
1 parent 17431f3 commit ecb5273

1 file changed

Lines changed: 33 additions & 13 deletions

File tree

src/qcodes/instrument_drivers/tektronix/DPO7200xx.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -373,10 +373,26 @@ def _get_trace_data(self) -> npt.NDArray:
373373
)
374374
else:
375375
bytes_per_sample = waveform.bytes_per_sample()
376-
data_type = {1: "b", 2: "h", 4: "f", 8: "d"}[bytes_per_sample]
377-
378-
if waveform.data_format() == "unsigned_integer":
379-
data_type = data_type.upper()
376+
data_format = waveform.data_format()
377+
378+
data_type: Literal["b", "B", "h", "H", "f", "d"]
379+
match bytes_per_sample, data_format:
380+
case 1, "signed_integer":
381+
data_type = "b"
382+
case 1, "unsigned_integer":
383+
data_type = "B"
384+
case 2, "signed_integer":
385+
data_type = "h"
386+
case 2, "unsigned_integer":
387+
data_type = "H"
388+
case 4, "floating_point":
389+
data_type = "f"
390+
case 8, "floating_point":
391+
data_type = "d"
392+
case _:
393+
raise ValueError(
394+
f"Unsupported combination of bytes_per_sample and data_format: {bytes_per_sample}, {data_format}"
395+
)
380396

381397
is_big_endian = waveform.is_big_endian()
382398

@@ -416,7 +432,9 @@ def __init__(
416432
) -> None:
417433
super().__init__(parent, name, **kwargs)
418434

419-
self.data_format: Parameter = self.add_parameter(
435+
self.data_format: Parameter[
436+
Literal["signed_integer", "unsigned_integer", "floating_point"], Self
437+
] = self.add_parameter(
420438
"data_format",
421439
get_cmd="WFMOutpre:BN_Fmt?",
422440
set_cmd="WFMOutpre:BN_Fmt {}",
@@ -428,24 +446,26 @@ def __init__(
428446
)
429447
"""Parameter data_format"""
430448

431-
self.is_big_endian: Parameter = self.add_parameter(
449+
self.is_big_endian: Parameter[bool, Self] = self.add_parameter(
432450
"is_big_endian",
433451
get_cmd="WFMOutpre:BYT_Or?",
434452
set_cmd="WFMOutpre:BYT_Or {}",
435453
val_mapping={False: "LSB", True: "MSB"},
436454
)
437455
"""Parameter is_big_endian"""
438456

439-
self.bytes_per_sample: Parameter[int, Self] = self.add_parameter(
440-
"bytes_per_sample",
441-
get_cmd="WFMOutpre:BYT_Nr?",
442-
set_cmd="WFMOutpre:BYT_Nr {}",
443-
get_parser=int,
444-
vals=Enum(1, 2, 4, 8),
457+
self.bytes_per_sample: Parameter[Literal[1, 2, 4, 8], Self] = (
458+
self.add_parameter(
459+
"bytes_per_sample",
460+
get_cmd="WFMOutpre:BYT_Nr?",
461+
set_cmd="WFMOutpre:BYT_Nr {}",
462+
get_parser=int,
463+
vals=Enum(1, 2, 4, 8),
464+
)
445465
)
446466
"""Parameter bytes_per_sample"""
447467

448-
self.is_binary: Parameter = self.add_parameter(
468+
self.is_binary: Parameter[bool, Self] = self.add_parameter(
449469
"is_binary",
450470
get_cmd="WFMOutpre:ENCdg?",
451471
set_cmd="WFMOutpre:ENCdg {}",

0 commit comments

Comments
 (0)