From 76baf5ca9d58cfde6c015cc1162c39a9aec60771 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Mon, 29 May 2017 07:30:47 +0000 Subject: [PATCH] check_GNU_style_lib.py: Suggest to install all missing pip3 packages at once Instead of: ... $ ./contrib/check_GNU_style.py termcolor module is missing (run: pip3 install termcolor) $ pip3 install termcolor $ ./contrib/check_GNU_style.py unidiff module is missing (run: pip3 install unidiff) $ pip3 install unidiff $ ... Do: ... $ ./contrib/check_GNU_style.py termcolor and unidiff modules are missing (run: pip3 install termcolor unidiff) $ pip3 install termcolor unidiff $ ... 2017-05-29 Tom de Vries * check_GNU_style_lib.py: Use import_pip3 to import pip3 packages. (import_pip3): New function. From-SVN: r248554 --- contrib/ChangeLog | 5 +++++ contrib/check_GNU_style_lib.py | 34 +++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index ae0c246f4eb..582850857a8 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2017-05-29 Tom de Vries + + * check_GNU_style_lib.py: Use import_pip3 to import pip3 packages. + (import_pip3): New function. + 2017-05-24 Tom de Vries * check_GNU_style_lib.py: New file, factored out of ... diff --git a/contrib/check_GNU_style_lib.py b/contrib/check_GNU_style_lib.py index a1224c11008..d924e68ecbc 100755 --- a/contrib/check_GNU_style_lib.py +++ b/contrib/check_GNU_style_lib.py @@ -28,17 +28,29 @@ import sys import re import unittest -try: - from termcolor import colored -except ImportError: - print('termcolor module is missing (run: pip3 install termcolor)') - exit(3) - -try: - from unidiff import PatchSet -except ImportError: - print('unidiff module is missing (run: pip3 install unidiff)') - exit(3) +def import_pip3(*args): + missing=[] + for (module, names) in args: + try: + lib = __import__(module) + except ImportError: + missing.append(module) + continue + if not isinstance(names, list): + names=[names] + for name in names: + globals()[name]=getattr(lib, name) + if len(missing) > 0: + missing_and_sep = ' and '.join(missing) + missing_space_sep = ' '.join(missing) + print('%s %s missing (run: pip3 install %s)' + % (missing_and_sep, + ("module is" if len(missing) == 1 else "modules are"), + missing_space_sep)) + exit(3) + +import_pip3(('termcolor', 'colored'), + ('unidiff', 'PatchSet')) from itertools import * -- 2.30.2