42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
import textwrap
 | 
						|
import inspect
 | 
						|
 | 
						|
class Writer(object):
 | 
						|
    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
 |