{# render a docspec.Argument #}
{% macro render_arg(arg)%}
{% if arg is string %}
{{- arg -}}
{% else %}
{% if arg.type == ArgumentType.POSITIONAL_REMAINDER %}*{% elif arg.type == ArgumentType.KEYWORD_REMAINDER %}**{% endif %}
{{ arg.name }}
{%- if arg.name not in ("self", "cls") -%}
: {% if arg.datatype %}{{ arg.datatype }}{% else %}Unknown{% endif %}
{% endif %}
{% if arg.default_value is not none %} = {{ arg.default_value }}{% endif %}
{% endif %}
{% endmacro -%}

{# render a list of docspec.Argument #}
{% macro render_args(args)%}
{% for arg in args -%}
{{ render_arg(arg) }}{{ ", " if not loop.last else "" }}
{%- endfor %}
{% endmacro -%}


{% macro format_docstring(docstring) %}
{%if docstring %}
{% set content = docstring.content | replace("\\", "\\\\") %}
{% filter indent(width=4, first=True) %}
{% if docstring.content.splitlines()|length == 1%}
"""{{content}}"""
{%- else %}
"""{{content}}
"""
{%- endif %}
{% endfilter %}
{% endif %}
{% endmacro %}
