From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: qemu-devel@nongnu.org, "Stefan Hajnoczi" <stefanha@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Victor Toso de Carvalho" <victortoso@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Konstantin Kostiuk" <kkostiuk@redhat.com>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Lukas Straub" <lukasstraub2@web.de>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Mads Ynddal" <mads@ynddal.dk>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Stefan Berger" <stefanb@linux.vnet.ibm.com>,
"Peter Xu" <peterx@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
qemu-block@nongnu.org, "Jiri Pirko" <jiri@resnulli.us>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Kevin Wolf" <kwolf@redhat.com>, "Eric Blake" <eblake@redhat.com>
Subject: Re: [PATCH 03/13] docs/qapidoc: delint a tiny portion of the module
Date: Wed, 19 Jun 2024 08:28:17 +0200 [thread overview]
Message-ID: <87plsd30qm.fsf@pond.sub.org> (raw)
In-Reply-To: <20240619003012.1753577-4-jsnow@redhat.com> (John Snow's message of "Tue, 18 Jun 2024 20:30:02 -0400")
John Snow <jsnow@redhat.com> writes:
> In a forthcoming series that adds a new QMP documentation generator, it
> will be helpful to have a linting baseline. However, there's no need to
> shuffle around the deck chairs too much, because most of this code will
> be removed once that new qapidoc generator (the "transmogrifier") is in
> place.
>
> To ease my pain: just turn off the black auto-formatter for most, but
> not all, of qapidoc.py. This will help ensure that *new* code follows a
> coding standard without bothering too much with cleaning up the existing
> code.
>
> Code that I intend to keep is still subject to the delinting beam.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> docs/sphinx/qapidoc.py | 66 +++++++++++++++++++++++++-----------------
> 1 file changed, 40 insertions(+), 26 deletions(-)
>
> diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
> index f270b494f01..e675966defa 100644
> --- a/docs/sphinx/qapidoc.py
> +++ b/docs/sphinx/qapidoc.py
> @@ -28,33 +28,42 @@
> import re
>
> from docutils import nodes
> +from docutils.parsers.rst import Directive, directives
> from docutils.statemachine import ViewList
> -from docutils.parsers.rst import directives, Directive
> -from sphinx.errors import ExtensionError
> -from sphinx.util.nodes import nested_parse_with_titles
> -import sphinx
> -from qapi.gen import QAPISchemaVisitor
> from qapi.error import QAPIError, QAPISemError
> +from qapi.gen import QAPISchemaVisitor
> from qapi.schema import QAPISchema
>
> +import sphinx
> +from sphinx.errors import ExtensionError
> +from sphinx.util.nodes import nested_parse_with_titles
> +
>
> # Sphinx up to 1.6 uses AutodocReporter; 1.7 and later
> # use switch_source_input. Check borrowed from kerneldoc.py.
> -Use_SSI = sphinx.__version__[:3] >= '1.7'
> -if Use_SSI:
> +USE_SSI = sphinx.__version__[:3] >= "1.7"
> +if USE_SSI:
> from sphinx.util.docutils import switch_source_input
> else:
> - from sphinx.ext.autodoc import AutodocReporter
> + from sphinx.ext.autodoc import ( # pylint: disable=no-name-in-module
> + AutodocReporter,
> + )
>
>
> -__version__ = '1.0'
> +__version__ = "1.0"
>
>
> +# Disable black auto-formatter until re-enabled:
> +# fmt: off
> +
> # Function borrowed from pydash, which is under the MIT license
> def intersperse(iterable, separator):
> """Yield the members of *iterable* interspersed with *separator*."""
> iterable = iter(iterable)
> - yield next(iterable)
> + try:
> + yield next(iterable)
> + except StopIteration:
> + return
This gets rid of pylint's
docs/sphinx/qapidoc.py:82:10: R1708: Do not raise StopIteration in generator, use return statement instead (stop-iteration-return)
I considered the same change some time ago, and decided against it to
avoid deviating from pydash. StopIteration would be a programming error
here.
Please *delete* the function instead: commit fd62bff901b removed its
last use. I'd do it in a separate commit, but that's up to you.
> for item in iterable:
> yield separator
> yield item
> @@ -451,6 +460,10 @@ def get_document_nodes(self):
> return self._top_node.children
>
>
> +# Turn the black formatter on for the rest of the file.
> +# fmt: on
> +
> +
> class QAPISchemaGenDepVisitor(QAPISchemaVisitor):
> """A QAPI schema visitor which adds Sphinx dependencies each module
>
> @@ -458,34 +471,34 @@ class QAPISchemaGenDepVisitor(QAPISchemaVisitor):
> that the generated documentation output depends on the input
> schema file associated with each module in the QAPI input.
> """
> +
> def __init__(self, env, qapidir):
> self._env = env
> self._qapidir = qapidir
>
> def visit_module(self, name):
> if name != "./builtin":
> - qapifile = self._qapidir + '/' + name
> + qapifile = self._qapidir + "/" + name
The string literal quote changes are mildly annoying. But since by your
good work you're effectively appointing yourself maintainer of this
file... ;)
> self._env.note_dependency(os.path.abspath(qapifile))
> super().visit_module(name)
>
>
> class QAPIDocDirective(Directive):
> """Extract documentation from the specified QAPI .json file"""
> +
> required_argument = 1
> optional_arguments = 1
> - option_spec = {
> - 'qapifile': directives.unchanged_required
> - }
> + option_spec = {"qapifile": directives.unchanged_required}
> has_content = False
>
> def new_serialno(self):
> """Return a unique new ID string suitable for use as a node's ID"""
> env = self.state.document.settings.env
> - return 'qapidoc-%d' % env.new_serialno('qapidoc')
> + return "qapidoc-%d" % env.new_serialno("qapidoc")
>
> def run(self):
> env = self.state.document.settings.env
> - qapifile = env.config.qapidoc_srctree + '/' + self.arguments[0]
> + qapifile = env.config.qapidoc_srctree + "/" + self.arguments[0]
> qapidir = os.path.dirname(qapifile)
>
> try:
> @@ -523,13 +536,14 @@ def do_parse(self, rstlist, node):
> # 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:
> + 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)
> + rstlist, self.state.memo.reporter
> + )
> try:
> nested_parse_with_titles(self.state, rstlist, node)
> finally:
> @@ -537,12 +551,12 @@ def do_parse(self, rstlist, node):
>
>
> def setup(app):
> - """ Register qapi-doc directive with Sphinx"""
> - app.add_config_value('qapidoc_srctree', None, 'env')
> - app.add_directive('qapi-doc', QAPIDocDirective)
> + """Register qapi-doc directive with Sphinx"""
> + app.add_config_value("qapidoc_srctree", None, "env")
> + app.add_directive("qapi-doc", QAPIDocDirective)
>
> - return dict(
> - version=__version__,
> - parallel_read_safe=True,
> - parallel_write_safe=True
> - )
> + return {
> + "version": __version__,
> + "parallel_read_safe": True,
> + "parallel_write_safe": True,
> + }
With intersperse() deleted
Reviewed-by: Markus Armbruster <armbru@redhat.com>
next prev parent reply other threads:[~2024-06-19 6:29 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-19 0:29 [PATCH 00/13] qapi: convert "Note" and "Example" sections to rST John Snow
2024-06-19 0:30 ` [PATCH 01/13] [DO-NOT-MERGE]: Add some ad-hoc linting helpers John Snow
2024-06-19 0:30 ` [PATCH 02/13] qapi: linter fixups John Snow
2024-06-19 0:30 ` [PATCH 03/13] docs/qapidoc: delint a tiny portion of the module John Snow
2024-06-19 6:28 ` Markus Armbruster [this message]
2024-06-19 17:06 ` John Snow
2024-06-19 0:30 ` [PATCH 04/13] qapi/parser: preserve indentation in QAPIDoc sections John Snow
2024-06-19 12:03 ` Markus Armbruster
2024-06-20 14:47 ` John Snow
2024-06-20 15:07 ` Markus Armbruster
2024-06-20 15:14 ` John Snow
2024-06-21 6:38 ` Markus Armbruster
2024-06-21 17:28 ` John Snow
2024-06-22 8:48 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 05/13] qapi/parser: fix comment parsing immediately following a doc block John Snow
2024-06-19 12:04 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 06/13] docs/qapidoc: fix nested parsing under untagged sections John Snow
2024-06-19 12:05 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 07/13] qapi: fix non-compliant JSON examples John Snow
2024-06-19 12:07 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 08/13] qapi: ensure all errors sections are uniformly typset John Snow
2024-06-19 12:10 ` Markus Armbruster
2024-06-20 15:25 ` John Snow
2024-06-19 0:30 ` [PATCH 09/13] qapi: convert "Note" sections to plain rST John Snow
2024-06-19 12:49 ` Markus Armbruster
2024-06-20 13:35 ` Markus Armbruster
2024-06-20 15:46 ` John Snow
2024-06-20 18:44 ` John Snow
2024-06-21 12:23 ` Markus Armbruster
2024-06-21 17:41 ` John Snow
2024-06-22 8:52 ` Markus Armbruster
2024-06-20 15:39 ` John Snow
2024-06-21 10:20 ` Markus Armbruster
2024-06-19 13:07 ` Markus Armbruster
2024-06-20 15:40 ` John Snow
2024-06-21 6:39 ` Markus Armbruster
2024-06-20 13:54 ` Markus Armbruster
2024-06-20 15:52 ` John Snow
2024-06-21 12:08 ` Markus Armbruster
2024-06-21 17:33 ` John Snow
2024-06-19 0:30 ` [PATCH 10/13] qapi: update prose in note blocks John Snow
2024-06-19 12:18 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 11/13] qapi: add markup to " John Snow
2024-06-19 12:19 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 12/13] qapi/parser: don't parse rST markup as section headers John Snow
2024-06-19 12:55 ` Markus Armbruster
2024-06-19 0:30 ` [PATCH 13/13] qapi: convert "Example" sections to rST John Snow
2024-06-19 13:20 ` Markus Armbruster
2024-06-19 17:32 ` John Snow
2024-06-26 5:17 ` Markus Armbruster
2024-06-26 14:39 ` John Snow
2024-06-26 5:35 ` [PATCH 00/13] qapi: convert "Note" and " Markus Armbruster
2024-07-01 20:28 ` Michael S. Tsirkin
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=87plsd30qm.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=stefanb@linux.vnet.ibm.com \
--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.