From 3eb52b8d5e2a1c78fdcae9c92112264c3f1e79cc Mon Sep 17 00:00:00 2001 From: "Joran R. Angevaare" Date: Wed, 9 Aug 2023 14:24:16 +0200 Subject: [PATCH] fix logic finding (#112) Co-authored-by: J.R. Angevaare --- optim_esm_tools/analyze/find_matches.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/optim_esm_tools/analyze/find_matches.py b/optim_esm_tools/analyze/find_matches.py index e0b2dd2..4eee890 100644 --- a/optim_esm_tools/analyze/find_matches.py +++ b/optim_esm_tools/analyze/find_matches.py @@ -93,10 +93,9 @@ def find_matches( seen[group] = defaultdict(list) seen_members = seen[group] - if ( - len(seen_members) == max_versions - and len(seen_members.get(version, [])) == max_members - ): + if (len(seen_members) == max_versions and version not in seen_members) or len( + seen_members.get(version, []) + ) == max_members: continue # pragma: no cover if required_file and required_file not in os.listdir( candidate @@ -107,13 +106,18 @@ def find_matches( log.info(f'{candidate} is excluded') continue seen_members[version].append(candidate) + assert all(len(group) <= max_versions for group in seen.values()) + assert all( + len(members) <= max_members + for group in seen.values() + for members in group.values() + ) result = [ folder for group_dict in seen.values() for versions in group_dict.values() for folder in versions ] - assert len(result) <= max_members * max_versions return result