Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r1205ec50906c08cfbe681192d181c6f61c239f2c -r72c423da1d07c40699f40b5da5bee6d992d3082c --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 1205ec50906c08cfbe681192d181c6f61c239f2c) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -102,6 +102,10 @@ MSG_ID_TD_TREATMENT_SET_POINTS = 0x4F MSG_ID_DD_PISTON_PUMP_CONTROL_DATA = 0xF0 + MSG_ID_TD_SERIAL_RESPONSE = 0xF1 + MSG_ID_DD_SERIAL_RESPONSE = 0xF2 + MSG_ID_TD_TEMPERATURE_DATA = 0xF3 + MSG_ID_TD_BATTERY_DATA = 0xF4 MSG_ID_TD_TESTER_LOGIN_REQUEST = 0x8000 MSG_ID_TD_SOFTWARE_RESET_REQUEST = 0x8001 @@ -258,6 +262,9 @@ MSG_ID_RO_TEMPERATURE_OVERRIDE_REQUEST = 0xB019 MSG_ID_RO_FILTERED_FLOW_RATE_OVERRIDE_REQUEST = 0xB01A MSG_ID_RO_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST = 0xB01B + MSG_ID_RO_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01C + MSG_ID_RO_SET_OP_MODE_REQUEST = 0xB01D + MSG_ID_RO_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01E MSG_ID_TD_DEBUG_EVENT = 0xFFF1 MSG_ID_DD_DEBUG_EVENT = 0xFFF2 Index: leahi_dialin/fp/modules/levels.py =================================================================== diff -u -r7722ca79366aece30100be0dbb659dc0c1448892 -r72c423da1d07c40699f40b5da5bee6d992d3082c --- leahi_dialin/fp/modules/levels.py (.../levels.py) (revision 7722ca79366aece30100be0dbb659dc0c1448892) +++ leahi_dialin/fp/modules/levels.py (.../levels.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -91,7 +91,7 @@ payload = reset_value + interval_value message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_RO_LEVELS_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, + message_id=MsgIds.MSG_ID_RO_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, payload=payload) self.logger.debug("Sending {} ms publish interval to the FP Levels module".format(ms)) Index: leahi_dialin/td/proxies/ui_proxy.py =================================================================== diff -u -red37b7bb23aba19839c0c52610c669360914f5c1 -r72c423da1d07c40699f40b5da5bee6d992d3082c --- leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision ed37b7bb23aba19839c0c52610c669360914f5c1) +++ leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -237,7 +237,7 @@ payload = bld + dia + dur + sal + acc + bic + dzr + bpi + rbf + apw + vpw + vpa + tmp + dtp message = DenaliMessage.build_message(channel_id=DenaliChannels.ui_to_td_ch_id, - message_id=MsgIds.MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST.value, + message_id=MsgIds.MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE.value, payload=payload) self.logger.debug("Sending treatment parameters to TD.") Index: tests/unit_tests/depreciated_tests/test_dg_temperature_sensors.py =================================================================== diff -u --- tests/unit_tests/depreciated_tests/test_dg_temperature_sensors.py (revision 0) +++ tests/unit_tests/depreciated_tests/test_dg_temperature_sensors.py (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -0,0 +1,34 @@ +########################################################################### +# +# Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file test_dg_temperature_sensors.py +# +# @author (last) Dara Navaei +# @date (last) 01-Dec-2021 +# @author (original) Peter Lucia +# @date (original) 24-Aug-2020 +# +############################################################################ +import unittest +import sys +sys.path.append("../..") + + +class DGTemperatureSensors(unittest.TestCase): + + def test_temperature_sensors(self): + from dialin.dg.temperatures import DGTemperaturesNames + + i = 0 + for e in DGTemperaturesNames: + self.assertEqual(e.name, getattr(DGTemperaturesNames, e.name).name) + self.assertEqual(e.value, i) + i += 1 + + +if __name__ == '__main__': + sys.exit(unittest.main(verbosity=2).result.wasSuccessful()) Index: tests/unit_tests/depreciated_tests/test_ui_proxy.py =================================================================== diff -u --- tests/unit_tests/depreciated_tests/test_ui_proxy.py (revision 0) +++ tests/unit_tests/depreciated_tests/test_ui_proxy.py (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -0,0 +1,122 @@ +########################################################################### +# +# Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file test_ui_proxy.py +# +# @author (last) Micahel Garthwaite +# @date (last) 17-Aug-2023 +# @author (original) Peter Lucia +# @date (original) 16-Dec-2020 +# +############################################################################ +import unittest +import sys +import struct +sys.path.append("../../") +from leahi_dialin import HD +from leahi_dialin.utils import setup_virtual_can_interface +from collections import OrderedDict +from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray +from leahi_dialin.protocols.CAN import (DenaliMessage, + DenaliChannels) +from leahi_dialin.common import MsgIds, TreatmentParameters +from leahi_dialin.utils import is_interface_up, is_interface_present + + +class Test(unittest.TestCase): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if not is_interface_present("can0") or not is_interface_up("can0"): + setup_virtual_can_interface() + self.hd = HD() + self.params = OrderedDict([ + ("bld_flow", 100 ), + ("dia_flow", 100 ), + ("duration", 60 ), + ("hep_rate", 0.1 ), + ("hep_bol" , 0.2 ), + ("hep_stop", 1 ), + ("sal_bol" , 100 ), + ("acid" , 0 ), + ("bicarb" , 0 ), + ("dialyzer", 0 ), + ("hep_type", 0 ), + ("dia_temp", 35.0 ), + ("art_win" , 120 ), + ("ven_win" , 100 ), + ("ven_asy" , 20 ), + ("bp_intvl", 15 ), + ("rb_flow" , 50 ) + ]) + + def test_treatment_parameters(self): + + result = [] + for key, value in self.params.items(): + result.append(value) + + self.hd.ui.cmd_set_treatment_parameters(**self.params) + + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BLOOD_FLOW_RATE_ML_MIN.value] , self.params.get("bld_flow", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_FLOW_RATE_ML_MIN.value] , self.params.get("dia_flow", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_TREATMENT_DURATION_MIN.value] , self.params.get("duration", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR.value] , self.params.get("hep_rate", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML.value] , self.params.get("hep_bol" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_PRESTOP_MIN.value] , self.params.get("hep_stop", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_SALINE_BOLUS_VOLUME_ML.value] , self.params.get("sal_bol" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ACID_CONCENTRATE.value] , self.params.get("acid" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BICARB_CONCENTRATE.value] , self.params.get("bicarb" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYZER_TYPE.value] , self.params.get("dialyzer", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_TYPE.value] , self.params.get("hep_type", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C.value] , self.params.get("dia_temp", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW.value] , self.params.get("art_win" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW.value] , self.params.get("ven_win" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC.value] , self.params.get("ven_asy" , None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BLOOD_PRESSURE_MEAS_INTERVAL_MIN.value] , self.params.get("bp_intvl", None)) + self.assertEqual(self.hd.ui.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN.value] , self.params.get("rb_flow" , None)) + + + def test_treatment_parameters_settings_normal(self): + test_timestamp = 0.0 + payload = integer_to_bytearray(self.params.get("bld_flow", None)) + payload += integer_to_bytearray(self.params.get("dia_flow", None)) + payload += integer_to_bytearray(self.params.get("duration", None)) + payload += float_to_bytearray(self.params.get("hep_rate", None)) + payload += float_to_bytearray(self.params.get("hep_bol", None)) + payload += integer_to_bytearray(self.params.get("hep_stop", None)) + payload += integer_to_bytearray(self.params.get("sal_bol", None)) + payload += integer_to_bytearray(self.params.get("acid", None)) + payload += integer_to_bytearray(self.params.get("bicarb", None)) + payload += integer_to_bytearray(self.params.get("dialyzer", None)) + payload += integer_to_bytearray(self.params.get("hep_type", None)) + payload += float_to_bytearray(self.params.get("dia_temp", None)) + payload += integer_to_bytearray(self.params.get("art_win", None)) + payload += integer_to_bytearray(self.params.get("ven_win", None)) + payload += integer_to_bytearray(self.params.get("ven_asy", None)) + payload += integer_to_bytearray(self.params.get("bp_intvl", None)) + payload += integer_to_bytearray(self.params.get("rb_flow", None)) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.ui_to_hd_ch_id, + message_id=MsgIds.MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST.value, + payload=payload) + + self.assertIsNone(self.hd.ui._handler_treatment_param_settings(message, test_timestamp)) + + def test_treatment_parameters_settings_wrong_type(self): + test_timestamp = 0.0 + payload = bytearray() + + message = DenaliMessage.build_message(channel_id=DenaliChannels.ui_to_hd_ch_id, + message_id=MsgIds.MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST.value, + payload=payload) + + self.assertRaises(struct.error, self.hd.ui._handler_treatment_param_settings, message, test_timestamp) + + +if __name__ == '__main__': + sys.exit(unittest.main(verbosity=2).result.wasSuccessful()) Index: tests/unit_tests/test_constructors.py =================================================================== diff -u -rb93016ee67204223658152cb2952e8ab16af1b94 -r72c423da1d07c40699f40b5da5bee6d992d3082c --- tests/unit_tests/test_constructors.py (.../test_constructors.py) (revision b93016ee67204223658152cb2952e8ab16af1b94) +++ tests/unit_tests/test_constructors.py (.../test_constructors.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -16,22 +16,19 @@ import unittest import sys sys.path.append("../../") -from dialin import HDSimulator, DGSimulator, HD, DG +from leahi_dialin import TD, DD, FP class Test(unittest.TestCase): - def test_hd_simulator(self): - HDSimulator() + def test_td(self): + TD() - def test_dg_simulator(self): - DGSimulator() + def test_dd(self): + DD() - def test_hd(self): - HD() + def test_fp(self): + FP() - def test_dg(self): - DG() - if __name__ == '__main__': sys.exit(unittest.main(verbosity=2).result.wasSuccessful()) Fisheye: Tag 72c423da1d07c40699f40b5da5bee6d992d3082c refers to a dead (removed) revision in file `tests/unit_tests/test_dg_temperature_sensors.py'. Fisheye: No comparison available. Pass `N' to diff? Index: tests/unit_tests/test_enums.py =================================================================== diff -u -rb93016ee67204223658152cb2952e8ab16af1b94 -r72c423da1d07c40699f40b5da5bee6d992d3082c --- tests/unit_tests/test_enums.py (.../test_enums.py) (revision b93016ee67204223658152cb2952e8ab16af1b94) +++ tests/unit_tests/test_enums.py (.../test_enums.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -22,15 +22,15 @@ def test_msg_defs(self): try: - from dialin.common.msg_defs import MsgIds - from dialin.common.msg_defs import RequestRejectReasons + from leahi_dialin.common.msg_defs import MsgIds + from leahi_dialin.common.msg_defs import RequestRejectReasons except ValueError as e: self.fail("Could not import msg_defs: {0}".format(e)) def test_alarms(self): try: - from dialin.common import AlarmList - from dialin.common import AlarmPriorities + from leahi_dialin.common import AlarmList + from leahi_dialin.common import AlarmPriorities except ValueError as e: self.fail("Could not import alarm_defs: {0}".format(e)) Index: tests/unit_tests/test_imports.py =================================================================== diff -u -rb93016ee67204223658152cb2952e8ab16af1b94 -r72c423da1d07c40699f40b5da5bee6d992d3082c --- tests/unit_tests/test_imports.py (.../test_imports.py) (revision b93016ee67204223658152cb2952e8ab16af1b94) +++ tests/unit_tests/test_imports.py (.../test_imports.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -20,85 +20,119 @@ class Test(unittest.TestCase): - def test_hd_imports(self): - from dialin.hd.alarms import HDAlarms - from dialin.hd.blood_flow import HDBloodFlow - from dialin.hd.buttons import HDButtons - from dialin.hd.constants import RESET, NO_RESET - from dialin.hd.dialysate_inlet_flow import HDDialysateInletFlow - from dialin.hd.dialysate_outlet_flow import HDDialysateOutletFlow - from dialin.hd.hemodialysis_device import HD - from dialin.hd.pressure_occlusion import HDPressureOcclusion - from dialin.hd.rtc import HDRTC - from dialin.hd.treatment import HDTreatment - from dialin.hd.ui_proxy import HDUIProxy - from dialin.hd.watchdog import HDWatchdog + def test_td_imports(self): - def test_dg_imports(self): + from leahi_dialin.td import TD + from leahi_dialin.td.modules.air_pump import TDAirPump + from leahi_dialin.td.modules.air_trap import TDAirTrap + from leahi_dialin.td.modules.alarms import TDAlarms + from leahi_dialin.td.modules.blood_flow import TDBloodFlow + from leahi_dialin.td.modules.bubble_detector import TDBubbleDectector + from leahi_dialin.td.modules.ejector import TDEjector + from leahi_dialin.td.modules.pressure_sensors import TDPressureSensors + from leahi_dialin.td.modules.switches import TDSwitches + from leahi_dialin.td.modules.treatment import TDTreatment + from leahi_dialin.td.modules.valves import TDValves + from leahi_dialin.td.modules.voltages import TDVoltages - from dialin.dg.dialysate_generator import DG - from dialin.dg.drain_pump import DGDrainPump - from dialin.dg.hd_proxy import DGHDProxy - from dialin.dg.load_cells import DGLoadCells - from dialin.dg.pressures import DGPressures - from dialin.dg.reservoirs import DGReservoirs + from leahi_dialin.td.proxies.dd_proxy import DDProxy + def test_dd_imports(self): + from leahi_dialin.dd.dialysate_delivery import DD + from leahi_dialin.dd.modules.balancing_chamber import DDBalancingChamber + from leahi_dialin.dd.modules.concentrate_pump import DDConcentratePumps + from leahi_dialin.dd.modules.conductivity_sensors import DDConductivitySensors + from leahi_dialin.dd.modules.dialysate_pump import DDDialysatePumps + from leahi_dialin.dd.modules.gen_dialysate import DDGenDialysate + from leahi_dialin.dd.modules.heaters import DDHeaters + from leahi_dialin.dd.modules.levels import DDLevels + from leahi_dialin.dd.modules.piston_pump import DDPistonPumps + from leahi_dialin.dd.modules.post_gen_dialysate import DDPostGenDialysate + from leahi_dialin.dd.modules.pre_gen_dialysate import DDPreGenDialysate + from leahi_dialin.dd.modules.pressure_sensors import DDPressureSensors + from leahi_dialin.dd.modules.temperature_sensors import DDTemperatureSensors + from leahi_dialin.dd.modules.valves import DDValves + + def test_fp_imports(self): + + from leahi_dialin.fp.filtration_purification import FP + from leahi_dialin.fp.modules.conductivity_sensors import FPConductivitySensors + from leahi_dialin.fp.modules.flow_sensors import FPFlowSensors + from leahi_dialin.fp.modules.levels import FPLevels + from leahi_dialin.fp.modules.pressure_sensors import FPPressureSensors + from leahi_dialin.fp.modules.temperatures import FPTemperatureSensors + from leahi_dialin.fp.modules.valves import FPValves + from leahi_dialin.fp.modules.water_pumps import FPPumps + + def test_protocols_imports(self): - from dialin.protocols.CAN import (DenaliCanMessenger, + from leahi_dialin.protocols.CAN import (DenaliCanMessenger, DenaliMessage, DenaliChannels, LongDenaliMessageBuilder) def test_utils_imports(self): - from dialin.utils.conversions import (integer_to_bytearray, + from leahi_dialin.utils.conversions import (integer_to_bytearray, float_to_bytearray) def test_api_version(self): - import dialin - print(dialin.__version__) + import leahi_dialin + print(leahi_dialin.__version__) def test_package_imports(self): - from dialin import HD, HDSimulator, DG + from leahi_dialin import TD, DD, FP - from dialin.hd import HD - from dialin.hd import HDAlarms - from dialin.hd import HDBloodFlow - from dialin.hd import HDButtons - from dialin.hd import RESET, NO_RESET, BUTTON_PRESSED, BUTTON_RELEASED - from dialin.hd import HDDialysateInletFlow - from dialin.hd import HDDialysateOutletFlow - from dialin.hd import HDPressureOcclusion - from dialin.hd import HDRTC - from dialin.hd import HDTreatment - from dialin.hd import HDUIProxy - from dialin.hd import HDWatchdog + from leahi_dialin.td import TD + from leahi_dialin.td.modules.air_pump import TDAirPump + from leahi_dialin.td.modules.air_trap import TDAirTrap + from leahi_dialin.td.modules.alarms import TDAlarms + from leahi_dialin.td.modules.blood_flow import TDBloodFlow + from leahi_dialin.td.modules.bubble_detector import TDBubbleDectector + from leahi_dialin.td.modules.ejector import TDEjector + from leahi_dialin.td.modules.pressure_sensors import TDPressureSensors + from leahi_dialin.td.modules.switches import TDSwitches + from leahi_dialin.td.modules.treatment import TDTreatment + from leahi_dialin.td.modules.valves import TDValves + from leahi_dialin.td.modules.voltages import TDVoltages - from dialin.dg import DG - from dialin.dg import RESET, NO_RESET - from dialin.dg import DGDrainPump - from dialin.dg import DGHDProxy - from dialin.dg import Heaters - from dialin.dg import DGLoadCells - from dialin.dg import DGPressures - from dialin.dg import DGReservoirs - from dialin.dg import DGROPump - from dialin.dg import TemperatureSensors - from dialin.dg import DGValves + from leahi_dialin.td.proxies.dd_proxy import DDProxy - from dialin.ui import HDSimulator + from leahi_dialin.dd.dialysate_delivery import DD + from leahi_dialin.dd.modules.balancing_chamber import DDBalancingChamber + from leahi_dialin.dd.modules.concentrate_pump import DDConcentratePumps + from leahi_dialin.dd.modules.conductivity_sensors import DDConductivitySensors + from leahi_dialin.dd.modules.dialysate_pump import DDDialysatePumps + from leahi_dialin.dd.modules.gen_dialysate import DDGenDialysate + from leahi_dialin.dd.modules.heaters import DDHeaters + from leahi_dialin.dd.modules.levels import DDLevels + from leahi_dialin.dd.modules.piston_pump import DDPistonPumps + from leahi_dialin.dd.modules.post_gen_dialysate import DDPostGenDialysate + from leahi_dialin.dd.modules.pre_gen_dialysate import DDPreGenDialysate + from leahi_dialin.dd.modules.pressure_sensors import DDPressureSensors + from leahi_dialin.dd.modules.temperature_sensors import DDTemperatureSensors + from leahi_dialin.dd.modules.valves import DDValves + from leahi_dialin.fp.filtration_purification import FP + from leahi_dialin.fp.modules.conductivity_sensors import FPConductivitySensors + from leahi_dialin.fp.modules.flow_sensors import FPFlowSensors + from leahi_dialin.fp.modules.levels import FPLevels + from leahi_dialin.fp.modules.pressure_sensors import FPPressureSensors + from leahi_dialin.fp.modules.temperatures import FPTemperatureSensors + from leahi_dialin.fp.modules.valves import FPValves + from leahi_dialin.fp.modules.water_pumps import FPPumps + + def test_common(self): - from dialin.common import (AlarmList, + from leahi_dialin.common import (AlarmList, AlarmPriority, AlarmFlags, AlarmPriorities, MsgIds, MsgFieldPositions, - Ranges, RequestRejectReasons) Index: tests/unit_tests/test_msg_ids.py =================================================================== diff -u -r2138d06d100fdcf23f2e9069f35ee2fdee62008f -r72c423da1d07c40699f40b5da5bee6d992d3082c --- tests/unit_tests/test_msg_ids.py (.../test_msg_ids.py) (revision 2138d06d100fdcf23f2e9069f35ee2fdee62008f) +++ tests/unit_tests/test_msg_ids.py (.../test_msg_ids.py) (revision 72c423da1d07c40699f40b5da5bee6d992d3082c) @@ -18,7 +18,7 @@ import sys import os sys.path.append("../../") -from dialin.common import MsgIds +from leahi_dialin.common import MsgIds class Test(unittest.TestCase): Fisheye: Tag 72c423da1d07c40699f40b5da5bee6d992d3082c refers to a dead (removed) revision in file `tests/unit_tests/test_ui_proxy.py'. Fisheye: No comparison available. Pass `N' to diff?