Message ID | 20200324232103.4195-1-jsnow@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | iotests: use python logging | expand |
On 25.03.20 00:20, John Snow wrote: > This series uses python logging to enable output conditionally on > iotests.log(). We unify an initialization call (which also enables > debugging output for those tests with -d) and then make the switch > inside of iotests. > > It will help alleviate the need to create logged/unlogged versions > of all the various helpers we have made. > > Also, I got lost and accidentally delinted iotests while I was here. > Sorry about that. By version 9, it's now the overwhelming focus of > this series. No good deed, etc. Generally, test patches are fair game for the freeze period. However, this series is quite extensive, so I might prefer block-next here. OTOH, if I do take it to block-next, patch 11 might grow stale. Do you have a strong opinion either way? Max
On 3/24/20 7:20 PM, John Snow wrote: > This series uses python logging to enable output conditionally on > iotests.log(). We unify an initialization call (which also enables > debugging output for those tests with -d) and then make the switch > inside of iotests. > > It will help alleviate the need to create logged/unlogged versions > of all the various helpers we have made. > > Also, I got lost and accidentally delinted iotests while I was here. > Sorry about that. By version 9, it's now the overwhelming focus of > this series. No good deed, etc. Version requirements, as discovered by Kevin's Python Museum: mypy >= 0.620 pylint >= 2.2.0 astroid == 2.1.0 (or >= 2.2.0 if using pylint >= 2.3.0) Hm, though ... pylint does not like 'Collection' very much: iotests.py:1139:41: E1136: Value 'Collection' is unsubscriptable (unsubscriptable-object) It works OK for the same pylint versions under 3.7, but it's busted a bit under 3.6. See https://github.com/PyCQA/pylint/issues/2377 Well. Collection is indeed the actual type we want (we need Iterable and Container properties; i.e. supports 'for' and 'in'). There's no reason to require a Sequence (adds Reversible and some notion of a fixed ordering) -- but it will fix the typing problems in 3.6, so I'm going to do that. You can create a "minimum requirements" venv to test this: > cd ~/src/qemu/tests/qemu-iotests/ > sudo dnf install python36 > pipenv --python 3.6 > pipenv shell > pipenv install astroid==2.1.0 pylint==2.2.0 mypy==0.620 > pylint iotests.py > set -x MYPYPATH ~/src/qemu/python/ > mypy --ignore-missing-imports iotests.py (You can drop the --ignore-missing-imports if you are using mypy >= 0.650.) --js
On 3/30/20 9:00 AM, Max Reitz wrote: > On 25.03.20 00:20, John Snow wrote: >> This series uses python logging to enable output conditionally on >> iotests.log(). We unify an initialization call (which also enables >> debugging output for those tests with -d) and then make the switch >> inside of iotests. >> >> It will help alleviate the need to create logged/unlogged versions >> of all the various helpers we have made. >> >> Also, I got lost and accidentally delinted iotests while I was here. >> Sorry about that. By version 9, it's now the overwhelming focus of >> this series. No good deed, etc. > > Generally, test patches are fair game for the freeze period. However, > this series is quite extensive, so I might prefer block-next here. > OTOH, if I do take it to block-next, patch 11 might grow stale. > > Do you have a strong opinion either way? > > Max > Not really, no. Might be nice to see it tossed into the RC while everyone is doing testing to see if it causes problems. On the other hand, it probably WILL cause problems with various untested version combinations and so forth. Either or. --js
Am 30.03.2020 um 21:03 hat John Snow geschrieben: > > > On 3/24/20 7:20 PM, John Snow wrote: > > This series uses python logging to enable output conditionally on > > iotests.log(). We unify an initialization call (which also enables > > debugging output for those tests with -d) and then make the switch > > inside of iotests. > > > > It will help alleviate the need to create logged/unlogged versions > > of all the various helpers we have made. > > > > Also, I got lost and accidentally delinted iotests while I was here. > > Sorry about that. By version 9, it's now the overwhelming focus of > > this series. No good deed, etc. > > > Version requirements, as discovered by Kevin's Python Museum: > > mypy >= 0.620 > pylint >= 2.2.0 > astroid == 2.1.0 (or >= 2.2.0 if using pylint >= 2.3.0) > > > Hm, though ... pylint does not like 'Collection' very much: > > iotests.py:1139:41: E1136: Value 'Collection' is unsubscriptable > (unsubscriptable-object) > > It works OK for the same pylint versions under 3.7, but it's busted a > bit under 3.6. See https://github.com/PyCQA/pylint/issues/2377 > > Well. Collection is indeed the actual type we want (we need Iterable and > Container properties; i.e. supports 'for' and 'in'). There's no reason > to require a Sequence (adds Reversible and some notion of a fixed > ordering) -- but it will fix the typing problems in 3.6, so I'm going to > do that. I wouldn't actually worry about Python museums much as far as pylint and mypy are concerned. 3.6 compatibility is important for actually running the code, but if older mypy/pylint versions get false positives, I would consider that acceptable. Kevin