@@ -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