kicad-sch-api 0.1.4__tar.gz → 0.1.6__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 (73) hide show
  1. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/PKG-INFO +1 -1
  2. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/cli.py +38 -39
  3. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/mcp/server.py +4 -2
  4. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/PKG-INFO +1 -1
  5. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/pyproject.toml +1 -1
  6. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/dead-code-analysis.md +0 -0
  7. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/publish-pypi.md +0 -0
  8. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/review-implementation.md +0 -0
  9. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/run-tests.md +0 -0
  10. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/update-and-commit.md +0 -0
  11. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/dev/update-memory-bank.md +0 -0
  12. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/.claude/commands/test/run-reference-tests.md +0 -0
  13. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/LICENSE +0 -0
  14. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/MANIFEST.in +0 -0
  15. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/README.md +0 -0
  16. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/examples/advanced_usage.py +0 -0
  17. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/examples/basic_usage.py +0 -0
  18. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/examples/mcp_basic_example.py +0 -0
  19. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/examples/mcp_integration.py +0 -0
  20. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/__init__.py +0 -0
  21. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/__init__.py +0 -0
  22. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/components.py +0 -0
  23. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/formatter.py +0 -0
  24. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/ic_manager.py +0 -0
  25. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/junctions.py +0 -0
  26. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/parser.py +0 -0
  27. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/schematic.py +0 -0
  28. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/types.py +0 -0
  29. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/core/wires.py +0 -0
  30. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/discovery/__init__.py +0 -0
  31. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/discovery/search_index.py +0 -0
  32. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/library/__init__.py +0 -0
  33. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/library/cache.py +0 -0
  34. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/mcp/__init__.py +0 -0
  35. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/py.typed +0 -0
  36. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/utils/__init__.py +0 -0
  37. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api/utils/validation.py +0 -0
  38. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/SOURCES.txt +0 -0
  39. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/dependency_links.txt +0 -0
  40. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/entry_points.txt +0 -0
  41. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/requires.txt +0 -0
  42. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/kicad_sch_api.egg-info/top_level.txt +0 -0
  43. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/setup.cfg +0 -0
  44. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/README.md +0 -0
  45. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_pro +0 -0
  46. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_sch +0 -0
  47. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_pro +0 -0
  48. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_sch +0 -0
  49. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_pro +0 -0
  50. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_sch +0 -0
  51. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_pro +0 -0
  52. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_sch +0 -0
  53. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_pro +0 -0
  54. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_sch +0 -0
  55. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_pro +0 -0
  56. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_sch +0 -0
  57. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_pro +0 -0
  58. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_sch +0 -0
  59. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/subcircuit1.kicad_sch +0 -0
  60. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_pro +0 -0
  61. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_sch +0 -0
  62. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_pro +0 -0
  63. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_sch +0 -0
  64. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_pro +0 -0
  65. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_sch +0 -0
  66. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_pro +0 -0
  67. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_sch +0 -0
  68. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_pro +0 -0
  69. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_sch +0 -0
  70. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_pro +0 -0
  71. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_sch +0 -0
  72. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_pro +0 -0
  73. {kicad_sch_api-0.1.4 → kicad_sch_api-0.1.6}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_sch +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kicad-sch-api
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Professional KiCAD schematic manipulation library with exact format preservation and AI agent integration
5
5
  Author-email: Circuit-Synth <shane@circuit-synth.com>
6
6
  Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
@@ -37,34 +37,22 @@ def setup_claude_code() -> bool:
37
37
  backup_path.write_text(config_path.read_text())
38
38
  print(f"📁 Backed up existing config to: {backup_path}")
39
39
 
40
- # Determine MCP command path
41
- mcp_command = os.environ.get('FOUND_MCP_PATH', 'kicad-sch-mcp')
40
+ # Read existing config or create new one
41
+ if config_path.exists():
42
+ with open(config_path) as f:
43
+ config = json.load(f)
44
+ else:
45
+ config = {}
42
46
 
43
- # If still using default, try to find the actual path
44
- if mcp_command == 'kicad-sch-mcp':
45
- python_version = f"{sys.version_info.major}.{sys.version_info.minor}"
46
- possible_paths = [
47
- f"/Library/Frameworks/Python.framework/Versions/{python_version}/bin/kicad-sch-mcp",
48
- os.path.expanduser(f"~/Library/Python/{python_version}/bin/kicad-sch-mcp"),
49
- os.path.expanduser("~/.local/bin/kicad-sch-mcp"),
50
- "/usr/local/bin/kicad-sch-mcp"
51
- ]
52
-
53
- for path_to_try in possible_paths:
54
- if os.path.exists(path_to_try) and os.access(path_to_try, os.X_OK):
55
- mcp_command = path_to_try
56
- print(f"📍 Using MCP command at: {mcp_command}")
57
- break
47
+ # Ensure mcpServers section exists
48
+ if "mcpServers" not in config:
49
+ config["mcpServers"] = {}
58
50
 
59
- # Create new configuration
60
- config = {
61
- "mcpServers": {
62
- "kicad-sch-api": {
63
- "command": mcp_command,
64
- "args": [],
65
- "env": {}
66
- }
67
- }
51
+ # Use direct Python command - this is more reliable than trying to find binary paths
52
+ config["mcpServers"]["kicad-sch-api"] = {
53
+ "command": sys.executable,
54
+ "args": ["-m", "kicad_sch_api.mcp.server"],
55
+ "env": {}
68
56
  }
69
57
 
70
58
  # Write configuration
@@ -282,7 +270,7 @@ def show_logs():
282
270
  def setup_everything() -> bool:
283
271
  """One-command setup that does everything automatically."""
284
272
  print("🚀 KiCAD Schematic API - Complete Setup")
285
- print("=" * 45)
273
+ print("=" * 40)
286
274
  print()
287
275
 
288
276
  success = True
@@ -300,7 +288,7 @@ def setup_everything() -> bool:
300
288
  print("⚠️ Cache initialization failed, but continuing...")
301
289
  print()
302
290
 
303
- # 3. Setup Claude Code
291
+ # 3. Setup Claude Code (using direct Python command)
304
292
  print("Step 3/4: Configuring Claude Code...")
305
293
  if not setup_claude_code():
306
294
  print("⚠️ Claude Code setup failed, but continuing...")
@@ -315,14 +303,23 @@ def setup_everything() -> bool:
315
303
  # Final status
316
304
  print("🎉 Setup Complete!")
317
305
  print()
318
- print("Next steps:")
306
+ print(" What was configured:")
307
+ print(" • MCP server ready for Claude Code")
308
+ print(" • Component discovery cache initialized")
309
+ print(" • Demo schematic created")
310
+ print()
311
+ print("🚀 Next steps:")
319
312
  print("1. Restart Claude Code")
320
313
  print("2. Try: 'Create a voltage divider with two 10kΩ resistors'")
321
314
  print("3. Open demo_circuit.kicad_sch in KiCAD to see the example")
322
315
  print()
316
+ print("🔍 To test manually:")
317
+ print(" python -m kicad_sch_api.mcp.server --test")
318
+ print()
323
319
 
324
320
  return True
325
321
 
322
+
326
323
  def main():
327
324
  """Main CLI entry point."""
328
325
  parser = argparse.ArgumentParser(
@@ -330,16 +327,18 @@ def main():
330
327
  formatter_class=argparse.RawDescriptionHelpFormatter,
331
328
  epilog="""
332
329
  Examples:
333
- kicad-sch-api --setup # Complete one-command setup (RECOMMENDED)
334
- kicad-sch-api --setup-claude-code # Configure Claude Code MCP only
335
- kicad-sch-api --test # Test installation
336
- kicad-sch-api --demo # Create demo schematic
337
- kicad-sch-api --status # Show detailed status
330
+ kicad-sch-api --setup # Complete one-command setup (RECOMMENDED)
331
+ kicad-sch-api --setup-claude-code # Configure Claude Code MCP settings only
332
+ kicad-sch-api --test # Test installation
333
+ kicad-sch-api --demo # Create demo schematic
338
334
  """
339
335
  )
340
336
 
337
+ # Main setup options
341
338
  parser.add_argument('--setup', action='store_true',
342
- help='Complete one-command setup (RECOMMENDED for new users)')
339
+ help='Complete one-command setup (RECOMMENDED)')
340
+
341
+ # Setup options
343
342
  parser.add_argument('--setup-claude-code', action='store_true',
344
343
  help='Configure Claude Code MCP settings only')
345
344
  parser.add_argument('--test', action='store_true',
@@ -357,14 +356,14 @@ Examples:
357
356
 
358
357
  args = parser.parse_args()
359
358
 
360
- # If no arguments provided, suggest the simple setup
359
+ # If no arguments provided, suggest setup
361
360
  if not any(vars(args).values()):
362
- print("KiCAD Schematic API - Command Line Interface")
361
+ print("🚀 KiCAD Schematic API - Command Line Interface")
363
362
  print()
364
- print("For new users, run the complete setup:")
363
+ print("🌟 RECOMMENDED: Complete setup:")
365
364
  print(" kicad-sch-api --setup")
366
365
  print()
367
- print("For help with all options:")
366
+ print("🆘 For help with all options:")
368
367
  print(" kicad-sch-api --help")
369
368
  return
370
369
 
@@ -1457,7 +1457,7 @@ This hierarchical approach makes complex designs manageable and promotes reusabl
1457
1457
  """
1458
1458
 
1459
1459
  def main():
1460
- """Run the MCP server."""
1460
+ """Run the MCP server in standard on-demand mode."""
1461
1461
  import argparse
1462
1462
 
1463
1463
  parser = argparse.ArgumentParser(description="KiCAD Schematic MCP Server")
@@ -1473,7 +1473,7 @@ def main():
1473
1473
  logger.debug("Debug logging enabled")
1474
1474
 
1475
1475
  if args.version:
1476
- print("KiCAD Schematic MCP Server v0.1.4")
1476
+ print("KiCAD Schematic MCP Server v0.1.5")
1477
1477
  return
1478
1478
 
1479
1479
  if args.status:
@@ -1498,6 +1498,7 @@ def main():
1498
1498
 
1499
1499
  logger.info("Starting KiCAD Schematic MCP Server...")
1500
1500
  try:
1501
+ # Run normally - Claude Desktop will manage the process lifecycle
1501
1502
  mcp.run()
1502
1503
  except KeyboardInterrupt:
1503
1504
  logger.info("Server stopped by user")
@@ -1505,5 +1506,6 @@ def main():
1505
1506
  logger.error(f"Server error: {e}")
1506
1507
  sys.exit(1)
1507
1508
 
1509
+
1508
1510
  if __name__ == "__main__":
1509
1511
  main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kicad-sch-api
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Professional KiCAD schematic manipulation library with exact format preservation and AI agent integration
5
5
  Author-email: Circuit-Synth <shane@circuit-synth.com>
6
6
  Maintainer-email: Circuit-Synth <shane@circuit-synth.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kicad-sch-api"
7
- version = "0.1.4"
7
+ version = "0.1.6"
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"
File without changes
File without changes
File without changes
File without changes