diff --git a/slic/core/acquisition/broker_client.py b/slic/core/acquisition/broker_client.py index 4c521693..6409f625 100644 --- a/slic/core/acquisition/broker_client.py +++ b/slic/core/acquisition/broker_client.py @@ -10,6 +10,7 @@ import numpy as np from slic.utils import xrange, tqdm_mod, tqdm_sleep from slic.utils import json_validate +from slic.utils.printing import printable_dict from .broker_tools import get_current_pulseid, get_endstation @@ -304,12 +305,13 @@ class BrokerConfig: self.client_name = client_name self.set(None) #TODO: sensible defaults? - def set(self, output_dir, detectors=None, channels=None, pvs=None, scan_info=None): + def set(self, output_dir, detectors=None, channels=None, pvs=None, scan_info=None, **kwargs): self.output_dir = output_dir self.detectors = detectors self.channels = channels self.pvs = pvs self.scan_info = scan_info + self.kwargs = kwargs # unknown arguments will be forwarded verbatim to the broker def to_dict(self, run_number, start_pulseid, stop_pulseid): @@ -345,6 +347,12 @@ class BrokerConfig: if self.scan_info: config["scan_info"] = self.scan_info + kwargs = self.kwargs + if kwargs: + header="the following unknown arguments are forwarded verbatim to the server" + print(printable_dict(kwargs, header=header)) + config.update(self.kwargs) + return config diff --git a/slic/core/acquisition/sfacquisition.py b/slic/core/acquisition/sfacquisition.py index 5e9ade5e..a61103f5 100644 --- a/slic/core/acquisition/sfacquisition.py +++ b/slic/core/acquisition/sfacquisition.py @@ -39,7 +39,7 @@ class SFAcquisition(BaseAcquisition): self.current_task = None - def acquire(self, filename, data_base_dir=None, detectors=None, channels=None, pvs=None, scan_info=None, n_pulses=100, n_repeat=1, is_scan_step=False, wait=True): + def acquire(self, filename, data_base_dir=None, detectors=None, channels=None, pvs=None, scan_info=None, n_pulses=100, n_repeat=1, is_scan_step=False, wait=True, **kwargs): if not is_scan_step: run_number = self.client.next_run() print(f"Advanced run number to {run_number}.") @@ -74,7 +74,7 @@ class SFAcquisition(BaseAcquisition): bschs.check() client = self.client - client.set_config(n_pulses, filename, detectors=detectors, channels=channels, pvs=pvs, scan_info=scan_info) + client.set_config(n_pulses, filename, detectors=detectors, channels=channels, pvs=pvs, scan_info=scan_info, **kwargs) paths = SwissFELPaths(self.instrument, self.pgroup)