setup.cfg 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. [metadata]
  2. name = qemu
  3. version = file:VERSION
  4. maintainer = QEMU Developer Team
  5. maintainer_email = qemu-devel@nongnu.org
  6. url = https://www.qemu.org/
  7. download_url = https://www.qemu.org/download/
  8. description = QEMU Python Build, Debug and SDK tooling.
  9. long_description = file:PACKAGE.rst
  10. long_description_content_type = text/x-rst
  11. classifiers =
  12. Development Status :: 3 - Alpha
  13. License :: OSI Approved :: GNU General Public License v2 (GPLv2)
  14. Natural Language :: English
  15. Operating System :: OS Independent
  16. Programming Language :: Python :: 3 :: Only
  17. Programming Language :: Python :: 3.6
  18. Programming Language :: Python :: 3.7
  19. Programming Language :: Python :: 3.8
  20. Programming Language :: Python :: 3.9
  21. Programming Language :: Python :: 3.10
  22. Typing :: Typed
  23. [options]
  24. python_requires = >= 3.6
  25. packages =
  26. qemu.qmp
  27. qemu.machine
  28. qemu.utils
  29. [options.package_data]
  30. * = py.typed
  31. [options.extras_require]
  32. # For the devel group, When adding new dependencies or bumping the minimum
  33. # version, use e.g. "pipenv install --dev pylint==3.0.0".
  34. # Subsequently, edit 'Pipfile' to remove e.g. 'pylint = "==3.0.0'.
  35. devel =
  36. avocado-framework >= 90.0
  37. flake8 >= 3.6.0
  38. fusepy >= 2.0.4
  39. isort >= 5.1.2
  40. mypy >= 0.780
  41. pylint >= 2.8.0
  42. tox >= 3.18.0
  43. urwid >= 2.1.2
  44. urwid-readline >= 0.13
  45. Pygments >= 2.9.0
  46. # Provides qom-fuse functionality
  47. fuse =
  48. fusepy >= 2.0.4
  49. # AQMP TUI dependencies
  50. tui =
  51. urwid >= 2.1.2
  52. urwid-readline >= 0.13
  53. Pygments >= 2.9.0
  54. [options.entry_points]
  55. console_scripts =
  56. qom = qemu.utils.qom:main
  57. qom-set = qemu.utils.qom:QOMSet.entry_point
  58. qom-get = qemu.utils.qom:QOMGet.entry_point
  59. qom-list = qemu.utils.qom:QOMList.entry_point
  60. qom-tree = qemu.utils.qom:QOMTree.entry_point
  61. qom-fuse = qemu.utils.qom_fuse:QOMFuse.entry_point [fuse]
  62. qemu-ga-client = qemu.utils.qemu_ga_client:main
  63. qmp-shell = qemu.qmp.qmp_shell:main
  64. qmp-shell-wrap = qemu.qmp.qmp_shell:main_wrap
  65. aqmp-tui = qemu.qmp.aqmp_tui:main [tui]
  66. [flake8]
  67. extend-ignore = E722 # Prefer pylint's bare-except checks to flake8's
  68. exclude = __pycache__,
  69. [mypy]
  70. strict = True
  71. python_version = 3.6
  72. warn_unused_configs = True
  73. namespace_packages = True
  74. [mypy-qemu.utils.qom_fuse]
  75. # fusepy has no type stubs:
  76. allow_subclassing_any = True
  77. [mypy-qemu.qmp.aqmp_tui]
  78. # urwid and urwid_readline have no type stubs:
  79. allow_subclassing_any = True
  80. # The following missing import directives are because these libraries do not
  81. # provide type stubs. Allow them on an as-needed basis for mypy.
  82. [mypy-fuse]
  83. ignore_missing_imports = True
  84. [mypy-urwid]
  85. ignore_missing_imports = True
  86. [mypy-urwid_readline]
  87. ignore_missing_imports = True
  88. [mypy-pygments]
  89. ignore_missing_imports = True
  90. [pylint.messages control]
  91. # Disable the message, report, category or checker with the given id(s). You
  92. # can either give multiple identifiers separated by comma (,) or put this
  93. # option multiple times (only on the command line, not in the configuration
  94. # file where it should appear only once). You can also use "--disable=all" to
  95. # disable everything first and then reenable specific checks. For example, if
  96. # you want to run only the similarities checker, you can use "--disable=all
  97. # --enable=similarities". If you want to run only the classes checker, but have
  98. # no Warning level messages displayed, use "--disable=all --enable=classes
  99. # --disable=W".
  100. disable=consider-using-f-string,
  101. consider-using-with,
  102. too-many-arguments,
  103. too-many-function-args, # mypy handles this with less false positives.
  104. too-many-instance-attributes,
  105. no-member, # mypy also handles this better.
  106. [pylint.basic]
  107. # Good variable names which should always be accepted, separated by a comma.
  108. good-names=i,
  109. j,
  110. k,
  111. ex,
  112. Run,
  113. _, # By convention: Unused variable
  114. fh, # fh = open(...)
  115. fd, # fd = os.open(...)
  116. c, # for c in string: ...
  117. T, # for TypeVars. See pylint#3401
  118. [pylint.similarities]
  119. # Ignore imports when computing similarities.
  120. ignore-imports=yes
  121. ignore-signatures=yes
  122. # Minimum lines number of a similarity.
  123. # TODO: Remove after we opt in to Pylint 2.8.3. See commit msg.
  124. min-similarity-lines=6
  125. [isort]
  126. force_grid_wrap=4
  127. force_sort_within_sections=True
  128. include_trailing_comma=True
  129. line_length=72
  130. lines_after_imports=2
  131. multi_line_output=3
  132. # tox (https://tox.readthedocs.io/) is a tool for running tests in
  133. # multiple virtualenvs. This configuration file will run the test suite
  134. # on all supported python versions. To use it, "pip install tox" and
  135. # then run "tox" from this directory. You will need all of these versions
  136. # of python available on your system to run this test.
  137. [tox:tox]
  138. envlist = py36, py37, py38, py39, py310
  139. skip_missing_interpreters = true
  140. [testenv]
  141. allowlist_externals = make
  142. deps =
  143. .[devel]
  144. .[fuse] # Workaround to trigger tox venv rebuild
  145. .[tui] # Workaround to trigger tox venv rebuild
  146. commands =
  147. make check
  148. # Coverage.py [https://coverage.readthedocs.io/en/latest/] is a tool for
  149. # measuring code coverage of Python programs. It monitors your program,
  150. # noting which parts of the code have been executed, then analyzes the
  151. # source to identify code that could have been executed but was not.
  152. [coverage:run]
  153. concurrency = multiprocessing
  154. source = qemu/
  155. parallel = true