Skip to content

Commit 5221622

Browse files
committed
revert changes to _get / _set_wrapper in ParameterBase
This private api is used in zhinst qcodes https://github.com/zhinst/zhinst-qcodes/blob/main/src/zhinst/qcodes/qcodes_adaptions.py#L202
1 parent 3f8c500 commit 5221622

4 files changed

Lines changed: 17 additions & 14 deletions

File tree

src/qcodes/parameters/parameter.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ def _set_manual_parameter(
287287
exec_str=exec_str_ask,
288288
)
289289
self._gettable = True
290-
self.get = self._wrap_get()
290+
# mypy resolves the type of self.get_raw to object here.
291+
# this may be resolvable if Command above is correctly wrapped in MethodType
292+
self.get = self._wrap_get(self.get_raw) # type: ignore[arg-type]
291293

292294
if self.settable and set_cmd not in (None, False):
293295
raise TypeError(
@@ -317,7 +319,9 @@ def _set_manual_parameter(
317319
arg_count=1, cmd=set_cmd, exec_str=exec_str_write
318320
)
319321
self._settable = True
320-
self.set = self._wrap_set()
322+
# mypy resolves the type of self.get_raw to object here.
323+
# this may be resolvable if Command above is correctly wrapped in MethodType
324+
self.set = self._wrap_set(self.set_raw) # type: ignore[arg-type]
321325

322326
self._meta_attrs.extend(["label", "unit", "vals"])
323327

src/qcodes/parameters/parameter_base.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ def __init__(
258258
)
259259
self._gettable = False
260260
if implements_get_raw:
261-
self.get = self._wrap_get()
261+
self.get = self._wrap_get(self.get_raw)
262262
self._gettable = True
263263
elif hasattr(self, "get"):
264264
raise RuntimeError(
@@ -273,7 +273,7 @@ def __init__(
273273
)
274274
self._settable: bool = False
275275
if implements_set_raw:
276-
self.set = self._wrap_set()
276+
self.set = self._wrap_set(self.set_raw)
277277
self._settable = True
278278
elif hasattr(self, "set"):
279279
raise RuntimeError(
@@ -647,9 +647,10 @@ def _from_raw_value_to_value(self, raw_value: ParamRawDataType) -> ParamDataType
647647
return value
648648

649649
def _wrap_get(
650-
self,
650+
self, get_function: Callable[..., ParamRawDataType]
651651
) -> Callable[..., ParamDataType]:
652-
@wraps(self.get_raw)
652+
653+
@wraps(get_function)
653654
def get_wrapper(*args: Any, **kwargs: Any) -> ParamDataType:
654655
if not self.gettable:
655656
raise TypeError("Trying to get a parameter that is not gettable.")
@@ -659,7 +660,7 @@ def get_wrapper(*args: Any, **kwargs: Any) -> ParamDataType:
659660
)
660661
try:
661662
# There might be cases where a .get also has args/kwargs
662-
raw_value = self.get_raw(*args, **kwargs)
663+
raw_value = get_function(*args, **kwargs)
663664

664665
value = self._from_raw_value_to_value(raw_value)
665666

@@ -676,10 +677,8 @@ def get_wrapper(*args: Any, **kwargs: Any) -> ParamDataType:
676677

677678
return get_wrapper
678679

679-
def _wrap_set(
680-
self,
681-
) -> Callable[..., None]:
682-
@wraps(self.set_raw)
680+
def _wrap_set(self, set_function: Callable[..., None]) -> Callable[..., None]:
681+
@wraps(set_function)
683682
def set_wrapper(value: ParamDataType, **kwargs: Any) -> None:
684683
try:
685684
if not self.settable:
@@ -712,7 +711,7 @@ def set_wrapper(value: ParamDataType, **kwargs: Any) -> None:
712711
# Start timer to measure execution time of set_function
713712
t0 = time.perf_counter()
714713

715-
self.set_raw(raw_val_step, **kwargs)
714+
set_function(raw_val_step, **kwargs)
716715

717716
# Update last set time (used for calculating delays)
718717
self._t_last_set = time.perf_counter()

tests/parameter/test_get_latest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class LocalParameter(ParameterBase):
170170
def __init__(self, *args: Any, **kwargs: Any):
171171
super().__init__(*args, **kwargs)
172172
self.set_raw = lambda x: x # type: ignore[method-assign]
173-
self.set = self._wrap_set()
173+
self.set = self._wrap_set(self.set_raw)
174174

175175
localparameter = LocalParameter('test_param',
176176
None,

tests/parameter/test_parameter_cache.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ class LocalParameter(ParameterBase):
232232
def __init__(self, *args: Any, **kwargs: Any):
233233
super().__init__(*args, **kwargs)
234234
self.set_raw = lambda x: x # type: ignore[method-assign]
235-
self.set = self._wrap_set()
235+
self.set = self._wrap_set(self.set_raw)
236236

237237
local_parameter = LocalParameter('test_param',
238238
None,

0 commit comments

Comments
 (0)