| [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.9 | |
| Programming Language :: Python :: 3.10 | |
| Programming Language :: Python :: 3.11 | |
| Programming Language :: Python :: 3.12 | |
| Programming Language :: Python :: 3.13 | |
| Programming Language :: Python :: 3.14 | |
| Typing :: Typed | |
| [options] | |
| python_requires = >= 3.9 | |
| packages = | |
| qemu.machine | |
| qemu.utils | |
| install_requires = | |
| qemu.qmp | |
| [options.package_data] | |
| * = py.typed | |
| [options.extras_require] | |
| # Remember to update tests/minreqs.txt if changing anything below: | |
| devel = | |
| distlib >= 0.3.6 | |
| flake8 >= 5.0.4 | |
| fusepy >= 2.0.4 | |
| isort >= 5.6.0 | |
| mypy >= 1.4.0 | |
| pylint >= 2.17.3 | |
| pylint != 3.2.4; python_version<"3.9" | |
| pytest >= 6.0.2 | |
| tox >= 3.18.0 | |
| sphinx >= 3.4.3 | |
| # Provides qom-fuse functionality | |
| fuse = | |
| fusepy >= 2.0.4 | |
| [options.entry_points] | |
| console_scripts = | |
| 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 | |
| [flake8] | |
| # Prefer pylint's bare-except checks to flake8's | |
| extend-ignore = E722 | |
| exclude = __pycache__, | |
| [mypy] | |
| strict = True | |
| python_version = 3.9 | |
| namespace_packages = True | |
| warn_unused_ignores = False | |
| [mypy-qemu.utils.qom_fuse] | |
| # fusepy has 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-tomli] | |
| ignore_missing_imports = True | |
| [mypy-tomllib] | |
| ignore_missing_imports = True | |
| [mypy-distlib] | |
| ignore_missing_imports = True | |
| [mypy-distlib.scripts] | |
| ignore_missing_imports = True | |
| [mypy-distlib.version] | |
| ignore_missing_imports = True | |
| [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 | |
| [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, | |
| consider-using-with, | |
| too-many-arguments, | |
| too-many-positional-arguments, | |
| too-many-function-args, # mypy handles this with less false positives. | |
| too-many-instance-attributes, | |
| 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 | |
| SocketAddrT, # Not sure why this is invalid. | |
| _import_ok, # For mkvenv import trickery and compatibility pre-4.x | |
| [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 = py39, py310, py311, py312, py313, py314 | |
| skip_missing_interpreters = true | |
| [testenv] | |
| allowlist_externals = make | |
| deps = | |
| .[devel] | |
| .[fuse] # 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 |