qapi: enforce import order/styling with isort

While we're mucking around with imports, we might as well formalize the
style we use. Let's use isort to do it for us.

lines_after_imports=2: Use two lines after imports, to match PEP8's
desire to have "two lines before and after" class definitions, which are
likely to start immediately after imports.

force_sort_within_sections: Intermingles "from x" and "import x" style
statements, such that sorting is always performed strictly on the module
name itself.

force_grid_wrap=4: Four or more imports from a single module will force
the one-per-line style that's more git-friendly. This will generally
happen for 'typing' imports.

multi_line_output=3: Uses the one-per-line indented style for long
imports.

include_trailing_comma: Adds a comma to the last import in a group,
which makes git conflicts nicer to deal with, generally.

line_length: 72 is chosen to match PEP8's "docstrings and comments" line
length limit. If you have a single line import that exceeds 72
characters, your names are too long!

Suggested-by: Cleber Rosa <crosa@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201009161558.107041-8-jsnow@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
John Snow 2020-10-09 12:15:29 -04:00 committed by Markus Armbruster
parent 5af8263d40
commit 67fea57502
5 changed files with 16 additions and 5 deletions

7
scripts/qapi/.isort.cfg Normal file
View File

@ -0,0 +1,7 @@
[settings]
force_grid_wrap=4
force_sort_within_sections=True
include_trailing_comma=True
line_length=72
lines_after_imports=2
multi_line_output=3

View File

@ -14,8 +14,9 @@
# This work is licensed under the terms of the GNU GPL, version 2. # This work is licensed under the terms of the GNU GPL, version 2.
# See the COPYING file in the top-level directory. # See the COPYING file in the top-level directory.
import re
from collections import OrderedDict from collections import OrderedDict
import re
from .common import c_name from .common import c_name
from .error import QAPISemError from .error import QAPISemError

View File

@ -17,8 +17,11 @@ from .common import (
mcgen, mcgen,
) )
from .gen import QAPISchemaMonolithicCVisitor from .gen import QAPISchemaMonolithicCVisitor
from .schema import (QAPISchemaArrayType, QAPISchemaBuiltinType, from .schema import (
QAPISchemaType) QAPISchemaArrayType,
QAPISchemaBuiltinType,
QAPISchemaType,
)
def _make_tree(obj, ifcond, features, extra=None): def _make_tree(obj, ifcond, features, extra=None):

View File

@ -14,9 +14,9 @@
# This work is licensed under the terms of the GNU GPL, version 2. # This work is licensed under the terms of the GNU GPL, version 2.
# See the COPYING file in the top-level directory. # See the COPYING file in the top-level directory.
from collections import OrderedDict
import os import os
import re import re
from collections import OrderedDict
from .error import QAPIParseError, QAPISemError from .error import QAPIParseError, QAPISemError
from .source import QAPISourceInfo from .source import QAPISourceInfo

View File

@ -14,9 +14,9 @@
# TODO catching name collisions in generated code would be nice # TODO catching name collisions in generated code would be nice
from collections import OrderedDict
import os import os
import re import re
from collections import OrderedDict
from .common import c_name, pointer_suffix from .common import c_name, pointer_suffix
from .error import QAPIError, QAPISemError from .error import QAPIError, QAPISemError