[builder] major Pather/Planner/Tool rework
This commit is contained in:
parent
0f39ce8816
commit
22e645e527
28 changed files with 6036 additions and 2467 deletions
|
|
@ -12,7 +12,7 @@ from numpy import pi
|
|||
from numpy.typing import ArrayLike, NDArray
|
||||
|
||||
from .traits import PositionableImpl, PivotableImpl, Copyable, Mirrorable, Flippable
|
||||
from .utils import rotate_offsets_around, rotation_matrix_2d
|
||||
from .utils import ptypes_compatible, rotate_offsets_around, rotation_matrix_2d
|
||||
from .error import PortError, format_stacktrace
|
||||
|
||||
|
||||
|
|
@ -542,7 +542,7 @@ class PortList(metaclass=ABCMeta):
|
|||
|
||||
a_types = [pp.ptype for pp in a_ports]
|
||||
b_types = [pp.ptype for pp in b_ports]
|
||||
type_conflicts = numpy.array([at != bt and 'unk' not in (at, bt)
|
||||
type_conflicts = numpy.array([not ptypes_compatible(at, bt)
|
||||
for at, bt in zip(a_types, b_types, strict=True)])
|
||||
|
||||
if type_conflicts.any():
|
||||
|
|
@ -641,11 +641,10 @@ class PortList(metaclass=ABCMeta):
|
|||
port with `rotation=None`), `set_rotation` must be provided
|
||||
to indicate how much `other` should be rotated. Otherwise,
|
||||
`set_rotation` must remain `None`.
|
||||
ok_connections: Set of "allowed" ptype combinations. Identical
|
||||
ptypes are always allowed to connect, as is `'unk'` with
|
||||
any other ptypte. Non-allowed ptype connections will log a
|
||||
warning. Order is ignored, i.e. `(a, b)` is equivalent to
|
||||
`(b, a)`.
|
||||
ok_connections: Set of additional allowed ptype combinations.
|
||||
Ptypes accepted by the shared compatibility policy are always
|
||||
allowed. Non-allowed ptype connections will log a warning.
|
||||
Order is ignored, i.e. `(a, b)` is equivalent to `(b, a)`.
|
||||
|
||||
Returns:
|
||||
- The (x, y) translation (performed last)
|
||||
|
|
@ -694,11 +693,10 @@ class PortList(metaclass=ABCMeta):
|
|||
port with `rotation=None`), `set_rotation` must be provided
|
||||
to indicate how much `o_ports` should be rotated. Otherwise,
|
||||
`set_rotation` must remain `None`.
|
||||
ok_connections: Set of "allowed" ptype combinations. Identical
|
||||
ptypes are always allowed to connect, as is `'unk'` with
|
||||
any other ptypte. Non-allowed ptype connections will log a
|
||||
warning. Order is ignored, i.e. `(a, b)` is equivalent to
|
||||
`(b, a)`.
|
||||
ok_connections: Set of additional allowed ptype combinations.
|
||||
Ptypes accepted by the shared compatibility policy are always
|
||||
allowed. Non-allowed ptype connections will log a warning.
|
||||
Order is ignored, i.e. `(a, b)` is equivalent to `(b, a)`.
|
||||
|
||||
Returns:
|
||||
- The (x, y) translation (performed last)
|
||||
|
|
@ -725,8 +723,10 @@ class PortList(metaclass=ABCMeta):
|
|||
o_rotations *= -1
|
||||
|
||||
ok_pairs = {tuple(sorted(pair)) for pair in ok_connections if pair[0] != pair[1]}
|
||||
type_conflicts = numpy.array([(st != ot) and ('unk' not in (st, ot)) and (tuple(sorted((st, ot))) not in ok_pairs)
|
||||
for st, ot in zip(s_types, o_types, strict=True)])
|
||||
type_conflicts = numpy.array([
|
||||
not ptypes_compatible(st, ot) and tuple(sorted((st, ot))) not in ok_pairs
|
||||
for st, ot in zip(s_types, o_types, strict=True)
|
||||
])
|
||||
if type_conflicts.any():
|
||||
msg = 'Ports have conflicting types:\n'
|
||||
for nn, (kk, vv) in enumerate(map_in.items()):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue