kicad-sch-api 0.4.1__py3-none-any.whl → 0.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kicad_sch_api/__init__.py +67 -2
- kicad_sch_api/cli/kicad_to_python.py +169 -0
- kicad_sch_api/collections/__init__.py +23 -8
- kicad_sch_api/collections/base.py +369 -59
- kicad_sch_api/collections/components.py +1376 -187
- kicad_sch_api/collections/junctions.py +129 -289
- kicad_sch_api/collections/labels.py +391 -287
- kicad_sch_api/collections/wires.py +202 -316
- kicad_sch_api/core/__init__.py +37 -2
- kicad_sch_api/core/component_bounds.py +34 -12
- kicad_sch_api/core/components.py +146 -7
- kicad_sch_api/core/config.py +25 -12
- kicad_sch_api/core/connectivity.py +692 -0
- kicad_sch_api/core/exceptions.py +175 -0
- kicad_sch_api/core/factories/element_factory.py +3 -1
- kicad_sch_api/core/formatter.py +24 -7
- kicad_sch_api/core/geometry.py +94 -5
- kicad_sch_api/core/managers/__init__.py +4 -0
- kicad_sch_api/core/managers/base.py +76 -0
- kicad_sch_api/core/managers/file_io.py +3 -1
- kicad_sch_api/core/managers/format_sync.py +3 -2
- kicad_sch_api/core/managers/graphics.py +3 -2
- kicad_sch_api/core/managers/hierarchy.py +661 -0
- kicad_sch_api/core/managers/metadata.py +4 -2
- kicad_sch_api/core/managers/sheet.py +52 -14
- kicad_sch_api/core/managers/text_elements.py +3 -2
- kicad_sch_api/core/managers/validation.py +3 -2
- kicad_sch_api/core/managers/wire.py +112 -54
- kicad_sch_api/core/parsing_utils.py +63 -0
- kicad_sch_api/core/pin_utils.py +103 -9
- kicad_sch_api/core/schematic.py +343 -29
- kicad_sch_api/core/types.py +79 -7
- kicad_sch_api/exporters/__init__.py +10 -0
- kicad_sch_api/exporters/python_generator.py +610 -0
- kicad_sch_api/exporters/templates/default.py.jinja2 +65 -0
- kicad_sch_api/geometry/__init__.py +15 -3
- kicad_sch_api/geometry/routing.py +211 -0
- kicad_sch_api/parsers/elements/label_parser.py +30 -8
- kicad_sch_api/parsers/elements/symbol_parser.py +255 -83
- kicad_sch_api/utils/logging.py +555 -0
- kicad_sch_api/utils/logging_decorators.py +587 -0
- kicad_sch_api/utils/validation.py +16 -22
- kicad_sch_api/wrappers/__init__.py +14 -0
- kicad_sch_api/wrappers/base.py +89 -0
- kicad_sch_api/wrappers/wire.py +198 -0
- kicad_sch_api-0.5.1.dist-info/METADATA +540 -0
- kicad_sch_api-0.5.1.dist-info/RECORD +114 -0
- kicad_sch_api-0.5.1.dist-info/entry_points.txt +4 -0
- {kicad_sch_api-0.4.1.dist-info → kicad_sch_api-0.5.1.dist-info}/top_level.txt +1 -0
- mcp_server/__init__.py +34 -0
- mcp_server/example_logging_integration.py +506 -0
- mcp_server/models.py +252 -0
- mcp_server/server.py +357 -0
- mcp_server/tools/__init__.py +32 -0
- mcp_server/tools/component_tools.py +516 -0
- mcp_server/tools/connectivity_tools.py +532 -0
- mcp_server/tools/consolidated_tools.py +1216 -0
- mcp_server/tools/pin_discovery.py +333 -0
- mcp_server/utils/__init__.py +38 -0
- mcp_server/utils/logging.py +127 -0
- mcp_server/utils.py +36 -0
- kicad_sch_api-0.4.1.dist-info/METADATA +0 -491
- kicad_sch_api-0.4.1.dist-info/RECORD +0 -87
- kicad_sch_api-0.4.1.dist-info/entry_points.txt +0 -2
- {kicad_sch_api-0.4.1.dist-info → kicad_sch_api-0.5.1.dist-info}/WHEEL +0 -0
- {kicad_sch_api-0.4.1.dist-info → kicad_sch_api-0.5.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kicad-sch-api
|
|
3
|
+
Version: 0.5.1
|
|
4
|
+
Summary: Professional KiCAD schematic manipulation library with exact format preservation
|
|
5
|
+
Author-email: Circuit-Synth <shane@circuit-synth.com>
|
|
6
|
+
Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/circuit-synth/kicad-sch-api
|
|
9
|
+
Project-URL: Documentation, https://kicad-sch-api.readthedocs.io/
|
|
10
|
+
Project-URL: Repository, https://github.com/circuit-synth/kicad-sch-api.git
|
|
11
|
+
Project-URL: Bug Reports, https://github.com/circuit-synth/kicad-sch-api/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/circuit-synth/kicad-sch-api/blob/main/CHANGELOG.md
|
|
13
|
+
Keywords: kicad,schematic,eda,electronics,circuit-design,ai,automation,pcb
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Science/Research
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Operating System :: OS Independent
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: sexpdata>=0.0.3
|
|
29
|
+
Requires-Dist: typing-extensions>=4.0.0; python_version < "3.11"
|
|
30
|
+
Requires-Dist: pydantic>=2.0.0
|
|
31
|
+
Requires-Dist: mcp>=1.10.0
|
|
32
|
+
Requires-Dist: fastmcp>=0.2.0
|
|
33
|
+
Requires-Dist: jinja2>=3.0.0
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
39
|
+
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
40
|
+
Requires-Dist: isort>=5.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
43
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
44
|
+
Provides-Extra: docs
|
|
45
|
+
Requires-Dist: sphinx>=5.0.0; extra == "docs"
|
|
46
|
+
Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
|
|
47
|
+
Requires-Dist: myst-parser>=0.18.0; extra == "docs"
|
|
48
|
+
Dynamic: license-file
|
|
49
|
+
|
|
50
|
+
# KiCAD Schematic API
|
|
51
|
+
|
|
52
|
+
[](https://kicad-sch-api.readthedocs.io/en/latest/?badge=latest)
|
|
53
|
+
[](https://badge.fury.io/py/kicad-sch-api)
|
|
54
|
+
[](https://www.python.org/downloads/)
|
|
55
|
+
[](https://opensource.org/licenses/MIT)
|
|
56
|
+
|
|
57
|
+
**Professional Python library for KiCAD schematic file manipulation with exact format preservation**
|
|
58
|
+
|
|
59
|
+
## Overview
|
|
60
|
+
|
|
61
|
+
Create and manipulate KiCAD schematic files programmatically with guaranteed exact format preservation. This library serves as the foundation for EDA automation tools and AI agents that need reliable, professional-grade schematic manipulation capabilities.
|
|
62
|
+
|
|
63
|
+
## 🎯 Core Features
|
|
64
|
+
|
|
65
|
+
- **📋 Exact Format Preservation**: Byte-perfect KiCAD output that matches native formatting
|
|
66
|
+
- **🏗️ Professional Component Management**: Object-oriented collections with search and validation
|
|
67
|
+
- **⚡ High Performance**: Optimized for large schematics with intelligent caching
|
|
68
|
+
- **🔍 Real KiCAD Library Integration**: Access to actual KiCAD symbol libraries and validation
|
|
69
|
+
- **🔌 Connectivity Analysis**: Trace electrical connections through wires, labels, and hierarchy
|
|
70
|
+
- **📐 Component Bounding Boxes**: Precise component boundary calculation and visualization
|
|
71
|
+
- **🛣️ Manhattan Routing**: Intelligent wire routing with obstacle avoidance
|
|
72
|
+
- **🗂️ Hierarchical Design**: Complete support for multi-sheet schematic projects
|
|
73
|
+
- **🤖 AI Agent Ready**: MCP server for seamless integration with AI development tools
|
|
74
|
+
|
|
75
|
+
## 🚀 Quick Start
|
|
76
|
+
|
|
77
|
+
### Installation
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Install from PyPI
|
|
81
|
+
pip install kicad-sch-api
|
|
82
|
+
|
|
83
|
+
# Or install from source
|
|
84
|
+
git clone https://github.com/circuit-synth/kicad-sch-api.git
|
|
85
|
+
cd kicad-sch-api
|
|
86
|
+
uv pip install -e .
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Basic Usage
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
import kicad_sch_api as ksa
|
|
93
|
+
|
|
94
|
+
# Create a new schematic
|
|
95
|
+
sch = ksa.create_schematic("My Circuit")
|
|
96
|
+
|
|
97
|
+
# Add components with proper validation
|
|
98
|
+
resistor = sch.components.add(
|
|
99
|
+
lib_id="Device:R",
|
|
100
|
+
reference="R1",
|
|
101
|
+
value="10k",
|
|
102
|
+
position=(100.0, 100.0),
|
|
103
|
+
footprint="Resistor_SMD:R_0603_1608Metric"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# Add wires for connectivity
|
|
107
|
+
sch.wires.add(start=(100, 110), end=(150, 110))
|
|
108
|
+
|
|
109
|
+
# Pin-to-pin wiring
|
|
110
|
+
wire_uuid = sch.add_wire_between_pins("R1", "2", "C1", "1")
|
|
111
|
+
|
|
112
|
+
# Add labels for nets
|
|
113
|
+
sch.add_label("VCC", position=(125, 110))
|
|
114
|
+
|
|
115
|
+
# Save with exact format preservation
|
|
116
|
+
sch.save("my_circuit.kicad_sch")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## ⚠️ Critical: KiCAD Coordinate System
|
|
120
|
+
|
|
121
|
+
**Understanding this is CRITICAL for working with this library.**
|
|
122
|
+
|
|
123
|
+
### The Two Coordinate Systems
|
|
124
|
+
|
|
125
|
+
KiCAD uses **two different Y-axis conventions**:
|
|
126
|
+
|
|
127
|
+
1. **Symbol Space** (library definitions): Normal Y-axis (+Y is UP, like math)
|
|
128
|
+
2. **Schematic Space** (placed components): Inverted Y-axis (+Y is DOWN, like graphics)
|
|
129
|
+
|
|
130
|
+
### The Transformation
|
|
131
|
+
|
|
132
|
+
When placing a symbol on a schematic, **Y coordinates are negated**:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
# Symbol library (normal Y, +Y up):
|
|
136
|
+
Pin 1: (0, +3.81) # 3.81mm UPWARD in symbol
|
|
137
|
+
Pin 2: (0, -3.81) # 3.81mm DOWNWARD in symbol
|
|
138
|
+
|
|
139
|
+
# Component placed at (100, 100) in schematic (inverted Y, +Y down):
|
|
140
|
+
# Y is NEGATED during transformation:
|
|
141
|
+
Pin 1: (100, 100 + (-3.81)) = (100, 96.52) # LOWER Y = visually HIGHER
|
|
142
|
+
Pin 2: (100, 100 + (+3.81)) = (100, 103.81) # HIGHER Y = visually LOWER
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Visual Interpretation
|
|
146
|
+
|
|
147
|
+
In schematic space (inverted Y-axis):
|
|
148
|
+
- **Lower Y values** = visually HIGHER on screen (top)
|
|
149
|
+
- **Higher Y values** = visually LOWER on screen (bottom)
|
|
150
|
+
- **X-axis is normal** (increases to the right)
|
|
151
|
+
|
|
152
|
+
### Grid Alignment
|
|
153
|
+
|
|
154
|
+
**ALL positions MUST be grid-aligned:**
|
|
155
|
+
- Default grid: **1.27mm (50 mil)**
|
|
156
|
+
- Component positions, wire endpoints, pin positions, labels must all align to grid
|
|
157
|
+
- Common values: 0.00, 1.27, 2.54, 3.81, 5.08, 6.35, 7.62, 8.89, 10.16...
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
# Good - on grid
|
|
161
|
+
sch.components.add('Device:R', 'R1', '10k', position=(100.33, 101.60))
|
|
162
|
+
|
|
163
|
+
# Bad - off grid (will cause connectivity issues)
|
|
164
|
+
sch.components.add('Device:R', 'R2', '10k', position=(100.5, 101.3))
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
This coordinate system is critical for:
|
|
168
|
+
- Pin position calculations
|
|
169
|
+
- Wire routing and connectivity
|
|
170
|
+
- Component placement
|
|
171
|
+
- Hierarchical connections
|
|
172
|
+
- Electrical connectivity detection
|
|
173
|
+
|
|
174
|
+
## 🔧 Core Features
|
|
175
|
+
|
|
176
|
+
### Component Management
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
# Add and manage components
|
|
180
|
+
resistor = sch.components.add("Device:R", "R1", "10k", (100, 100))
|
|
181
|
+
|
|
182
|
+
# Search and filter
|
|
183
|
+
resistors = sch.components.find(lib_id_pattern='Device:R*')
|
|
184
|
+
|
|
185
|
+
# Bulk updates
|
|
186
|
+
sch.components.bulk_update(
|
|
187
|
+
criteria={'lib_id': 'Device:R'},
|
|
188
|
+
updates={'properties': {'Tolerance': '1%'}}
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
# Remove components
|
|
192
|
+
sch.components.remove("R1")
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**📖 See [API Reference](docs/API_REFERENCE.md) for complete component API**
|
|
196
|
+
|
|
197
|
+
### Connectivity Analysis
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
# Check if pins are electrically connected
|
|
201
|
+
if sch.are_pins_connected("R1", "2", "R2", "1"):
|
|
202
|
+
print("Connected!")
|
|
203
|
+
|
|
204
|
+
# Get net information
|
|
205
|
+
net = sch.get_net_for_pin("R1", "2")
|
|
206
|
+
print(f"Net: {net.name}, Pins: {len(net.pins)}")
|
|
207
|
+
|
|
208
|
+
# Get all connected pins
|
|
209
|
+
connected = sch.get_connected_pins("R1", "2")
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Connectivity analysis includes:
|
|
213
|
+
- Direct wire connections
|
|
214
|
+
- Connections through junctions
|
|
215
|
+
- Local and global labels
|
|
216
|
+
- Hierarchical labels (cross-sheet)
|
|
217
|
+
- Power symbols (VCC, GND)
|
|
218
|
+
- Sheet pins (parent/child)
|
|
219
|
+
|
|
220
|
+
**📖 See [API Reference](docs/API_REFERENCE.md#connectivity-analysis) for complete connectivity API**
|
|
221
|
+
|
|
222
|
+
### Hierarchy Management
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
# Build hierarchy tree
|
|
226
|
+
tree = sch.hierarchy.build_hierarchy_tree(sch, schematic_path)
|
|
227
|
+
|
|
228
|
+
# Find reused sheets
|
|
229
|
+
reused = sch.hierarchy.find_reused_sheets()
|
|
230
|
+
for filename, instances in reused.items():
|
|
231
|
+
print(f"{filename} used {len(instances)} times")
|
|
232
|
+
|
|
233
|
+
# Validate sheet connections
|
|
234
|
+
connections = sch.hierarchy.validate_sheet_pins()
|
|
235
|
+
errors = sch.hierarchy.get_validation_errors()
|
|
236
|
+
|
|
237
|
+
# Trace signals through hierarchy
|
|
238
|
+
paths = sch.hierarchy.trace_signal_path("VCC")
|
|
239
|
+
|
|
240
|
+
# Flatten design
|
|
241
|
+
flattened = sch.hierarchy.flatten_hierarchy(prefix_references=True)
|
|
242
|
+
|
|
243
|
+
# Visualize hierarchy
|
|
244
|
+
print(sch.hierarchy.visualize_hierarchy(include_stats=True))
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**📖 See [Hierarchy Features Guide](docs/HIERARCHY_FEATURES.md) for complete hierarchy documentation**
|
|
248
|
+
|
|
249
|
+
### Wire Routing & Pin Connections
|
|
250
|
+
|
|
251
|
+
```python
|
|
252
|
+
# Direct pin-to-pin wiring
|
|
253
|
+
sch.add_wire_between_pins("R1", "2", "R2", "1")
|
|
254
|
+
|
|
255
|
+
# Manhattan routing with obstacle avoidance
|
|
256
|
+
wires = sch.auto_route_pins(
|
|
257
|
+
"R1", "2", "R2", "1",
|
|
258
|
+
routing_mode="manhattan",
|
|
259
|
+
avoid_components=True
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
# Get pin positions
|
|
263
|
+
pos = sch.get_component_pin_position("R1", "1")
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**📖 See [Recipes](docs/RECIPES.md) for routing patterns and examples**
|
|
267
|
+
|
|
268
|
+
### Component Bounding Boxes
|
|
269
|
+
|
|
270
|
+
```python
|
|
271
|
+
from kicad_sch_api.core.component_bounds import get_component_bounding_box
|
|
272
|
+
|
|
273
|
+
# Get bounding box
|
|
274
|
+
bbox = get_component_bounding_box(resistor, include_properties=False)
|
|
275
|
+
print(f"Size: {bbox.width:.2f}×{bbox.height:.2f}mm")
|
|
276
|
+
|
|
277
|
+
# Visualize with rectangles
|
|
278
|
+
sch.draw_bounding_box(bbox, stroke_color="blue")
|
|
279
|
+
sch.draw_component_bounding_boxes(include_properties=True)
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**📖 See [API Reference](docs/API_REFERENCE.md#bounding-boxes) for bounding box details**
|
|
283
|
+
|
|
284
|
+
### Configuration & Customization
|
|
285
|
+
|
|
286
|
+
```python
|
|
287
|
+
import kicad_sch_api as ksa
|
|
288
|
+
|
|
289
|
+
# Customize property positioning
|
|
290
|
+
ksa.config.properties.reference_y = -2.0
|
|
291
|
+
ksa.config.properties.value_y = 2.0
|
|
292
|
+
|
|
293
|
+
# Tolerances
|
|
294
|
+
ksa.config.tolerance.position_tolerance = 0.05
|
|
295
|
+
|
|
296
|
+
# Grid settings
|
|
297
|
+
ksa.config.grid.component_spacing = 5.0
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**📖 See [API Reference](docs/API_REFERENCE.md#configuration) for all configuration options**
|
|
301
|
+
|
|
302
|
+
## 📚 Advanced Features
|
|
303
|
+
|
|
304
|
+
For comprehensive documentation on all features:
|
|
305
|
+
|
|
306
|
+
- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation with examples
|
|
307
|
+
- **[Hierarchy Features](docs/HIERARCHY_FEATURES.md)** - Multi-sheet design guide
|
|
308
|
+
- **[Recipes](docs/RECIPES.md)** - Common patterns and examples
|
|
309
|
+
- **[Getting Started](docs/GETTING_STARTED.md)** - Detailed tutorial
|
|
310
|
+
- **[Architecture](docs/ARCHITECTURE.md)** - Library design and internals
|
|
311
|
+
|
|
312
|
+
## 🤖 AI Agent Integration (MCP Server)
|
|
313
|
+
|
|
314
|
+
**Complete MCP (Model Context Protocol) server** for AI-powered circuit design:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
# Start the MCP server
|
|
318
|
+
uv run kicad-sch-mcp
|
|
319
|
+
|
|
320
|
+
# Or install and run directly
|
|
321
|
+
pip install kicad-sch-api
|
|
322
|
+
kicad-sch-mcp
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Complete MCP Tool Suite (15 Tools)
|
|
326
|
+
|
|
327
|
+
**Component Management (5 tools):**
|
|
328
|
+
- `add_component` - Add components with auto-reference/position
|
|
329
|
+
- `list_components` - List all components with metadata
|
|
330
|
+
- `update_component` - Update properties (value, position, rotation, footprint)
|
|
331
|
+
- `remove_component` - Remove components
|
|
332
|
+
- `filter_components` - Advanced filtering by lib_id, value, footprint
|
|
333
|
+
|
|
334
|
+
**Connectivity (3 tools):**
|
|
335
|
+
- `add_wire` - Create wire connections between points
|
|
336
|
+
- `add_label` - Add net labels for logical connections
|
|
337
|
+
- `add_junction` - Add wire junctions for T-connections
|
|
338
|
+
|
|
339
|
+
**Pin Discovery (3 tools):**
|
|
340
|
+
- `get_component_pins` - Complete pin information with positions
|
|
341
|
+
- `find_pins_by_name` - Semantic lookup with wildcards (*, CLK*, *IN*)
|
|
342
|
+
- `find_pins_by_type` - Filter by electrical type (passive, input, output, power_in)
|
|
343
|
+
|
|
344
|
+
**Schematic Management (4 tools):**
|
|
345
|
+
- `create_schematic` - Create new KiCAD schematics
|
|
346
|
+
- `load_schematic` - Load existing .kicad_sch files
|
|
347
|
+
- `save_schematic` - Save schematics to disk
|
|
348
|
+
- `get_schematic_info` - Query schematic metadata
|
|
349
|
+
|
|
350
|
+
### What You Can Build
|
|
351
|
+
|
|
352
|
+
With the MCP server, AI agents can now:
|
|
353
|
+
- **Design complete circuits**: Add components, create connections, label nets
|
|
354
|
+
- **Manage schematics**: Create, load, save, and modify circuit files
|
|
355
|
+
- **Analyze circuits**: List components, filter by criteria, discover pin information
|
|
356
|
+
- **Build any circuit**: Voltage dividers, filters, LED circuits, power supplies, and more!
|
|
357
|
+
|
|
358
|
+
### Example: Building Complete Circuits via MCP
|
|
359
|
+
|
|
360
|
+
#### Voltage Divider (Verified Working ✅)
|
|
361
|
+
|
|
362
|
+
**Natural Language Request**:
|
|
363
|
+
```
|
|
364
|
+
"Create a voltage divider with R1=10k and R2=20k, fully wired with VCC and GND labels"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**The AI agent executes**:
|
|
368
|
+
1. `create_schematic(name="Voltage Divider")` - Create new schematic
|
|
369
|
+
2. `add_component(lib_id="Device:R", reference="R1", value="10k", position=(127.0, 76.2))` - Add R1
|
|
370
|
+
3. `add_component(lib_id="Device:R", reference="R2", value="20k", position=(127.0, 95.25))` - Add R2
|
|
371
|
+
4. `get_component_pins("R1")` - Get R1 pin positions
|
|
372
|
+
5. `get_component_pins("R2")` - Get R2 pin positions
|
|
373
|
+
6. `add_wire(start=(127.0, 72.39), end=(127.0, 66.04))` - VCC to R1
|
|
374
|
+
7. `add_wire(start=(127.0, 80.01), end=(127.0, 91.44))` - R1 to R2
|
|
375
|
+
8. `add_wire(start=(127.0, 99.06), end=(127.0, 105.41))` - R2 to GND
|
|
376
|
+
9. `add_label(text="VCC", position=(129.54, 66.04))` - Add VCC label
|
|
377
|
+
10. `add_label(text="VOUT", position=(129.54, 85.725))` - Add output label
|
|
378
|
+
11. `add_label(text="GND", position=(129.54, 105.41))` - Add GND label
|
|
379
|
+
12. `add_junction(position=(127.0, 85.725))` - Add junction at tap point
|
|
380
|
+
13. `save_schematic(file_path="voltage_divider.kicad_sch")` - Save to disk
|
|
381
|
+
|
|
382
|
+
**Result**: ✅ Fully functional KiCAD schematic verified to open perfectly in KiCAD!
|
|
383
|
+
|
|
384
|
+
#### LED Circuit with Current Limiting
|
|
385
|
+
|
|
386
|
+
**Natural Language Request**:
|
|
387
|
+
```
|
|
388
|
+
"Create an LED circuit with 220Ω current limiting resistor"
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**The AI agent will**:
|
|
392
|
+
- Add LED and 220Ω resistor components
|
|
393
|
+
- Wire VCC → resistor → LED → GND
|
|
394
|
+
- Add appropriate net labels
|
|
395
|
+
- Save the complete circuit
|
|
396
|
+
|
|
397
|
+
**Result**: Ready-to-use LED driver circuit schematic!
|
|
398
|
+
|
|
399
|
+
#### RC Low-Pass Filter
|
|
400
|
+
|
|
401
|
+
**Natural Language Request**:
|
|
402
|
+
```
|
|
403
|
+
"Create an RC low-pass filter with R=10k, C=100nF"
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**The AI agent will**:
|
|
407
|
+
- Add resistor (10k) and capacitor (100nF)
|
|
408
|
+
- Wire input → R → C → output
|
|
409
|
+
- Add GND connection to capacitor
|
|
410
|
+
- Label INPUT, OUTPUT, and GND nets
|
|
411
|
+
- Add junction at output tap
|
|
412
|
+
- Save filter schematic
|
|
413
|
+
|
|
414
|
+
**Result**: Complete filter circuit with proper connectivity!
|
|
415
|
+
|
|
416
|
+
### Claude Desktop Integration
|
|
417
|
+
|
|
418
|
+
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
419
|
+
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"mcpServers": {
|
|
423
|
+
"kicad-sch-api": {
|
|
424
|
+
"command": "uv",
|
|
425
|
+
"args": ["run", "kicad-sch-mcp"],
|
|
426
|
+
"env": {}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
AI agents can now create, modify, and analyze KiCAD schematics programmatically!
|
|
433
|
+
|
|
434
|
+
**📖 Complete Documentation**:
|
|
435
|
+
- **[MCP Setup Guide](MCP_SETUP_GUIDE.md)** - Installation, configuration, and troubleshooting
|
|
436
|
+
- **[MCP Examples](docs/MCP_EXAMPLES.md)** - Comprehensive usage examples and patterns
|
|
437
|
+
- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation
|
|
438
|
+
|
|
439
|
+
## 🏗️ Architecture
|
|
440
|
+
|
|
441
|
+
### Design Principles
|
|
442
|
+
|
|
443
|
+
- **Building Block First**: Designed to be the foundation for other tools
|
|
444
|
+
- **Exact Format Preservation**: Guaranteed byte-perfect KiCAD output
|
|
445
|
+
- **Professional Quality**: Comprehensive error handling and validation
|
|
446
|
+
- **AI Agent Ready**: Integrated MCP server for seamless AI development workflow
|
|
447
|
+
- **Performance Optimized**: Fast operations on large schematics
|
|
448
|
+
|
|
449
|
+
**📖 See [Architecture Guide](docs/ARCHITECTURE.md) for detailed design documentation**
|
|
450
|
+
|
|
451
|
+
## 🧪 Testing & Quality
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
# Run all tests (29 tests covering all functionality)
|
|
455
|
+
uv run pytest tests/ -v
|
|
456
|
+
|
|
457
|
+
# Format preservation tests (critical - exact KiCAD output matching)
|
|
458
|
+
uv run pytest tests/reference_tests/ -v
|
|
459
|
+
|
|
460
|
+
# Code quality checks
|
|
461
|
+
uv run black kicad_sch_api/ tests/
|
|
462
|
+
uv run mypy kicad_sch_api/
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Test Categories
|
|
466
|
+
|
|
467
|
+
- **Format Preservation**: Byte-for-byte compatibility with KiCAD native files
|
|
468
|
+
- **Component Management**: Creation, modification, and removal
|
|
469
|
+
- **Connectivity**: Wire tracing, net analysis, hierarchical connections
|
|
470
|
+
- **Hierarchy**: Multi-sheet designs, sheet reuse, signal tracing
|
|
471
|
+
- **Integration**: Real KiCAD library compatibility
|
|
472
|
+
|
|
473
|
+
## 🆚 Why This Library?
|
|
474
|
+
|
|
475
|
+
### vs. Direct KiCAD File Editing
|
|
476
|
+
- **Professional API**: High-level operations vs low-level S-expression manipulation
|
|
477
|
+
- **Guaranteed Format**: Byte-perfect output vs manual formatting
|
|
478
|
+
- **Validation**: Real KiCAD library integration and component validation
|
|
479
|
+
|
|
480
|
+
### vs. Other Python KiCAD Libraries
|
|
481
|
+
- **Format Preservation**: Exact KiCAD compatibility vs approximate output
|
|
482
|
+
- **Modern Design**: Object-oriented collections vs legacy patterns
|
|
483
|
+
- **AI Integration**: Integrated MCP server for AI agents vs no agent support
|
|
484
|
+
|
|
485
|
+
**📖 See [Why Use This Library](docs/WHY_USE_THIS_LIBRARY.md) for detailed comparison**
|
|
486
|
+
|
|
487
|
+
## ⚠️ Known Limitations
|
|
488
|
+
|
|
489
|
+
### Connectivity Analysis
|
|
490
|
+
- **Global Labels**: Explicit global label connections not yet fully implemented (power symbols like VCC/GND work correctly)
|
|
491
|
+
|
|
492
|
+
### ERC (Electrical Rule Check)
|
|
493
|
+
- **Partial Implementation**: ERC validators have incomplete features
|
|
494
|
+
- Net tracing, pin type checking, and power net detection are in development
|
|
495
|
+
- Core functionality works, advanced validation features coming soon
|
|
496
|
+
|
|
497
|
+
### Performance
|
|
498
|
+
- Large schematics (>1000 components) may experience slower connectivity analysis
|
|
499
|
+
- Symbol cache helps, but first analysis can take time
|
|
500
|
+
- Optimization ongoing
|
|
501
|
+
|
|
502
|
+
**Report issues**: https://github.com/circuit-synth/kicad-sch-api/issues
|
|
503
|
+
|
|
504
|
+
## 📖 Documentation
|
|
505
|
+
|
|
506
|
+
Full documentation is available in the **[docs/](docs/)** directory:
|
|
507
|
+
|
|
508
|
+
- **[Getting Started Guide](docs/GETTING_STARTED.md)** - Complete beginner's tutorial
|
|
509
|
+
- **[API Reference](docs/API_REFERENCE.md)** - Complete API documentation
|
|
510
|
+
- **[Hierarchy Features](docs/HIERARCHY_FEATURES.md)** - Multi-sheet design guide
|
|
511
|
+
- **[Recipes & Patterns](docs/RECIPES.md)** - Practical examples
|
|
512
|
+
- **[Why Use This Library](docs/WHY_USE_THIS_LIBRARY.md)** - Value proposition
|
|
513
|
+
- **[Architecture](docs/ARCHITECTURE.md)** - Internal design details
|
|
514
|
+
- **[Examples](examples/)** - Code examples and tutorials
|
|
515
|
+
|
|
516
|
+
## 🤝 Contributing
|
|
517
|
+
|
|
518
|
+
We welcome contributions! Key areas:
|
|
519
|
+
|
|
520
|
+
- KiCAD library integration and component validation
|
|
521
|
+
- Performance optimizations for large schematics
|
|
522
|
+
- MCP server tools and AI agent capabilities
|
|
523
|
+
- Test coverage and format preservation validation
|
|
524
|
+
|
|
525
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
526
|
+
|
|
527
|
+
## 📄 License
|
|
528
|
+
|
|
529
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
530
|
+
|
|
531
|
+
## 🔗 Related Projects
|
|
532
|
+
|
|
533
|
+
- **[circuit-synth](https://github.com/circuit-synth/circuit-synth)** - High-level circuit design automation
|
|
534
|
+
- **[Claude Code](https://claude.ai/code)** - AI development environment with MCP support
|
|
535
|
+
- **[KiCAD](https://kicad.org/)** - Open source electronics design automation
|
|
536
|
+
- **[Model Context Protocol](https://modelcontextprotocol.io/)** - Standard for AI agent tool integration
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
*Made with ❤️ for the open hardware community*
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
kicad_sch_api/__init__.py,sha256=SOAspr5nzpqorBy8NyN29yVoS_lucWFlBg1WeiHJ35s,4869
|
|
2
|
+
kicad_sch_api/cli.py,sha256=ZzmwzfHEvPgGfCiQBU4G2LBAyRtMNiBRoY21pivJSYc,7621
|
|
3
|
+
kicad_sch_api/py.typed,sha256=e4ldqxwpY7pNDG1olbvj4HSKr8sZ9vxgA_2ek8xXn-Q,70
|
|
4
|
+
kicad_sch_api/cli/__init__.py,sha256=mflSYoGLMJw2EFEByw9GD79pgj_Hebi6htJy7cKV5qM,952
|
|
5
|
+
kicad_sch_api/cli/base.py,sha256=9Qpx8xKGmMovbUVaMEXYj-KjtlPKv57dNwnBcu_hnpE,9793
|
|
6
|
+
kicad_sch_api/cli/bom.py,sha256=So3p5VFzjgkwnWP7OY80KG5iyFZgNTfWuJh1-tqbue0,5299
|
|
7
|
+
kicad_sch_api/cli/erc.py,sha256=0qrJMsGL82cZxjTuMA5aIaxyaKeOqqPJrTzvRuItXl8,7181
|
|
8
|
+
kicad_sch_api/cli/export_docs.py,sha256=gsFsHwcuL5EYgHW3l8udwjBw4dm1N4fnpvFoXqfVS38,8778
|
|
9
|
+
kicad_sch_api/cli/kicad_to_python.py,sha256=Ikr_WpuJqNp-CY4bWh-IeMJ0d66IjKouTbNBBh-CoHw,4453
|
|
10
|
+
kicad_sch_api/cli/netlist.py,sha256=iveRNY2LeC6A_naykmCDuJKleom2OFpwxhDfHxtbxmA,2686
|
|
11
|
+
kicad_sch_api/cli/types.py,sha256=pybFjAFbKGiY8svAt52Sq_F--fz8f836vbyvO710G10,1131
|
|
12
|
+
kicad_sch_api/collections/__init__.py,sha256=RYNZSd2mGEetr-wva-VeoPhCQtCuHW5kRamcR2b-d8w,871
|
|
13
|
+
kicad_sch_api/collections/base.py,sha256=5tmKgUwIr2Z0Fb7W74xzIeqD6gDb3SOa6XGfe3bLg3I,18113
|
|
14
|
+
kicad_sch_api/collections/components.py,sha256=6ueqvxG6JIrATEEqtnkhBuCYPTWnwixU49cF5pMOJHs,55543
|
|
15
|
+
kicad_sch_api/collections/junctions.py,sha256=bBni2T-QG-xGL7ybv3t2CUPj8c3lJaDSxLfXVUZ0KJc,6297
|
|
16
|
+
kicad_sch_api/collections/labels.py,sha256=OXCOsVfKm7H_AxuI-iPab4MDkXNwSzpWsOJ-Wr1HFpA,15057
|
|
17
|
+
kicad_sch_api/collections/wires.py,sha256=bdFewhVU3vpGvuNlaFBH4IU9uzUZ7skzUXk1ZOFxHlI,9254
|
|
18
|
+
kicad_sch_api/core/__init__.py,sha256=LYyNN-WMlxF671S9FtcuoL6psE8sh52O7mXUd_hE5Ck,1311
|
|
19
|
+
kicad_sch_api/core/component_bounds.py,sha256=Xhcg4b4NiiUcs7_NpoQaKpGvRFiLV9pAvRxUki8bqmM,18417
|
|
20
|
+
kicad_sch_api/core/components.py,sha256=cCQa6i3Bhm7C9q1rGdRMi-PJl8X-ShXts5Z_XLskmd4,31277
|
|
21
|
+
kicad_sch_api/core/config.py,sha256=o9-owndDFbP3Bte_XOePTgGNOnruD28RNJF_fy40QaQ,6971
|
|
22
|
+
kicad_sch_api/core/connectivity.py,sha256=bkFJ3i3FnLM8uNlHp-RzZBXptYmQf-61kf5WGGQMGvg,26473
|
|
23
|
+
kicad_sch_api/core/exceptions.py,sha256=ceV6nKbxk4BjQAS-recAI7yNyiqyvtdnJoDePPuU2ek,4694
|
|
24
|
+
kicad_sch_api/core/formatter.py,sha256=yt0lZl2Jd6kXYThvwH03QgtIao59Z09RcpoZ1tpwj0g,22926
|
|
25
|
+
kicad_sch_api/core/geometry.py,sha256=F7_-lP29S6MKe4OvZ57lPdCb_jVGw4D4KJ9v5JvXvIs,6692
|
|
26
|
+
kicad_sch_api/core/ic_manager.py,sha256=Kg0HIOMU-TGXiIkrnwcHFQ1Kfv_3rW2U1cwBKJsKopc,7219
|
|
27
|
+
kicad_sch_api/core/junctions.py,sha256=HdEdaqF5zzFIWuRhJ2HJnVqPah4KJGNmeNv2KzgmFZQ,4757
|
|
28
|
+
kicad_sch_api/core/labels.py,sha256=roiwUrF-YWBOUMD-s2_eyL7x2efOhOde6WWoxI1b5JM,10358
|
|
29
|
+
kicad_sch_api/core/nets.py,sha256=N1n6U7G7eXKRrc-osV48ReA6mOOLwn4TCwcNp2ISkNQ,9773
|
|
30
|
+
kicad_sch_api/core/no_connects.py,sha256=6HCXzdVO124AdUUsQbCv9Y0f7KWmObkQ4OZLimYgET8,8548
|
|
31
|
+
kicad_sch_api/core/parser.py,sha256=uvFVdSVzv5-RZmD_OKnqm51DIatFfsKF7NzLcWx4gfg,28761
|
|
32
|
+
kicad_sch_api/core/parsing_utils.py,sha256=tqQpuiNePNRx6Izsp9pnCBtlgiEYfMPkVFjkE5Uuofg,1776
|
|
33
|
+
kicad_sch_api/core/pin_utils.py,sha256=25XzHQF_4EQfp0PRYPBuL-KQY3mXChZIJGNXiSNc4jQ,9160
|
|
34
|
+
kicad_sch_api/core/schematic.py,sha256=rCMMPcNOj_7CJsJ5fO4MfA4J70X5A8tvz8tmFFrUk3E,68644
|
|
35
|
+
kicad_sch_api/core/texts.py,sha256=kBwUxwftqncl-yauiJjdnLXauV6EWq2oLhKw2bAxD_c,9990
|
|
36
|
+
kicad_sch_api/core/types.py,sha256=n-RG0bitSQRaEuKjKV6ivnttk9NcvnHVff-lOSzgdaw,18541
|
|
37
|
+
kicad_sch_api/core/wires.py,sha256=lLqcpRodErD4fD4_VMB1HgC9ViPnYPGcT8b-N9S0q-g,7139
|
|
38
|
+
kicad_sch_api/core/collections/__init__.py,sha256=i75_p9v330S2hxi4LrAGLmcVjrF8O0nTlGjCCjNbkq0,118
|
|
39
|
+
kicad_sch_api/core/collections/base.py,sha256=H-g1SC7hKD5QvbXPKVQotCK2e5pn04-y1ipkBQGcy3I,7076
|
|
40
|
+
kicad_sch_api/core/factories/__init__.py,sha256=qFx_rAgcTgWRZ572hvzzKNAze-jE0BOLqLrSFzj7T6M,130
|
|
41
|
+
kicad_sch_api/core/factories/element_factory.py,sha256=N-V2t3DHXfPuMsQ7jXDxymZKpkYgQGd-0N0h0Ifftig,8179
|
|
42
|
+
kicad_sch_api/core/managers/__init__.py,sha256=fT3n-skzgnHujN0hjvSi0Xog3nHGrlPLC10vto59E6E,844
|
|
43
|
+
kicad_sch_api/core/managers/base.py,sha256=xLKP3Y_sImUA9EdsH0xwjT3dst6tIoh4vFk1ZzDpg18,2275
|
|
44
|
+
kicad_sch_api/core/managers/file_io.py,sha256=4Ne9uRuEbGdBcKojkROxhVvbB4dPM_Luh-5JhZqkTPk,7740
|
|
45
|
+
kicad_sch_api/core/managers/format_sync.py,sha256=SEOU9Ppv-0V5-4kA1MR1Haz04TYuMu-OmUpmfc6uWcY,17011
|
|
46
|
+
kicad_sch_api/core/managers/graphics.py,sha256=TKffEW9IKXztSfDLassRGHiV8qBr8MYe3Hf6zhLI7Ww,18418
|
|
47
|
+
kicad_sch_api/core/managers/hierarchy.py,sha256=PKojscSDH63zC2lj3R221QnYZxrDbSasI6q0mQcSYiA,23868
|
|
48
|
+
kicad_sch_api/core/managers/metadata.py,sha256=pqIINUbaJACEmVfUruTUekN8mFra0uHbWz7_VPdBRy0,8053
|
|
49
|
+
kicad_sch_api/core/managers/sheet.py,sha256=yrYAERpmG4xPM2HqHW5P4v8EQEN8KONPziqqnYkopt4,16581
|
|
50
|
+
kicad_sch_api/core/managers/text_elements.py,sha256=vqBsj6zkE7139xLUk2vDinMm2Jq42cqOh2ZzU_B6_ns,17367
|
|
51
|
+
kicad_sch_api/core/managers/validation.py,sha256=n4bj6h6yTOuWrTQH8PIhzH1l84brxKPVzd1fJitDZWU,15805
|
|
52
|
+
kicad_sch_api/core/managers/wire.py,sha256=CAS_9yWcZPltXi2xUq4a1wK3rPkHj7srmW5PvmaKl2U,13680
|
|
53
|
+
kicad_sch_api/discovery/__init__.py,sha256=qSuCsnC-hVtaLYE8fwd-Gea6JKwEVGPQ-hSNDNJYsIU,329
|
|
54
|
+
kicad_sch_api/discovery/search_index.py,sha256=KgQT8ipT9OU6ktUwhDZ37Mao0Cba0fJOsxUk9m8ZKbY,15856
|
|
55
|
+
kicad_sch_api/exporters/__init__.py,sha256=7UK2f6S7ECBMzlpDIQoz6e5f3OIYkEyqcWCdae7j44s,247
|
|
56
|
+
kicad_sch_api/exporters/python_generator.py,sha256=g7ZlmYm9CbpOH7MYKZG-14WVZCZxWPmJoXRbJngqt-E,19609
|
|
57
|
+
kicad_sch_api/exporters/templates/default.py.jinja2,sha256=NAaoqwjl1FbABOENvTdQViaob4Bh6wmw0F9kUSs80Dk,1584
|
|
58
|
+
kicad_sch_api/geometry/__init__.py,sha256=Kh7gTueAqb1xzONGtA_IV6SxQ0wKPd4ud7D1iWZei5w,974
|
|
59
|
+
kicad_sch_api/geometry/font_metrics.py,sha256=3f5_9ifxtDUigLDiafglO2pCgPE7JFDKqa-0uhLPkoQ,839
|
|
60
|
+
kicad_sch_api/geometry/routing.py,sha256=FkgfHKzsH7sLL1whnSTkmjbfv-9t7N6SMyZu_77ZOMQ,6866
|
|
61
|
+
kicad_sch_api/geometry/symbol_bbox.py,sha256=3zd9-M9ehue5_-Gpdm_Yht4W49CbE0YRsAhAzfqJGEg,24161
|
|
62
|
+
kicad_sch_api/interfaces/__init__.py,sha256=ukuLgCT16e0sPLmrGb4HB_3DhGU1YriDEkeRgEBsQIA,435
|
|
63
|
+
kicad_sch_api/interfaces/parser.py,sha256=J-b0czz1q_O81HlvIp3dHx53cm8UGSgQTd4xe5tBszk,2008
|
|
64
|
+
kicad_sch_api/interfaces/repository.py,sha256=wFnWUCut6wPV9yDDE9k6zkhhijRnflbLteeXYtcU-gM,1763
|
|
65
|
+
kicad_sch_api/interfaces/resolver.py,sha256=2_3et6VVnyZZ8VI5i-Q4C-4bBXKTAgYAEFxAFuOWEGw,2936
|
|
66
|
+
kicad_sch_api/library/__init__.py,sha256=NG9UTdcpn25Bl9tPsYs9ED7bvpaVPVdtLMbnxkQkOnU,250
|
|
67
|
+
kicad_sch_api/library/cache.py,sha256=7na88grl465WHwUOGuOzYrrWwjsMBXhXVtxhnaJ9GBY,33208
|
|
68
|
+
kicad_sch_api/parsers/__init__.py,sha256=4TFc2duJMy6iRuk2dYbW4b7s-9H525iAsGU674_2a-E,357
|
|
69
|
+
kicad_sch_api/parsers/base.py,sha256=vsKGxZkdzTNqrdbRPx11D4b3ebDm3LW65v2Xf4Q06_c,4569
|
|
70
|
+
kicad_sch_api/parsers/registry.py,sha256=LoPvWIiGYysvTRtFfd8kWCXE0i535hoKYpdKs49Ygjs,5098
|
|
71
|
+
kicad_sch_api/parsers/utils.py,sha256=54n1gWQJMoQItB2FcQVHovwsqMq_h9aZvZBhSaOmc-I,2330
|
|
72
|
+
kicad_sch_api/parsers/elements/__init__.py,sha256=Av9oXw5uLsEkRsyWzLWsOgZ0UOrgkAhE4NDfdUUViV8,699
|
|
73
|
+
kicad_sch_api/parsers/elements/graphics_parser.py,sha256=1dnt8OF9lsx6zrlJk7_s4ceZJ4U3-u-hHKqlZFBMT7U,23375
|
|
74
|
+
kicad_sch_api/parsers/elements/label_parser.py,sha256=Qvv3EB9kcCf3ZmLtcTElm8OHjaZIQ92vS2OBBC4mmFc,8347
|
|
75
|
+
kicad_sch_api/parsers/elements/library_parser.py,sha256=qHQMI3PatLgHtUWvWhQxbKC-NXJqgOVW33hVkMQ9sEU,6321
|
|
76
|
+
kicad_sch_api/parsers/elements/metadata_parser.py,sha256=IFpgk5eLqp1kcjhpZB-jPThBCVyvdgsLo4YRydlvYD4,1897
|
|
77
|
+
kicad_sch_api/parsers/elements/sheet_parser.py,sha256=xZld-yzW7r1FKABaK89K7U-Zenqz2cHUqtMnADhxCeQ,14246
|
|
78
|
+
kicad_sch_api/parsers/elements/symbol_parser.py,sha256=pFxX9t1q9CSbSDmv0yDws0-1Q7gRHRHW40FZ_2Q_nII,20426
|
|
79
|
+
kicad_sch_api/parsers/elements/text_parser.py,sha256=n5G_3czchmPCEdvTVoQsATTW1PQW7KcSjzglqzPlOKQ,9820
|
|
80
|
+
kicad_sch_api/parsers/elements/wire_parser.py,sha256=geWI3jMXM7lZF26k7n7c6RQ55x4gsO4j8Ou0fk0O2j8,8271
|
|
81
|
+
kicad_sch_api/symbols/__init__.py,sha256=NfakJ5-8AQxq5vi8nZVuaUtDpWHfwHm5AD4rC-p9BZI,501
|
|
82
|
+
kicad_sch_api/symbols/cache.py,sha256=pKFjmuyId-9gGPAue-1Rzy4MRsecoC4TMn0hn2n0Yqk,16204
|
|
83
|
+
kicad_sch_api/symbols/resolver.py,sha256=w0jqepp9RwWqlwQHX28FpTn1aSz8iOf7kcJUOBMHwqE,12074
|
|
84
|
+
kicad_sch_api/symbols/validators.py,sha256=5Ryt4rLHxDF3ALViaNLRrI3pYvOreVT51gpvhECTZms,17216
|
|
85
|
+
kicad_sch_api/utils/__init__.py,sha256=1V_yGgI7jro6MUc4Pviux_WIeJ1wmiYFID186SZwWLQ,277
|
|
86
|
+
kicad_sch_api/utils/logging.py,sha256=OwWtIWSWSOxrzoVeYMdfxNS0TFyicW2D8Du_djUZDpg,17296
|
|
87
|
+
kicad_sch_api/utils/logging_decorators.py,sha256=d6LNU3pXYbTkA8iYeuZcx3p3MIZ065MiqHHdHi__Dys,18454
|
|
88
|
+
kicad_sch_api/utils/validation.py,sha256=xszXVD9a1x5TuAq-X8h1djVBOTuFs7AnHzGcnTSikUI,15300
|
|
89
|
+
kicad_sch_api/validation/__init__.py,sha256=YZ2KDTpBN9BloD7I__gsw6IiW-g5tZPux0kgyXb3TjU,524
|
|
90
|
+
kicad_sch_api/validation/erc.py,sha256=6WMHyMakKpn1-jXkfO9ltayLRA0OaU1N7GQm-pbZTLg,5160
|
|
91
|
+
kicad_sch_api/validation/erc_models.py,sha256=wFYMH-cbcdRX1j9LPn28IGUYBLioPDr4lP0m2QuhAnI,6628
|
|
92
|
+
kicad_sch_api/validation/pin_matrix.py,sha256=AdBCvEmOByXACOUoskYxYMcwKvIasxrtJOqWM-WgVi0,7456
|
|
93
|
+
kicad_sch_api/validation/validators.py,sha256=3txkQpR3qAUzp0-m-FnDYf3-_GGj6iaGZj4kSYu-Fe4,13166
|
|
94
|
+
kicad_sch_api/wrappers/__init__.py,sha256=Leu_fgWwyeKMfqKv5K4nYbzaIQD5T8-u6HXTMq7Ccr8,271
|
|
95
|
+
kicad_sch_api/wrappers/base.py,sha256=VZlfyRBrhGXtgg7RbZYpIRKRYRBR8j4uiaXfcP8TgKM,2386
|
|
96
|
+
kicad_sch_api/wrappers/wire.py,sha256=cK3zkQJdujRQ_jKYU1Jxai7alhrVwzeHzgcnl4KTvi8,5102
|
|
97
|
+
kicad_sch_api-0.5.1.dist-info/licenses/LICENSE,sha256=Em65Nvte1G9MHc0rHqtYuGkCPcshD588itTa358J6gs,1070
|
|
98
|
+
mcp_server/__init__.py,sha256=bhlFWzeRrZXxdVpJWxxMI96lMOSDjq7P_lB4lXqKRCQ,726
|
|
99
|
+
mcp_server/example_logging_integration.py,sha256=T09gA8ITwBw_THzXqtIHFdQAbaWxu9rA57iPQLLNGFM,14858
|
|
100
|
+
mcp_server/models.py,sha256=OudTh7R5wQkhtKN8F_bRoxB1QBA9ZRXzCSLb1iwY7-g,7812
|
|
101
|
+
mcp_server/server.py,sha256=_TBH-rLf4z-pUuftVk5XDPuJlZ9Dovhf4FIDhKoUjkA,10371
|
|
102
|
+
mcp_server/utils.py,sha256=Mz8ojV6RFDnHrSQpuLf4_a_EJPuInZBiNbY6akLZpB8,759
|
|
103
|
+
mcp_server/tools/__init__.py,sha256=IF_rFfl-JeMuwwjifmXjrvs5cPXrQn93ZB_EULBNKYc,663
|
|
104
|
+
mcp_server/tools/component_tools.py,sha256=V_piw6Ee07YalzNiCeUB4Xg2nJ__Zy83NQAmzNSqPs0,17125
|
|
105
|
+
mcp_server/tools/connectivity_tools.py,sha256=HQL8MnuyPZJE1SSjfYN3dJdyiIN777Vosrw_c9FK08E,17848
|
|
106
|
+
mcp_server/tools/consolidated_tools.py,sha256=-7MeJo8uphaCz2qZHbaSCbBUrlEeUi2vrdGNCqOVEKo,41611
|
|
107
|
+
mcp_server/tools/pin_discovery.py,sha256=5DpoiFNn9zga7hCRElj8CJ5ZgFj-oVFRtp3ZRL2-y6Y,11156
|
|
108
|
+
mcp_server/utils/__init__.py,sha256=ou6hK2ESB1k_fubctiYxnUAUeDI_GMrJVU3pFpruqwo,720
|
|
109
|
+
mcp_server/utils/logging.py,sha256=xDsFAugHalBfGfSAYPb17ha10ra-J1NULS0rRZ6P-Ck,3234
|
|
110
|
+
kicad_sch_api-0.5.1.dist-info/METADATA,sha256=9KjIsYQrryaOT22vzUm8Rn-r9z69t-DTR69Hg3jd-D8,18640
|
|
111
|
+
kicad_sch_api-0.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
112
|
+
kicad_sch_api-0.5.1.dist-info/entry_points.txt,sha256=V7TLCFrxbfEnmo2JC3JR03gFVb75vVqlSAqpIu5dr3E,164
|
|
113
|
+
kicad_sch_api-0.5.1.dist-info/top_level.txt,sha256=aWKnWfbod2w5fIgHJPa7pfMDfyeezuZI0R9TsH25jaw,25
|
|
114
|
+
kicad_sch_api-0.5.1.dist-info/RECORD,,
|