All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: qemu-devel@nongnu.org, "Mads Ynddal" <mads@ynddal.dk>,
	"Jiri Pirko" <jiri@resnulli.us>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Michael Roth" <michael.roth@amd.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
	"Victor Toso de Carvalho" <victortoso@redhat.com>,
	"Cédric Le Goater" <clg@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-block@nongnu.org, "Ani Sinha" <anisinha@redhat.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Kevin Wolf" <kwolf@redhat.com>, "Peter Xu" <peterx@redhat.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Lukas Straub" <lukasstraub2@web.de>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"Hanna Reitz" <hreitz@redhat.com>,
	"Konstantin Kostiuk" <kkostiuk@redhat.com>
Subject: Re: [PATCH v2 14/21] docs/qapidoc: factor out do_parse()
Date: Fri, 28 Jun 2024 15:08:48 +0200	[thread overview]
Message-ID: <87tthdxli7.fsf@pond.sub.org> (raw)
In-Reply-To: <20240626222128.406106-15-jsnow@redhat.com> (John Snow's message of "Wed, 26 Jun 2024 18:21:20 -0400")

John Snow <jsnow@redhat.com> writes:

> Factor out the compatibility parser helper so it can be shared by other
> directives.

Suggest "Factor out the compatibility parser helper into a base class,
so it can be shared by other directives."

>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  docs/sphinx/qapidoc.py | 64 +++++++++++++++++++++++-------------------
>  1 file changed, 35 insertions(+), 29 deletions(-)
>
> diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
> index efcd84656fa..43dd99e21e6 100644
> --- a/docs/sphinx/qapidoc.py
> +++ b/docs/sphinx/qapidoc.py
> @@ -494,7 +494,41 @@ def visit_module(self, name):
>          super().visit_module(name)
>  
>  
> -class QAPIDocDirective(Directive):
> +class NestedDirective(Directive):
> +    def run(self):
> +        raise NotImplementedError

Should this class be abstract?

> +
> +    def do_parse(self, rstlist, node):
> +        """
> +        Parse rST source lines and add them to the specified node
> +
> +        Take the list of rST source lines rstlist, parse them as
> +        rST, and add the resulting docutils nodes as children of node.
> +        The nodes are parsed in a way that allows them to include
> +        subheadings (titles) without confusing the rendering of
> +        anything else.
> +        """
> +        # This is from kerneldoc.py -- it works around an API change in
> +        # Sphinx between 1.6 and 1.7. Unlike kerneldoc.py, we use
> +        # sphinx.util.nodes.nested_parse_with_titles() rather than the
> +        # plain self.state.nested_parse(), and so we can drop the saving
> +        # of title_styles and section_level that kerneldoc.py does,
> +        # because nested_parse_with_titles() does that for us.
> +        if USE_SSI:
> +            with switch_source_input(self.state, rstlist):
> +                nested_parse_with_titles(self.state, rstlist, node)
> +        else:
> +            save = self.state.memo.reporter
> +            self.state.memo.reporter = AutodocReporter(
> +                rstlist, self.state.memo.reporter
> +            )
> +            try:
> +                nested_parse_with_titles(self.state, rstlist, node)
> +            finally:
> +                self.state.memo.reporter = save
> +
> +
> +class QAPIDocDirective(NestedDirective):
>      """Extract documentation from the specified QAPI .json file"""
>  
>      required_argument = 1
> @@ -532,34 +566,6 @@ def run(self):
>              # so they are displayed nicely to the user
>              raise ExtensionError(str(err)) from err
>  
> -    def do_parse(self, rstlist, node):
> -        """Parse rST source lines and add them to the specified node
> -
> -        Take the list of rST source lines rstlist, parse them as
> -        rST, and add the resulting docutils nodes as children of node.
> -        The nodes are parsed in a way that allows them to include
> -        subheadings (titles) without confusing the rendering of
> -        anything else.
> -        """
> -        # This is from kerneldoc.py -- it works around an API change in
> -        # Sphinx between 1.6 and 1.7. Unlike kerneldoc.py, we use
> -        # sphinx.util.nodes.nested_parse_with_titles() rather than the
> -        # plain self.state.nested_parse(), and so we can drop the saving
> -        # of title_styles and section_level that kerneldoc.py does,
> -        # because nested_parse_with_titles() does that for us.
> -        if USE_SSI:
> -            with switch_source_input(self.state, rstlist):
> -                nested_parse_with_titles(self.state, rstlist, node)
> -        else:
> -            save = self.state.memo.reporter
> -            self.state.memo.reporter = AutodocReporter(
> -                rstlist, self.state.memo.reporter
> -            )
> -            try:
> -                nested_parse_with_titles(self.state, rstlist, node)
> -            finally:
> -                self.state.memo.reporter = save
> -
>  
>  def setup(app):
>      """Register qapi-doc directive with Sphinx"""

Reviewed-by: Markus Armbruster <armbru@redhat.com>



  reply	other threads:[~2024-06-28 13:10 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-26 22:21 [PATCH v2 00/21] qapi: convert "Note" and "Example" sections to rST John Snow
2024-06-26 22:21 ` [PATCH v2 01/21] [DO-NOT-MERGE]: Add some ad-hoc linting helpers John Snow
2024-06-26 22:21 ` [PATCH v2 02/21] qapi: linter fixups John Snow
2024-06-26 22:21 ` [PATCH v2 03/21] docs/qapidoc: remove unused intersperse function John Snow
2024-06-27  6:02   ` Markus Armbruster
2024-06-27  6:12     ` John Snow
2024-06-27 10:46     ` Markus Armbruster
2024-06-27 10:43   ` Markus Armbruster
2024-06-26 22:21 ` [PATCH v2 04/21] docs/qapidoc: delint a tiny portion of the module John Snow
2024-06-28  7:29   ` Markus Armbruster
2024-06-28 14:36     ` John Snow
2024-06-26 22:21 ` [PATCH v2 05/21] qapi/parser: preserve indentation in QAPIDoc sections John Snow
2024-06-27  6:25   ` Markus Armbruster
2024-06-27  6:35     ` John Snow
2024-06-27 10:46     ` Markus Armbruster
2024-06-27 10:43   ` Markus Armbruster
2024-06-26 22:21 ` [PATCH v2 06/21] qapi/parser: fix comment parsing immediately following a doc block John Snow
2024-06-26 22:21 ` [PATCH v2 07/21] docs/qapidoc: fix nested parsing under untagged sections John Snow
2024-06-28  7:54   ` Markus Armbruster
2024-06-28 15:10     ` John Snow
2024-06-28 15:28       ` John Snow
2024-07-01  9:11       ` Markus Armbruster
2024-06-26 22:21 ` [PATCH v2 08/21] qapi: fix non-compliant JSON examples John Snow
2024-06-26 22:21 ` [PATCH v2 09/21] qapi: nail down convention that Errors sections are lists John Snow
2024-06-26 22:21 ` [PATCH v2 10/21] qapi: convert "Note" sections to plain rST John Snow
2024-06-28  9:51   ` Markus Armbruster
2024-06-28 15:44     ` John Snow
2024-07-01 15:08   ` Markus Armbruster
2024-06-26 22:21 ` [PATCH v2 11/21] qapi: update prose in note blocks John Snow
2024-06-26 22:21 ` [PATCH v2 12/21] qapi: add markup to " John Snow
2024-06-26 22:21 ` [PATCH v2 13/21] qapi/parser: don't parse rST markup as section headers John Snow
2024-06-27  7:47   ` Markus Armbruster
2024-06-26 22:21 ` [PATCH v2 14/21] docs/qapidoc: factor out do_parse() John Snow
2024-06-28 13:08   ` Markus Armbruster [this message]
2024-06-28 15:16     ` John Snow
2024-06-26 22:21 ` [PATCH v2 15/21] docs/qapidoc: create qmp-example directive John Snow
2024-06-28 13:24   ` Markus Armbruster
2024-06-28 15:24     ` John Snow
2024-06-26 22:21 ` [PATCH v2 16/21] docs/qapidoc: add QMP highlighting to annotated qmp-example blocks John Snow
2024-06-26 22:21 ` [PATCH v2 17/21] docs/sphinx: add CSS styling for qmp-example directive John Snow
2024-06-26 22:21 ` [PATCH v2 18/21] qapi: convert "Example" sections without titles John Snow
2024-06-26 22:21 ` [PATCH v2 19/21] qapi: convert "Example" sections with titles John Snow
2024-06-26 22:21 ` [PATCH v2 20/21] qapi: convert "Example" sections with longer prose John Snow
2024-06-26 22:21 ` [PATCH v2 21/21] qapi: remove "Example" doc section 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=87tthdxli7.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=anisinha@redhat.com \
    --cc=berrange@redhat.com \
    --cc=clg@redhat.com \
    --cc=eblake@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=jiri@resnulli.us \
    --cc=jsnow@redhat.com \
    --cc=kkostiuk@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lukasstraub2@web.de \
    --cc=mads@ynddal.dk \
    --cc=marcandre.lureau@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=michael.roth@amd.com \
    --cc=mst@redhat.com \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=victortoso@redhat.com \
    --cc=wangyanan55@huawei.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.