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:
'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'),