[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

[options]
python_requires = >= 3.6
packages =
    qemu.qmp
    qemu.machine
    qemu.utils

[options.extras_require]
# Run `pipenv lock --dev` when changing these requirements.
devel =
    avocado-framework >= 87.0
    flake8 >= 3.6.0
    isort >= 5.1.2
    mypy >= 0.770
    pylint >= 2.8.0
    tox >= 3.18.0

[flake8]
extend-ignore = E722  # Prefer pylint's bare-except checks to flake8's
exclude = __pycache__,
          .venv,
          .tox,

[mypy]
strict = True
python_version = 3.6
warn_unused_configs = True
namespace_packages = 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=too-many-arguments,
        too-many-instance-attributes,
        too-many-public-methods,

[pylint.basic]
# Good variable names which should always be accepted, separated by a comma.
good-names=i,
           j,
           k,
           ex,
           Run,
           _,
           fd,
           c,

[pylint.similarities]
# Ignore imports when computing similarities.
ignore-imports=yes

[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

[testenv]
allowlist_externals = make
deps = .[devel]
commands =
    make check