mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 21:25:13 +00:00
10d1304806
When using pybind::options to disable function signatures, user-defined docstrings only get appended if they exist, but newlines were getting appended unconditionally, so the docstring could end up with blank lines (depending on which overloads, in particular, provided docstrings). This commit suppresses the empty lines by only adding newlines for overloads when needed.
63 lines
2.2 KiB
C++
63 lines
2.2 KiB
C++
/*
|
|
tests/test_docstring_options.cpp -- generation of docstrings and signatures
|
|
|
|
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
|
|
|
|
All rights reserved. Use of this source code is governed by a
|
|
BSD-style license that can be found in the LICENSE file.
|
|
*/
|
|
|
|
#include "pybind11_tests.h"
|
|
|
|
struct DocstringTestFoo {
|
|
int value;
|
|
void setValue(int v) { value = v; }
|
|
int getValue() const { return value; }
|
|
};
|
|
|
|
test_initializer docstring_generation([](py::module &m) {
|
|
|
|
{
|
|
py::options options;
|
|
options.disable_function_signatures();
|
|
|
|
m.def("test_function1", [](int, int) {}, py::arg("a"), py::arg("b"));
|
|
m.def("test_function2", [](int, int) {}, py::arg("a"), py::arg("b"), "A custom docstring");
|
|
|
|
m.def("test_overloaded1", [](int) {}, py::arg("i"), "Overload docstring");
|
|
m.def("test_overloaded1", [](double) {}, py::arg("d"));
|
|
|
|
m.def("test_overloaded2", [](int) {}, py::arg("i"), "overload docstring 1");
|
|
m.def("test_overloaded2", [](double) {}, py::arg("d"), "overload docstring 2");
|
|
|
|
m.def("test_overloaded3", [](int) {}, py::arg("i"));
|
|
m.def("test_overloaded3", [](double) {}, py::arg("d"), "Overload docstr");
|
|
|
|
options.enable_function_signatures();
|
|
|
|
m.def("test_function3", [](int, int) {}, py::arg("a"), py::arg("b"));
|
|
m.def("test_function4", [](int, int) {}, py::arg("a"), py::arg("b"), "A custom docstring");
|
|
|
|
options.disable_function_signatures().disable_user_defined_docstrings();
|
|
|
|
m.def("test_function5", [](int, int) {}, py::arg("a"), py::arg("b"), "A custom docstring");
|
|
|
|
{
|
|
py::options nested_options;
|
|
nested_options.enable_user_defined_docstrings();
|
|
m.def("test_function6", [](int, int) {}, py::arg("a"), py::arg("b"), "A custom docstring");
|
|
}
|
|
}
|
|
|
|
m.def("test_function7", [](int, int) {}, py::arg("a"), py::arg("b"), "A custom docstring");
|
|
|
|
{
|
|
py::options options;
|
|
options.disable_user_defined_docstrings();
|
|
|
|
py::class_<DocstringTestFoo>(m, "DocstringTestFoo", "This is a class docstring")
|
|
.def_property("value_prop", &DocstringTestFoo::getValue, &DocstringTestFoo::setValue, "This is a property docstring")
|
|
;
|
|
}
|
|
});
|