diff options
Diffstat (limited to 'python/setup.cfg')
-rw-r--r-- | python/setup.cfg | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/python/setup.cfg b/python/setup.cfg new file mode 100644 index 000000000..417e93783 --- /dev/null +++ b/python/setup.cfg @@ -0,0 +1,177 @@ +[metadata] +name = qemu +version = file:VERSION +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 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + Typing :: Typed + +[options] +python_requires = >= 3.6 +packages = + qemu.qmp + qemu.machine + qemu.utils + qemu.aqmp + +[options.package_data] +* = py.typed + +[options.extras_require] +# For the devel group, When adding new dependencies or bumping the minimum +# version, use e.g. "pipenv install --dev pylint==3.0.0". +# Subsequently, edit 'Pipfile' to remove e.g. 'pylint = "==3.0.0'. +devel = + avocado-framework >= 90.0 + flake8 >= 3.6.0 + fusepy >= 2.0.4 + isort >= 5.1.2 + mypy >= 0.770 + pylint >= 2.8.0 + tox >= 3.18.0 + urwid >= 2.1.2 + urwid-readline >= 0.13 + Pygments >= 2.9.0 + +# Provides qom-fuse functionality +fuse = + fusepy >= 2.0.4 + +# AQMP TUI dependencies +tui = + urwid >= 2.1.2 + urwid-readline >= 0.13 + Pygments >= 2.9.0 + +[options.entry_points] +console_scripts = + qom = qemu.qmp.qom:main + qom-set = qemu.qmp.qom:QOMSet.entry_point + qom-get = qemu.qmp.qom:QOMGet.entry_point + qom-list = qemu.qmp.qom:QOMList.entry_point + qom-tree = qemu.qmp.qom:QOMTree.entry_point + qom-fuse = qemu.qmp.qom_fuse:QOMFuse.entry_point [fuse] + qemu-ga-client = qemu.qmp.qemu_ga_client:main + qmp-shell = qemu.qmp.qmp_shell:main + aqmp-tui = qemu.aqmp.aqmp_tui:main [tui] + +[flake8] +extend-ignore = E722 # Prefer pylint's bare-except checks to flake8's +exclude = __pycache__, + +[mypy] +strict = True +python_version = 3.6 +warn_unused_configs = True +namespace_packages = True + +[mypy-qemu.qmp.qom_fuse] +# fusepy has no type stubs: +allow_subclassing_any = True + +[mypy-qemu.aqmp.aqmp_tui] +# 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. +[mypy-fuse] +ignore_missing_imports = True + +[mypy-urwid] +ignore_missing_imports = True + +[mypy-urwid_readline] +ignore_missing_imports = True + +[mypy-pygments] +ignore_missing_imports = True + +[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". +disable=consider-using-f-string, + too-many-function-args, # mypy handles this with less false positives. + no-member, # mypy also handles this better. + +[pylint.basic] +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _, # By convention: Unused variable + fh, # fh = open(...) + fd, # fd = os.open(...) + c, # for c in string: ... + T, # for TypeVars. See pylint#3401 + +[pylint.similarities] +# Ignore imports when computing similarities. +ignore-imports=yes +ignore-signatures=yes + +# Minimum lines number of a similarity. +# TODO: Remove after we opt in to Pylint 2.8.3. See commit msg. +min-similarity-lines=6 + + +[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 + +# 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] +envlist = py36, py37, py38, py39, py310 +skip_missing_interpreters = true + +[testenv] +allowlist_externals = make +deps = + .[devel] + .[fuse] # Workaround to trigger tox venv rebuild + .[tui] # Workaround to trigger tox venv rebuild +commands = + make check + +# 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 |