fix: delete_label matches global_label and hierarchical_label types
WireManager.delete_label only checked for Symbol("label") when scanning
the schematic s-expression list, so it silently skipped and failed to
delete global_label and hierarchical_label elements — returning False
with "No matching label found" even when a visible label existed at the
given coordinates.
Fix: collect all three label-like symbol types into a set and use `in`
instead of `==` for the type check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,8 @@ _SYM_PTS = Symbol("pts")
|
||||
_SYM_XY = Symbol("xy")
|
||||
_SYM_AT = Symbol("at")
|
||||
_SYM_LABEL = Symbol("label")
|
||||
_SYM_GLOBAL_LABEL = Symbol("global_label")
|
||||
_SYM_HIERARCHICAL_LABEL = Symbol("hierarchical_label")
|
||||
_SYM_STROKE = Symbol("stroke")
|
||||
_SYM_WIDTH = Symbol("width")
|
||||
_SYM_TYPE = Symbol("type")
|
||||
@@ -681,8 +683,9 @@ class WireManager:
|
||||
|
||||
sch_data = sexpdata.loads(sch_content)
|
||||
|
||||
_LABEL_TYPES = {_SYM_LABEL, _SYM_GLOBAL_LABEL, _SYM_HIERARCHICAL_LABEL}
|
||||
for i, item in enumerate(sch_data):
|
||||
if not (isinstance(item, list) and len(item) > 0 and item[0] == _SYM_LABEL):
|
||||
if not (isinstance(item, list) and len(item) > 0 and item[0] in _LABEL_TYPES):
|
||||
continue
|
||||
|
||||
# Second element is the label text
|
||||
|
||||
Reference in New Issue
Block a user