#set( $nl = "
" )
#set( $fn = $funcInfo.functionName)
#set( $fnl = $fn.replaceAll("[.]", "_").toLowerCase())
{.starlark-object}
#[[##]]# $fn

#set( $hasParams = false)
{.starlark-signature}
${funcInfo.functionName}(## Comment to consume newline
#foreach ($param in $funcInfo.getParameterList())
#if($param.name != "self")
#set( $hasParams = true)
[${param.name}](#${fnl}_${param.name})## Comment to consume newline
#if(!$param.getDefaultValue().isEmpty())
=$param.getDefaultValue()#end#if($foreach.hasNext),
#end
#end
#end
)

${funcInfo.docString}

#if ($hasParams)
{#${fnl}_parameters}
**PARAMETERS** [¶](#${fnl}_parameters){.headerlink}

#foreach ($param in $funcInfo.getParameterList())
#if($param.name != "self")
#set($link = $fnl + "_" + $param.name)
#if($foreach.first)
{.params-box}
#end
## The .span wrapper is necessary so the trailing colon doesn't wrap
:[${param.name}[¶](#$link){.headerlink}]{.span}: []{#$link}
#if(!$param.getDefaultValue().isEmpty())(_default `${param.getDefaultValue()}`_) #end
#if(!$param.docString.isEmpty())
  $param.docString.replaceAll("$nl", "$nl  ")
#else
  _undocumented_
#end
#end
#end
#end
#if (!$funcInfo.getReturn().docString.isEmpty())

{#${fnl}_returns}
RETURNS [¶](#${fnl}_returns){.headerlink}
: ${funcInfo.getReturn().docString.replaceAll("$nl", "$nl  ")}
#end
#if (!$funcInfo.getDeprecated().docString.isEmpty())

**DEPRECATED**

${funcInfo.getDeprecated().docString}
#end
