|
From: | John Snow |
Subject: | Re: [PATCH v2 05/38] qapi: Remove wildcard includes |
Date: | Thu, 24 Sep 2020 16:04:44 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 |
On 9/23/20 1:21 PM, John Snow wrote:
On 9/23/20 9:27 AM, Cleber Rosa wrote:On Tue, Sep 22, 2020 at 05:00:28PM -0400, John Snow wrote:Wildcard includes become hard to manage when refactoring and dealing with circular dependencies with strictly typed mypy. flake8 also flags each one as a warning, as it is not smart enough to know which names exist in the imported file. Remove them and include things explicitly by name instead. Signed-off-by: John Snow <jsnow@redhat.com> ---  scripts/qapi/commands.py  | 6 +++++-  scripts/qapi/events.py    | 7 ++++++-  scripts/qapi/gen.py       | 12 +++++++++---  scripts/qapi/introspect.py | 7 ++++++-  scripts/qapi/types.py     | 8 +++++++-  scripts/qapi/visit.py     | 10 +++++++++-  6 files changed, 42 insertions(+), 8 deletions(-) diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py index ce5926146a..e1df0e341f 100644 --- a/scripts/qapi/commands.py +++ b/scripts/qapi/commands.py @@ -13,7 +13,11 @@  See the COPYING file in the top-level directory.  """ -from .common import * +from .common import ( +   build_params, +   c_name, +   mcgen, +)  from .gen import QAPIGenCCode, QAPISchemaModularCVisitor, ifcontextIs this import style being suggested or enforced by any tool? I've been using isort with very good results (both as a check tool, and as an emacs extension). For instance, the block about would look like:    from .common import build_params, c_name, mcgen    from .gen import QAPIGenCCode, QAPISchemaModularCVisitor, ifcontextNot enforced by any tool, no. Just subjective preference for git-friendly import lines. They conflict on rebase a lot less.I have been using emacs sort-lines to order the names in a group.diff --git a/scripts/qapi/events.py b/scripts/qapi/events.py index 0467272438..6b3afa14d7 100644 --- a/scripts/qapi/events.py +++ b/scripts/qapi/events.py @@ -12,7 +12,12 @@  See the COPYING file in the top-level directory.  """ -from .common import * +from .common import ( +   build_params, +   c_enum_const, +   c_name, +   mcgen, +)  from .gen import QAPISchemaModularCVisitor, ifcontext  from .schema import QAPISchemaEnumMember  from .types import gen_enum, gen_enum_lookup diff --git a/scripts/qapi/gen.py b/scripts/qapi/gen.py index 8df19a0df0..11472ba043 100644 --- a/scripts/qapi/gen.py +++ b/scripts/qapi/gen.py @@ -11,13 +11,19 @@  # This work is licensed under the terms of the GNU GPL, version 2.  # See the COPYING file in the top-level directory. - +from contextlib import contextmanager  import errno  import os  import re -from contextlib import contextmanager -from .common import * +from .common import ( +   c_fname, +   gen_endif, +   gen_if, +   guardend, +   guardstart, +   mcgen, +)  from .schema import QAPISchemaVisitor diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py index 2a34cd1e8e..b036fcf9ce 100644 --- a/scripts/qapi/introspect.py +++ b/scripts/qapi/introspect.py @@ -10,7 +10,12 @@  See the COPYING file in the top-level directory.  """ -from .common import * +from .common import ( +   c_name, +   gen_endif, +   gen_if, +   mcgen, +)  from .gen import QAPISchemaMonolithicCVisitor  from .schema import (QAPISchemaArrayType, QAPISchemaBuiltinType,                       QAPISchemaType) diff --git a/scripts/qapi/types.py b/scripts/qapi/types.py index ca9a5aacb3..53b47f9e58 100644 --- a/scripts/qapi/types.py +++ b/scripts/qapi/types.py @@ -13,7 +13,13 @@  # See the COPYING file in the top-level directory.  """ -from .common import * +from .common import ( +   c_enum_const, +   c_name, +   gen_endif, +   gen_if, +   mcgen, +)  from .gen import QAPISchemaModularCVisitor, ifcontext  from .schema import QAPISchemaEnumMember, QAPISchemaObjectType diff --git a/scripts/qapi/visit.py b/scripts/qapi/visit.py index 7850f6e848..ea277e7704 100644 --- a/scripts/qapi/visit.py +++ b/scripts/qapi/visit.py @@ -13,7 +13,15 @@  See the COPYING file in the top-level directory.  """ -from .common import * +from .common import ( +   c_enum_const, +   c_name, +   gen_endif, +   gen_if, +   mcgen, +   pop_indent, +   push_indent, +)And here, isort will add the paranthesis (it does so based on space demands):   from .common import (c_enum_const, c_name, gen_endif, gen_if, mcgen,                         pop_indent, push_indent)    from .gen import QAPISchemaModularCVisitor, ifcontext    from .schema import QAPISchemaObjectType Other than those suggestions, it LGTM.OK. We can add a check that asserts that isort(file) == file to keep our include regimes consistent. I'll look into the tool, but it will be after this marathon of a series.Here's a gitlab issue I made on my QEMU fork to help me keep track of Python-related issues that I intend to use: https://gitlab.com/jsnow/qemu/-/issues/6
I've found that`isort --force-sort-within-sections --force-grid-wrap 4 --multi-line 3 --trailing-comma`
is pretty close to what I was already doing, so I'll adopt this for the respin on good faith that nobody will retract an R-B for new import orderings.
force sort: I prefer to sort by module, so I intersperse "from x" and "import x" style in one section. This keeps the module reference absolutely consistent regardless of HOW we import from it.
force grid: 4 or more imports from a module will get wrapped using the one-per-line style.
multi-line: '3' just refers to the one-per-line style of imports that I already use.
trailing comma: A little buddy that hangs out with you.
Reviewed-by: Cleber Rosa <crosa@redhat.com>Thanks! --js
[Prev in Thread] | Current Thread | [Next in Thread] |