Skip to content

[BUG]: Use of pybind11::args or pybind11::kw_only results in a Sphinx warning due to the use of * #4537

Open
@bettinaheim

Description

@bettinaheim

Required prerequisites

What version (or hash if on master) of pybind11 are you using?

3cc7e42

Problem description

The function initialize_generic in pybind11.h adds the signature of overloads as part of the docs string if show_function_signatures is true. This signature is not marked as code and hence any use of * in that signature are not correctly interpreted by sphinx, causing an "Inline emphasis start-string without end-string" warning.

A minimal fix is changing this line to

signatures += std::regex_replace(std::string(it->signature), std::regex("\\*"), "\\*"); // making sure * are escaped

Alternatively, the name + signature could also be surrounded by a code block or inline code markers.
The nicest IMO would be for the signatures to be presented in the same style that member functions of a class are, though I don't know how that would need to be done.

Reproducible example code

void createBinding(pybind11::module &m) {

  m.def("foo", [&](pybind11::args args) {
    // ...;
  });
}

Is this a regression? Put the last known working version here if it is.

Not a regression

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions