kicad-sch-api 0.4.2__tar.gz → 0.4.4__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.
- {kicad_sch_api-0.4.2/kicad_sch_api.egg-info → kicad_sch_api-0.4.4}/PKG-INFO +1 -1
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/__init__.py +1 -1
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/factories/element_factory.py +1 -1
- kicad_sch_api-0.4.4/kicad_sch_api/core/parsing_utils.py +63 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/symbol_parser.py +9 -2
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4/kicad_sch_api.egg-info}/PKG-INFO +1 -1
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api.egg-info/SOURCES.txt +1 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/pyproject.toml +1 -1
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/dead-code-analysis.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/publish-pypi.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/review-implementation.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/run-tests.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/update-and-commit.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/dev/update-memory-bank.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/.claude/commands/test/run-reference-tests.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/CHANGELOG.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/LICENSE +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/MANIFEST.in +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/README.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/advanced_usage.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/basic_usage.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/kicad_cli_exports.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/mcp_basic_example.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/mcp_integration.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/parser_demo.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/pin_to_pin_wiring_demo.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/simple_circuit_with_pin_wiring.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/examples/simple_two_resistor_routing.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/base.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/bom.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/erc.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/export_docs.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/netlist.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli/types.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/cli.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/base.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/components.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/junctions.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/labels.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/collections/wires.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/collections/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/collections/base.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/component_bounds.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/components.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/config.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/factories/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/formatter.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/geometry.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/ic_manager.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/junctions.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/labels.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/file_io.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/format_sync.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/graphics.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/metadata.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/sheet.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/text_elements.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/validation.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/managers/wire.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/nets.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/no_connects.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/pin_utils.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/schematic.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/texts.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/types.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/core/wires.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/discovery/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/discovery/search_index.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/geometry/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/geometry/font_metrics.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/geometry/symbol_bbox.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/interfaces/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/interfaces/parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/interfaces/repository.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/interfaces/resolver.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/library/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/library/cache.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/base.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/graphics_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/label_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/library_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/metadata_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/sheet_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/text_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/wire_parser.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/registry.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/utils.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/py.typed +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/symbols/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/symbols/cache.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/symbols/resolver.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/symbols/validators.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/utils/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/utils/validation.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/validation/__init__.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/validation/erc.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/validation/erc_models.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/validation/pin_matrix.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/validation/validators.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api.egg-info/dependency_links.txt +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api.egg-info/entry_points.txt +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api.egg-info/requires.txt +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api.egg-info/top_level.txt +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/setup.cfg +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/README.md +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/blank_schematic/blank_schematic.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/multi_unit_7400/multi_unit_7400.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/power_symbols/power_symbols.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/resistor_divider/resistor_divider.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/sch_title/sch_title.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_extended_component/single_extended_component.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/single_hierarchical_sheet.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_hierarchical_sheet/subcircuit1.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_label/single_label.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_label_hierarchical/single_label_hierarchical.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_resistor/single_resistor.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_text/single_text.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_text_box/single_text_box.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/single_wire/single_wire.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_pro +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/two_resistors/two_resistors.kicad_sch +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_bounding_box_rectangles.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_cli_integration.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_component_removal.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_element_removal.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_geometry.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_grid_snapping.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_image_support.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_issue_13_public_properties.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_kicad_validation.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_parse_reference_rectangles.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_pin_positioning.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_pin_to_pin_wiring.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_rectangle.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_rectangle_roundtrip.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_removal_against_references.py +0 -0
- {kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/test_wire_operations.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kicad-sch-api
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
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>
|
|
@@ -126,7 +126,7 @@ class ElementFactory:
|
|
|
126
126
|
uuid=label_dict.get("uuid", str(uuid.uuid4())),
|
|
127
127
|
position=pos,
|
|
128
128
|
text=label_dict.get("text", ""),
|
|
129
|
-
label_type=LabelType(label_dict.get("label_type", "
|
|
129
|
+
label_type=LabelType(label_dict.get("label_type", "label")),
|
|
130
130
|
rotation=label_dict.get("rotation", 0.0),
|
|
131
131
|
size=label_dict.get("size", 1.27),
|
|
132
132
|
shape=(
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Utility functions for parsing S-expression data.
|
|
3
|
+
|
|
4
|
+
This module contains helper functions used by various parsers
|
|
5
|
+
to handle common parsing patterns safely and consistently.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
import sexpdata
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def parse_bool_property(value: Any, default: bool = True) -> bool:
|
|
17
|
+
"""
|
|
18
|
+
Parse a boolean property from S-expression data.
|
|
19
|
+
|
|
20
|
+
Handles both sexpdata.Symbol and string types, converting yes/no to bool.
|
|
21
|
+
This is the canonical way to parse boolean properties from KiCad files.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
value: Value from S-expression (Symbol, str, bool, or None)
|
|
25
|
+
default: Default value if parsing fails or value is None
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
bool: Parsed boolean value
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
>>> parse_bool_property(sexpdata.Symbol('yes'))
|
|
32
|
+
True
|
|
33
|
+
>>> parse_bool_property('no')
|
|
34
|
+
False
|
|
35
|
+
>>> parse_bool_property(None, default=False)
|
|
36
|
+
False
|
|
37
|
+
>>> parse_bool_property('YES') # Case insensitive
|
|
38
|
+
True
|
|
39
|
+
|
|
40
|
+
Note:
|
|
41
|
+
This function was added to fix a critical bug where Symbol('yes') == 'yes'
|
|
42
|
+
returned False, causing properties like in_bom and on_board to be parsed
|
|
43
|
+
incorrectly.
|
|
44
|
+
"""
|
|
45
|
+
# If value is None, use default
|
|
46
|
+
if value is None:
|
|
47
|
+
return default
|
|
48
|
+
|
|
49
|
+
# Convert Symbol to string
|
|
50
|
+
if isinstance(value, sexpdata.Symbol):
|
|
51
|
+
value = str(value)
|
|
52
|
+
|
|
53
|
+
# Handle string values (case-insensitive)
|
|
54
|
+
if isinstance(value, str):
|
|
55
|
+
return value.lower() == "yes"
|
|
56
|
+
|
|
57
|
+
# Handle boolean values directly
|
|
58
|
+
if isinstance(value, bool):
|
|
59
|
+
return value
|
|
60
|
+
|
|
61
|
+
# Unexpected type - use default
|
|
62
|
+
logger.warning(f"Unexpected type for boolean property: {type(value)}, using default={default}")
|
|
63
|
+
return default
|
|
@@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional
|
|
|
10
10
|
|
|
11
11
|
import sexpdata
|
|
12
12
|
|
|
13
|
+
from ...core.parsing_utils import parse_bool_property
|
|
13
14
|
from ...core.types import Point
|
|
14
15
|
from ..base import BaseElementParser
|
|
15
16
|
|
|
@@ -74,9 +75,15 @@ class SymbolParser(BaseElementParser):
|
|
|
74
75
|
prop_value = str(prop_value).replace('\\"', '"')
|
|
75
76
|
symbol_data["properties"][prop_name] = prop_value
|
|
76
77
|
elif element_type == "in_bom":
|
|
77
|
-
symbol_data["in_bom"] =
|
|
78
|
+
symbol_data["in_bom"] = parse_bool_property(
|
|
79
|
+
sub_item[1] if len(sub_item) > 1 else None,
|
|
80
|
+
default=True
|
|
81
|
+
)
|
|
78
82
|
elif element_type == "on_board":
|
|
79
|
-
symbol_data["on_board"] =
|
|
83
|
+
symbol_data["on_board"] = parse_bool_property(
|
|
84
|
+
sub_item[1] if len(sub_item) > 1 else None,
|
|
85
|
+
default=True
|
|
86
|
+
)
|
|
80
87
|
|
|
81
88
|
return symbol_data
|
|
82
89
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kicad-sch-api
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
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>
|
|
@@ -53,6 +53,7 @@ kicad_sch_api/core/labels.py
|
|
|
53
53
|
kicad_sch_api/core/nets.py
|
|
54
54
|
kicad_sch_api/core/no_connects.py
|
|
55
55
|
kicad_sch_api/core/parser.py
|
|
56
|
+
kicad_sch_api/core/parsing_utils.py
|
|
56
57
|
kicad_sch_api/core/pin_utils.py
|
|
57
58
|
kicad_sch_api/core/schematic.py
|
|
58
59
|
kicad_sch_api/core/texts.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/graphics_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/library_parser.py
RENAMED
|
File without changes
|
{kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/kicad_sch_api/parsers/elements/metadata_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kicad_sch_api-0.4.2 → kicad_sch_api-0.4.4}/tests/reference_tests/reference_kicad_projects/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|