Index: dialin/utils/base.py =================================================================== diff -u -r8d1e195e98679117283899b38dbfb40d8840ec10 -r131617df8d7f09a74c893701b8e13b09fff6d1d2 --- dialin/utils/base.py (.../base.py) (revision 8d1e195e98679117283899b38dbfb40d8840ec10) +++ dialin/utils/base.py (.../base.py) (revision 131617df8d7f09a74c893701b8e13b09fff6d1d2) @@ -48,6 +48,23 @@ return logger +def find_variables_in_object(obj, value, starts_with: str = ""): + """ + Returns a list of variable names that in the object that match the searched value + + @param obj: (object) The object to search through + @param value: (object) The value to lookup + @param starts_with: (str) The + @return: (List[str]) A list of variable names matching the searched value + """ + result = [] + for attr in dir(obj): + if not callable(getattr(obj, attr)) and attr.startswith(starts_with): + if value == getattr(obj, attr): + result.append(attr) + return result + + class AbstractObserver(ABC): """ Publicly accessible parent class for all observers. @@ -294,3 +311,5 @@ return _wrapper return _decorator + + Index: tests/test_demo.py =================================================================== diff -u -radd8b1e7cce0187c9fb5b09a5881d0121f9a0ddb -r131617df8d7f09a74c893701b8e13b09fff6d1d2 --- tests/test_demo.py (.../test_demo.py) (revision add8b1e7cce0187c9fb5b09a5881d0121f9a0ddb) +++ tests/test_demo.py (.../test_demo.py) (revision 131617df8d7f09a74c893701b8e13b09fff6d1d2) @@ -18,6 +18,7 @@ from dialin.dg.dialysate_generator import DG from dialin.hd.hemodialysis_device import HD from dialin.hd.constants import RESET, NO_RESET, BUTTON_PRESSED, BUTTON_RELEASED +from dialin.utils.base import find_variables_in_object import time @@ -114,5 +115,11 @@ print(dg.valves.get_valve_states()) +def test_reverse_lookup(): + hd = HD() + + print(find_variables_in_object(hd.ui, 2, "REQUEST_")) + + if __name__ == '__main__': - test_dg_version() + test_reverse_lookup()