{% from "chirpui/accordion.html" import accordion, accordion_item %} {% from "chirpui/badge.html" import badge %} {% from "chirpui/code.html" import code_block %} {% from "chirpui/params_table.html" import params_table %} {% from "chirpui/rendered_content.html" import rendered_content %} {#- Renders a class/module's documented members (methods, functions, attributes). Field paths verified against Bengal's autodoc Python extractor (bengal/autodoc/extractors/python/extractor.py): a function/method member carries its detail under `member.metadata.*`: signature -> metadata.signature (string) parameters -> metadata.args (list of {name, type, default, docstring}) is_async -> metadata.is_async (bool) is_property -> metadata.is_property (bool) is_classmethod -> metadata.is_classmethod (bool) is_staticmethod -> metadata.is_staticmethod (bool) Deprecation is the DocElement-level `member.deprecated` (a notice string), not a metadata flag. The arg dicts use `docstring` for the per-param prose, which we remap to params_table's `description` column below. Returns / Raises blocks (#158): after the params table we render the shared returns.html / raises.html partials for each member by binding the member as `element` (the partials read `element.metadata.returns` for the return type, `element.metadata.parsed_doc.returns` for the return prose, and `element.metadata.parsed_doc.raises` for the exception list). Each include is guarded on the member's own metadata so a member with no return/raises detail emits nothing. -#} {% let member_items = element?.children ?? [] %} {% if member_items | length > 0 %} {% call accordion(name="reference-members", cls="chirp-theme-reference-members") %} {% for member in member_items %} {% let member_name = member?.name ?? member?.title ?? "Member" %} {% let member_meta = member?.metadata ?? {} %} {% let member_type = member?.element_type ?? member?.type ?? "member" %} {% let member_signature = member_meta?.signature ?? member?.signature ?? none %} {% let member_args = member_meta?.args ?? member_meta?.parameters ?? [] %} {% let member_param_rows = [{"name": arg.get("name", ""), "type": arg.get("type", "") ?? "", "default": arg.get("default", "") ?? "", "description": arg.get("docstring", "") ?? ""} for arg in member_args] %} {% let member_is_async = member_meta?.is_async ?? false %} {% let member_is_property = member_meta?.is_property ?? false %} {% let member_is_classmethod = member_meta?.is_classmethod ?? false %} {% let member_is_staticmethod = member_meta?.is_staticmethod ?? false %} {% let member_deprecated = member?.deprecated ?? none %} {% call accordion_item(member_name, open=loop.first, cls="chirp-theme-reference-member") %} {% slot header_actions %} {{ badge(member_type, variant="muted") }} {% if member_is_async %}{{ badge("async", variant="info") }}{% end %} {% if member_is_property %}{{ badge("property", variant="muted") }}{% end %} {% if member_is_classmethod %}{{ badge("classmethod", variant="muted") }}{% end %} {% if member_is_staticmethod %}{{ badge("staticmethod", variant="muted") }}{% end %} {% if member_deprecated %}{{ badge("deprecated", variant="error") }}{% end %} {% end %}
Deprecated: {{ member_deprecated }}
{% end %} {% if member?.description ?? none %} {% call rendered_content(compact=true, cls="chirp-theme-reference-member__description") %}{{ member.description |> markdownify |> safe }}{% end %} {% end %} {% if member_param_rows | length > 0 %} {{ params_table(member_param_rows, title="Parameters", cls="chirp-theme-reference-member__params") }} {% elif member_signature %}No parameters.
{% end %} {% let member_parsed_doc = member_meta.get("parsed_doc") ?? {} %} {% if member_meta.get("returns") or member_parsed_doc.get("returns") %} {% with member as element %}{% include "autodoc/partials/returns.html" %}{% end %} {% end %} {% if member_parsed_doc.get("raises") %} {% with member as element %}{% include "autodoc/partials/raises.html" %}{% end %} {% end %}