import weakref from ui.test_test import Test_Test class Test_Leak(Test_Test): def __init__(self, components=None, recipe=None, step=None): super().__init__(components=components, recipe=recipe, step=step) self.start_b.clicked.connect(lambda checked, self=weakref.ref(self): self().components["tecna_t3"].start_test()) self.stop_b.clicked.connect(lambda checked, self=weakref.ref(self): self().components["tecna_t3"].stop_test()) def start(self, recipe=None, step=None): super().start(recipe=recipe, step=step) # setup test loop self.components["tecna_t3"].write_recipe(self.recipe, self.step) self.get_connection = self.components["tecna_t3"].out.connect(self.get) self.components["tecna_t3"].resume() def stop(self): # disable tes loop self.components["tecna_t3"].stop_test() self.components["tecna_t3"].pause() self.disconnect(self.get_connection) super().stop() def get(self, data=None, override=False): if self.done: # avoid proccessing if completed return if data is None or data[-1] is None: super().get(None, override=override) return data = data[-1] if "Running test: result" in data["tecna_t3"]: result = data["tecna_t3"]["Running test: result"] ok = type(result) is str and "passed" in result.lower() else: result = None ok = None super().get([{ "time": data.get("time", None), "results": { "ok": ok, "result": result, "data": data["tecna_t3"], }, }], override=override, fail=ok is False) def visualize(self, data=None): if data is None: data = {} d = data.get("results", {}).get("data", {}) for k, l in { "Running test: active phase": self.test_phase_l, "Real time test pressure output": self.circuit_pressure_l, "Real time differential pressure output": self.leak_l, "Real time pressure line regulator": self.regulated_pressure_l, # "Active alarm flags": self._l, "Running test: test type": self.test_type_l, "Running test: sequence index": self.sequence_index_l, }.items(): v = d.get(k, "-") if type(v) is float: v = round(v, 2) l.setText(str(v)) super().visualize(data) def save_last(self): if self.last is None: return