11from __future__ import annotations
22
33import asyncio
4- from collections .abc import Callable , Coroutine
5- from typing import Generic , Self
4+ from collections .abc import Callable
5+ from typing import Generic
66
77from typing_extensions import TypeVar
88
99import fastcs
1010from fastcs .attribute_io_ref import AttributeIORef
1111
12- from .datatypes import ATTRIBUTE_TYPES , AttrCallback , DataType , T
12+ from .datatypes import ATTRIBUTE_TYPES , AttrSetCallback , AttrUpdateCallback , DataType , T
1313
1414# TODO rename this: typevar with default
1515AttributeIORefTD = TypeVar (
@@ -97,8 +97,8 @@ def __init__(
9797 self ._value : T = (
9898 datatype .initial_value if initial_value is None else initial_value
9999 )
100- self ._on_set_callbacks : list [AttrCallback [T ]] | None = None
101- self ._on_update_callbacks : list [AttrCallback [ T ] ] | None = None
100+ self ._on_set_callbacks : list [AttrSetCallback [T ]] | None = None
101+ self ._on_update_callbacks : list [AttrUpdateCallback ] | None = None
102102
103103 def get (self ) -> T :
104104 return self ._value
@@ -109,21 +109,19 @@ async def set(self, value: T) -> None:
109109 if self ._on_set_callbacks is not None :
110110 await asyncio .gather (* [cb (self ._value ) for cb in self ._on_set_callbacks ])
111111
112- def add_set_callback (self , callback : AttrCallback [T ]) -> None :
112+ def add_set_callback (self , callback : AttrSetCallback [T ]) -> None :
113113 if self ._on_set_callbacks is None :
114114 self ._on_set_callbacks = []
115115 self ._on_set_callbacks .append (callback )
116116
117- def add_update_callback (
118- self , callback : Callable [[Self ], Coroutine [None , None , None ]]
119- ):
117+ def add_update_callback (self , callback : AttrUpdateCallback ):
120118 if self ._on_update_callbacks is None :
121119 self ._on_update_callbacks = []
122120 self ._on_update_callbacks .append (callback )
123121
124122 async def update (self ):
125123 if self ._on_update_callbacks is not None :
126- await asyncio .gather (* [cb (self ) for cb in self ._on_update_callbacks ])
124+ await asyncio .gather (* [cb () for cb in self ._on_update_callbacks ])
127125
128126
129127class AttrW (Attribute [T , AttributeIORefTD ]):
@@ -142,8 +140,8 @@ def __init__(
142140 group ,
143141 description = description ,
144142 )
145- self ._process_callbacks : list [AttrCallback [T ]] | None = None
146- self ._write_display_callbacks : list [AttrCallback [T ]] | None = None
143+ self ._process_callbacks : list [AttrSetCallback [T ]] | None = None
144+ self ._write_display_callbacks : list [AttrSetCallback [T ]] | None = None
147145
148146 async def process (self , value : T ) -> None :
149147 await self .process_without_display_update (value )
@@ -159,15 +157,15 @@ async def update_display_without_process(self, value: T) -> None:
159157 if self ._write_display_callbacks :
160158 await asyncio .gather (* [cb (value ) for cb in self ._write_display_callbacks ])
161159
162- def add_process_callback (self , callback : AttrCallback [T ]) -> None :
160+ def add_process_callback (self , callback : AttrSetCallback [T ]) -> None :
163161 if self ._process_callbacks is None :
164162 self ._process_callbacks = []
165163 self ._process_callbacks .append (callback )
166164
167165 def has_process_callback (self ) -> bool :
168166 return bool (self ._process_callbacks )
169167
170- def add_write_display_callback (self , callback : AttrCallback [T ]) -> None :
168+ def add_write_display_callback (self , callback : AttrSetCallback [T ]) -> None :
171169 if self ._write_display_callbacks is None :
172170 self ._write_display_callbacks = []
173171 self ._write_display_callbacks .append (callback )
0 commit comments