11from __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
77if 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