diff --git a/src/wireviz/wv_bom.py b/src/wireviz/wv_bom.py index 6b55b18..0dd0eb8 100644 --- a/src/wireviz/wv_bom.py +++ b/src/wireviz/wv_bom.py @@ -35,11 +35,12 @@ def partnumbers2list( return [p.str_list for p in partnumbers if p] -def bom_list(bom): +def bom_list(bom, restrict_printed_lengths=True): entries_as_dict = [] has_content = set() # First pass, get all bom dict and identify filled columns for entry in bom.values(): + entry.restrict_printed_lengths = restrict_printed_lengths has_content = has_content.union(entry.bom_defined) entries_as_dict.append(entry.bom_dict) diff --git a/src/wireviz/wv_cli.py b/src/wireviz/wv_cli.py index ac4d8cb..7f10e5b 100644 --- a/src/wireviz/wv_cli.py +++ b/src/wireviz/wv_cli.py @@ -155,6 +155,7 @@ def cli(files, formats, prepend, output_dir, output_name, version, use_qty_multi ) shared_bom = ret["shared_bom"] + # TODO: move shared bom generation to a method? if "shared_bom" in output_formats: shared_bom_file = (_output_dir / "shared_bom").with_suffix(".tsv") print(f'Generating shared bom at {shared_bom_file}') @@ -166,7 +167,7 @@ def cli(files, formats, prepend, output_dir, output_name, version, use_qty_multi for bom_item in shared_bom.values(): bom_item.scale_per_harness(qty_multipliers) - shared_bomlist = bom_list(shared_bom) + shared_bomlist = bom_list(shared_bom, False) shared_bom_tsv = bom2tsv(shared_bomlist) shared_bom_file.open("w").write(shared_bom_tsv) diff --git a/src/wireviz/wv_dataclasses.py b/src/wireviz/wv_dataclasses.py index d039b18..f184663 100644 --- a/src/wireviz/wv_dataclasses.py +++ b/src/wireviz/wv_dataclasses.py @@ -268,8 +268,6 @@ class BomEntry: category: Optional[str] = None ignore_in_bom: Optional[bool] = False - scaled_per_harness = False - # Used to add all occurence of a BomEntry designators: [List] = field(default_factory=list) per_harness: [Dict] = field(default_factory=dict) @@ -277,6 +275,10 @@ class BomEntry: # Used to restrict printed lengths MAX_PRINTED_DESCRIPTION: int = 40 MAX_PRINTED_DESIGNATORS: int = 2 + restrict_printed_lengths: bool = True + + + scaled_per_harness = False # Map a bom key to the header BOM_KEY_TO_COLUMNS = { @@ -289,7 +291,7 @@ class BomEntry: } def __repr__(self): - f'{id}: {self.partnumbers}, {self.qty}' + return f'{id}: {self.partnumbers}, {self.qty}' def __hash__(self): return hash((self.partnumbers, self.description)) @@ -344,7 +346,7 @@ class BomEntry: @property def description_str(self): description = self.description - if len(description) > self.MAX_PRINTED_DESCRIPTION: + if self.restrict_printed_lengths and len(description) > self.MAX_PRINTED_DESCRIPTION: description = f"{description[:self.MAX_PRINTED_DESCRIPTION]} (...)" return description @@ -354,7 +356,7 @@ class BomEntry: return "" all_designators = sorted(self.designators) - if len(all_designators) > self.MAX_PRINTED_DESIGNATORS: + if self.restrict_printed_lengths and len(all_designators) > self.MAX_PRINTED_DESIGNATORS: all_designators = all_designators[: self.MAX_PRINTED_DESIGNATORS] + ["..."] return ", ".join(all_designators)