[data_to_ports] warn on invalid angle

This commit is contained in:
Jan Petykiewicz 2026-04-01 19:22:16 -07:00
commit fbe138d443
2 changed files with 22 additions and 1 deletions

View file

@ -116,3 +116,17 @@ def test_data_to_ports_hierarchical_collision_is_atomic() -> None:
data_to_ports([layer], lib, parent, max_depth=1)
assert not parent.ports
def test_data_to_ports_flat_bad_angle_warns_and_skips(
caplog: pytest.LogCaptureFixture,
) -> None:
layer = (10, 0)
pat = Pattern()
pat.label(layer=layer, string="A:type1 nope", offset=(5, 0))
caplog.set_level("WARNING")
data_to_ports([layer], {}, pat)
assert not pat.ports
assert any('bad angle' in record.message for record in caplog.records)

View file

@ -184,7 +184,14 @@ def data_to_ports_flat(
name, property_string = label.string.split(':', 1)
properties = property_string.split()
ptype = properties[0] if len(properties) > 0 else 'unk'
angle_deg = float(properties[1]) if len(properties) > 1 else numpy.inf
if len(properties) > 1:
try:
angle_deg = float(properties[1])
except ValueError:
logger.warning(f'Invalid port label "{label.string}" in pattern "{pstr}" (bad angle)')
continue
else:
angle_deg = numpy.inf
xy = label.offset
angle = numpy.deg2rad(angle_deg) if numpy.isfinite(angle_deg) else None