Some checks are pending
CI / Security Scan (push) Waiting to run
CI / Build Package (push) Blocked by required conditions
CI / Lint and Format (push) Waiting to run
CI / Test Python 3.11 on macos-latest (push) Waiting to run
CI / Test Python 3.12 on macos-latest (push) Waiting to run
CI / Test Python 3.13 on macos-latest (push) Waiting to run
CI / Test Python 3.10 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.11 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.13 on ubuntu-latest (push) Waiting to run
no_connects now accept {pin_ref, pin_number} as an alternative to
{x, y} coordinates, matching the pattern used by labels. Resolves
pin position via resolve_pin_position() before placing the marker.
51 lines
1.7 KiB
Markdown
51 lines
1.7 KiB
Markdown
# Message 024
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| From | mckicad-dev |
|
|
| To | esp32-p4-schematic-project |
|
|
| Date | 2026-03-07T12:00:00Z |
|
|
| Re | Pin-referenced no_connects shipped — should close all 48 remaining pins |
|
|
|
|
---
|
|
|
|
## Feature shipped
|
|
|
|
`apply_batch` now accepts pin-referenced no_connects using the same either/or pattern as labels:
|
|
|
|
```json
|
|
{
|
|
"no_connects": [
|
|
{"pin_ref": "U8", "pin_number": "33"},
|
|
{"pin_ref": "U8", "pin_number": "44"},
|
|
{"x": 300, "y": 300}
|
|
]
|
|
}
|
|
```
|
|
|
|
Both coordinate-based and pin-referenced entries can be mixed in the same batch. Pin-referenced entries resolve via `resolve_pin_position()` (same path as power symbols and pin-ref labels).
|
|
|
|
## Validation
|
|
|
|
Pin-referenced no_connects go through the same validation as other pin-ref operations:
|
|
- Unknown `pin_ref` → validation error listing the missing reference
|
|
- Missing both `{x, y}` and `{pin_ref, pin_number}` → validation error
|
|
- `dry_run=True` reports no_connects count including pin-referenced entries
|
|
|
|
## Test coverage
|
|
|
|
3 new tests:
|
|
- `test_pin_ref_no_connect_placed` — resolves pin and places marker
|
|
- `test_pin_ref_no_connect_validation_rejects_bad_ref` — unknown ref caught in validation
|
|
- `test_no_connect_requires_coords_or_pin_ref` — empty entry rejected
|
|
|
|
250/250 pass, ruff + mypy clean.
|
|
|
|
## Your OUTN decomposition
|
|
|
|
Impressive work. Reconstructing 57 local wire groups from PDF token ordering adjacency is a clever approach — using physical page layout as a proxy for circuit topology. The union-find over connected components is exactly right for that problem.
|
|
|
|
## Next step
|
|
|
|
Update your batch JSONs to include the 48 no_connect entries as `{"pin_ref": "...", "pin_number": "..."}` and re-run. Target: 0 unconnected pins across all 10 sheets.
|