@@ -222,7 +222,7 @@ class ParameterBase(
222222 def __init__ (
223223 self ,
224224 name : str ,
225- instrument : _InstrumentType_co = None ,
225+ instrument : _InstrumentType_co = None , # type: ignore[assignment]
226226 snapshot_get : bool = True ,
227227 metadata : Mapping [Any , Any ] | None = None ,
228228 step : float | None = None ,
@@ -696,36 +696,40 @@ def _from_raw_value_to_value(
696696 else :
697697 value = raw_value
698698
699+ # the code below is not very type safe but relies on duck typing / try except
700+ # and assumes the user does not set scale/offset unless the datatype is numeric
701+ # this should probably be rewritten but for now we ignore type errors
699702 # apply offset first (native scale)
700703
701704 if self .offset is not None and value is not None :
702705 # offset values
703706 try :
704- value = value - self .offset
707+ value = value - self .offset # type: ignore[operator,assignment]
705708 except TypeError :
706709 if isinstance (self .offset , collections .abc .Iterable ):
707710 # offset contains multiple elements, one for each value
708- value = tuple (
709- val - offset for val , offset in zip (value , self .offset )
711+ value = tuple ( # type: ignore[assignment]
712+ val - offset
713+ for val , offset in zip (value , self .offset ) # type: ignore[call-overload]
710714 )
711715 elif isinstance (value , collections .abc .Iterable ):
712716 # Use single offset for all values
713- value = tuple (val - self .offset for val in value )
717+ value = tuple (val - self .offset for val in value ) # type: ignore[assignment]
714718 else :
715719 raise
716720
717721 # scale second
718722 if self .scale is not None and value is not None :
719723 # Scale values
720724 try :
721- value = value / self .scale
725+ value = value / self .scale # type: ignore[assignment,operator]
722726 except TypeError :
723727 if isinstance (self .scale , collections .abc .Iterable ):
724728 # Scale contains multiple elements, one for each value
725- value = tuple (val / scale for val , scale in zip (value , self .scale ))
729+ value = tuple (val / scale for val , scale in zip (value , self .scale )) # type: ignore[call-overload,assignment]
726730 elif isinstance (value , collections .abc .Iterable ):
727731 # Use single scale for all values
728- value = tuple (val / self .scale for val in value )
732+ value = tuple (val / self .scale for val in value ) # type: ignore[assignment]
729733 else :
730734 raise
731735
@@ -734,11 +738,11 @@ def _from_raw_value_to_value(
734738 value = self .inverse_val_mapping [value ]
735739 else :
736740 try :
737- value = self .inverse_val_mapping [int (value )]
741+ value = self .inverse_val_mapping [int (value )] # type: ignore[call-overload]
738742 except (ValueError , KeyError ):
739743 raise KeyError (f"'{ value } ' not in val_mapping" )
740744
741- return value
745+ return value # pyright: ignore[reportReturnType]
742746
743747 def _wrap_get (
744748 self , get_function : Callable [..., ParamRawDataType ]
@@ -782,17 +786,20 @@ def set_wrapper(value: _ParameterDataTypeVar, **kwargs: Any) -> None:
782786 )
783787 self .validate (value )
784788
789+ # the code below is written in a duck typed way that assumes that
790+ # the user has correctly set step size etc. This could be rewritten
791+
785792 # In some cases intermediate sweep values must be used.
786793 # Unless `self.step` is defined, get_sweep_values will return
787794 # a list containing only `value`.
788- steps = self .get_ramp_values (value , step = self .step )
795+ steps = self .get_ramp_values (value , step = self .step ) # type: ignore[arg-type]
789796
790797 for val_step in steps :
791798 # even if the final value is valid we may be generating
792799 # steps that are not so validate them too
793- self .validate (val_step )
800+ self .validate (val_step ) # type: ignore[arg-type]
794801
795- raw_val_step = self ._from_value_to_raw_value (val_step )
802+ raw_val_step = self ._from_value_to_raw_value (val_step ) # type: ignore[arg-type]
796803
797804 # Check if delay between set operations is required
798805 t_elapsed = time .perf_counter () - self ._t_last_set
@@ -817,7 +824,7 @@ def set_wrapper(value: _ParameterDataTypeVar, **kwargs: Any) -> None:
817824
818825 self .cache ._update_with (value = val_step , raw_value = raw_val_step )
819826
820- self ._call_on_set_callback (val_step )
827+ self ._call_on_set_callback (val_step ) # type: ignore[arg-type]
821828
822829 except Exception as e :
823830 e .args = (* e .args , f"setting { self } to { value } " )
0 commit comments