1- from typing import Callable , List , Dict , Union , Any , Optional , Sequence
2-
1+ import logging
2+ from collections import abc
33from functools import partial
4+ from typing import (
5+ Any ,
6+ Callable ,
7+ Dict ,
8+ List ,
9+ Mapping ,
10+ MutableMapping ,
11+ Optional ,
12+ Sequence ,
13+ Union ,
14+ )
415
16+ from qcodes .instrument .base import InstrumentBase
517from qcodes .instrument .delegate .grouped_parameter import (
618 DelegateGroup ,
719 DelegateGroupParameter ,
8- GroupedParameter
20+ GroupedParameter ,
921)
10- from qcodes .instrument .parameter import DelegateParameter , Parameter
11- from qcodes .instrument .base import InstrumentBase
22+ from qcodes .instrument .parameter import Parameter
1223from qcodes .station import Station
1324
14- import logging
15-
1625_log = logging .getLogger (__name__ )
1726
1827
@@ -87,11 +96,11 @@ def __init__(
8796 self ,
8897 name : str ,
8998 station : Station ,
90- parameters : Union [Dict [str , List [str ]], Dict [str , str ]],
91- initial_values : Optional [Dict [str , Any ]] = None ,
99+ parameters : Union [Mapping [str , Sequence [str ]], Mapping [str , str ]],
100+ initial_values : Optional [Mapping [str , Any ]] = None ,
92101 set_initial_values_on_load : bool = False ,
93- setters : Optional [Dict [str , Dict [str , Any ]]] = None ,
94- units : Optional [Dict [str , str ]] = None ,
102+ setters : Optional [Mapping [str , MutableMapping [str , Any ]]] = None ,
103+ units : Optional [Mapping [str , str ]] = None ,
95104 metadata : Optional [Dict [Any , Any ]] = None
96105 ):
97106 super ().__init__ (name = name , metadata = metadata )
@@ -112,7 +121,7 @@ def parse_instrument_path(parent: Union[Station, InstrumentBase], path: str) ->
112121 station.my_instrument.my_param
113122
114123 Args:
115- station : Measurement station
124+ parent : Measurement station
116125 path: Relative path to parse
117126 """
118127 def _parse_path (parent : Any , elem : Sequence [str ]) -> Any :
@@ -157,34 +166,33 @@ def set_initial_values(self, dry_run: bool = False) -> None:
157166 def _create_and_add_parameters (
158167 self ,
159168 station : Station ,
160- parameters : Union [Dict [str , List [str ]], Dict [str , str ]],
161- setters : Dict [str , Dict [str , Any ]],
162- units : Dict [str , str ]
169+ parameters : Union [Mapping [str , Sequence [str ]], Mapping [str , str ]],
170+ setters : Mapping [str , MutableMapping [str , Any ]],
171+ units : Mapping [str , str ],
163172 ) -> None :
164173 """Add parameters to delegate instrument based on specified aliases,
165174 endpoints and setter methods"""
166175 for param_name , paths in parameters .items ():
167176 if isinstance (paths , str ):
168- self ._create_and_add_parameter (
169- group_name = param_name ,
170- station = station ,
171- paths = [paths ],
172- setter = setters .get (param_name ),
173- unit = units .get (param_name )
174- )
175- elif isinstance (paths , list ):
176- self ._create_and_add_parameter (
177- group_name = param_name ,
178- station = station ,
179- paths = paths ,
180- setter = setters .get (param_name ),
181- unit = units .get (param_name )
182- )
177+ path_list : Sequence [str ] = [paths ]
178+
179+ elif isinstance (paths , abc .Sequence ):
180+ path_list = paths
183181 else :
184- raise ValueError ("Parameter paths should be either a string or list of strings." )
182+ raise ValueError (
183+ "Parameter paths should be either a string or Sequence of strings."
184+ )
185+
186+ self ._create_and_add_parameter (
187+ group_name = param_name ,
188+ station = station ,
189+ paths = path_list ,
190+ setter = setters .get (param_name ),
191+ unit = units .get (param_name ),
192+ )
185193
186194 @staticmethod
187- def _parameter_names (parameters : List [Parameter ]) -> List [str ]:
195+ def _parameter_names (parameters : Sequence [Parameter ]) -> List [str ]:
188196 """Get the endpoint names"""
189197 parameter_names = [_e .name for _e in parameters ]
190198 if len (parameter_names ) != len (set (parameter_names )):
@@ -214,8 +222,8 @@ def _create_and_add_parameter(
214222 self ,
215223 group_name : str ,
216224 station : Station ,
217- paths : List [str ],
218- setter : Optional [Dict [str , Any ]] = None ,
225+ paths : Sequence [str ],
226+ setter : Optional [MutableMapping [str , Any ]] = None ,
219227 getter : Optional [Callable [..., Any ]] = None ,
220228 formatter : Optional [Callable [..., Any ]] = None ,
221229 unit : Optional [str ] = None ,
0 commit comments