Yield ``(component, ancestors)`` for every Component in the tree. If ``start`` is ``None``, the full app layout is resolved via ``dash.get_app()``, preferring ``validation_layout`` for completeness.
(
start: Component | None = None,
)
| 14 | |
| 15 | |
| 16 | def traverse( |
| 17 | start: Component | None = None, |
| 18 | ) -> Generator[tuple[Component, tuple[Component, ...]], None, None]: |
| 19 | """Yield ``(component, ancestors)`` for every Component in the tree. |
| 20 | |
| 21 | If ``start`` is ``None``, the full app layout is resolved via |
| 22 | ``dash.get_app()``, preferring ``validation_layout`` for completeness. |
| 23 | """ |
| 24 | if start is None: |
| 25 | app = get_app() |
| 26 | start = getattr(app, "validation_layout", None) or app.get_layout() |
| 27 | |
| 28 | yield from _walk(start, ()) |
| 29 | |
| 30 | |
| 31 | def _walk( |
searching dependent graphs…