#NEWLINE# def document_function( func , func_name = None , example_code = None , image_file = None ) : #NEWLINE# #INDENT# ' Creates a rst documentation string for the function, with an\n        image and a example code, if given.\n    ' #NEWLINE# if ( func_name is None ) : #NEWLINE# #INDENT# func_name = func . __name__ #NEWLINE# #UNINDENT# func_doc = func . __doc__ #NEWLINE# if ( func_doc is None ) : #NEWLINE# #INDENT# print ( ( 'function %s is undocumented' % func_name ) ) #NEWLINE# func_doc = '\n\n' #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if is_valid_rst ( func_doc ) : #NEWLINE# #INDENT# func_doc = dedent ( func_doc ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# func_doc = ( '\n::\n' + func_doc ) #NEWLINE# #UNINDENT# #UNINDENT# func_signature = formatargspec ( * getargspec ( func ) ) #NEWLINE# documentation = ( '\n%(func_name)s\n%(title_line)s\n\n.. function:: %(func_name)s%(func_signature)s\n\n%(func_doc)s\n\n    ' % { #NEWLINE# #INDENT# 'func_name' : func_name , #NEWLINE# 'title_line' : ( '~' * len ( func_name ) ) , #NEWLINE# 'func_signature' : func_signature , #NEWLINE# 'func_doc' : indent ( dedent ( func_doc ) ) , #NEWLINE# #UNINDENT# } ) #NEWLINE# if ( image_file is not None ) : #NEWLINE# #INDENT# documentation += ( '\n\n.. image:: %s\n\n' % image_file ) #NEWLINE# #UNINDENT# if ( example_code is not None ) : #NEWLINE# #INDENT# documentation += ( '\n**Example** (run in ``ipython --gui=qt``, or in the mayavi2 interactive shell,\nsee :ref:`running-mlab-scripts` for more info)::\n\n%s\n' % indent ( example_code ) ) #NEWLINE# #UNINDENT# return func_name