28 Commits

Author SHA1 Message Date
Daniel Rojas
53fefa8f3c Add note attribute to additional components 2021-03-23 11:04:33 +01:00
Daniel Rojas
e61d14ba43 Create bom_bubble() function 2021-03-23 11:00:26 +01:00
Daniel Rojas
8c26c8fbbd New addit. compo. BOM table proof of concept 2021-03-23 10:49:56 +01:00
KV
523d0c659e Group common function arguments into a dict 2021-03-14 05:49:33 +01:00
KV
183a9432c3 Move repeated code into new optional_fields() function 2021-02-20 21:30:10 +01:00
KV
30dbd9573b Rename the 'item' key to 'description' in all BOMEntry dicts
This way, both BOM and harness.additional_bom_items uses the same
set of keys in their dict entries. This was originally suggested
in a #115 review, but had too many issues to be implemented then.
2021-01-06 22:53:33 +01:00
KV
8e7c48d42e Eliminate local variable 2021-01-05 04:20:44 +01:00
KV
2e244981fe Move default qty value=1 to BOM deduplication 2021-01-05 04:12:05 +01:00
KV
d15eeb1f9f Build output string in one big expression
Build output string in component_table_entry() as the similar strings
in generate_bom(). Repeating a couple of minor if-expressions is small
cost to obtain a more compact and readable main expression.
2021-01-03 06:13:09 +01:00
KV
d6d0d2a486 Rename extra variable to part for consistency 2021-01-03 06:13:09 +01:00
KV
c22c42e722 Add BOMEntry type alias
This type alias describes the possible types of keys and values in
the dict representing a BOM entry.
2021-01-03 06:13:09 +01:00
KV
12e570fdad Add function type hints and doc strings 2021-01-03 06:13:09 +01:00
KV
1d653c44ed Replace accumulation loop with sum expressions
Make a list from the group iterator for reusage in sum expressions
and to pick first group entry. The expected group sizes are very small,
so performance loss by creating a temporary list should be neglectable.

Alternativly, itertools.tee(group, 3) could be called to triplicate
the iterator, but it was not chosen for readability reasons.
2020-12-30 08:46:01 +01:00
KV
96d393dfb7 Use a generator expressions and raise exception if failing
Seems to be the most popular search alternative:
 https://stackoverflow.com/questions/8653516/python-list-of-dictionaries-search

Raising StopIteration if not found is better than returning None
to detect such an internal error more easily.
2020-12-30 08:46:01 +01:00
KV
f13f8a7dd7 Make the BOM grouping function return string tuple for sorting 2020-12-30 08:46:01 +01:00
KV
cdca708da9 Move BOM sorting above grouping to use groupby()
- Use one common entry loop to consume iterator only once.
- Use same key function for sort() and groupby(),
  except replace None with empty string when sorting.
2020-12-30 08:46:01 +01:00
KV
10b1198b77 Move out code from inner loop into helper functions 2020-12-30 08:46:00 +01:00
KV
74462cd225 Remove parentheses around return expressions
https://stackoverflow.com/questions/4978567/should-a-return-statement-have-parentheses
2020-12-30 08:46:00 +01:00
KV
e1d7babf63 Simplify deduplication and sorting of collected designators 2020-12-30 08:46:00 +01:00
KV
d2f8034961 Simplify collecting designators for a joined BOM entry
Assign input designators once to a temporary variable for easy reusage.
2020-12-30 08:46:00 +01:00
KV
6378b96541 Simplify BOM header row logic 2020-12-30 08:46:00 +01:00
KV
347f1e3031 Redefine the common lambda to an ordinary function 2020-12-30 08:46:00 +01:00
KV
da453db9f0 Convert dataclass object to dict to use the same lambda 2020-12-30 08:46:00 +01:00
KV
45b13ef797 Use the same lambda in get_bom_index() as for deduplicating BOM
Move the lambda declaration out of the function scope for common
access from two different functions.
2020-12-30 08:46:00 +01:00
KV
6525537312 Simplify get_bom_index() parameters
- Use the actual BOM as first parameter instead of the whole harness.
- Use a whole AdditionalComponent as second parameter instead of each
  attribute separately.
2020-12-30 08:46:00 +01:00
KV
0f3b5e9edf Skip assignment and return expression directly 2020-12-30 08:46:00 +01:00
William Sutton
dec64abaf5 Add support for wire length units
Based on #161, #162, #171.

Co-authored-by: stevegt <stevegt@t7a.org>
Co-authored-by: kvid <kvid@users.noreply.github.com>
2020-11-16 17:14:46 +01:00
Daniel Rojas
96bd121403 Create separate modules for BOM and HTML functions 2020-11-15 08:42:57 +01:00