354 Commits

Author SHA1 Message Date
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
kvid
da56841290
Assign the default cable length unit when not present (#206)
Bug: Failing to assign the default cable length unit when not present.
It was introduced in #198.

Fix: Test the correct cable attribute. This fix solves issue #205.
2020-12-29 13:31:55 +01:00
Daniel Rojas
606ddbf977
Detect and assign unit within cable length attribute (#198)
Co-authored-by: kvid <kvid@users.noreply.github.com>
2020-12-13 12:39:29 +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
Daniel Rojas
eebf932c8d Show pin labels of adjacent connectors in cable node (#70) 2020-11-14 23:21:08 +01:00
Daniel Rojas
3bf448c692 Update example 08 to reference wires using colors 2020-11-14 23:21:08 +01:00
Daniel Rojas
03e6077512 Allow referencing wires by color/label (#169,#193) 2020-11-14 23:21:08 +01:00
Daniel Rojas
feff47f47b
Add option to add colors to connector pins (#141) 2020-11-14 09:43:01 +01:00
KV
64bd34a7c6 Add type aliases that reflect their semantics
Using Any or str in type annotations might increase the need for extra
comments to explain the real valid values. However, such needs can be
drastically reduced with the help of semanticly named type aliases.

Each type alias have their legal values described in comments.
Actual validation might be implemented in the future.
2020-11-01 15:26:11 +01:00
KV
3f091bb419 Update the types of dataclass attributes according to usage
Fixes #156
2020-11-01 15:26:11 +01:00
Miklos Marton
e2e8bbfb91 Remove input text hyperlinks except in the HTML BOM
GraphViz does not support the a HTML tag when generating the tables for the
cables/connectors, so this change will remove these tags for the graph generation.
However for the HTML BOM output table these links will be generated.
2020-10-22 23:08:13 +02:00
Tyler Ward
e85ee5d285
Allow addittional BOM items within components (#115) 2020-10-22 17:53:33 +02:00
Daniel Rojas
4e4dac8597 Bump version to 0.3-dev 2020-10-17 11:53:11 +02:00
Daniel Rojas
b2d1a29cc2 Rebuild all examples with v0.2 2020-10-17 11:42:30 +02:00
Daniel Rojas
3e570d648f Bump version to 0.2 2020-10-17 11:41:27 +02:00
Daniel Rojas
6db1fcf0fe Improve documentation
- Create `docs/` directory
- Add syntax description (`syntax.md`)
- Track changes since first release (`CHANGELOG.md`)
- Expand contribution guidelines (`CONTRIBUTING.md`)
- Improve main readme (`README.md`)
- Add documentation for build script (`buildscript.md`)
2020-10-16 23:13:56 +02:00
KV
fb17eae7a6 Avoid errors from HTML validator
The https://validator.w3.org/ reported Errors:
The align attribute on the th/td element is obsolete. Use CSS instead.

By replacing align="X" attributes with text-align:X; CSS equivalent,
the validator now completes without any errors or warnings.

This solves the remaining issues from #97.
2020-10-16 22:02:15 +02:00
KV
7dcd1a7eeb Define application name and URL only once
The application name and URL was defined several places in the code,
and the name was not written exactly the same everywhere.

By using the same constants everywhere, consistency is obtained.
2020-10-16 22:02:15 +02:00
KV
b00040cdd9 Add version number to output files with meta info
Tag the .gv and .html output files with generator and version number.
2020-10-16 22:02:15 +02:00
KV
1809f73d58 Simplify colorbar using the same technique as html_image()
Moving common code into html_colorbar() helper function.
2020-10-14 22:37:20 +02:00
kvid
4782da47c9
Add optional image to connectors and cables (#153)
This image, with an optional caption below, is displayed in the lower 
section of the connector/cable node in the diagram - just above the 
notes if present.

This solves the basic part of issue #27, and is a continuation of 
PR #137 that was closed due to changes in the base branch.
2020-10-14 16:08:16 +02:00
KV
7df8a4b7cf Add command line options to show version number
Add -V command line option (and --version as an alias) to
both wireviz.py and build_examples.py that show version number.

Move the version number from setup.py into __init__.py to access
the same version number specification from all files needing it.

This solves part 4 of issue #167.
2020-10-11 13:37:34 +02:00
KV
c4957f1475 Comment out unimplemented command line option
It seems, that the current implementation ignores --generate-bom,
and that parser.add_argument() code line is therefore commented
out until it gets implemented to avoid any confusion.

This solves part 1 of issue #167.
2020-10-11 13:37:34 +02:00
KV
83a467a4aa Add diff as an alias to the compare command
When used to "git diff", it is easy to write "build_examples.py diff"
instead of "build_examples.py compare" by a mistake. Therefore,
"diff" is now an alias to "compare" so both commands will work.

This solves part 3 of issue #167.
2020-10-11 13:37:34 +02:00
KV
b14f5cba19 Add -b BRANCH argument to the compare and restore commands
Adding an optional -b BRANCH argument to build_examples.py to enable
comparing to and restoring from any branch or commit. That will help
when e.g. reversing an unfortunate commit of generated files.

This solves part 2 of issue #167.
2020-10-11 13:37:34 +02:00
Daniel Rojas
df90d8326a
Add .gitattributes for GitHub Linguist (#154) 2020-08-22 18:49:39 +02:00
Daniel Rojas
e3fb39f5ae Add whitespace to GraphViz HTML for readability 2020-08-13 17:21:42 +02:00
Daniel Rojas
94faec536e Rebuild GV HTML generation using lists
Simplify code

remove superfluous temporary variables `pinlist`, `wirerow`

Add suggested changes
2020-08-13 17:21:42 +02:00
Daniel Rojas
af196dfd8c Improve line break handling 2020-08-13 17:21:42 +02:00
Daniel Rojas
102c7d6113 Simplify code and rename variables
Improve code based on review

Suggestions by @kvid
2020-08-13 17:21:42 +02:00
Daniel Rojas
43f85aedb2 Add color attribute to cables 2020-08-13 17:21:42 +02:00
Daniel Rojas
2639c77360 Refactor cable GraphViz HTML generation
to match the one for connectors.
2020-08-13 17:21:42 +02:00