Source code for pykechain.models.partset

from typing import Iterable, Text  # noqa: F401

from pykechain.models.part import Part  # noqa: F401


[docs] class PartSet(Iterable): """A set of KE-chain parts. Adding set-like methods on a list of parts: * iterable * len() * get() * iPython notebook support for HTML table """ def __init__(self, parts: Iterable[Part]): """Construct a PartSet from a part iterable.""" self._parts = list(parts) def __repr__(self): # pragma: no cover return f"<pyke {self.__class__.__name__} object {self.__len__()} parts>" def __iter__(self): return iter(self._parts) def __len__(self): return len(self._parts) def __getitem__(self, k: int) -> Part: if isinstance(k, int): return self._parts[k] raise NotImplementedError def _repr_html_(self) -> str: all_instances = all(p.category == "INSTANCE" for p in self._parts) html = ["<table width=100%>", "<tr>", "<th>Part</th>"] if not all_instances: html.append("<th>Category</th>") html.append("<th>ID</th>") html.append("</tr>") for part in self._parts: html.append("<tr>") html.append(f"<td>{part.name}</td>") if not all_instances: html.append(f"<td>{part.category}</td>") html.append(f"<td>{part.id}</td>") html.append("</tr>") html.append("</table>") return "".join(html)