"""MeaVis classes to set or unset a sample."""
import meavis._detail.inject
import meavis.engines.loop
import meavis.tags
[docs]@meavis.tags.initialiser("meavis_switch.default")
class Initialiser:
"""MeaVis switch initialiser."""
[docs] def initialise(self, handler, channel):
"""Directly return the hanlder."""
return handler
[docs]@meavis.tags.parameter("meavis_switch.default.connect")
class Connect:
"""MeaVis switch connection mechanism considered as a parameter."""
[docs] def __init__(self, data):
"""Intialise the data to apply for the connect."""
self.data = data
[docs] def apply(self, handler, value):
"""Run a loop to set or unset a samples."""
measurement = meavis.engines.loop.LoopMeasurement(
[
meavis._detail.inject.inject_namespace(
parameter_name, meavis.parameters
)([parameter_value])
for parameter_name, parameter_value in (
handler["sets"] if value else handler["unsets"]
)
],
[],
)
measurement.trigger(None)
measurement.wait(None)