next = doc.find('{}. {}('.format(id, name))
# Parse the signature and docs from known slice
- overloads += [parse_pybind_signature(state, doc[3:next])]
+ overloads += [parse_pybind_signature(state, doc[len(str(id - 1)) + 2:next])]
assert overloads[-1][0] == name
if next == -1: break
- # Continue to the next signature. Sorry, didn't bother to check how
- # docstrings for more than 9 overloads look yet, that's why the
- # assert
- assert id < 10
+ # Continue to the next signature
doc = doc[next:]
return overloads
void duck(py::args, py::kwargs) {}
+template<class T, class U> void tenOverloads(T, U) {}
+
PYBIND11_MODULE(pybind_signatures, m) {
m.doc() = "pybind11 function signature extraction";
.def("crazy_signature", &crazySignature, "Function that failed to get parsed")
.def("overloaded", static_cast<std::string(*)(int)>(&overloaded), "Overloaded for ints")
.def("overloaded", static_cast<bool(*)(float)>(&overloaded), "Overloaded for floats")
- .def("duck", &duck, "A function taking args/kwargs directly");
+ .def("duck", &duck, "A function taking args/kwargs directly")
+
+ .def("tenOverloads", &tenOverloads<float, float>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<int, float>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<bool, float>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<float, int>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<int, int>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<bool, int>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<float, bool>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<int, bool>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<bool, bool>, "Ten overloads of a function")
+ .def("tenOverloads", &tenOverloads<std::string, std::string>, "Ten overloads of a function");
py::class_<MyClass>(m, "MyClass", "My fun class!")
.def_static("static_function", &MyClass::staticFunction, "Static method with positional-only args")
<span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">taking_a_list_returning_a_tuple</a>(</span><span class="m-doc-wrap">arg0: List[float]<span class="m-text m-dim">, /</span>) -> Tuple[int, int, int]</span>
</dt>
<dd>Takes a list, returns a tuple</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: float,
+ arg1: float<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: int,
+ arg1: float<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: bool,
+ arg1: float<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: float,
+ arg1: int<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: int,
+ arg1: int<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: bool,
+ arg1: int<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: float,
+ arg1: bool<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: int,
+ arg1: bool<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: bool,
+ arg1: bool<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">tenOverloads</a>(</span><span class="m-doc-wrap">arg0: str,
+ arg1: str<span class="m-text m-dim">, /</span>)</span>
+ </dt>
+ <dd>Ten overloads of a function</dd>
<dt>
<span class="m-doc-wrap-bumper">def <a href="" class="m-doc-self">void_function</a>(</span><span class="m-doc-wrap">arg0: int<span class="m-text m-dim">, /</span>)</span>
</dt>