From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Markus Armbruster" <armbru@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>, "Peter Xu" <peterx@redhat.com>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Michael Tokarev" <mjt@tls.msk.ru>,
"Lukas Straub" <lukasstraub2@web.de>,
"Fabiano Rosas" <farosas@suse.de>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Stefan Berger" <stefanb@linux.vnet.ibm.com>,
qemu-trivial@nongnu.org, "Jason Wang" <jasowang@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Laurent Vivier" <laurent@vivier.eu>,
"Yanan Wang" <wangyanan55@huawei.com>,
"John Snow" <jsnow@redhat.com>, "Zhao Liu" <zhao1.liu@intel.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Kevin Wolf" <kwolf@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
qemu-block@nongnu.org, "Zhenwei Pi" <pizhenwei@bytedance.com>,
"Mads Ynddal" <mads@ynddal.dk>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Eric Blake" <eblake@redhat.com>, "Jiri Pirko" <jiri@resnulli.us>
Subject: [PATCH 2/4] docs, qapi: generate undocumented return sections
Date: Fri, 21 Mar 2025 21:08:55 -0400 [thread overview]
Message-ID: <20250322010857.309490-3-jsnow@redhat.com> (raw)
In-Reply-To: <20250322010857.309490-1-jsnow@redhat.com>
This patch changes the qapidoc transmogrifier to generate Return value
documentation for any command that has a return value but hasn't
explicitly documented that return value.
Signed-off-by: John Snow <jsnow@redhat.com>
---
docs/sphinx/qapidoc.py | 14 ++++++++------
scripts/qapi/parser.py | 11 +++++++++++
scripts/qapi/schema.py | 3 +++
3 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
index 0930307bc73..aaf9921c06c 100644
--- a/docs/sphinx/qapidoc.py
+++ b/docs/sphinx/qapidoc.py
@@ -255,16 +255,18 @@ def visit_feature(self, section: QAPIDoc.ArgSection) -> None:
def visit_returns(self, section: QAPIDoc.Section) -> None:
assert isinstance(self.entity, QAPISchemaCommand)
rtype = self.entity.ret_type
- # q_empty can produce None, but we won't be documenting anything
- # without an explicit return statement in the doc block, and we
- # should not have any such explicit statements when there is no
- # return value.
+ # return statements will not be present (and won't be
+ # autogenerated) for any command that doesn't return
+ # *something*, so ret_type will always be defined here.
assert rtype
typ = self.format_type(rtype)
assert typ
- assert section.text
- self.add_field("return", typ, section.text, section.info)
+
+ if section.text:
+ self.add_field("return", typ, section.text, section.info)
+ else:
+ self.add_lines(f":return-nodesc: {typ}", section.info)
def visit_errors(self, section: QAPIDoc.Section) -> None:
# FIXME: the formatting for errors may be inconsistent and may
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 949d9e8bff7..8c382a049af 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -815,6 +815,17 @@ def connect_feature(self, feature: 'QAPISchemaFeature') -> None:
% feature.name)
self.features[feature.name].connect(feature)
+ def ensure_returns(self, info: QAPISourceInfo) -> None:
+ if not any(s.kind == QAPIDoc.Kind.RETURNS for s in self.all_sections):
+
+ # Stub "Returns" section for undocumented returns value.
+ # Insert stub after the last non-PLAIN section.
+ for sect in reversed(self.all_sections):
+ if sect.kind != QAPIDoc.Kind.PLAIN:
+ stub = QAPIDoc.Section(info, QAPIDoc.Kind.RETURNS)
+ idx = self.all_sections.index(sect) + 1
+ self.all_sections.insert(idx, stub)
+
def check_expr(self, expr: QAPIExpression) -> None:
if 'command' in expr:
if self.returns and 'returns' not in expr:
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index cbe3b5aa91e..3abddea3525 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -1062,6 +1062,9 @@ def connect_doc(self, doc: Optional[QAPIDoc] = None) -> None:
if self.arg_type and self.arg_type.is_implicit():
self.arg_type.connect_doc(doc)
+ if self.ret_type and self.info:
+ doc.ensure_returns(self.info)
+
def visit(self, visitor: QAPISchemaVisitor) -> None:
super().visit(visitor)
visitor.visit_command(
--
2.48.1
next prev parent reply other threads:[~2025-03-22 1:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-22 1:08 [PATCH 0/4] qapi: add auto-generated return docs John Snow
2025-03-22 1:08 ` [PATCH 1/4] docs/qapi-domain: add return-nodesc John Snow
2025-03-22 1:08 ` John Snow [this message]
2025-03-25 8:54 ` [PATCH 2/4] docs, qapi: generate undocumented return sections Markus Armbruster
2025-03-25 18:13 ` John Snow
2025-03-25 9:41 ` Markus Armbruster
2025-03-25 17:47 ` John Snow
2025-03-26 16:30 ` John Snow
2025-03-27 7:53 ` Markus Armbruster
2025-03-22 1:08 ` [PATCH 3/4] qapi: remove trivial "Returns:" sections John Snow
2025-03-25 9:42 ` Markus Armbruster
2025-03-26 19:46 ` John Snow
2025-03-27 7:27 ` Markus Armbruster
2025-03-22 1:08 ` [PATCH 4/4] qapi: rephrase return docs to avoid type name John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250322010857.309490-3-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=anisinha@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=farosas@suse.de \
--cc=hreitz@redhat.com \
--cc=jasowang@redhat.com \
--cc=jiri@resnulli.us \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=laurent@vivier.eu \
--cc=lukasstraub2@web.de \
--cc=mads@ynddal.dk \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=michael.roth@amd.com \
--cc=mjt@tls.msk.ru \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=pizhenwei@bytedance.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=stefanb@linux.vnet.ibm.com \
--cc=stefanha@redhat.com \
--cc=vsementsov@yandex-team.ru \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.