Re: [PATCH v3 07/16] qapi/docs: add "Intro" section

John Snow <[email protected]>
Newsgroups org.kernel.vger.linux-edac,org.nongnu.qemu-devel
Message-ID <CAFn=p-bJS7M9FV=Pa8JgpTi=jmSx24-J6uyFCWKvxwEsx4rM6w@mail.gmail.com>
On Tue, Jun 9, 2026 at 6:59 AM Markus Armbruster <[email protected]> wrote:
>
> John Snow <[email protected]> writes:
>
> > This patch adds an "Intro" doc section, intended to eventually replace
> > the "Plain" doc section alongside a forthcoming "Details" section.
> >
> > For now, this section is not actually instantiated or used, but
> > subsequent patches will slowly convert the leading introductory sections
> > of QAPIDoc documentation to use this new section.
> >
> > A main motivation of this series of changes is to more explicitly
> > delineate the "Introductory" documentation for each QAPI definition for
> > the sake of the inliner. When inlining members, examples, and details
> > from multiple QAPIDoc sections, we will want to omit the "Introductory"
> > text from inlined definitions while keeping notes, caution boxes,
> > examples, and so on. This new section facilitates that.
> >
> > Signed-off-by: John Snow <[email protected]>
> > ---
> >  docs/sphinx/qapidoc.py | 2 +-
> >  scripts/qapi/parser.py | 3 ++-
> >  2 files changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
> > index c2f09bac16c..1f7c15b7075 100644
> > --- a/docs/sphinx/qapidoc.py
> > +++ b/docs/sphinx/qapidoc.py
> > @@ -368,7 +368,7 @@ def visit_sections(self, ent: QAPISchemaDefinition) -> None:
> >          for i, section in enumerate(sections):
> >              section.text = self.reformat_arobase(section.text)
> >
> > -            if section.kind == QAPIDoc.Kind.PLAIN:
> > +            if section.kind.name in ("PLAIN", "INTRO"):
>
> Is the change from QAPIDoc.Kind.FOO to "FOO" just for brevity, or is
> something going on I don't understand?

Just brevity, honestly. I'm using the .name attribute and checking
against strings. Otherwise it didn't fit on a single line.
Inconsistent style, but I guess I chose what I disliked least.

>
> >                  self.visit_paragraph(section)
> >              elif section.kind == QAPIDoc.Kind.MEMBER:
> >                  assert isinstance(section, QAPIDoc.ArgSection)
> > diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
> > index d8068bb1bf6..97e7dacb0fd 100644
> > --- a/scripts/qapi/parser.py
> > +++ b/scripts/qapi/parser.py
> > @@ -681,6 +681,7 @@ class Kind(enum.Enum):
> >          ERRORS = 4
> >          SINCE = 5
> >          TODO = 6
> > +        INTRO = 7
> >
> >          @staticmethod
> >          def from_string(kind: str) -> 'QAPIDoc.Kind':
> > @@ -748,7 +749,7 @@ def has_features(self) -> bool:
> >      def end(self) -> None:
> >          for section in self.all_sections:
> >              section.text = section.text.strip('\n')
> > -            if section.kind != QAPIDoc.Kind.PLAIN and section.text == '':
> > +            if not (section.kind.name in ("INTRO", "PLAIN") or section.text):
> >                  raise QAPISemError(
> >                      section.info, "text required after '%s:'" % section.kind)
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.