From 819d4474816b9a9d78ec621f2a9d67878d1b8f82 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 21 Apr 2019 22:55:40 +0200 Subject: [PATCH] documentation/python: gracefully handle also crazy return types. --- documentation/python.py | 10 +++++++++- documentation/test_python/test_pybind.py | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/documentation/python.py b/documentation/python.py index 33381b23..772158be 100755 --- a/documentation/python.py +++ b/documentation/python.py @@ -245,7 +245,15 @@ def parse_pybind_signature(signature: str) -> Tuple[str, str, List[Tuple[str, st else: return_type = None - assert not signature or signature[0] == '\n' + if signature and signature[0] != '\n': + end = original_signature.find('\n') + logging.warning("cannot parse pybind11 function signature %s", original_signature[:end]) + if end != -1 and len(original_signature) > end + 1 and original_signature[end + 1] == '\n': + brief = extract_brief(original_signature[end + 1:]) + else: + brief = '' + return (name, brief, [('…', None, None)], None) + if len(signature) > 1 and signature[1] == '\n': brief = extract_brief(signature[2:]) else: diff --git a/documentation/test_python/test_pybind.py b/documentation/test_python/test_pybind.py index 1547430f..a03f91d4 100644 --- a/documentation/test_python/test_pybind.py +++ b/documentation/test_python/test_pybind.py @@ -116,6 +116,16 @@ class Signature(unittest.TestCase): 'foo(a: int, b: Math::Vector<4, UnsignedInt>)\n\nThis is text!!'), ('foo', 'This is text!!', [('…', None, None)], None)) + def test_crazy_return(self): + self.assertEqual(parse_pybind_signature( + 'foo(a: int) -> Math::Vector<4, UnsignedInt>'), + ('foo', '', [('…', None, None)], None)) + + def test_crazy_return_docs(self): + self.assertEqual(parse_pybind_signature( + 'foo(a: int) -> Math::Vector<4, UnsignedInt>\n\nThis returns!'), + ('foo', 'This returns!', [('…', None, None)], None)) + def test_no_name(self): self.assertEqual(parse_pybind_signature( '(arg0: MyClass) -> float'), -- 2.30.2