def decorator(func): out_name_end_index = func.__name__.find('_from_') if out_name_end_index == -1: raise ValueError('equation_docstring decorator must be applied to ' 'function whose name contains "_from_"') out_quantity = func.__name__[:out_name_end_index] in_quantities = inspect.getargspec(func).args docstring = 'Calculates {0}'.format( quantity_string(out_quantity, quantity_dict)) try: if len(func.assumptions) > 0: docstring += ' assuming {0}'.format( assumption_list_string(func.assumptions, assumption_dict)) except AttributeError: pass docstring += '.' docstring = doc_paragraph(docstring) docstring += '\n\n' if equation is not None: func.equation = equation docstring += doc_paragraph(':math:`' + equation.strip() + '`') docstring += '\n\n' docstring += 'Parameters\n' docstring += '----------\n\n' docstring += '\n'.join([quantity_spec_string(q, quantity_dict) for q in in_quantities]) docstring += '\n\n' docstring += 'Returns\n' docstring += '-------\n\n' docstring += quantity_spec_string(out_quantity, quantity_dict) if notes is not None: docstring += '\n\n' docstring += 'Notes\n' docstring += '-----\n\n' docstring += notes.strip() if references is not None: if notes is None: # still need notes header for references docstring += '\n\n' docstring += 'Notes\n' docstring += '-----\n\n' func.references = references docstring += '\n\n' docstring += '**References**\n\n' docstring += references.strip() docstring += '\n' func.__doc__ = docstring return func
def test_assumption_list_string_triple(self): string = assumption_list_string(('a1', 'a2', 'a3'), self.assumption_dict) assert string == 'a1_long, a2_long, and a3_long'
def test_assumption_list_string_double(self): string = assumption_list_string(('a1', 'a2'), self.assumption_dict) assert string == 'a1_long and a2_long'
def test_assumption_list_string_single(self): string = assumption_list_string(('a1', ), self.assumption_dict) assert string == 'a1_long'
def test_assumption_list_string_invalid(self): assumption_list_string(('ooglymoogly', ), self.assumption_dict)
def test_assumption_list_string_input_string(self): assumption_list_string('hello', self.assumption_dict)
def test_assumption_list_string_empty(self): assumption_list_string((), self.assumption_dict)