On Wed, Mar 08, 2023 at 11:39:00AM -0500, Daniel P. Berrangé wrote: > The 'black' tool is intended to be an opinionated formatting > tool for python code. It is complementary to flake8 which > validates coding bad practices, but (mostly) ignores code > layout issues. To expand on this, as you can see from the exclude file regex, in this series I've *not* applied 'black' to any of the existing python code. I've merely used it to ensure the newly written python introduced by this series has sane formatting. I've found it very refreshing to write this python code without having to worry about manually getting format "right", so even applying it only to this new code was worthwhile IMHO. I think it likely worth applying it to the existing python code in libvirt too, but I've not made any effort to do so yet and probably won't submit a series myself in the near future. > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > build-aux/Makefile.in | 1 + > build-aux/meson.build | 5 +++++ > build-aux/syntax-check.mk | 18 ++++++++++++++++++ > meson.build | 1 + > 4 files changed, 25 insertions(+) > > diff --git a/build-aux/Makefile.in b/build-aux/Makefile.in > index 7ee4680847..db44ee36a4 100644 > --- a/build-aux/Makefile.in > +++ b/build-aux/Makefile.in > @@ -3,6 +3,7 @@ > top_srcdir = @top_srcdir@ > top_builddir = @top_builddir@ > FLAKE8 = @flake8_path@ > +BLACK = @black_path@ > RUNUTF8 = @runutf8@ > PYTHON = @PYTHON3@ > GREP = @GREP@ > diff --git a/build-aux/meson.build b/build-aux/meson.build > index 16d085505d..0330f2940c 100644 > --- a/build-aux/meson.build > +++ b/build-aux/meson.build > @@ -2,6 +2,10 @@ flake8_path = '' > if flake8_prog.found() > flake8_path = flake8_prog.full_path() > endif > +black_path = '' > +if black_prog.found() > + black_path = black_prog.full_path() > +endif > > if host_machine.system() == 'freebsd' or host_machine.system() == 'darwin' > make_prog = find_program('gmake') > @@ -32,6 +36,7 @@ syntax_check_conf = configuration_data({ > 'top_srcdir': meson.project_source_root(), > 'top_builddir': meson.project_build_root(), > 'flake8_path': flake8_path, > + 'black_path': black_path, > 'runutf8': ' '.join(runutf8), > 'PYTHON3': python3_prog.full_path(), > 'GREP': grep_prog.full_path(), > diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk > index 158f14e77e..6d82a4301a 100644 > --- a/build-aux/syntax-check.mk > +++ b/build-aux/syntax-check.mk > @@ -595,6 +595,16 @@ sc_flake8: > echo 'skipping test $@: flake8 not installed' 1>&2; \ > fi > > +sc_black: > + if [ -n "$(BLACK)" ]; then \ > + DOT_PY=$$($(VC_LIST_EXCEPT) | $(GREP) '\.py$$'); \ > + BANG_PY=$$($(VC_LIST_EXCEPT) | xargs grep -l '^#!/usr/bin/env python3$$'); \ > + ALL_PY=$$(printf "%s\n%s" "$$DOT_PY" "$$BANG_PY" | sort -u); \ > + echo "$$ALL_PY" | xargs $(BLACK) --check; \ > + else \ > + echo 'skipping test $@: black not installed' 1>&2; \ > + fi > + > # mymain() in test files should use return, not exit, for nicer output > sc_prohibit_exit_in_tests: > @prohibit='\<exit *\(' \ > @@ -1303,6 +1313,11 @@ syntax-check: sc_spacing-check \ > echo "* flake8 not installed, sc_flake8 has been skipped *" >&2; \ > echo "*****************************************************" >&2; \ > fi > + if [ -z "$(BLACK)" ]; then \ > + echo "*****************************************************" >&2; \ > + echo "* black not installed, sc_black has been skipped *" >&2; \ > + echo "*****************************************************" >&2; \ > + fi > endif > > # Don't include duplicate header in the source (either *.c or *.h) > @@ -1479,6 +1494,9 @@ exclude_file_name_regexp--sc_prohibit_select = \ > ^build-aux/syntax-check\.mk|src/util/vireventglibwatch\.c|tests/meson\.build$$ > > > +exclude_file_name_regexp--sc_black = \ > + ^tools/|src/|tests/|ci/|run\.in|scripts/[^/]*\.py > + > ## -------------- ## > ## Implementation ## > ## -------------- ## > diff --git a/meson.build b/meson.build > index 319ed790f9..f63fed8cb5 100644 > --- a/meson.build > +++ b/meson.build > @@ -769,6 +769,7 @@ endforeach > > optional_programs = [ > 'augparse', > + 'black', > 'dmidecode', > 'ebtables', > 'flake8', > -- > 2.39.1 > With 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 :|