From 850695409f9156cec0a2c60abfa01c446f23687a Mon Sep 17 00:00:00 2001 From: Laurier Loiselle Date: Mon, 27 Mar 2023 15:31:48 -0400 Subject: [PATCH] src: wv_bom: simplify partnumbers2list --- src/wireviz/wv_bom.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/wireviz/wv_bom.py b/src/wireviz/wv_bom.py index bd8f36b..6b55b18 100644 --- a/src/wireviz/wv_bom.py +++ b/src/wireviz/wv_bom.py @@ -20,18 +20,19 @@ def partnumbers2list( partnumbers: PartNumberInfo, parent_partnumbers: PartNumberInfo = None ) -> List[str]: if not isinstance(partnumbers, list): - return partnumbers.str_list + partnumbers = [partnumbers] - pn = None - for p in partnumbers: - if pn is None: - pn = p.copy() - pn = pn.keep_only_eq(p) - if pn.str_list is None and parent_partnumbers is not None: - return parent_partnumbers.str_list - else: - return pn.str_list + # if there's no parent, fold + if parent_partnumbers is None: + return PartNumberInfo.list_keep_only_eq(partnumbers).str_list + + if isinstance(parent_partnumbers, list): + parent_partnumbers = PartNumberInfo.list_keep_only_eq(parent_partnumbers) + + partnumbers = [p.remove_eq(parent_partnumbers) for p in partnumbers] + + return [p.str_list for p in partnumbers if p] def bom_list(bom):