(
self,
parent: Node | None,
data: object,
children: object | None = None,
)
| 255 | ###################################################################### |
| 256 | |
| 257 | def _create_node( |
| 258 | self, |
| 259 | parent: Node | None, |
| 260 | data: object, |
| 261 | children: object | None = None, |
| 262 | ) -> Node: |
| 263 | if isinstance(data, Mapping): |
| 264 | node = Node(**data) |
| 265 | elif self._accessors is not None: |
| 266 | if hasattr(data, "__iter__") and not isinstance(data, str): |
| 267 | node = Node(**dict(zip(self._accessors, data, strict=False))) |
| 268 | else: |
| 269 | node = Node(**{self._accessors[0]: data}) |
| 270 | else: |
| 271 | raise ValueError("TreeSource requires accessors for non-mapping node data") |
| 272 | |
| 273 | node._parent = parent |
| 274 | node._source = self |
| 275 | |
| 276 | if children is not None: |
| 277 | node._children = self._create_nodes(parent=node, value=children) |
| 278 | |
| 279 | return node |
| 280 | |
| 281 | def _create_nodes(self, parent: Node | None, value: object) -> list[Node]: |
| 282 | match value: |
no test coverage detected