42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import textwrap
|
|
import inspect
|
|
|
|
class Writer:
|
|
def __init__(self, clsname):
|
|
self.clsname = clsname
|
|
|
|
def __enter__(self):
|
|
self.file = open("%s.api" % self.clsname, "w")
|
|
return self
|
|
|
|
def __exit__(self, *args):
|
|
self.file.close()
|
|
print "wrote", self.file.name
|
|
|
|
def line(self, line):
|
|
self.file.write(line+"\n")
|
|
|
|
def docmethod(self, method):
|
|
doc = " ".join(method.__doc__.split())
|
|
indent = " "
|
|
w = textwrap.TextWrapper(initial_indent=indent,
|
|
subsequent_indent=indent)
|
|
|
|
spec = inspect.getargspec(method)
|
|
del spec.args[0]
|
|
self.line(".. py:method:: " + method.__name__ +
|
|
inspect.formatargspec(*spec))
|
|
self.line("")
|
|
self.line(w.fill(doc))
|
|
self.line("")
|
|
|
|
def pytest_funcarg__a(request):
|
|
with Writer("request") as writer:
|
|
writer.docmethod(request.getfixturevalue)
|
|
writer.docmethod(request.cached_setup)
|
|
writer.docmethod(request.addfinalizer)
|
|
writer.docmethod(request.applymarker)
|
|
|
|
def test_hello(a):
|
|
pass
|