Skip to content

Commit

Permalink
python: add devel package requirements to setuptools
Browse files Browse the repository at this point in the history
setuptools doesn't have a formal understanding of development requires,
but it has an optional feataures section. Fine; add a "devel" feature
and add the requirements to it.

To avoid duplication, we can modify pipenv to install qemu[devel]
instead. This enables us to run invocations like "pip install -e
.[devel]" and test the package on bleeding-edge packages beyond those
specified in Pipfile.lock.

Importantly, this also allows us to install the qemu development
packages in a non-networked mode: `pip3 install --no-index -e .[devel]`
will now fail if the proper development dependencies are not already
met. This can be useful for automated build scripts where fetching
network packages may be undesirable.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20210527211715.394144-27-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
  • Loading branch information
jnsnow committed May 27, 2021
1 parent 4bd9c34 commit 5aa9c99
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 9 deletions.
4 changes: 4 additions & 0 deletions python/PACKAGE.rst
Expand Up @@ -31,3 +31,7 @@ official `GitLab mirror <https://gitlab.com/qemu-project/qemu>`_.
Please report bugs on the `QEMU issue tracker
<https://gitlab.com/qemu-project/qemu/-/issues>`_ and tag ``@jsnow`` in
the report.

Optional packages necessary for running code quality analysis for this
package can be installed with the optional dependency group "devel":
``pip install qemu[devel]``.
5 changes: 1 addition & 4 deletions python/Pipfile
Expand Up @@ -4,10 +4,7 @@ url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
flake8 = ">=3.6.0"
isort = ">=5.1.2"
mypy = ">=0.770"
pylint = ">=2.8.0"
qemu = {editable = true, extras = ["devel"], path = "."}

[packages]
qemu = {editable = true,path = "."}
Expand Down
14 changes: 9 additions & 5 deletions python/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions python/README.rst
Expand Up @@ -24,6 +24,10 @@ which installs a version of the package that installs a forwarder
pointing to these files, such that the package always reflects the
latest version in your git tree.

Installing ".[devel]" instead of "." will additionally pull in required
packages for testing this package. They are not runtime requirements,
and are not needed to simply use these libraries.

See `Installing packages using pip and virtual environments
<https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/>`_
for more information.
Expand Down
9 changes: 9 additions & 0 deletions python/setup.cfg
Expand Up @@ -22,6 +22,15 @@ packages =
qemu.machine
qemu.utils

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


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

0 comments on commit 5aa9c99

Please sign in to comment.