@@ -131,13 +131,13 @@ def add_noise(self, x):
131131
132132class Parameter :
133133 def __init__ (self , reason : str , definition = None , default = 0 , setting_reason = None , transform = None , noise = None ,
134- server_key : str = None ):
134+ server_key_override : str = None ):
135135 self .reason = reason
136136 self .definition = definition
137137 self .default_value = default
138138 self .setting_reason = setting_reason
139139 self .transform , self .noise = self ._default (transform , noise )
140- self .server_key = server_key
140+ self .server_key = server_key_override
141141
142142 self .current_value = default
143143
@@ -149,9 +149,12 @@ def _default(cls, transform, noise):
149149 noise = noise if noise else Noise ()
150150 return transform , noise
151151
152- def get_server_key (self ):
152+ def get_server_key (self ) -> str :
153153 return self .server_key
154154
155+ def set_server_key (self , server_key : str ):
156+ self .server_key = server_key
157+
155158 def get_definition (self ):
156159 return self .definition
157160
@@ -209,39 +212,36 @@ def __init__(self, server_name: str, model_name: Optional[Union[str, List[str]]]
209212 self .readbacks : Set [str ] = set ()
210213
211214 def register_parameter (self , reason : str , definition = None , default = 0 , setting_reason : str = None , transform = None ,
212- noise = None , key_override : str = None ) -> Parameter :
215+ noise = None , server_key_override : str = None ) -> Parameter :
213216 if definition is None :
214217 definition = {}
215- if key_override is not None :
216- parameter_key = key_override
217- else :
218- parameter_key = self .name + ':' + reason
219- param = Parameter (reason , definition , default , setting_reason , transform , noise , parameter_key )
218+ param = Parameter (reason , definition , default , setting_reason , transform , noise , server_key_override )
220219 self .parameters [reason ] = param
221220 return param
222221
223222 def register_measurement (self , reason : str , definition = None , transform = None , noise = None ,
224- key_override : str = None ) -> Parameter :
225- param = self .register_parameter (reason , definition , transform = transform , noise = noise , key_override = key_override )
223+ server_key_override : str = None ) -> Parameter :
224+ param = self .register_parameter (reason , definition , transform = transform , noise = noise ,
225+ server_key_override = server_key_override )
226226 self .measurements .add (reason )
227227 return param
228228
229229 def register_setting (self , reason : str , definition = None , default = 0 , transform = None , noise = None ,
230- key_override : str = None ) -> Parameter :
230+ server_key_override : str = None ) -> Parameter :
231231 param = self .register_parameter (reason , definition , default = default , transform = transform , noise = noise ,
232- key_override = key_override )
232+ server_key_override = server_key_override )
233233 self .settings .add (reason )
234234 return param
235235
236236 def register_readback (self , reason : str , setting : str = None , definition = None , transform = None , noise = None ,
237- key_override : str = None ) -> Parameter :
237+ server_key_override : str = None ) -> Parameter :
238238 rb_def = {}
239239 if definition is not None :
240240 rb_def = definition
241241 elif setting is not None and setting in self .settings :
242242 rb_def = self .get_parameter (setting ).get_definition ()
243243 param = self .register_parameter (reason , definition = rb_def , setting_reason = setting , transform = transform ,
244- noise = noise , key_override = key_override )
244+ noise = noise , server_key_override = server_key_override )
245245 self .readbacks .add (reason )
246246 return param
247247
@@ -318,8 +318,9 @@ def build_db(self) -> Dict[str, Parameter]:
318318
319319class BeamLine :
320320
321- def __init__ (self ):
321+ def __init__ (self , server_key_joiner : str = ':' ):
322322 self .devices : Dict [str , Device ] = {}
323+ self .server_key_joiner = server_key_joiner
323324
324325 self .setting_keys = set ()
325326 self .measurement_keys = set ()
@@ -329,6 +330,10 @@ def add_device(self, device: Device) -> Device:
329330 self .devices [device .name ] = device
330331 for reason , parameter in device .get_parameters ().items ():
331332 server_key = parameter .get_server_key ()
333+ if server_key is None :
334+ server_key = device .name + self .server_key_joiner + reason
335+ parameter .set_server_key (server_key )
336+
332337 if reason in device .settings :
333338 self .setting_keys .add (server_key )
334339 elif reason in device .measurements :
0 commit comments