[all] pep8 results for maintenance branches over time

Stephen Finucane sfinucan at redhat.com
Thu Jan 23 17:34:23 UTC 2020


On Thu, 2020-01-23 at 16:36 +0000, Sorin Sbarnea wrote:
> While more or less complex fixes may be implemented to keep linting working on older branches we will clearly face an interesting challenge:
> 
> - project adopts new syntax/linter, backporting a fix will need rewriting
> - outdated linters in maintenance branches will start to misbehave: false positives, failure to install, ....
> - unable to upgrade linters on maintenance branches due dependency conflicts, dropped py27 support, pip or other time-bombs
> 
> My gut feeling about it is that sooner or later we may be forced to silence `tox -e linters` on old branches.

Before anyone does this, it's worth noting smcginnis' point that
linters generally aren't versioned by upper-constraints so you can't
rely on that to cap your versions for a given stable release. Instead,
you should probably cap it at a given MINOR release and periodically
update this range. Not only does this prevent a change in one of the
linters breaking master, but it will ensure stable branches keep
working as they did over the long term. We've done this in nova for
years [1][2][3] and I'd just assumed everyone else was doing the same,
to be honest :)

Stephen

[1] https://review.opendev.org/#/c/703405/
[2] https://github.com/openstack/nova/blob/19.0.0/test-requirements.txt#L5
[2] https://github.com/openstack/nova/blob/20.0.0/test-requirements.txt#L5

This is easily achievable via tox.ini even without changing any jobs,

I will give an example:
```
[linters:venv]
commands =
   flake8
```
If you add a minus before flake8, tox will ignore the exit code of flake8, but it will still run it.


This is not an invitation to use this as a general practice, just an idea about how to unblock backports in some unfortunate cases.


Cheers
Sorin Sbarnea

On 23 Jan 2020, at 14:57, John Fulton <johfulto at redhat.com> wrote:

What are projects doing about new linters working only with newer deps
or even python3 only? For example [1] [2]. Might it be OK to ignore
pep8 results on maintenance branches?

Thanks,
 John

[1]
https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_82b/703943/1/check/openstack-tox-pep8/82b01fb/tox/pep8-1.log

Ignoring ruamel.yaml: markers 'python_version == "3.4"' don't match
your environment
ERROR: ansible-lint 4.2.0 has requirement ruamel.yaml<1,>=0.15.34;
python_version < "3.7", but you'll have ruamel-yaml 0.13.14 which is
incompatible.


[2] https://zuul.opendev.org/t/openstack/build/82b01fb8a8c04068a906bf0cb888de58
AttributeError: module 'ruamel.yaml' has no attribute 'YAML'
Examining undercloud-debug.yaml of type playbook
Traceback (most recent call last):
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/bin/ansible-lint",
line 8, in <module>
   sys.exit(main())
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__main__.py",
line 187, in main
   matches.extend(runner.run())
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 287, in run
   skip_list=self.skip_list))
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 177, in run
   matches.extend(rule.matchtasks(playbookfile, text))
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 87, in matchtasks
   yaml = ansiblelint.utils.append_skipped_rules(yaml, text, file['type'])
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/utils.py",
line 596, in append_skipped_rules
   yaml_skip = _append_skipped_rules(pyyaml_data, file_text, file_type)
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/utils.py",
line 606, in _append_skipped_rules
   yaml = ruamel.yaml.YAML()
AttributeError: module 'ruamel.yaml' has no attribute 'YAML'
Examining undercloud-service-status.yaml of type playbook
Traceback (most recent call last):
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/bin/ansible-lint",
line 8, in <module>
   sys.exit(main())
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__main__.py",
line 187, in main
   matches.extend(runner.run())
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 287, in run
   skip_list=self.skip_list))
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 177, in run
   matches.extend(rule.matchtasks(playbookfile, text))
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/__init__.py",
line 87, in matchtasks
   yaml = ansiblelint.utils.append_skipped_rules(yaml, text, file['type'])
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/utils.py",
line 596, in append_skipped_rules
   yaml_skip = _append_skipped_rules(pyyaml_data, file_text, file_type)
 File "/home/zuul/src/opendev.org/openstack/tripleo-validations/.tox/pep8/lib/python3.5/site-packages/ansiblelint/utils.py",
line 606, in _append_skipped_rules
   yaml = ruamel.yaml.YAML()
AttributeError: module 'ruamel.yaml' has no attribute 'YAML'
/home/zuul/src/opendev.org/openstack/tripleo-validations
ERROR: InvocationError for command /bin/bash tools/ansible-lint.sh
(exited with code 1)
pep8 finish: run-test after 45.18 seconds
pep8 start: run-test-post
pep8 finish: run-test-post after 0.00 seconds
___________________________________ summary ____________________________________
ERROR: pep8: commands failed








More information about the openstack-discuss mailing list