[data_to_ports] warn on invalid angle
This commit is contained in:
parent
4b416745da
commit
fbe138d443
2 changed files with 22 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue