def generate_function_markdown()

in flowtorch/docs.py [0:0]


def generate_function_markdown(symbol_name: str, entity: Any) -> str:
    markdown = []

    # Docstring
    # TODO: Parse docstring and extract short summary
    docstring = entity.__doc__ if entity.__doc__ is not None else "empty docstring"
    docstring = "\n".join(line.strip() for line in docstring.splitlines())
    # short_summary = "```short summary```\n"

    # DEBUG
    try:
        if hasattr(entity, "__wrapped__"):
            # decorators = get_decorators(entity)
            entity = entity.__wrapped__
    except Exception:
        pass

    # TODO: Prepend decorators to method name
    # for d in decorators:
    #    member_strs.append(d)

    # Some built-ins don't have a signature and throw exception...
    try:
        entity_signature = str(signature(entity))
    except ValueError:
        entity_signature = "()"

    safe_name = symbol_name.replace("_", r"\_")
    safe_signature = entity_signature.replace("<", "&lt;").replace(">", "&gt;")

    markdown.append("<PythonFunction>\n")
    markdown.append(
        """<div className="doc-function-row">
<div className="doc-function-label"><span className="doc-symbol-label">function\
</span></div>
<div className="doc-function-signature">\n"""
    )

    markdown.append(
        f"""## <span className="doc-symbol-name">{safe_name}</span> \
{{#function}}\n"""
    )
    markdown.append(
        f"""<span className="doc-symbol-signature">{safe_signature}</span>"""
    )
    # markdown.append(short_summary)
    markdown.append("</div>\n</div>\n\n</PythonFunction>\n")
    markdown.append(f"```\n{docstring}\n```\n")

    return "\n".join(markdown)