Merge pull request #3 from haudren/topic/autogen-docstring

[ENH] Add support to auto-generate a barebones docstring
This commit is contained in:
Gustavo J. A. M. Carneiro committed 2015-12-03 13:16:59 +00:00
commit 0e4e3bc096
3 files changed
+35 -1

No files matched your search

+8
View File
@@ -2205,6 +2205,10 @@ typedef struct {
if self.binary_numeric_operators:
tp_flags.add("Py_TPFLAGS_CHECKTYPES")
self.slots.setdefault("tp_flags", '|'.join(tp_flags))
if docstring is None:
docstring = self.generate_docstring()
self.slots.setdefault("tp_doc", (docstring is None and 'NULL'
or "\"%s\"" % (docstring,)))
dict_ = self.slots
@@ -2227,6 +2231,10 @@ typedef struct {
self.pytype.generate(code_sink)
def generate_docstring(self):
name = self.get_python_name()
return "\\n".join(sorted([c.generate_docstring(name) for c in self.constructors],
key=len, reverse=True))
def _generate_constructor(self, code_sink):
"""generate the constructor, if any"""
+15 -1
View File
@@ -406,12 +406,23 @@ class CppMethod(ForwardWrapperBase):
def get_py_method_def(self, method_name):
"Get the PyMethodDef entry suitable for this method"
flags = self.get_py_method_def_flags()
if self.docstring is None:
self.docstring = self.generate_docstring(method_name)
return "{(char *) \"%s\", (PyCFunction) %s, %s, %s }," % \
(method_name, self.wrapper_actual_name, '|'.join(flags),
(self.docstring is None and "NULL" or ('"'+self.docstring+'"')))
def generate_docstring(self, name):
parameters = self.parameters
signature = "{0}({1})".format(name, ", ".join([p.name for p in parameters]))
params = "\\n".join(["type: {0}: {1}".format(p.name, p.ctype)
for p in parameters])
string = signature + "\\n\\n" + params
return string
def __str__(self):
if self.class_ is None:
cls_name = "???"
else:
@@ -736,6 +747,9 @@ class CppConstructor(ForwardWrapperBase):
code_sink.writeln('return 0;')
self.write_close_wrapper(code_sink)
def generate_docstring(self, name):
return "{0}({1})".format(name, ', '.join([p.name for p in self.parameters]))
def __str__(self):
if not hasattr(self, '_class'):
return object.__str__(self)
+12
View File
@@ -289,10 +289,22 @@ class Function(ForwardWrapperBase):
assert isinstance(self.wrapper_return, string_types)
assert isinstance(self.wrapper_actual_name, string_types)
assert isinstance(self.wrapper_args, list)
if self.docstring is None:
self.docstring = self.generate_docstring(name)
return "{(char *) \"%s\", (PyCFunction) %s, %s, %s }," % \
(name, self.wrapper_actual_name, '|'.join(flags),
(self.docstring is None and "NULL" or ('"'+self.docstring+'"')))
def generate_docstring(self, name):
parameters = self.parameters
signature = "{0}({1})".format(name, ", ".join([p.name for p in parameters]))
params = "\\n".join(["type: {0}: {1}".format(p.name, p.ctype)
for p in parameters])
string = signature + "\\n\\n" + params
return string
class CustomFunctionWrapper(Function):
"""