Skip to content

Commit 4745b37

Browse files
committed
Wip make delegate parameter generic
1 parent 2ef60d1 commit 4745b37

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/qcodes/parameters/delegate_parameter.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
from __future__ import annotations
22

3-
from typing import TYPE_CHECKING, Any
3+
from typing import TYPE_CHECKING, Any, Generic
44

5-
from .parameter import Parameter
5+
from .parameter import Parameter, _InstrumentType_co, _ParameterDataTypeVar
66

77
if TYPE_CHECKING:
88
from collections.abc import Sequence
99
from datetime import datetime
1010

1111
from qcodes.validators.validators import Validator
1212

13-
from .parameter_base import ParamDataType, ParamRawDataType
13+
from .parameter_base import (
14+
ParamDataType,
15+
ParamRawDataType,
16+
)
1417

1518

16-
class DelegateParameter(Parameter):
19+
class DelegateParameter(
20+
Parameter[_ParameterDataTypeVar, _InstrumentType_co],
21+
Generic[_ParameterDataTypeVar, _InstrumentType_co],
22+
):
1723
"""
1824
The :class:`.DelegateParameter` wraps a given `source` :class:`Parameter`.
1925
Setting/getting it results in a set/get of the source parameter with
@@ -52,7 +58,10 @@ class DelegateParameter(Parameter):
5258
"""
5359

5460
class _DelegateCache:
55-
def __init__(self, parameter: DelegateParameter):
61+
def __init__(
62+
self,
63+
parameter: DelegateParameter[_ParameterDataTypeVar, _InstrumentType_co],
64+
):
5665
self._parameter = parameter
5766
self._marked_valid: bool = False
5867

@@ -99,7 +108,7 @@ def invalidate(self) -> None:
99108
if self._parameter.source is not None:
100109
self._parameter.source.cache.invalidate()
101110

102-
def get(self, get_if_invalid: bool = True) -> ParamDataType:
111+
def get(self, get_if_invalid: bool = True) -> _ParameterDataTypeVar:
103112
if self._parameter.source is None:
104113
raise TypeError(
105114
"Cannot get the cache of a DelegateParameter that delegates to None"
@@ -108,7 +117,7 @@ def get(self, get_if_invalid: bool = True) -> ParamDataType:
108117
self._parameter.source.cache.get(get_if_invalid=get_if_invalid)
109118
)
110119

111-
def set(self, value: ParamDataType) -> None:
120+
def set(self, value: _ParameterDataTypeVar) -> None:
112121
if self._parameter.source is None:
113122
raise TypeError(
114123
"Cannot set the cache of a DelegateParameter that delegates to None"
@@ -128,7 +137,7 @@ def _set_from_raw_value(self, raw_value: ParamRawDataType) -> None:
128137
def _update_with(
129138
self,
130139
*,
131-
value: ParamDataType,
140+
value: _ParameterDataTypeVar,
132141
raw_value: ParamRawDataType,
133142
timestamp: datetime | None = None,
134143
) -> None:
@@ -142,7 +151,7 @@ def _update_with(
142151
"""
143152
pass
144153

145-
def __call__(self) -> ParamDataType:
154+
def __call__(self) -> _ParameterDataTypeVar:
146155
return self.get(get_if_invalid=True)
147156

148157
def __init__(

0 commit comments

Comments
 (0)