Skip to content

Commit b271022

Browse files
author
Guen Prawiroatmodjo
authored
Merge pull request #6 from jenshnielsen/parameter_types_tweaks
Parameter types tweaks
2 parents 8f3ecc5 + b258d3b commit b271022

1 file changed

Lines changed: 42 additions & 34 deletions

File tree

qcodes/instrument/delegate/delegate_instrument.py

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
1-
from typing import Callable, List, Dict, Union, Any, Optional, Sequence
2-
1+
import logging
2+
from collections import abc
33
from 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
517
from 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
1223
from 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

Comments
 (0)