qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel <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 <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 13:06:55 -0400	[thread overview]
Message-ID: <CAFn=p-Zdcgh3nQnBbBpFbeXxp7_Hq4Z-M83CGecR9mm3uWJUvQ@mail.gmail.com> (raw)
In-Reply-To: <87plsd30qm.fsf@pond.sub.org>

[-- Attachment #1: Type: text/plain, Size: 8185 bytes --]

On Wed, Jun 19, 2024, 2:28 AM Markus Armbruster <armbru@redhat.com> wrote:

> 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.
>

Oh! I didn't realize it wasn't being used. That's certainly easier :)


> >      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...  ;)
>

Mildly. However, I do think black is "close enough" on most style issues
that I have absolutely no regret or hesitation using it for all new python
development.

(I've been using it a lot in hobby code the last year and I find it to be
remarkably helpful for my own consistency in style issues, it's
indispensable for me.)

So in this series, I start using it because I essentially wind up rewriting
this entire file and wanted an autoformatter so I could shut my brain off
for stuff like this.

A "flag day" as you call it is likely coming soon to python/ where I'll
start enforcing black standards. It just makes development easier to have a
tool that just always DTRT. When I move QAPI there, it'll get the same
treatment.


> >              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>
>

ありがとう

>

[-- Attachment #2: Type: text/html, Size: 11246 bytes --]

  reply	other threads:[~2024-06-19 17:08 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
2024-06-19 17:06     ` John Snow [this message]
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='CAFn=p-Zdcgh3nQnBbBpFbeXxp7_Hq4Z-M83CGecR9mm3uWJUvQ@mail.gmail.com' \
    --to=jsnow@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=anisinha@redhat.com \
    --cc=armbru@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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).