From f994851c472d097a4cd34da42abc16bea30dc4c6 Mon Sep 17 00:00:00 2001 From: Wolfgang Müller Date: Tue, 27 Apr 2021 17:23:31 +0200 Subject: main: Improve readability of collect_predicates Instead of adding another indentation level, exit early if a value or a key can be ignored. --- quarg/main.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/quarg/main.py b/quarg/main.py index eeaf943..2973a2a 100644 --- a/quarg/main.py +++ b/quarg/main.py @@ -141,16 +141,25 @@ def collect_predicates(args): } for key, value in vars(args).items(): - # FIXME sadly the 'joined' namespace will contain a falsy value, so - # check against None or [] - if key in funs and value not in [None, []]: - fun = funs[key] - if args.debug: - print(f'{key}: {value}', file=sys.stderr) - if isinstance(value, list): - yield filters.any_filter(fun, value) - else: - yield fun(value) + # ignore unset or empty arguments + # Note: 'if not value' does not work here because 'joined' can be falsy + # but still needs to be passed to filters.joined + if value is None or value == []: + continue + + # ignore arguments that do not map to predicates + if key not in funs: + continue + + if args.debug: + print(f'{key}: {value}', file=sys.stderr) + + fun = funs[key] + + if isinstance(value, list): + yield filters.any_filter(fun, value) + else: + yield fun(value) def run_query(session, predicates): start = timer() -- cgit v1.2.3-2-gb3c3