Commit fa572669 authored by Donald Hunter's avatar Donald Hunter Committed by Jakub Kicinski
Browse files

tools: ynl: render event op docs correctly

The docs for YNL event ops currently render raw python structs. For
example in:

https://docs.kernel.org/netlink/specs/ethtool.html#cable-test-ntf



  event: {‘attributes’: [‘header’, ‘status’, ‘nest’], ‘__lineno__’: 2385}

Handle event ops correctly and render their op attributes:

  event: attributes: [header, status]

Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
Link: https://patch.msgid.link/20260112153436.75495-1-donald.hunter@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ffe4ccd3
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -166,13 +166,13 @@ class YnlDocGenerator:
                continue
            lines.append(self.fmt.rst_paragraph(self.fmt.bold(key), level + 1))
            if key in ['request', 'reply']:
                lines.append(self.parse_do_attributes(do_dict[key], level + 1) + "\n")
                lines.append(self.parse_op_attributes(do_dict[key], level + 1) + "\n")
            else:
                lines.append(self.fmt.headroom(level + 2) + do_dict[key] + "\n")

        return "\n".join(lines)

    def parse_do_attributes(self, attrs: Dict[str, Any], level: int = 0) -> str:
    def parse_op_attributes(self, attrs: Dict[str, Any], level: int = 0) -> str:
        """Parse 'attributes' section"""
        if "attributes" not in attrs:
            return ""
@@ -184,7 +184,7 @@ class YnlDocGenerator:

    def parse_operations(self, operations: List[Dict[str, Any]], namespace: str) -> str:
        """Parse operations block"""
        preprocessed = ["name", "doc", "title", "do", "dump", "flags"]
        preprocessed = ["name", "doc", "title", "do", "dump", "flags", "event"]
        linkable = ["fixed-header", "attribute-set"]
        lines = []

@@ -217,6 +217,9 @@ class YnlDocGenerator:
            if "dump" in operation:
                lines.append(self.fmt.rst_paragraph(":dump:", 0))
                lines.append(self.parse_do(operation["dump"], 0))
            if "event" in operation:
                lines.append(self.fmt.rst_paragraph(":event:", 0))
                lines.append(self.parse_op_attributes(operation["event"], 0))

            # New line after fields
            lines.append("\n")