[PATCH 03/16] build-aux: introduce 'black' tool for python formatting
Michal Prívozník
mprivozn at redhat.com
Thu Mar 9 15:12:14 UTC 2023
On 3/8/23 17:39, 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.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> 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; \
At this point, there's no file passed to $(BLACK) (because of
exclude_file_... below) and thus it fails. It starts working after next
patch when new python scripts are introduced.
Nevertheless, it may still be worth running this as:
echo "$$ALL_PY" | xargs --no-run-if-empty -- $(BLACK) --check;
(the same could be done to flake8 from which you copied these lines)
> + 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
> +
Michal
More information about the libvir-list
mailing list