[all] pep8 results for maintenance branches over time

Sean Mooney smooney at redhat.com
Thu Jan 23 17:46:26 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
that should not really be the case. some linter might get stricter over time but when you backport
you generally should not need to update the styple unless you are going form pyton3 only to python 2 compatible
sysntax but that would be a require change regardless of the linter.
> - outdated linters in maintenance branches will start to misbehave: false positives, failure to install, ....
we have been pinning flake8 in nova for years. we have never had this happen and i dont think it will hapen unless
you intentionall or unintentionlly make a backward impatable linter rule change.
> - unable to upgrade linters on maintenance branches due dependency conflicts, dropped py27 support, pip or other time-
> bombs
we dont update linter on stable branches in general and typeically expect them to be frozen at the version they relased
with.
> 
> My gut feeling about it is that sooner or later we may be forced to silence `tox -e linters` on old branches.
> 
> 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.
well the correct way to do that would really to be mark the jobs as non voting in the zuul.yaml but i dont think
this will be required unless project start removing old version from pypi.
when project do that it breaks everyone and i think when that happens we need to explain
the impact to the maintainer of the project and if they dont care consider should we replace that depency with an
alternivite where the maintainer does care about legacy support.
> 
> 
> 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