kicad-sch-api 0.3.0__tar.gz → 0.3.2__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 (95) hide show
  1. {kicad_sch_api-0.3.0/kicad_sch_api.egg-info → kicad_sch_api-0.3.2}/PKG-INFO +1 -1
  2. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/__init__.py +2 -2
  3. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/formatter.py +3 -2
  4. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/parser.py +827 -19
  5. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2/kicad_sch_api.egg-info}/PKG-INFO +1 -1
  6. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api.egg-info/SOURCES.txt +2 -0
  7. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/pyproject.toml +1 -1
  8. kicad_sch_api-0.3.2/tests/test_kicad_validation.py +421 -0
  9. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_parse_reference_rectangles.py +5 -4
  10. kicad_sch_api-0.3.2/tests/test_wire_operations.py +361 -0
  11. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/dead-code-analysis.md +0 -0
  12. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/publish-pypi.md +0 -0
  13. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/review-implementation.md +0 -0
  14. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/run-tests.md +0 -0
  15. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/update-and-commit.md +0 -0
  16. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/dev/update-memory-bank.md +0 -0
  17. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/.claude/commands/test/run-reference-tests.md +0 -0
  18. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/CHANGELOG.md +0 -0
  19. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/LICENSE +0 -0
  20. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/MANIFEST.in +0 -0
  21. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/README.md +0 -0
  22. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/advanced_usage.py +0 -0
  23. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/basic_usage.py +0 -0
  24. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/mcp_basic_example.py +0 -0
  25. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/mcp_integration.py +0 -0
  26. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/pin_to_pin_wiring_demo.py +0 -0
  27. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/simple_circuit_with_pin_wiring.py +0 -0
  28. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/examples/simple_two_resistor_routing.py +0 -0
  29. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/cli.py +0 -0
  30. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/__init__.py +0 -0
  31. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/component_bounds.py +0 -0
  32. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/components.py +0 -0
  33. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/config.py +0 -0
  34. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/geometry.py +0 -0
  35. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/ic_manager.py +0 -0
  36. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/junctions.py +0 -0
  37. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/manhattan_routing.py +0 -0
  38. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/pin_utils.py +0 -0
  39. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/schematic.py +0 -0
  40. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/simple_manhattan.py +0 -0
  41. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/types.py +0 -0
  42. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/wire_routing.py +0 -0
  43. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/core/wires.py +0 -0
  44. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/discovery/__init__.py +0 -0
  45. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/discovery/search_index.py +0 -0
  46. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/library/__init__.py +0 -0
  47. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/library/cache.py +0 -0
  48. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/py.typed +0 -0
  49. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/utils/__init__.py +0 -0
  50. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api/utils/validation.py +0 -0
  51. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api.egg-info/dependency_links.txt +0 -0
  52. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api.egg-info/entry_points.txt +0 -0
  53. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api.egg-info/requires.txt +0 -0
  54. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/kicad_sch_api.egg-info/top_level.txt +0 -0
  55. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/setup.cfg +0 -0
  56. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/README.md +0 -0
  57. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_pro +0 -0
  58. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_sch +0 -0
  59. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_pro +0 -0
  60. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_sch +0 -0
  61. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_pro +0 -0
  62. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_sch +0 -0
  63. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_pro +0 -0
  64. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_sch +0 -0
  65. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_pro +0 -0
  66. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_sch +0 -0
  67. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_pro +0 -0
  68. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_sch +0 -0
  69. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_pro +0 -0
  70. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_sch +0 -0
  71. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/subcircuit1.kicad_sch +0 -0
  72. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_pro +0 -0
  73. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_sch +0 -0
  74. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_pro +0 -0
  75. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_sch +0 -0
  76. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_pro +0 -0
  77. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_sch +0 -0
  78. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_pro +0 -0
  79. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_sch +0 -0
  80. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_pro +0 -0
  81. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_sch +0 -0
  82. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_pro +0 -0
  83. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_sch +0 -0
  84. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_pro +0 -0
  85. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_sch +0 -0
  86. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_bounding_box_rectangles.py +0 -0
  87. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_component_removal.py +0 -0
  88. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_element_removal.py +0 -0
  89. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_grid_snapping.py +0 -0
  90. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_manhattan_routing.py +0 -0
  91. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_pin_positioning.py +0 -0
  92. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_pin_to_pin_wiring.py +0 -0
  93. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_rectangle.py +0 -0
  94. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_rectangle_roundtrip.py +0 -0
  95. {kicad_sch_api-0.3.0 → kicad_sch_api-0.3.2}/tests/test_removal_against_references.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kicad-sch-api
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Professional KiCAD schematic manipulation library with exact format preservation
5
5
  Author-email: Circuit-Synth <shane@circuit-synth.com>
6
6
  Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
@@ -42,7 +42,7 @@ Advanced Usage:
42
42
  print(f"Found {len(issues)} validation issues")
43
43
  """
44
44
 
45
- __version__ = "0.3.0"
45
+ __version__ = "0.3.2"
46
46
  __author__ = "Circuit-Synth"
47
47
  __email__ = "info@circuit-synth.com"
48
48
 
@@ -55,7 +55,7 @@ from .library.cache import SymbolLibraryCache, get_symbol_cache
55
55
  from .utils.validation import ValidationError, ValidationIssue
56
56
 
57
57
  # Version info
58
- VERSION_INFO = (0, 3, 0)
58
+ VERSION_INFO = (0, 3, 2)
59
59
 
60
60
  # Public API
61
61
  __all__ = [
@@ -55,7 +55,7 @@ class ExactFormatter:
55
55
  self.rules["generator"] = FormatRule(inline=True, quote_indices={1})
56
56
  self.rules["generator_version"] = FormatRule(inline=True, quote_indices={1})
57
57
  self.rules["uuid"] = FormatRule(inline=True, quote_indices={1})
58
- self.rules["paper"] = FormatRule(inline=True) # No quotes for paper size (A4, A3, etc.)
58
+ self.rules["paper"] = FormatRule(inline=True, quote_indices={1}) # Paper size should be quoted per KiCad format
59
59
 
60
60
  # Title block
61
61
  self.rules["title_block"] = FormatRule(inline=False)
@@ -189,7 +189,8 @@ class ExactFormatter:
189
189
  elif isinstance(element, str):
190
190
  # Quote strings that need quoting
191
191
  if self._needs_quoting(element):
192
- return f'"{element}"'
192
+ escaped = self._escape_string(element)
193
+ return f'"{escaped}"'
193
194
  return element
194
195
  elif isinstance(element, float):
195
196
  # Custom float formatting for KiCAD compatibility