mirror of
https://github.com/pybind/pybind11.git
synced 2026-04-20 06:49:25 +00:00
Add option for enable/disable enum members in docstring. (#2768)
* Add option for enable/disable enum members in docstring * Add tests for disable enum members docstring option * Add docstring options to documentation * style: pre-commit fixes * Fix typos in documentation * Improve documentation wording * Apply suggestions by @Skylion007 Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ralf W. Grosse-Kunstleve <rwgk@google.com>
This commit is contained in:
@@ -85,4 +85,57 @@ TEST_SUBMODULE(docstring_options, m) {
|
||||
&DocstringTestFoo::setValue,
|
||||
"This is a property docstring");
|
||||
}
|
||||
|
||||
{
|
||||
enum class DocstringTestEnum1 { Member1, Member2 };
|
||||
|
||||
py::enum_<DocstringTestEnum1>(m, "DocstringTestEnum1", "Enum docstring")
|
||||
.value("Member1", DocstringTestEnum1::Member1)
|
||||
.value("Member2", DocstringTestEnum1::Member2);
|
||||
}
|
||||
|
||||
{
|
||||
py::options options;
|
||||
options.enable_enum_members_docstring();
|
||||
|
||||
enum class DocstringTestEnum2 { Member1, Member2 };
|
||||
|
||||
py::enum_<DocstringTestEnum2>(m, "DocstringTestEnum2", "Enum docstring")
|
||||
.value("Member1", DocstringTestEnum2::Member1)
|
||||
.value("Member2", DocstringTestEnum2::Member2);
|
||||
}
|
||||
|
||||
{
|
||||
py::options options;
|
||||
options.disable_enum_members_docstring();
|
||||
|
||||
enum class DocstringTestEnum3 { Member1, Member2 };
|
||||
|
||||
py::enum_<DocstringTestEnum3>(m, "DocstringTestEnum3", "Enum docstring")
|
||||
.value("Member1", DocstringTestEnum3::Member1)
|
||||
.value("Member2", DocstringTestEnum3::Member2);
|
||||
}
|
||||
|
||||
{
|
||||
py::options options;
|
||||
options.disable_user_defined_docstrings();
|
||||
|
||||
enum class DocstringTestEnum4 { Member1, Member2 };
|
||||
|
||||
py::enum_<DocstringTestEnum4>(m, "DocstringTestEnum4", "Enum docstring")
|
||||
.value("Member1", DocstringTestEnum4::Member1)
|
||||
.value("Member2", DocstringTestEnum4::Member2);
|
||||
}
|
||||
|
||||
{
|
||||
py::options options;
|
||||
options.disable_user_defined_docstrings();
|
||||
options.disable_enum_members_docstring();
|
||||
|
||||
enum class DocstringTestEnum5 { Member1, Member2 };
|
||||
|
||||
py::enum_<DocstringTestEnum5>(m, "DocstringTestEnum5", "Enum docstring")
|
||||
.value("Member1", DocstringTestEnum5::Member1)
|
||||
.value("Member2", DocstringTestEnum5::Member2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,3 +39,26 @@ def test_docstring_options():
|
||||
# Suppression of user-defined docstrings for non-function objects
|
||||
assert not m.DocstringTestFoo.__doc__
|
||||
assert not m.DocstringTestFoo.value_prop.__doc__
|
||||
|
||||
# Check existig behaviour of enum docstings
|
||||
assert (
|
||||
m.DocstringTestEnum1.__doc__
|
||||
== "Enum docstring\n\nMembers:\n\n Member1\n\n Member2"
|
||||
)
|
||||
|
||||
# options.enable_enum_members_docstring()
|
||||
assert (
|
||||
m.DocstringTestEnum2.__doc__
|
||||
== "Enum docstring\n\nMembers:\n\n Member1\n\n Member2"
|
||||
)
|
||||
|
||||
# options.disable_enum_members_docstring()
|
||||
assert m.DocstringTestEnum3.__doc__ == "Enum docstring"
|
||||
|
||||
# options.disable_user_defined_docstrings()
|
||||
assert m.DocstringTestEnum4.__doc__ == "Members:\n\n Member1\n\n Member2"
|
||||
|
||||
# options.disable_user_defined_docstrings()
|
||||
# options.disable_enum_members_docstring()
|
||||
# When all options are disabled, no docstring (instead of an empty one) should be generated
|
||||
assert m.DocstringTestEnum5.__doc__ is None
|
||||
|
||||
Reference in New Issue
Block a user