From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "John Snow" <jsnow@redhat.com>, "Cleber Rosa" <crosa@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Beraldo Leal" <bleal@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PATCH 7/8] python/qapi: move scripts/qapi to python/qemu/qapi
Date: Mon, 19 Aug 2024 20:23:16 -0400 [thread overview]
Message-ID: <20240820002318.1380276-8-jsnow@redhat.com> (raw)
In-Reply-To: <20240820002318.1380276-1-jsnow@redhat.com>
This is being done for the sake of unifying the linting and static type
analysis configurations between scripts/qapi and python/qemu/*.
With this change, the qapi module will now be checked by mypy, flake8,
pylint, isort etc under all python versions from 3.8 through 3.13 under
a variety of different dependency configurations in the GitLab testing
pipelines.
The tests can be run locally, as always:
> cd qemu.git/python
> make check-minreqs
> make check-tox
> make check-dev
"check-minreqs" is the must-pass GitLab test.
"check-tox" is the optional allowed-to-fail GitLab test.
Signed-off-by: John Snow <jsnow@redhat.com>
---
MAINTAINERS | 2 +-
docs/conf.py | 2 +-
docs/sphinx/qapidoc.py | 6 ++---
meson.build | 28 ++++++++++-----------
{scripts => python/qemu}/qapi/.flake8 | 0
{scripts => python/qemu}/qapi/.isort.cfg | 0
{scripts => python/qemu}/qapi/__init__.py | 0
{scripts => python/qemu}/qapi/commands.py | 0
{scripts => python/qemu}/qapi/common.py | 0
{scripts => python/qemu}/qapi/error.py | 0
{scripts => python/qemu}/qapi/events.py | 0
{scripts => python/qemu}/qapi/expr.py | 0
{scripts => python/qemu}/qapi/gen.py | 0
{scripts => python/qemu}/qapi/introspect.py | 0
{scripts => python/qemu}/qapi/main.py | 0
{scripts => python/qemu}/qapi/mypy.ini | 0
{scripts => python/qemu}/qapi/parser.py | 0
{scripts => python/qemu}/qapi/pylintrc | 0
{scripts => python/qemu}/qapi/schema.py | 0
{scripts => python/qemu}/qapi/source.py | 0
{scripts => python/qemu}/qapi/types.py | 0
{scripts => python/qemu}/qapi/visit.py | 0
python/setup.cfg | 1 +
scripts/qapi-gen.py | 4 ++-
tests/qapi-schema/meson.build | 2 +-
tests/qapi-schema/test-qapi.py | 4 +--
26 files changed, 26 insertions(+), 23 deletions(-)
rename {scripts => python/qemu}/qapi/.flake8 (100%)
rename {scripts => python/qemu}/qapi/.isort.cfg (100%)
rename {scripts => python/qemu}/qapi/__init__.py (100%)
rename {scripts => python/qemu}/qapi/commands.py (100%)
rename {scripts => python/qemu}/qapi/common.py (100%)
rename {scripts => python/qemu}/qapi/error.py (100%)
rename {scripts => python/qemu}/qapi/events.py (100%)
rename {scripts => python/qemu}/qapi/expr.py (100%)
rename {scripts => python/qemu}/qapi/gen.py (100%)
rename {scripts => python/qemu}/qapi/introspect.py (100%)
rename {scripts => python/qemu}/qapi/main.py (100%)
rename {scripts => python/qemu}/qapi/mypy.ini (100%)
rename {scripts => python/qemu}/qapi/parser.py (100%)
rename {scripts => python/qemu}/qapi/pylintrc (100%)
rename {scripts => python/qemu}/qapi/schema.py (100%)
rename {scripts => python/qemu}/qapi/source.py (100%)
rename {scripts => python/qemu}/qapi/types.py (100%)
rename {scripts => python/qemu}/qapi/visit.py (100%)
diff --git a/MAINTAINERS b/MAINTAINERS
index 3584d6a6c6d..1912940631d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3214,7 +3214,7 @@ F: tests/unit/test-qapi-*.c
F: tests/unit/test-qmp-*.c
F: tests/unit/test-visitor-serialization.c
F: scripts/qapi-gen.py
-F: scripts/qapi/*
+F: python/qemu/qapi/*
F: docs/sphinx/qapidoc.py
F: docs/devel/qapi*
T: git https://repo.or.cz/qemu/armbru.git qapi-next
diff --git a/docs/conf.py b/docs/conf.py
index 876f6768815..6600db976b3 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -46,7 +46,7 @@
# Our extensions are in docs/sphinx; the qapidoc extension requires
# the QAPI modules from scripts/.
sys.path.insert(0, os.path.join(qemu_docdir, "sphinx"))
-sys.path.insert(0, os.path.join(qemu_docdir, "../scripts"))
+sys.path.insert(0, os.path.join(qemu_docdir, "../python"))
# -- General configuration ------------------------------------------------
diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
index 738b2450fb1..777fd1ac836 100644
--- a/docs/sphinx/qapidoc.py
+++ b/docs/sphinx/qapidoc.py
@@ -33,9 +33,9 @@
from docutils import nodes
from docutils.parsers.rst import Directive, directives
from docutils.statemachine import ViewList
-from qapi.error import QAPIError, QAPISemError
-from qapi.gen import QAPISchemaVisitor
-from qapi.schema import QAPISchema
+from qemu.qapi.error import QAPIError, QAPISemError
+from qemu.qapi.gen import QAPISchemaVisitor
+from qemu.qapi.schema import QAPISchema
from sphinx import addnodes
from sphinx.directives.code import CodeBlock
diff --git a/meson.build b/meson.build
index fbda17c987e..f96c9bebe0c 100644
--- a/meson.build
+++ b/meson.build
@@ -3274,20 +3274,20 @@ genh += configure_file(output: 'config-host.h', configuration: config_host_data)
hxtool = find_program('scripts/hxtool')
shaderinclude = find_program('scripts/shaderinclude.py')
qapi_gen = find_program('scripts/qapi-gen.py')
-qapi_gen_depends = [ meson.current_source_dir() / 'scripts/qapi/__init__.py',
- meson.current_source_dir() / 'scripts/qapi/commands.py',
- meson.current_source_dir() / 'scripts/qapi/common.py',
- meson.current_source_dir() / 'scripts/qapi/error.py',
- meson.current_source_dir() / 'scripts/qapi/events.py',
- meson.current_source_dir() / 'scripts/qapi/expr.py',
- meson.current_source_dir() / 'scripts/qapi/gen.py',
- meson.current_source_dir() / 'scripts/qapi/introspect.py',
- meson.current_source_dir() / 'scripts/qapi/main.py',
- meson.current_source_dir() / 'scripts/qapi/parser.py',
- meson.current_source_dir() / 'scripts/qapi/schema.py',
- meson.current_source_dir() / 'scripts/qapi/source.py',
- meson.current_source_dir() / 'scripts/qapi/types.py',
- meson.current_source_dir() / 'scripts/qapi/visit.py',
+qapi_gen_depends = [ meson.current_source_dir() / 'python/qemu/qapi/__init__.py',
+ meson.current_source_dir() / 'python/qemu/qapi/commands.py',
+ meson.current_source_dir() / 'python/qemu/qapi/common.py',
+ meson.current_source_dir() / 'python/qemu/qapi/error.py',
+ meson.current_source_dir() / 'python/qemu/qapi/events.py',
+ meson.current_source_dir() / 'python/qemu/qapi/expr.py',
+ meson.current_source_dir() / 'python/qemu/qapi/gen.py',
+ meson.current_source_dir() / 'python/qemu/qapi/introspect.py',
+ meson.current_source_dir() / 'python/qemu/qapi/main.py',
+ meson.current_source_dir() / 'python/qemu/qapi/parser.py',
+ meson.current_source_dir() / 'python/qemu/qapi/schema.py',
+ meson.current_source_dir() / 'python/qemu/qapi/source.py',
+ meson.current_source_dir() / 'python/qemu/qapi/types.py',
+ meson.current_source_dir() / 'python/qemu/qapi/visit.py',
meson.current_source_dir() / 'scripts/qapi-gen.py'
]
diff --git a/scripts/qapi/.flake8 b/python/qemu/qapi/.flake8
similarity index 100%
rename from scripts/qapi/.flake8
rename to python/qemu/qapi/.flake8
diff --git a/scripts/qapi/.isort.cfg b/python/qemu/qapi/.isort.cfg
similarity index 100%
rename from scripts/qapi/.isort.cfg
rename to python/qemu/qapi/.isort.cfg
diff --git a/scripts/qapi/__init__.py b/python/qemu/qapi/__init__.py
similarity index 100%
rename from scripts/qapi/__init__.py
rename to python/qemu/qapi/__init__.py
diff --git a/scripts/qapi/commands.py b/python/qemu/qapi/commands.py
similarity index 100%
rename from scripts/qapi/commands.py
rename to python/qemu/qapi/commands.py
diff --git a/scripts/qapi/common.py b/python/qemu/qapi/common.py
similarity index 100%
rename from scripts/qapi/common.py
rename to python/qemu/qapi/common.py
diff --git a/scripts/qapi/error.py b/python/qemu/qapi/error.py
similarity index 100%
rename from scripts/qapi/error.py
rename to python/qemu/qapi/error.py
diff --git a/scripts/qapi/events.py b/python/qemu/qapi/events.py
similarity index 100%
rename from scripts/qapi/events.py
rename to python/qemu/qapi/events.py
diff --git a/scripts/qapi/expr.py b/python/qemu/qapi/expr.py
similarity index 100%
rename from scripts/qapi/expr.py
rename to python/qemu/qapi/expr.py
diff --git a/scripts/qapi/gen.py b/python/qemu/qapi/gen.py
similarity index 100%
rename from scripts/qapi/gen.py
rename to python/qemu/qapi/gen.py
diff --git a/scripts/qapi/introspect.py b/python/qemu/qapi/introspect.py
similarity index 100%
rename from scripts/qapi/introspect.py
rename to python/qemu/qapi/introspect.py
diff --git a/scripts/qapi/main.py b/python/qemu/qapi/main.py
similarity index 100%
rename from scripts/qapi/main.py
rename to python/qemu/qapi/main.py
diff --git a/scripts/qapi/mypy.ini b/python/qemu/qapi/mypy.ini
similarity index 100%
rename from scripts/qapi/mypy.ini
rename to python/qemu/qapi/mypy.ini
diff --git a/scripts/qapi/parser.py b/python/qemu/qapi/parser.py
similarity index 100%
rename from scripts/qapi/parser.py
rename to python/qemu/qapi/parser.py
diff --git a/scripts/qapi/pylintrc b/python/qemu/qapi/pylintrc
similarity index 100%
rename from scripts/qapi/pylintrc
rename to python/qemu/qapi/pylintrc
diff --git a/scripts/qapi/schema.py b/python/qemu/qapi/schema.py
similarity index 100%
rename from scripts/qapi/schema.py
rename to python/qemu/qapi/schema.py
diff --git a/scripts/qapi/source.py b/python/qemu/qapi/source.py
similarity index 100%
rename from scripts/qapi/source.py
rename to python/qemu/qapi/source.py
diff --git a/scripts/qapi/types.py b/python/qemu/qapi/types.py
similarity index 100%
rename from scripts/qapi/types.py
rename to python/qemu/qapi/types.py
diff --git a/scripts/qapi/visit.py b/python/qemu/qapi/visit.py
similarity index 100%
rename from scripts/qapi/visit.py
rename to python/qemu/qapi/visit.py
diff --git a/python/setup.cfg b/python/setup.cfg
index 58dba90f815..d1582f74ddd 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -28,6 +28,7 @@ packages =
qemu.qmp
qemu.machine
qemu.utils
+ qemu.qapi
[options.package_data]
* = py.typed
diff --git a/scripts/qapi-gen.py b/scripts/qapi-gen.py
index f3518d29a54..42912c91716 100644
--- a/scripts/qapi-gen.py
+++ b/scripts/qapi-gen.py
@@ -11,9 +11,11 @@
execution environment.
"""
+import os
import sys
-from qapi import main
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'python'))
+from qemu.qapi import main
if __name__ == '__main__':
sys.exit(main.main())
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 0f479d93170..080444d0cd4 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -1,5 +1,5 @@
test_env = environment()
-test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
+test_env.set('PYTHONPATH', meson.project_source_root() / 'python')
test_env.set('PYTHONIOENCODING', 'utf-8')
schemas = [
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index 7e3f9f4aa1f..dcc0d949971 100755
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -18,8 +18,8 @@
import sys
from io import StringIO
-from qapi.error import QAPIError
-from qapi.schema import QAPISchema, QAPISchemaVisitor
+from qemu.qapi.error import QAPIError
+from qemu.qapi.schema import QAPISchema, QAPISchemaVisitor
class QAPISchemaTestVisitor(QAPISchemaVisitor):
--
2.45.0
next prev parent reply other threads:[~2024-08-20 0:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 0:23 [PATCH 0/8] move qapi under python/qemu/ John Snow
2024-08-20 0:23 ` [PATCH 1/8] python/qapi: correct re.Match type hints for 3.13 John Snow
2024-08-20 10:19 ` Philippe Mathieu-Daudé
2024-08-20 0:23 ` [PATCH 2/8] python/qapi: change "FIXME" to "TODO" John Snow
2024-08-30 11:09 ` Markus Armbruster
2024-08-30 18:33 ` John Snow
2024-08-31 6:02 ` Markus Armbruster
2024-09-03 16:44 ` John Snow
2024-08-20 0:23 ` [PATCH 3/8] python/qapi: add pylint pragmas John Snow
2024-08-20 0:23 ` [PATCH 4/8] python/qapi: remove outdated pragmas John Snow
2024-08-20 0:23 ` [PATCH 5/8] python/qapi: ignore missing docstrings in pylint John Snow
2024-08-20 0:23 ` [PATCH 6/8] python: allow short names for variables on older pylint John Snow
2024-08-20 0:23 ` John Snow [this message]
2024-08-30 11:20 ` [PATCH 7/8] python/qapi: move scripts/qapi to python/qemu/qapi Markus Armbruster
2024-08-30 11:29 ` Daniel P. Berrangé
2024-08-30 17:53 ` John Snow
2024-08-30 18:22 ` John Snow
2024-09-02 8:51 ` Daniel P. Berrangé
2024-09-02 9:35 ` Peter Maydell
2024-09-03 17:31 ` John Snow
2024-08-20 0:23 ` [PATCH 8/8] python/qapi: remove redundant linter configuration John Snow
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=20240820002318.1380276-8-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.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.