KiBot/experiments/variants/KiCost/README.md

49 lines
1.8 KiB
Markdown

# KiCost variants (modern style)
This is an analysis and test of the *variants* implementation of [KiCost](https://github.com/xesscorp/KiCost)
An old style used `kicost.VARIANT:FIELD` to assign fields. So you could define `kicost.V1:DNP`.
## What goes inside the SCH
- The variants are implemented using the `variant` field (`version` is an alias).
- The `variant` field can contain more than one value, valid separators are: comma `,`, semicolon `;`, slash `/` and space ` `.
Note: spaces are removed, and a vanriant tag can't contain spaces because this is a separator. (`re.split('[,;/ ]', variants)`)
- Components without a variant are always included.
- Components with one or more variants are included only if requested (`--variant REGEX` matches any of the listed variants)
## What goes outside the SCH
- When you generate the spreadsheet you can select one or more variants using a regex (`--variant REGEX`).
- Components containing one or more variants that match the regex are added.
- No exclusion mechanism is available.
- `REGEX` isn't case sensitive.
## Where is in the code?
Source `kicost/edas/tools.py` function `remove_dnp_parts(components, variant)`.
The old mechanism is part of `kicost/edas/eda_kicad.py` function `extract_fields(part, variant)` combined with the above code.
## Conclusion
### Advantages
- Most of the information is inside the project.
- A regex allows pattern matching.
### Disadvantages
- You only have an "include only" option.
- The regex could become complex.
## Old mechanism
KiCost has a field rename mechanism. Fields named `kicost.VARIANT:FIELD` are:
- Renamed to `FIELD` if `VARIANT` matches `--variant REGEX`
- Discarded otherwise
This can be used with the DNP mechanism:
- The name of the field is `dnp` or `nopop` (case insensitive)
- If it contains anything other than 0 (evaluated as float) the component is removed.