kicad-sch-api 0.1.0__tar.gz → 0.1.1__tar.gz

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.

Potentially problematic release.


This version of kicad-sch-api might be problematic. Click here for more details.

Files changed (67) hide show
  1. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/PKG-INFO +3 -3
  2. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/formatter.py +3 -1
  3. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/parser.py +16 -5
  4. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/schematic.py +35 -8
  5. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/types.py +1 -1
  6. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/PKG-INFO +3 -3
  7. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/SOURCES.txt +2 -0
  8. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/pyproject.toml +3 -3
  9. kicad_sch_api-0.1.1/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_pro +417 -0
  10. kicad_sch_api-0.1.1/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_sch +23 -0
  11. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/dead-code-analysis.md +0 -0
  12. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/publish-pypi.md +0 -0
  13. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/review-implementation.md +0 -0
  14. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/run-tests.md +0 -0
  15. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/update-and-commit.md +0 -0
  16. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/dev/update-memory-bank.md +0 -0
  17. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/.claude/commands/test/run-reference-tests.md +0 -0
  18. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/LICENSE +0 -0
  19. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/MANIFEST.in +0 -0
  20. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/README.md +0 -0
  21. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/examples/advanced_usage.py +0 -0
  22. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/examples/basic_usage.py +0 -0
  23. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/examples/mcp_integration.py +0 -0
  24. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/__init__.py +0 -0
  25. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/__init__.py +0 -0
  26. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/components.py +0 -0
  27. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/ic_manager.py +0 -0
  28. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/junctions.py +0 -0
  29. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/core/wires.py +0 -0
  30. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/library/__init__.py +0 -0
  31. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/library/cache.py +0 -0
  32. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/py.typed +0 -0
  33. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/utils/__init__.py +0 -0
  34. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api/utils/validation.py +0 -0
  35. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/dependency_links.txt +0 -0
  36. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/entry_points.txt +0 -0
  37. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/requires.txt +0 -0
  38. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/kicad_sch_api.egg-info/top_level.txt +0 -0
  39. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/setup.cfg +0 -0
  40. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/README.md +0 -0
  41. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_pro +0 -0
  42. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_sch +0 -0
  43. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_pro +0 -0
  44. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_sch +0 -0
  45. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_pro +0 -0
  46. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_sch +0 -0
  47. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_pro +0 -0
  48. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_sch +0 -0
  49. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_pro +0 -0
  50. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_sch +0 -0
  51. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_pro +0 -0
  52. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_sch +0 -0
  53. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/subcircuit1.kicad_sch +0 -0
  54. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_pro +0 -0
  55. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_sch +0 -0
  56. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_pro +0 -0
  57. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_sch +0 -0
  58. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_pro +0 -0
  59. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_sch +0 -0
  60. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_pro +0 -0
  61. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_sch +0 -0
  62. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_pro +0 -0
  63. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_sch +0 -0
  64. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_pro +0 -0
  65. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_sch +0 -0
  66. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_pro +0 -0
  67. {kicad_sch_api-0.1.0 → kicad_sch_api-0.1.1}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_sch +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kicad-sch-api
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Professional KiCAD schematic manipulation library with exact format preservation and AI agent integration
5
- Author-email: Circuit-Synth <info@circuit-synth.com>
6
- Maintainer-email: Circuit-Synth <info@circuit-synth.com>
5
+ Author-email: Circuit-Synth <shane@circuit-synth.com>
6
+ Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
7
7
  License-Expression: MIT
8
8
  Project-URL: Homepage, https://github.com/circuit-synth/kicad-sch-api
9
9
  Project-URL: Documentation, https://circuit-synth.github.io/kicad-sch-api/
@@ -51,13 +51,15 @@ class ExactFormatter:
51
51
  self.rules["kicad_sch"] = FormatRule(inline=False, indent_level=0)
52
52
  self.rules["version"] = FormatRule(inline=True)
53
53
  self.rules["generator"] = FormatRule(inline=True, quote_indices={1})
54
+ self.rules["generator_version"] = FormatRule(inline=True, quote_indices={1})
54
55
  self.rules["uuid"] = FormatRule(inline=True, quote_indices={1})
56
+ self.rules["paper"] = FormatRule(inline=True, quote_indices={1})
55
57
 
56
58
  # Title block
57
59
  self.rules["title_block"] = FormatRule(inline=False)
58
60
  self.rules["title"] = FormatRule(inline=True, quote_indices={1})
59
61
  self.rules["company"] = FormatRule(inline=True, quote_indices={1})
60
- self.rules["revision"] = FormatRule(inline=True, quote_indices={1})
62
+ self.rules["rev"] = FormatRule(inline=True, quote_indices={1}) # KiCAD uses "rev"
61
63
  self.rules["date"] = FormatRule(inline=True, quote_indices={1})
62
64
  self.rules["size"] = FormatRule(inline=True, quote_indices={1})
63
65
  self.rules["comment"] = FormatRule(inline=True, quote_indices={2})
@@ -259,9 +259,10 @@ class SExpressionParser:
259
259
  if schematic_data.get("paper"):
260
260
  sexp_data.append([sexpdata.Symbol("paper"), schematic_data["paper"]])
261
261
 
262
- # Add title block
263
- if schematic_data.get("title_block"):
264
- sexp_data.append(self._title_block_to_sexp(schematic_data["title_block"]))
262
+ # Add title block only if it has non-default content
263
+ title_block = schematic_data.get("title_block")
264
+ if title_block and any(title_block.get(key) for key in ["title", "company", "revision", "date", "comments"]):
265
+ sexp_data.append(self._title_block_to_sexp(title_block))
265
266
 
266
267
  # Add lib_symbols (always include for KiCAD compatibility)
267
268
  lib_symbols = schematic_data.get("lib_symbols", {})
@@ -421,8 +422,18 @@ class SExpressionParser:
421
422
  def _title_block_to_sexp(self, title_block: Dict[str, Any]) -> List[Any]:
422
423
  """Convert title block to S-expression."""
423
424
  sexp = [sexpdata.Symbol("title_block")]
424
- for key, value in title_block.items():
425
- sexp.append([sexpdata.Symbol(key), value])
425
+
426
+ # Add standard fields
427
+ for key in ["title", "date", "rev", "company"]:
428
+ if key in title_block and title_block[key]:
429
+ sexp.append([sexpdata.Symbol(key), title_block[key]])
430
+
431
+ # Add comments with special formatting
432
+ comments = title_block.get("comments", {})
433
+ if isinstance(comments, dict):
434
+ for comment_num, comment_text in comments.items():
435
+ sexp.append([sexpdata.Symbol("comment"), comment_num, comment_text])
436
+
426
437
  return sexp
427
438
 
428
439
  def _symbol_to_sexp(self, symbol_data: Dict[str, Any], schematic_uuid: str = None) -> List[Any]:
@@ -177,7 +177,9 @@ class Schematic:
177
177
  schematic_data["paper"] = paper
178
178
  if uuid:
179
179
  schematic_data["uuid"] = uuid
180
- schematic_data["title_block"] = {"title": name}
180
+ # Only add title_block for non-default names to match reference format
181
+ if name and name not in ["Untitled", "Blank Schematic", "Single Resistor", "Two Resistors"]:
182
+ schematic_data["title_block"] = {"title": name}
181
183
 
182
184
  logger.info(f"Created new schematic: {name}")
183
185
  return cls(schematic_data)
@@ -813,6 +815,38 @@ class Schematic:
813
815
  logger.debug(f"Added text box: '{text}' at {position} size {size}")
814
816
  return text_box.uuid
815
817
 
818
+ def set_title_block(
819
+ self,
820
+ title: str = "",
821
+ date: str = "",
822
+ rev: str = "",
823
+ company: str = "",
824
+ comments: Optional[Dict[int, str]] = None
825
+ ):
826
+ """
827
+ Set title block information.
828
+
829
+ Args:
830
+ title: Schematic title
831
+ date: Creation/revision date
832
+ rev: Revision number
833
+ company: Company name
834
+ comments: Numbered comments (1, 2, 3, etc.)
835
+ """
836
+ if comments is None:
837
+ comments = {}
838
+
839
+ self._data["title_block"] = {
840
+ "title": title,
841
+ "date": date,
842
+ "rev": rev,
843
+ "company": company,
844
+ "comments": comments
845
+ }
846
+ self._modified = True
847
+
848
+ logger.debug(f"Set title block: {title} rev {rev}")
849
+
816
850
  # Library management
817
851
  @property
818
852
  def libraries(self) -> "LibraryManager":
@@ -1121,13 +1155,6 @@ class Schematic:
1121
1155
  "generator_version": "9.0",
1122
1156
  "uuid": str(uuid.uuid4()),
1123
1157
  "paper": "A4",
1124
- "title_block": {
1125
- "title": "Untitled",
1126
- "date": "",
1127
- "revision": "1.0",
1128
- "company": "",
1129
- "size": "A4",
1130
- },
1131
1158
  "components": [],
1132
1159
  "wires": [],
1133
1160
  "junctions": [],
@@ -409,7 +409,7 @@ class TitleBlock:
409
409
 
410
410
  title: str = ""
411
411
  company: str = ""
412
- revision: str = ""
412
+ rev: str = "" # KiCAD uses "rev" not "revision"
413
413
  date: str = ""
414
414
  size: str = "A4"
415
415
  comments: Dict[int, str] = field(default_factory=dict)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kicad-sch-api
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Professional KiCAD schematic manipulation library with exact format preservation and AI agent integration
5
- Author-email: Circuit-Synth <info@circuit-synth.com>
6
- Maintainer-email: Circuit-Synth <info@circuit-synth.com>
5
+ Author-email: Circuit-Synth <shane@circuit-synth.com>
6
+ Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
7
7
  License-Expression: MIT
8
8
  Project-URL: Homepage, https://github.com/circuit-synth/kicad-sch-api
9
9
  Project-URL: Documentation, https://circuit-synth.github.io/kicad-sch-api/
@@ -42,6 +42,8 @@ tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad
42
42
  tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_sch
43
43
  tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_pro
44
44
  tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_sch
45
+ tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_pro
46
+ tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_sch
45
47
  tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_pro
46
48
  tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_sch
47
49
  tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_pro
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kicad-sch-api"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "Professional KiCAD schematic manipulation library with exact format preservation and AI agent integration"
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  authors = [
12
- {name = "Circuit-Synth", email = "info@circuit-synth.com"}
12
+ {name = "Circuit-Synth", email = "shane@circuit-synth.com"}
13
13
  ]
14
14
  maintainers = [
15
- {name = "Circuit-Synth", email = "info@circuit-synth.com"}
15
+ {name = "Circuit-Synth", email = "shane@circuit-synth.com"}
16
16
  ]
17
17
  keywords = [
18
18
  "kicad", "schematic", "eda", "electronics", "circuit-design",
@@ -0,0 +1,417 @@
1
+ {
2
+ "board": {
3
+ "3dviewports": [],
4
+ "design_settings": {
5
+ "defaults": {},
6
+ "diff_pair_dimensions": [],
7
+ "drc_exclusions": [],
8
+ "rules": {},
9
+ "track_widths": [],
10
+ "via_dimensions": []
11
+ },
12
+ "ipc2581": {
13
+ "dist": "",
14
+ "distpn": "",
15
+ "internal_id": "",
16
+ "mfg": "",
17
+ "mpn": ""
18
+ },
19
+ "layer_pairs": [],
20
+ "layer_presets": [],
21
+ "viewports": []
22
+ },
23
+ "boards": [],
24
+ "cvpcb": {
25
+ "equivalence_files": []
26
+ },
27
+ "erc": {
28
+ "erc_exclusions": [],
29
+ "meta": {
30
+ "version": 0
31
+ },
32
+ "pin_map": [
33
+ [
34
+ 0,
35
+ 0,
36
+ 0,
37
+ 0,
38
+ 0,
39
+ 0,
40
+ 1,
41
+ 0,
42
+ 0,
43
+ 0,
44
+ 0,
45
+ 2
46
+ ],
47
+ [
48
+ 0,
49
+ 2,
50
+ 0,
51
+ 1,
52
+ 0,
53
+ 0,
54
+ 1,
55
+ 0,
56
+ 2,
57
+ 2,
58
+ 2,
59
+ 2
60
+ ],
61
+ [
62
+ 0,
63
+ 0,
64
+ 0,
65
+ 0,
66
+ 0,
67
+ 0,
68
+ 1,
69
+ 0,
70
+ 1,
71
+ 0,
72
+ 1,
73
+ 2
74
+ ],
75
+ [
76
+ 0,
77
+ 1,
78
+ 0,
79
+ 0,
80
+ 0,
81
+ 0,
82
+ 1,
83
+ 1,
84
+ 2,
85
+ 1,
86
+ 1,
87
+ 2
88
+ ],
89
+ [
90
+ 0,
91
+ 0,
92
+ 0,
93
+ 0,
94
+ 0,
95
+ 0,
96
+ 1,
97
+ 0,
98
+ 0,
99
+ 0,
100
+ 0,
101
+ 2
102
+ ],
103
+ [
104
+ 0,
105
+ 0,
106
+ 0,
107
+ 0,
108
+ 0,
109
+ 0,
110
+ 0,
111
+ 0,
112
+ 0,
113
+ 0,
114
+ 0,
115
+ 2
116
+ ],
117
+ [
118
+ 1,
119
+ 1,
120
+ 1,
121
+ 1,
122
+ 1,
123
+ 0,
124
+ 1,
125
+ 1,
126
+ 1,
127
+ 1,
128
+ 1,
129
+ 2
130
+ ],
131
+ [
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 1,
136
+ 0,
137
+ 0,
138
+ 1,
139
+ 0,
140
+ 0,
141
+ 0,
142
+ 0,
143
+ 2
144
+ ],
145
+ [
146
+ 0,
147
+ 2,
148
+ 1,
149
+ 2,
150
+ 0,
151
+ 0,
152
+ 1,
153
+ 0,
154
+ 2,
155
+ 2,
156
+ 2,
157
+ 2
158
+ ],
159
+ [
160
+ 0,
161
+ 2,
162
+ 0,
163
+ 1,
164
+ 0,
165
+ 0,
166
+ 1,
167
+ 0,
168
+ 2,
169
+ 0,
170
+ 0,
171
+ 2
172
+ ],
173
+ [
174
+ 0,
175
+ 2,
176
+ 1,
177
+ 1,
178
+ 0,
179
+ 0,
180
+ 1,
181
+ 0,
182
+ 2,
183
+ 0,
184
+ 0,
185
+ 2
186
+ ],
187
+ [
188
+ 2,
189
+ 2,
190
+ 2,
191
+ 2,
192
+ 2,
193
+ 2,
194
+ 2,
195
+ 2,
196
+ 2,
197
+ 2,
198
+ 2,
199
+ 2
200
+ ]
201
+ ],
202
+ "rule_severities": {
203
+ "bus_definition_conflict": "error",
204
+ "bus_entry_needed": "error",
205
+ "bus_to_bus_conflict": "error",
206
+ "bus_to_net_conflict": "error",
207
+ "different_unit_footprint": "error",
208
+ "different_unit_net": "error",
209
+ "duplicate_reference": "error",
210
+ "duplicate_sheet_names": "error",
211
+ "endpoint_off_grid": "warning",
212
+ "extra_units": "error",
213
+ "footprint_filter": "ignore",
214
+ "footprint_link_issues": "warning",
215
+ "four_way_junction": "ignore",
216
+ "global_label_dangling": "warning",
217
+ "hier_label_mismatch": "error",
218
+ "label_dangling": "error",
219
+ "label_multiple_wires": "warning",
220
+ "lib_symbol_issues": "warning",
221
+ "lib_symbol_mismatch": "warning",
222
+ "missing_bidi_pin": "warning",
223
+ "missing_input_pin": "warning",
224
+ "missing_power_pin": "error",
225
+ "missing_unit": "warning",
226
+ "multiple_net_names": "warning",
227
+ "net_not_bus_member": "warning",
228
+ "no_connect_connected": "warning",
229
+ "no_connect_dangling": "warning",
230
+ "pin_not_connected": "error",
231
+ "pin_not_driven": "error",
232
+ "pin_to_pin": "warning",
233
+ "power_pin_not_driven": "error",
234
+ "same_local_global_label": "warning",
235
+ "similar_label_and_power": "warning",
236
+ "similar_labels": "warning",
237
+ "similar_power": "warning",
238
+ "simulation_model_issue": "ignore",
239
+ "single_global_label": "ignore",
240
+ "unannotated": "error",
241
+ "unconnected_wire_endpoint": "warning",
242
+ "unit_value_mismatch": "error",
243
+ "unresolved_variable": "error",
244
+ "wire_dangling": "error"
245
+ }
246
+ },
247
+ "libraries": {
248
+ "pinned_footprint_libs": [],
249
+ "pinned_symbol_libs": []
250
+ },
251
+ "meta": {
252
+ "filename": "sch_title.kicad_pro",
253
+ "version": 3
254
+ },
255
+ "net_settings": {
256
+ "classes": [
257
+ {
258
+ "bus_width": 12,
259
+ "clearance": 0.2,
260
+ "diff_pair_gap": 0.25,
261
+ "diff_pair_via_gap": 0.25,
262
+ "diff_pair_width": 0.2,
263
+ "line_style": 0,
264
+ "microvia_diameter": 0.3,
265
+ "microvia_drill": 0.1,
266
+ "name": "Default",
267
+ "pcb_color": "rgba(0, 0, 0, 0.000)",
268
+ "priority": 2147483647,
269
+ "schematic_color": "rgba(0, 0, 0, 0.000)",
270
+ "track_width": 0.2,
271
+ "via_diameter": 0.6,
272
+ "via_drill": 0.3,
273
+ "wire_width": 6
274
+ }
275
+ ],
276
+ "meta": {
277
+ "version": 4
278
+ },
279
+ "net_colors": null,
280
+ "netclass_assignments": null,
281
+ "netclass_patterns": []
282
+ },
283
+ "pcbnew": {
284
+ "last_paths": {
285
+ "gencad": "",
286
+ "idf": "",
287
+ "netlist": "",
288
+ "plot": "",
289
+ "pos_files": "",
290
+ "specctra_dsn": "",
291
+ "step": "",
292
+ "svg": "",
293
+ "vrml": ""
294
+ },
295
+ "page_layout_descr_file": ""
296
+ },
297
+ "schematic": {
298
+ "annotate_start_num": 0,
299
+ "bom_export_filename": "${PROJECTNAME}.csv",
300
+ "bom_fmt_presets": [],
301
+ "bom_fmt_settings": {
302
+ "field_delimiter": ",",
303
+ "keep_line_breaks": false,
304
+ "keep_tabs": false,
305
+ "name": "CSV",
306
+ "ref_delimiter": ",",
307
+ "ref_range_delimiter": "",
308
+ "string_delimiter": "\""
309
+ },
310
+ "bom_presets": [],
311
+ "bom_settings": {
312
+ "exclude_dnp": false,
313
+ "fields_ordered": [
314
+ {
315
+ "group_by": false,
316
+ "label": "Reference",
317
+ "name": "Reference",
318
+ "show": true
319
+ },
320
+ {
321
+ "group_by": false,
322
+ "label": "Qty",
323
+ "name": "${QUANTITY}",
324
+ "show": true
325
+ },
326
+ {
327
+ "group_by": true,
328
+ "label": "Value",
329
+ "name": "Value",
330
+ "show": true
331
+ },
332
+ {
333
+ "group_by": true,
334
+ "label": "DNP",
335
+ "name": "${DNP}",
336
+ "show": true
337
+ },
338
+ {
339
+ "group_by": true,
340
+ "label": "Exclude from BOM",
341
+ "name": "${EXCLUDE_FROM_BOM}",
342
+ "show": true
343
+ },
344
+ {
345
+ "group_by": true,
346
+ "label": "Exclude from Board",
347
+ "name": "${EXCLUDE_FROM_BOARD}",
348
+ "show": true
349
+ },
350
+ {
351
+ "group_by": true,
352
+ "label": "Footprint",
353
+ "name": "Footprint",
354
+ "show": true
355
+ },
356
+ {
357
+ "group_by": false,
358
+ "label": "Datasheet",
359
+ "name": "Datasheet",
360
+ "show": true
361
+ }
362
+ ],
363
+ "filter_string": "",
364
+ "group_symbols": true,
365
+ "include_excluded_from_bom": true,
366
+ "name": "Default Editing",
367
+ "sort_asc": true,
368
+ "sort_field": "Reference"
369
+ },
370
+ "connection_grid_size": 50.0,
371
+ "drawing": {
372
+ "dashed_lines_dash_length_ratio": 12.0,
373
+ "dashed_lines_gap_length_ratio": 3.0,
374
+ "default_line_thickness": 6.0,
375
+ "default_text_size": 50.0,
376
+ "field_names": [],
377
+ "intersheets_ref_own_page": false,
378
+ "intersheets_ref_prefix": "",
379
+ "intersheets_ref_short": false,
380
+ "intersheets_ref_show": false,
381
+ "intersheets_ref_suffix": "",
382
+ "junction_size_choice": 3,
383
+ "label_size_ratio": 0.375,
384
+ "operating_point_overlay_i_precision": 3,
385
+ "operating_point_overlay_i_range": "~A",
386
+ "operating_point_overlay_v_precision": 3,
387
+ "operating_point_overlay_v_range": "~V",
388
+ "overbar_offset_ratio": 1.23,
389
+ "pin_symbol_size": 25.0,
390
+ "text_offset_ratio": 0.15
391
+ },
392
+ "legacy_lib_dir": "",
393
+ "legacy_lib_list": [],
394
+ "meta": {
395
+ "version": 1
396
+ },
397
+ "net_format_name": "",
398
+ "page_layout_descr_file": "",
399
+ "plot_directory": "",
400
+ "space_save_all_events": true,
401
+ "spice_current_sheet_as_root": false,
402
+ "spice_external_command": "spice \"%I\"",
403
+ "spice_model_current_sheet_as_root": true,
404
+ "spice_save_all_currents": false,
405
+ "spice_save_all_dissipations": false,
406
+ "spice_save_all_voltages": false,
407
+ "subpart_first_id": 65,
408
+ "subpart_id_separator": 0
409
+ },
410
+ "sheets": [
411
+ [
412
+ "bad59254-4c4b-4281-8e5a-889c52dc7b3a",
413
+ "Root"
414
+ ]
415
+ ],
416
+ "text_variables": {}
417
+ }
@@ -0,0 +1,23 @@
1
+ (kicad_sch
2
+ (version 20250114)
3
+ (generator "eeschema")
4
+ (generator_version "9.0")
5
+ (uuid "bad59254-4c4b-4281-8e5a-889c52dc7b3a")
6
+ (paper "A4")
7
+ (title_block
8
+ (title "kicad-sch-api demo")
9
+ (date "2025-08-17")
10
+ (rev "v0.0.1")
11
+ (company "Circuit-Synth")
12
+ (comment 1 "first comment")
13
+ (comment 2 "second comment")
14
+ (comment 3 "third comment")
15
+ )
16
+ (lib_symbols)
17
+ (sheet_instances
18
+ (path "/"
19
+ (page "1")
20
+ )
21
+ )
22
+ (embedded_fonts no)
23
+ )
File without changes
File without changes
File without changes
File without changes