[Port] add more logging to aid in debug
This commit is contained in:
parent
59e996e680
commit
cf822c7dcf
3 changed files with 36 additions and 0 deletions
|
|
@ -430,6 +430,7 @@ class RenderPather(PatherMixin):
|
||||||
self.paths[portspec].append(step)
|
self.paths[portspec].append(step)
|
||||||
|
|
||||||
self.pattern.ports[portspec] = out_port.copy()
|
self.pattern.ports[portspec] = out_port.copy()
|
||||||
|
self._log_port_update(portspec)
|
||||||
|
|
||||||
if plug_into is not None:
|
if plug_into is not None:
|
||||||
self.plugged({portspec: plug_into})
|
self.plugged({portspec: plug_into})
|
||||||
|
|
@ -506,6 +507,7 @@ class RenderPather(PatherMixin):
|
||||||
step = RenderStep('S', tool, port.copy(), out_port.copy(), data)
|
step = RenderStep('S', tool, port.copy(), out_port.copy(), data)
|
||||||
self.paths[portspec].append(step)
|
self.paths[portspec].append(step)
|
||||||
self.pattern.ports[portspec] = out_port.copy()
|
self.pattern.ports[portspec] = out_port.copy()
|
||||||
|
self._log_port_update(portspec)
|
||||||
|
|
||||||
if plug_into is not None:
|
if plug_into is not None:
|
||||||
self.plugged({portspec: plug_into})
|
self.plugged({portspec: plug_into})
|
||||||
|
|
|
||||||
|
|
@ -638,6 +638,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||||
"""
|
"""
|
||||||
for entry in chain(chain_elements(self.shapes, self.labels, self.refs), self.ports.values()):
|
for entry in chain(chain_elements(self.shapes, self.labels, self.refs), self.ports.values()):
|
||||||
cast('Positionable', entry).translate(offset)
|
cast('Positionable', entry).translate(offset)
|
||||||
|
self._log_bulk_update(f"translate({offset})")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def scale_elements(self, c: float) -> Self:
|
def scale_elements(self, c: float) -> Self:
|
||||||
|
|
@ -705,6 +706,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||||
self.rotate_elements(rotation)
|
self.rotate_elements(rotation)
|
||||||
self.rotate_element_centers(rotation)
|
self.rotate_element_centers(rotation)
|
||||||
self.translate_elements(+pivot)
|
self.translate_elements(+pivot)
|
||||||
|
self._log_bulk_update(f"rotate_around({pivot}, {rotation})")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def rotate_element_centers(self, rotation: float) -> Self:
|
def rotate_element_centers(self, rotation: float) -> Self:
|
||||||
|
|
@ -761,6 +763,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||||
"""
|
"""
|
||||||
for entry in chain(chain_elements(self.shapes, self.refs, self.labels), self.ports.values()):
|
for entry in chain(chain_elements(self.shapes, self.refs, self.labels), self.ports.values()):
|
||||||
cast('Flippable', entry).flip_across(axis=axis)
|
cast('Flippable', entry).flip_across(axis=axis)
|
||||||
|
self._log_bulk_update(f"mirror({axis})")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def copy(self) -> Self:
|
def copy(self) -> Self:
|
||||||
|
|
@ -1160,6 +1163,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||||
pp.rotate_around(pivot, rotation)
|
pp.rotate_around(pivot, rotation)
|
||||||
pp.translate(offset)
|
pp.translate(offset)
|
||||||
self.ports[name] = pp
|
self.ports[name] = pp
|
||||||
|
self._log_port_update(name)
|
||||||
|
|
||||||
if append:
|
if append:
|
||||||
if isinstance(other, Abstract):
|
if isinstance(other, Abstract):
|
||||||
|
|
@ -1315,6 +1319,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||||
# get rid of plugged ports
|
# get rid of plugged ports
|
||||||
for ki, vi in map_in.items():
|
for ki, vi in map_in.items():
|
||||||
del self.ports[ki]
|
del self.ports[ki]
|
||||||
|
self._log_port_removal(ki)
|
||||||
map_out[vi] = None
|
map_out[vi] = None
|
||||||
|
|
||||||
if isinstance(other, Pattern):
|
if isinstance(other, Pattern):
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ from .error import PortError, format_stacktrace
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
port_logger = logging.getLogger('masque.ports')
|
||||||
|
|
||||||
|
|
||||||
@functools.total_ordering
|
@functools.total_ordering
|
||||||
|
|
@ -207,6 +208,19 @@ class PortList(metaclass=ABCMeta):
|
||||||
def ports(self, value: dict[str, Port]) -> None:
|
def ports(self, value: dict[str, Port]) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _log_port_update(self, name: str) -> None:
|
||||||
|
""" Log the current state of the named port """
|
||||||
|
port_logger.info("Port %s: %s", name, self.ports[name])
|
||||||
|
|
||||||
|
def _log_port_removal(self, name: str) -> None:
|
||||||
|
""" Log that the named port has been removed """
|
||||||
|
port_logger.info("Port %s: removed", name)
|
||||||
|
|
||||||
|
def _log_bulk_update(self, label: str) -> None:
|
||||||
|
""" Log all current ports at DEBUG level """
|
||||||
|
for name, port in self.ports.items():
|
||||||
|
port_logger.debug("%s: Port %s: %s", label, name, port)
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
def __getitem__(self, key: str) -> Port:
|
def __getitem__(self, key: str) -> Port:
|
||||||
pass
|
pass
|
||||||
|
|
@ -260,6 +274,7 @@ class PortList(metaclass=ABCMeta):
|
||||||
raise PortError(f'Port {name} already exists.')
|
raise PortError(f'Port {name} already exists.')
|
||||||
assert name not in self.ports
|
assert name not in self.ports
|
||||||
self.ports[name] = value
|
self.ports[name] = value
|
||||||
|
self._log_port_update(name)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def rename_ports(
|
def rename_ports(
|
||||||
|
|
@ -286,11 +301,22 @@ class PortList(metaclass=ABCMeta):
|
||||||
if duplicates:
|
if duplicates:
|
||||||
raise PortError(f'Unrenamed ports would be overwritten: {duplicates}')
|
raise PortError(f'Unrenamed ports would be overwritten: {duplicates}')
|
||||||
|
|
||||||
|
for kk, vv in mapping.items():
|
||||||
|
if vv is None:
|
||||||
|
self._log_port_removal(kk)
|
||||||
|
elif vv != kk:
|
||||||
|
self._log_port_removal(kk)
|
||||||
|
|
||||||
renamed = {vv: self.ports.pop(kk) for kk, vv in mapping.items()}
|
renamed = {vv: self.ports.pop(kk) for kk, vv in mapping.items()}
|
||||||
if None in renamed:
|
if None in renamed:
|
||||||
del renamed[None]
|
del renamed[None]
|
||||||
|
|
||||||
self.ports.update(renamed) # type: ignore
|
self.ports.update(renamed) # type: ignore
|
||||||
|
|
||||||
|
for vv in mapping.values():
|
||||||
|
if vv is not None:
|
||||||
|
self._log_port_update(vv)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def add_port_pair(
|
def add_port_pair(
|
||||||
|
|
@ -319,6 +345,8 @@ class PortList(metaclass=ABCMeta):
|
||||||
}
|
}
|
||||||
self.check_ports(names)
|
self.check_ports(names)
|
||||||
self.ports.update(new_ports)
|
self.ports.update(new_ports)
|
||||||
|
self._log_port_update(names[0])
|
||||||
|
self._log_port_update(names[1])
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def plugged(
|
def plugged(
|
||||||
|
|
@ -388,6 +416,7 @@ class PortList(metaclass=ABCMeta):
|
||||||
|
|
||||||
for pp in chain(a_names, b_names):
|
for pp in chain(a_names, b_names):
|
||||||
del self.ports[pp]
|
del self.ports[pp]
|
||||||
|
self._log_port_removal(pp)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def check_ports(
|
def check_ports(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue