python: add qemu package installer
Add setup.cfg and setup.py, necessary for installing a package via
pip. Add a ReST document (PACKAGE.rst) explaining the basics of what
this package is for and who to contact for more information. This
document will be used as the landing page for the package on PyPI.
List the subpackages we intend to package by name instead of using
find_namespace because find_namespace will naively also packages tests,
things it finds in the dist/ folder, etc. I could not figure out how to
modify this behavior; adding allow/deny lists to setuptools kept
changing the packaged hierarchy. This works, roll with it.
I am not yet using a pyproject.toml style package manifest, because
"editable" installs are not defined (yet?) by PEP-517/518.
I consider editable installs crucial for development, though they have
(apparently) always been somewhat poorly defined.
Pip now (19.2 and later) now supports editable installs for projects
using pyproject.toml manifests, but might require the use of the
--no-use-pep517 flag, which somewhat defeats the point. Full support for
setup.py-less editable installs was not introduced until pip 21.1.1:
https://github.com/pypa/pip/pull/9547/commits/7a95720e796a5e56481c1cc20b6ce6249c50f357
For now, while the dust settles, stick with the de-facto
setup.py/setup.cfg combination supported by setuptools. It will be worth
re-evaluating this point again in the future when our supported build
platforms all ship a fairly modern pip.
Additional reading on this matter:
https://github.com/pypa/packaging-problems/issues/256
https://github.com/pypa/pip/issues/6334
https://github.com/pypa/pip/issues/6375
https://github.com/pypa/pip/issues/6434
https://github.com/pypa/pip/issues/6438
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:54 -04:00
|
|
|
[metadata]
|
|
|
|
|
name = qemu
|
python: add VERSION file
Python infrastructure as it exists today is not capable reliably of
single-sourcing a package version from a parent directory. The authors
of pip are working to correct this, but as of today this is not possible.
The problem is that when using pip to build and install a python
package, it copies files over to a temporary directory and performs its
build there. This loses access to any information in the parent
directory, including git itself.
Further, Python versions have a standard (PEP 440) that may or may not
follow QEMU's versioning. In general, it does; but naturally QEMU does
not follow PEP 440. To avoid any automatically-generated conflict, a
manual version file is preferred.
I am proposing:
- Python tooling follows the QEMU version, indirectly, but with a major
version of 0 to indicate that the API is not expected to be
stable. This would mean version 0.5.2.0, 0.5.1.1, 0.5.3.0, etc.
- In the event that a Python package needs to be updated independently
of the QEMU version, a pre-release alpha version should be preferred,
but *only* after inclusion to the qemu development or stable branches.
e.g. 0.5.2.0a1, 0.5.2.0a2, and so on should be preferred prior to
5.2.0's release.
- The Python core tooling makes absolutely no version compatibility
checks or constraints. It *may* work with releases of QEMU from the
past or future, but it is not required to.
i.e., "qemu.machine" will, for now, remain in lock-step with QEMU.
- We reserve the right to split the qemu package into independently
versioned subpackages at a later date. This might allow for us to
begin versioning QMP independently from QEMU at a later date, if
we so choose.
Implement this versioning scheme by adding a VERSION file and setting it
to 0.6.0.0a1.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-12-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:55 -04:00
|
|
|
version = file:VERSION
|
python: add qemu package installer
Add setup.cfg and setup.py, necessary for installing a package via
pip. Add a ReST document (PACKAGE.rst) explaining the basics of what
this package is for and who to contact for more information. This
document will be used as the landing page for the package on PyPI.
List the subpackages we intend to package by name instead of using
find_namespace because find_namespace will naively also packages tests,
things it finds in the dist/ folder, etc. I could not figure out how to
modify this behavior; adding allow/deny lists to setuptools kept
changing the packaged hierarchy. This works, roll with it.
I am not yet using a pyproject.toml style package manifest, because
"editable" installs are not defined (yet?) by PEP-517/518.
I consider editable installs crucial for development, though they have
(apparently) always been somewhat poorly defined.
Pip now (19.2 and later) now supports editable installs for projects
using pyproject.toml manifests, but might require the use of the
--no-use-pep517 flag, which somewhat defeats the point. Full support for
setup.py-less editable installs was not introduced until pip 21.1.1:
https://github.com/pypa/pip/pull/9547/commits/7a95720e796a5e56481c1cc20b6ce6249c50f357
For now, while the dust settles, stick with the de-facto
setup.py/setup.cfg combination supported by setuptools. It will be worth
re-evaluating this point again in the future when our supported build
platforms all ship a fairly modern pip.
Additional reading on this matter:
https://github.com/pypa/packaging-problems/issues/256
https://github.com/pypa/pip/issues/6334
https://github.com/pypa/pip/issues/6375
https://github.com/pypa/pip/issues/6434
https://github.com/pypa/pip/issues/6438
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:54 -04:00
|
|
|
maintainer = QEMU Developer Team
|
|
|
|
|
maintainer_email = qemu-devel@nongnu.org
|
|
|
|
|
url = https://www.qemu.org/
|
|
|
|
|
download_url = https://www.qemu.org/download/
|
|
|
|
|
description = QEMU Python Build, Debug and SDK tooling.
|
|
|
|
|
long_description = file:PACKAGE.rst
|
|
|
|
|
long_description_content_type = text/x-rst
|
|
|
|
|
classifiers =
|
|
|
|
|
Development Status :: 3 - Alpha
|
|
|
|
|
License :: OSI Approved :: GNU General Public License v2 (GPLv2)
|
|
|
|
|
Natural Language :: English
|
|
|
|
|
Operating System :: OS Independent
|
|
|
|
|
Programming Language :: Python :: 3 :: Only
|
2021-05-27 17:17:14 -04:00
|
|
|
Programming Language :: Python :: 3.9
|
|
|
|
|
Programming Language :: Python :: 3.10
|
2022-12-02 19:52:34 -05:00
|
|
|
Programming Language :: Python :: 3.11
|
2023-10-06 15:52:43 -04:00
|
|
|
Programming Language :: Python :: 3.12
|
2024-06-26 19:22:30 -04:00
|
|
|
Programming Language :: Python :: 3.13
|
2021-06-29 17:43:10 -04:00
|
|
|
Typing :: Typed
|
python: add qemu package installer
Add setup.cfg and setup.py, necessary for installing a package via
pip. Add a ReST document (PACKAGE.rst) explaining the basics of what
this package is for and who to contact for more information. This
document will be used as the landing page for the package on PyPI.
List the subpackages we intend to package by name instead of using
find_namespace because find_namespace will naively also packages tests,
things it finds in the dist/ folder, etc. I could not figure out how to
modify this behavior; adding allow/deny lists to setuptools kept
changing the packaged hierarchy. This works, roll with it.
I am not yet using a pyproject.toml style package manifest, because
"editable" installs are not defined (yet?) by PEP-517/518.
I consider editable installs crucial for development, though they have
(apparently) always been somewhat poorly defined.
Pip now (19.2 and later) now supports editable installs for projects
using pyproject.toml manifests, but might require the use of the
--no-use-pep517 flag, which somewhat defeats the point. Full support for
setup.py-less editable installs was not introduced until pip 21.1.1:
https://github.com/pypa/pip/pull/9547/commits/7a95720e796a5e56481c1cc20b6ce6249c50f357
For now, while the dust settles, stick with the de-facto
setup.py/setup.cfg combination supported by setuptools. It will be worth
re-evaluating this point again in the future when our supported build
platforms all ship a fairly modern pip.
Additional reading on this matter:
https://github.com/pypa/packaging-problems/issues/256
https://github.com/pypa/pip/issues/6334
https://github.com/pypa/pip/issues/6375
https://github.com/pypa/pip/issues/6434
https://github.com/pypa/pip/issues/6438
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:54 -04:00
|
|
|
|
|
|
|
|
[options]
|
2025-04-25 14:07:10 +02:00
|
|
|
python_requires = >= 3.9
|
python: add qemu package installer
Add setup.cfg and setup.py, necessary for installing a package via
pip. Add a ReST document (PACKAGE.rst) explaining the basics of what
this package is for and who to contact for more information. This
document will be used as the landing page for the package on PyPI.
List the subpackages we intend to package by name instead of using
find_namespace because find_namespace will naively also packages tests,
things it finds in the dist/ folder, etc. I could not figure out how to
modify this behavior; adding allow/deny lists to setuptools kept
changing the packaged hierarchy. This works, roll with it.
I am not yet using a pyproject.toml style package manifest, because
"editable" installs are not defined (yet?) by PEP-517/518.
I consider editable installs crucial for development, though they have
(apparently) always been somewhat poorly defined.
Pip now (19.2 and later) now supports editable installs for projects
using pyproject.toml manifests, but might require the use of the
--no-use-pep517 flag, which somewhat defeats the point. Full support for
setup.py-less editable installs was not introduced until pip 21.1.1:
https://github.com/pypa/pip/pull/9547/commits/7a95720e796a5e56481c1cc20b6ce6249c50f357
For now, while the dust settles, stick with the de-facto
setup.py/setup.cfg combination supported by setuptools. It will be worth
re-evaluating this point again in the future when our supported build
platforms all ship a fairly modern pip.
Additional reading on this matter:
https://github.com/pypa/packaging-problems/issues/256
https://github.com/pypa/pip/issues/6334
https://github.com/pypa/pip/issues/6375
https://github.com/pypa/pip/issues/6434
https://github.com/pypa/pip/issues/6438
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:54 -04:00
|
|
|
packages =
|
2022-03-30 13:28:10 -04:00
|
|
|
qemu.qmp
|
python: add qemu package installer
Add setup.cfg and setup.py, necessary for installing a package via
pip. Add a ReST document (PACKAGE.rst) explaining the basics of what
this package is for and who to contact for more information. This
document will be used as the landing page for the package on PyPI.
List the subpackages we intend to package by name instead of using
find_namespace because find_namespace will naively also packages tests,
things it finds in the dist/ folder, etc. I could not figure out how to
modify this behavior; adding allow/deny lists to setuptools kept
changing the packaged hierarchy. This works, roll with it.
I am not yet using a pyproject.toml style package manifest, because
"editable" installs are not defined (yet?) by PEP-517/518.
I consider editable installs crucial for development, though they have
(apparently) always been somewhat poorly defined.
Pip now (19.2 and later) now supports editable installs for projects
using pyproject.toml manifests, but might require the use of the
--no-use-pep517 flag, which somewhat defeats the point. Full support for
setup.py-less editable installs was not introduced until pip 21.1.1:
https://github.com/pypa/pip/pull/9547/commits/7a95720e796a5e56481c1cc20b6ce6249c50f357
For now, while the dust settles, stick with the de-facto
setup.py/setup.cfg combination supported by setuptools. It will be worth
re-evaluating this point again in the future when our supported build
platforms all ship a fairly modern pip.
Additional reading on this matter:
https://github.com/pypa/packaging-problems/issues/256
https://github.com/pypa/pip/issues/6334
https://github.com/pypa/pip/issues/6375
https://github.com/pypa/pip/issues/6434
https://github.com/pypa/pip/issues/6438
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-11-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
2021-05-27 17:16:54 -04:00
|
|
|
qemu.machine
|
|
|
|
|
qemu.utils
|
2021-05-27 17:17:00 -04:00
|
|
|
|
2021-06-29 17:43:10 -04:00
|
|
|
[options.package_data]
|
|
|
|
|
* = py.typed
|
|
|
|
|
|
2021-05-27 17:17:10 -04:00
|
|
|
[options.extras_require]
|
2023-02-09 19:31:42 -05:00
|
|
|
# Remember to update tests/minreqs.txt if changing anything below:
|
2021-05-27 17:17:10 -04:00
|
|
|
devel =
|
2021-09-15 12:29:52 -04:00
|
|
|
avocado-framework >= 90.0
|
2023-05-10 23:54:14 -04:00
|
|
|
distlib >= 0.3.6
|
2023-05-16 11:59:36 +02:00
|
|
|
flake8 >= 5.0.4
|
2021-06-02 20:37:16 -04:00
|
|
|
fusepy >= 2.0.4
|
2021-05-27 17:17:10 -04:00
|
|
|
isort >= 5.1.2
|
2023-07-05 12:40:46 +02:00
|
|
|
mypy >= 1.4.0
|
2023-05-16 11:59:36 +02:00
|
|
|
pylint >= 2.17.3
|
2024-06-26 19:22:28 -04:00
|
|
|
pylint != 3.2.4; python_version<"3.9"
|
2021-05-27 17:17:14 -04:00
|
|
|
tox >= 3.18.0
|
2021-08-24 03:37:42 +05:30
|
|
|
urwid >= 2.1.2
|
|
|
|
|
urwid-readline >= 0.13
|
2021-08-24 03:37:45 +05:30
|
|
|
Pygments >= 2.9.0
|
python: add qapi static analysis tests
Update the python tests to also check QAPI and the QAPI Sphinx
extensions. The docs/sphinx/qapidoc_legacy.py file is not included in
these checks, as it is destined for removal soon. mypy is also not
called on the QAPI Sphinx extensions, owing to difficulties supporting
Sphinx 3.x - 8.x while maintaining static type checking support. mypy
*is* called on all of the QAPI tools themselves, though.
flake8, isort and mypy use the tool configuration from the existing
python directory (in setup.cfg). pylint continues to use the special
configuration located in scripts/qapi/ - that configuration is more
permissive. If we wish to unify the two configurations, that's a
separate series and a discussion for a later date.
The list of pylint ignores is also updated, owing again to the wide
window of pylint version support: newer versions require pragmas to
occasionally silence the "too many positional arguments" warning, but
older versions do not have such a warning category and will instead yelp
about an unrecognized option. Silence that warning, too.
As a result of this patch, one would be able to run any of the following
tests locally from the qemu.git/python directory and have it cover the
QAPI tooling as well. All of the following options run the python tests,
static analysis tests, and linter checks; but with different
combinations of dependencies and interpreters.
- "make check-minreqs" Run tests specifically under our oldest supported
Python and our oldest supported dependencies. This is the test that
runs on GitLab as "check-python-minreqs". This helps ensure we do not
regress support on older platforms accidentally.
- "make check-tox" Runs the tests under the newest supported
dependencies, but under each supported version of Python in turn. At
time of writing, this is Python 3.8 to 3.13 inclusive. This test helps
catch bleeding-edge problems before they become problems for developer
workstations. This is the GitLab test "check-python-tox" and is an
optionally run, may-fail test due to the unpredictable nature of new
dependencies being released into the ecosystem that may cause
regressions.
- "make check-dev" Runs the tests under the newest supported
dependencies using whatever version of Python the user happens to have
installed. This is a quick convenience check that does not map to any
particular GitLab test.
(Note! check-dev may be busted on Fedora 41 and bleeding edge versions
of setuptools. That's unrelated to this patch and I'll address it
separately and soon. Thank you for your patience, --mgmt)
Finally, finally, finally: this means that QAPI tooling will be linted
and type-checked from the GitLab pipelines.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: 20250604200354.459501-5-jsnow@redhat.com
[Edited license choice per review --js]
Signed-off-by: John Snow <jsnow@redhat.com>
2025-06-04 16:03:52 -04:00
|
|
|
sphinx >= 3.4.3
|
2021-05-27 17:17:10 -04:00
|
|
|
|
2021-06-02 20:37:16 -04:00
|
|
|
# Provides qom-fuse functionality
|
|
|
|
|
fuse =
|
|
|
|
|
fusepy >= 2.0.4
|
|
|
|
|
|
2022-03-30 13:28:11 -04:00
|
|
|
# QMP TUI dependencies
|
2021-08-24 03:37:42 +05:30
|
|
|
tui =
|
|
|
|
|
urwid >= 2.1.2
|
|
|
|
|
urwid-readline >= 0.13
|
2021-08-24 03:37:45 +05:30
|
|
|
Pygments >= 2.9.0
|
2021-08-24 03:37:42 +05:30
|
|
|
|
2021-06-02 20:37:05 -04:00
|
|
|
[options.entry_points]
|
|
|
|
|
console_scripts =
|
2022-01-10 18:28:54 -05:00
|
|
|
qom = qemu.utils.qom:main
|
|
|
|
|
qom-set = qemu.utils.qom:QOMSet.entry_point
|
|
|
|
|
qom-get = qemu.utils.qom:QOMGet.entry_point
|
|
|
|
|
qom-list = qemu.utils.qom:QOMList.entry_point
|
|
|
|
|
qom-tree = qemu.utils.qom:QOMTree.entry_point
|
|
|
|
|
qom-fuse = qemu.utils.qom_fuse:QOMFuse.entry_point [fuse]
|
|
|
|
|
qemu-ga-client = qemu.utils.qemu_ga_client:main
|
2022-03-30 13:28:10 -04:00
|
|
|
qmp-shell = qemu.qmp.qmp_shell:main
|
|
|
|
|
qmp-shell-wrap = qemu.qmp.qmp_shell:main_wrap
|
2022-03-30 13:28:11 -04:00
|
|
|
qmp-tui = qemu.qmp.qmp_tui:main [tui]
|
2021-06-02 20:37:05 -04:00
|
|
|
|
2021-05-27 17:17:02 -04:00
|
|
|
[flake8]
|
2022-12-02 19:52:32 -05:00
|
|
|
# Prefer pylint's bare-except checks to flake8's
|
|
|
|
|
extend-ignore = E722
|
2021-05-27 17:17:03 -04:00
|
|
|
exclude = __pycache__,
|
2021-05-27 17:17:02 -04:00
|
|
|
|
2021-05-27 17:17:05 -04:00
|
|
|
[mypy]
|
|
|
|
|
strict = True
|
2025-04-25 14:07:10 +02:00
|
|
|
python_version = 3.9
|
2021-05-27 17:17:06 -04:00
|
|
|
namespace_packages = True
|
2022-05-25 20:09:13 -04:00
|
|
|
warn_unused_ignores = False
|
2021-05-27 17:17:05 -04:00
|
|
|
|
2022-01-10 18:28:54 -05:00
|
|
|
[mypy-qemu.utils.qom_fuse]
|
2021-06-02 20:37:15 -04:00
|
|
|
# fusepy has no type stubs:
|
|
|
|
|
allow_subclassing_any = True
|
|
|
|
|
|
2022-03-30 13:28:11 -04:00
|
|
|
[mypy-qemu.qmp.qmp_tui]
|
2021-08-24 03:37:43 +05:30
|
|
|
# urwid and urwid_readline have no type stubs:
|
|
|
|
|
allow_subclassing_any = True
|
|
|
|
|
|
|
|
|
|
# The following missing import directives are because these libraries do not
|
|
|
|
|
# provide type stubs. Allow them on an as-needed basis for mypy.
|
2021-06-02 20:37:15 -04:00
|
|
|
[mypy-fuse]
|
2021-08-24 03:37:43 +05:30
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2023-08-08 10:03:42 +02:00
|
|
|
[mypy-tomli]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
|
|
|
|
[mypy-tomllib]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2021-08-24 03:37:43 +05:30
|
|
|
[mypy-urwid]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
|
|
|
|
[mypy-urwid_readline]
|
2021-06-02 20:37:15 -04:00
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2021-08-24 03:37:45 +05:30
|
|
|
[mypy-pygments]
|
|
|
|
|
ignore_missing_imports = True
|
2023-05-10 23:54:11 -04:00
|
|
|
|
2023-05-10 23:54:14 -04:00
|
|
|
[mypy-distlib]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2023-05-16 12:08:11 +02:00
|
|
|
[mypy-distlib.scripts]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2023-05-10 23:54:14 -04:00
|
|
|
[mypy-distlib.version]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2023-05-16 09:05:51 +02:00
|
|
|
[mypy-pip._vendor.distlib]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
|
|
|
|
[mypy-pip._vendor.distlib.scripts]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
|
|
|
|
[mypy-pip._vendor.distlib.version]
|
|
|
|
|
ignore_missing_imports = True
|
|
|
|
|
|
2021-05-27 17:17:00 -04:00
|
|
|
[pylint.messages control]
|
|
|
|
|
# Disable the message, report, category or checker with the given id(s). You
|
|
|
|
|
# can either give multiple identifiers separated by comma (,) or put this
|
|
|
|
|
# option multiple times (only on the command line, not in the configuration
|
|
|
|
|
# file where it should appear only once). You can also use "--disable=all" to
|
|
|
|
|
# disable everything first and then reenable specific checks. For example, if
|
|
|
|
|
# you want to run only the similarities checker, you can use "--disable=all
|
|
|
|
|
# --enable=similarities". If you want to run only the classes checker, but have
|
|
|
|
|
# no Warning level messages displayed, use "--disable=all --enable=classes
|
|
|
|
|
# --disable=W".
|
2021-09-16 14:22:48 -04:00
|
|
|
disable=consider-using-f-string,
|
2022-01-28 16:11:57 +00:00
|
|
|
consider-using-with,
|
|
|
|
|
too-many-arguments,
|
2024-11-01 13:36:59 -04:00
|
|
|
too-many-positional-arguments,
|
2021-09-15 12:29:44 -04:00
|
|
|
too-many-function-args, # mypy handles this with less false positives.
|
2022-01-28 16:11:57 +00:00
|
|
|
too-many-instance-attributes,
|
2021-09-15 12:29:46 -04:00
|
|
|
no-member, # mypy also handles this better.
|
2021-05-27 17:17:00 -04:00
|
|
|
|
|
|
|
|
[pylint.basic]
|
|
|
|
|
# Good variable names which should always be accepted, separated by a comma.
|
|
|
|
|
good-names=i,
|
|
|
|
|
j,
|
|
|
|
|
k,
|
|
|
|
|
ex,
|
|
|
|
|
Run,
|
2021-06-02 20:37:09 -04:00
|
|
|
_, # By convention: Unused variable
|
|
|
|
|
fh, # fh = open(...)
|
|
|
|
|
fd, # fd = os.open(...)
|
|
|
|
|
c, # for c in string: ...
|
2021-09-15 12:29:31 -04:00
|
|
|
T, # for TypeVars. See pylint#3401
|
2023-05-10 23:54:10 -04:00
|
|
|
SocketAddrT, # Not sure why this is invalid.
|
2025-11-18 15:06:55 -05:00
|
|
|
_import_ok, # For mkvenv import trickery and compatibility pre-4.x
|
2021-05-27 17:17:00 -04:00
|
|
|
|
|
|
|
|
[pylint.similarities]
|
|
|
|
|
# Ignore imports when computing similarities.
|
|
|
|
|
ignore-imports=yes
|
2021-09-16 14:22:47 -04:00
|
|
|
ignore-signatures=yes
|
2021-05-27 17:17:07 -04:00
|
|
|
|
2021-08-09 11:01:00 +02:00
|
|
|
# Minimum lines number of a similarity.
|
|
|
|
|
# TODO: Remove after we opt in to Pylint 2.8.3. See commit msg.
|
|
|
|
|
min-similarity-lines=6
|
|
|
|
|
|
|
|
|
|
|
2021-05-27 17:17:07 -04:00
|
|
|
[isort]
|
|
|
|
|
force_grid_wrap=4
|
|
|
|
|
force_sort_within_sections=True
|
|
|
|
|
include_trailing_comma=True
|
|
|
|
|
line_length=72
|
|
|
|
|
lines_after_imports=2
|
|
|
|
|
multi_line_output=3
|
2021-05-27 17:17:14 -04:00
|
|
|
|
|
|
|
|
# tox (https://tox.readthedocs.io/) is a tool for running tests in
|
|
|
|
|
# multiple virtualenvs. This configuration file will run the test suite
|
|
|
|
|
# on all supported python versions. To use it, "pip install tox" and
|
|
|
|
|
# then run "tox" from this directory. You will need all of these versions
|
|
|
|
|
# of python available on your system to run this test.
|
|
|
|
|
|
|
|
|
|
[tox:tox]
|
2025-04-25 14:07:10 +02:00
|
|
|
envlist = py39, py310, py311, py312, py313
|
2021-06-30 15:45:46 -03:00
|
|
|
skip_missing_interpreters = true
|
2021-05-27 17:17:14 -04:00
|
|
|
|
|
|
|
|
[testenv]
|
|
|
|
|
allowlist_externals = make
|
2021-06-02 20:37:16 -04:00
|
|
|
deps =
|
|
|
|
|
.[devel]
|
|
|
|
|
.[fuse] # Workaround to trigger tox venv rebuild
|
2021-08-24 03:37:42 +05:30
|
|
|
.[tui] # Workaround to trigger tox venv rebuild
|
2021-05-27 17:17:14 -04:00
|
|
|
commands =
|
|
|
|
|
make check
|
2021-09-15 12:29:55 -04:00
|
|
|
|
|
|
|
|
# Coverage.py [https://coverage.readthedocs.io/en/latest/] is a tool for
|
|
|
|
|
# measuring code coverage of Python programs. It monitors your program,
|
|
|
|
|
# noting which parts of the code have been executed, then analyzes the
|
|
|
|
|
# source to identify code that could have been executed but was not.
|
|
|
|
|
|
|
|
|
|
[coverage:run]
|
|
|
|
|
concurrency = multiprocessing
|
|
|
|
|
source = qemu/
|
|
|
|
|
parallel = true
|