John Snow <js...@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 <js...@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 <arm...@redhat.com>


Reply via email to