Я пишу C-расширения, и я хотел бы сделать подпись моих методов видимой для самоанализа.
static PyObject* foo(PyObject *self, PyObject *args) {
    /* blabla [...] */
}
PyDoc_STRVAR(
    foo_doc,
    "Great example function\n"
    "Arguments: (timeout, flags=None)\n"
    "Doc blahblah doc doc doc.");
static PyMethodDef methods[] = {
    {"foo", foo, METH_VARARGS, foo_doc},
    {NULL},
};
PyMODINIT_FUNC init_myexample(void) {
    (void) Py_InitModule3("_myexample", methods, "a simple example module");
}
Теперь, если (после его создания...) загрузите модуль и посмотрите его справку:
>>> import _myexample
>>> help(_myexample)
Я получу:
Help on module _myexample:
NAME
    _myexample - a simple example module
FILE
    /path/to/module/_myexample.so
FUNCTIONS
    foo(...)
        Great example function
        Arguments: (timeout, flags=None)
        Doc blahblah doc doc doc.
Я хотел бы быть более конкретным и иметь возможность заменить foo (...) на foo (timeout, flags = None)
Могу ли я это сделать? Как?
