<commit_before># KiBoM
Configurable BoM generation tool for KiCad EDA (http://kicad-pcb.org/)

## Description

KiBoM is a configurable BOM (Bill of Materials) generation tool for KiCad EDA. Written in Python, it can be used directly with KiCad software without the need for any external libraries or plugins. 

KiBoM intelligently groups components based on multiple factors, and can generate BoM files in multiple output formats.

BoM options are user-configurable in a per-project configuration file.

## Features

### Intelligent Component Grouping

To be useful for ordering components, the BoM output from a KiCad project should be organized into sensible component groups. KiBom groups components based on the following factors:

- Part name: (e.g. 'R' for resistors, 'C' for capacitors, or longer part names such as 'MAX232')

*note: parts such as {'R','r_small'} can also be grouped together*

- Footprint: Compoments must have the same footprint to be grouped together

- Value: Components must have the same value to be grouped together 

### Intelligent Value Matching

Some component values can be expressed in multiple ways (e.g. "0.1uF" === "100n" for a capacitor). KiBoM matches value strings based on their interpreted numerical value, such that components are grouped together even if their values are expressed differenly.

### Field Extraction

In addition to the default KiCad fields which are assigned to each component, KiBoM extracts and custom fields added to the various components. 

**Default Fields**
The following default fields are extracted and can be added to the output BoM file:
* Description - Part description as per the schematic symbol
* References - List of part references included in a particular group
* Quantity - Number of components included in a particular group
* Part - Part name as per the schematic symbol
* Part Lib - Part library for the symbol *(default - not output to BoM file)*
* Footprint - Part footprint
* Footprint Lib - Part footprint library *(default - not output to BoM file)*
* Datasheet - Component datasheet extracted either from user-included data, or from part library

**User Fields**
If any components have custom fields added, these are available to the output BoM file.

### Multiple File Outputs
Multiple BoM output formats are supported:
* CSV (Comma separated values)<commit_msg>README improvements<commit_after># KiBoM
Configurable BoM generation tool for KiCad EDA (http://kicad-pcb.org/)

## Description

KiBoM is a configurable BOM (Bill of Materials) generation tool for KiCad EDA. Written in Python, it can be used directly with KiCad software without the need for any external libraries or plugins. 

KiBoM intelligently groups components based on multiple factors, and can generate BoM files in multiple output formats.

BoM options are user-configurable in a per-project configuration file.

## Features

### Intelligent Component Grouping

To be useful for ordering components, the BoM output from a KiCad project should be organized into sensible component groups. KiBom groups components based on the following factors:

- Part name: (e.g. 'R' for resistors, 'C' for capacitors, or longer part names such as 'MAX232')

*note: parts such as {'R','r_small'} (which are different symbol representations for the same component) can also be grouped together*

- Footprint: Compoments must have the same footprint to be grouped together

- Value: Components must have the same value to be grouped together 

### Intelligent Value Matching

Some component values can be expressed in multiple ways (e.g. "0.1uF" === "100n" for a capacitor). KiBoM matches value strings based on their interpreted numerical value, such that components are grouped together even if their values are expressed differenly.

### Field Extraction

In addition to the default KiCad fields which are assigned to each component, KiBoM extracts and custom fields added to the various components. 

**Default Fields**
The following default fields are extracted and can be added to the output BoM file:
* Description - Part description as per the schematic symbol
* References - List of part references included in a particular group
* Quantity - Number of components included in a particular group
* Part - Part name as per the schematic symbol
* Part Lib - Part library for the symbol *(default - not output to BoM file)*
* Footprint - Part footprint
* Footprint Lib - Part footprint library *(default - not output to BoM file)*
* Datasheet - Component datasheet extracted either from user-included data, or from part library

**User Fields**
If any components have custom fields added, these are available to the output BoM file.

### Multiple File Outputs
Multiple BoM output formats are supported:
* CSV (Comma separated values)
{'fraction_non_alphanumeric': 0.05434782608695652, 'fraction_numerical': 0.0033444816053511705, 'mean_word_length': 4.609613130128957, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '843722', 'n_tokens_mistral': 1214, 'n_tokens_neox': 1146, 'n_words': 683}