diff --git a/pyleco/json_utils/rpc_server_definition.py b/pyleco/json_utils/rpc_server_definition.py index 7a6b2c4f..f5b015ae 100644 --- a/pyleco/json_utils/rpc_server_definition.py +++ b/pyleco/json_utils/rpc_server_definition.py @@ -133,7 +133,12 @@ def discover(self) -> dict[str, Any]: continue method_dict = {"name": name} if method.__doc__: - method_dict["description"] = method.__doc__ + lines = method.__doc__.split("\n") + method_dict["summary"] = lines[0] + if lines[1:]: + method_dict["description"] = " ".join( + line.strip() for line in lines[1:] if line + ).strip() methods.append(method_dict) result["methods"] = methods return result diff --git a/tests/json_utils/test_rpc_server.py b/tests/json_utils/test_rpc_server.py index 93ad6a78..ffa33d26 100644 --- a/tests/json_utils/test_rpc_server.py +++ b/tests/json_utils/test_rpc_server.py @@ -52,7 +52,11 @@ def side_effect_method(arg=None): def fail(): - """Fails always.""" + """Fail always. + + This method fails always. + And has a description. + """ raise NotImplementedError @@ -164,7 +168,14 @@ def test_side_effect_method(self, methods: list): def test_fail(self, methods: list): m = methods[2] assert m["name"] == "fail" - assert m["description"] == fail.__doc__ + assert m["summary"] == "Fail always." + assert m.get("description") == "This method fails always. And has a description." + + def test_simple_description(self, methods: list): + m = methods[3] + assert m["name"] == "simple" + assert m["summary"] == "A method without parameters." + assert m.get("description") is None def test_rpc_discover_not_listed(self, methods: list): for m in methods: