[libvirt] [PATCH] maint: Use pep8 to implement sc_prohibit_semicolon_at_eol_in_python

Daniel P. Berrangé berrange at redhat.com
Thu Sep 12 11:00:31 UTC 2019


On Thu, Sep 12, 2019 at 12:56:04PM +0200, Andrea Bolognani wrote:
> On Thu, 2019-09-12 at 11:13 +0100, Daniel P. Berrangé wrote:
> > On Thu, Sep 12, 2019 at 05:55:38PM +0800, Shi Lei wrote:
> > > +AC_PATH_PROG([PEP8], [pep8])
> > > +if test -z "$PEP8"; then
> > > +    AC_MSG_ERROR(['pep8' binary is required to check python code style])
> > > +fi
> > 
> > Using pep8 is an interesting idea. Especially with my series to
> > standardize on using python for all build scripts, it will be
> > valuable to have much more advanced python style checks.
> > 
> > The only thing I wonder about is whether its reasonable to make
> > it a mandatory requirement or not, since it is a separate package
> > from python itself we can't assume it is present I think. It is
> > on the various Linux we care about and FreeBSD too, but I'm not
> > seeing it for macOS via homebrew.
> > 
> > Also on my host 'pep8' is a python2 impl, you need 'pep8-3' for
> > the python3 impl. Except that when I run it, it warns that
> > it is renamed to pycodestyle upstream and 'pep8' will be dropped
> > in future.
> > 
> > IOW, I think we'll need to check for existence of the first available
> > bniary from the list in this order:
> > 
> >   pycodestyle-3 pycodestyle pycodestyle-2 pep8-3 pep8 pep8-2
> 
> FWIW, libvirt-dbus is using flake8 to achieve what I believe is
> basically the same result, whereas virt-manager I think uses pylint
> and pycodestlye.
> 
> I am not familiar enough with the Python ecosystem to be able to
> compare the various linters, but it would IMHO make sense to at
> least try to standardize on one or more of them and use them across
> libvirt-related projects.

pep8 validates code style against published PEP style guidelines.

pyflakes does static analysis to detect code errors

flake8 is a wrapper that runs pep8 and pyflakes and does some
other stuff.

For just doing this semicolon check then pep8 is sufficient,
but for a more general approach, then flake8 makes more
sense. In that case we'd delete sc_prohibit_semicolon_at_eol_in_python
entirely, and simply have a generic 'sc_flake8' check that runs a
configured list of checks against all py code.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list