From: John Snow <jsnow@redhat.com>
To: Cleber Rosa <crosa@redhat.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Fam Zheng" <fam@euphon.net>,
"Thomas Huth" <thuth@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
qemu-block@nongnu.org,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
qemu-devel@nongnu.org,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Willian Rampazzo" <willianr@redhat.com>,
"Willian Rampazzo" <wrampazz@redhat.com>,
"Max Reitz" <mreitz@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Beraldo Leal" <bleal@redhat.com>
Subject: Re: [PATCH v6 20/25] python: add devel package requirements to setuptools
Date: Tue, 25 May 2021 13:43:42 -0400 [thread overview]
Message-ID: <840fc0a4-45f9-7ce8-3f1c-a10303c44fbc@redhat.com> (raw)
In-Reply-To: <YK0iRgCDgKfVogKD@localhost.localdomain>
On 5/25/21 12:13 PM, Cleber Rosa wrote:
> On Wed, May 12, 2021 at 07:12:36PM -0400, John Snow wrote:
>> 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.
>>
>
> This is a fairly exotic feature of setuptools, with very very few
> packages that I know about using it. With most users (I believe)
> relying on pipenv to get the exact packages, the setuptools/pip use
> case may fall into obscurity IMO.
>
Fair enough.
The intent is:
- Pipenv is more for CI, to deploy a consistent set of frozen packages
that are known to behave in an extremely stable manner. My hope is to
avoid breaking changes introduced unknowingly by pylint et al.
- pip install qemu[devel] is intended more for external/normal use by
developers. It grabs the latest and greatest and it may indeed break as
dependencies change beyond my awareness.
Some packages like aiohttp use that optional dependency feature to
install optional modules -- `pip install aiohttp[speedups]` installs
optional dependencies that allow that module to work much faster, but
aren't required.
Since these linting tools aren't *required* just to *use* the package, I
am doing users a courtesy by listing them as optional. That way, they
aren't pulled in when using "pip install qemu", and if I have to pin on
specific sub-versions etc, it won't include conflict dependencies for
people using other projects that DO declare a hard requirement on those
packages.
I can amend the PACKAGE.rst file to mention this usage, though it's only
useful for folks developing the package.
(Still, part of the ploy here is to attract outside help on developing
the QEMU SDK, pull requests welcome etc, so it's worth a documentation
blurb for now.)
> So my suggestion is: consider better exposing the fact that this is
> available (a documentation section perhaps).
>
>> Signed-off-by: John Snow <jsnow@redhat.com>
>> ---
>> python/Pipfile | 5 +----
>> python/Pipfile.lock | 14 +++++++++-----
>> python/setup.cfg | 9 +++++++++
>> 3 files changed, 19 insertions(+), 9 deletions(-)
>>
>
> Either way,
>
> Reviewed-by: Cleber Rosa <crosa@redhat.com>
>
Thanks! I am taking your R-B and I have applied the following diff.
Note that the PACKAGE.rst blurb references qemu[devel] instead because
the PACKAGE.rst file is what is displayed theoretically on PyPI. That
exact invocation will fail currently, because it's not on PyPI yet.
A little weird, but I *think* it's correct.
diff --git a/python/PACKAGE.rst b/python/PACKAGE.rst
index 1bbfe1b58e2..05ea7789fc1 100644
--- a/python/PACKAGE.rst
+++ b/python/PACKAGE.rst
@@ -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]``.
diff --git a/python/README.rst b/python/README.rst
index bf9bbca979a..954870973d0 100644
--- a/python/README.rst
+++ b/python/README.rst
@@ -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.
next prev parent reply other threads:[~2021-05-25 17:45 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-12 23:12 [PATCH v6 00/25] python: create installable package John Snow
2021-05-12 23:12 ` [PATCH v6 01/25] iotests/297: add --namespace-packages to mypy arguments John Snow
2021-05-12 23:12 ` [PATCH v6 02/25] python: create qemu packages John Snow
2021-05-18 14:31 ` Cleber Rosa
2021-05-21 17:15 ` Willian Rampazzo
2021-05-12 23:12 ` [PATCH v6 03/25] python: create utils sub-package John Snow
2021-05-18 15:12 ` Cleber Rosa
2021-05-18 15:20 ` John Snow
2021-05-21 17:18 ` Willian Rampazzo
2021-05-21 17:39 ` John Snow
2021-05-12 23:12 ` [PATCH v6 04/25] python: add qemu package installer John Snow
2021-05-21 4:00 ` Cleber Rosa
2021-05-21 15:52 ` John Snow
2021-05-12 23:12 ` [PATCH v6 05/25] python: add VERSION file John Snow
2021-05-12 23:12 ` [PATCH v6 06/25] python: add directory structure README.rst files John Snow
2021-05-25 2:33 ` Cleber Rosa
2021-05-25 17:14 ` John Snow
2021-05-25 20:30 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 07/25] python: add MANIFEST.in John Snow
2021-05-25 2:42 ` Cleber Rosa
2021-05-25 14:12 ` John Snow
2021-05-12 23:12 ` [PATCH v6 08/25] python: Add pipenv support John Snow
2021-05-12 23:12 ` [PATCH v6 09/25] python: add pylint import exceptions John Snow
2021-05-12 23:12 ` [PATCH v6 10/25] python: move pylintrc into setup.cfg John Snow
2021-05-12 23:12 ` [PATCH v6 11/25] python: add pylint to pipenv John Snow
2021-05-25 3:33 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 12/25] python: move flake8 config to setup.cfg John Snow
2021-05-12 23:12 ` [PATCH v6 13/25] python: add excluded dirs to flake8 config John Snow
2021-05-25 15:50 ` Cleber Rosa
2021-05-25 17:18 ` John Snow
2021-05-12 23:12 ` [PATCH v6 14/25] python: Add flake8 to pipenv John Snow
2021-05-12 23:12 ` [PATCH v6 15/25] python: move mypy.ini into setup.cfg John Snow
2021-05-25 15:52 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 16/25] python: add mypy to pipenv John Snow
2021-05-12 23:12 ` [PATCH v6 17/25] python: move .isort.cfg into setup.cfg John Snow
2021-05-12 23:12 ` [PATCH v6 18/25] python/qemu: add isort to pipenv John Snow
2021-05-25 15:56 ` Cleber Rosa
2021-05-25 17:21 ` John Snow
2021-05-25 20:34 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 19/25] python/qemu: add qemu package itself " John Snow
2021-05-12 23:12 ` [PATCH v6 20/25] python: add devel package requirements to setuptools John Snow
2021-05-25 16:13 ` Cleber Rosa
2021-05-25 17:43 ` John Snow [this message]
2021-05-25 20:38 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 21/25] python: add avocado-framework and tests John Snow
2021-05-25 18:58 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 22/25] python: add Makefile for some common tasks John Snow
2021-05-25 19:24 ` Cleber Rosa
2021-05-25 19:45 ` John Snow
2021-05-25 20:39 ` Cleber Rosa
2021-05-12 23:12 ` [PATCH v6 23/25] python: add .gitignore John Snow
2021-05-25 19:36 ` Cleber Rosa
2021-05-25 20:10 ` John Snow
2021-05-25 20:42 ` Cleber Rosa
2021-05-25 23:54 ` John Snow
2021-05-12 23:12 ` [PATCH v6 24/25] gitlab: add python linters to CI John Snow
2021-05-25 19:55 ` Cleber Rosa
2021-05-25 20:33 ` John Snow
2021-05-12 23:12 ` [PATCH v6 25/25] python: add tox support John Snow
2021-05-25 20:15 ` Cleber Rosa
2021-05-25 20:25 ` John Snow
2021-05-25 20:46 ` Cleber Rosa
2021-05-25 22:15 ` John Snow
2021-05-17 18:52 ` [PATCH v6 00/25] python: create installable package John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=840fc0a4-45f9-7ce8-3f1c-a10303c44fbc@redhat.com \
--to=jsnow@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=f4bug@amsat.org \
--cc=fam@euphon.net \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
--cc=willianr@redhat.com \
--cc=wrampazz@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.