r"""Return immediate child :class:`.visitors.HasTraverseInternals` elements of this :class:`.visitors.HasTraverseInternals`. This is used for visit traversal. \**kw may contain flags that change the collection that is returned, for example to return a subset of item
(
self, *, omit_attrs: Tuple[str, ...] = (), **kw: Any
)
| 447 | |
| 448 | @util.preload_module("sqlalchemy.sql.traversals") |
| 449 | def get_children( |
| 450 | self, *, omit_attrs: Tuple[str, ...] = (), **kw: Any |
| 451 | ) -> Iterable[HasTraverseInternals]: |
| 452 | r"""Return immediate child :class:`.visitors.HasTraverseInternals` |
| 453 | elements of this :class:`.visitors.HasTraverseInternals`. |
| 454 | |
| 455 | This is used for visit traversal. |
| 456 | |
| 457 | \**kw may contain flags that change the collection that is |
| 458 | returned, for example to return a subset of items in order to |
| 459 | cut down on larger traversals, or to return child items from a |
| 460 | different context (such as schema-level collections instead of |
| 461 | clause-level). |
| 462 | |
| 463 | """ |
| 464 | |
| 465 | traversals = util.preloaded.sql_traversals |
| 466 | |
| 467 | try: |
| 468 | traverse_internals = self._traverse_internals |
| 469 | except AttributeError: |
| 470 | # user-defined classes may not have a _traverse_internals |
| 471 | return [] |
| 472 | |
| 473 | dispatch = traversals._get_children.run_generated_dispatch |
| 474 | return itertools.chain.from_iterable( |
| 475 | meth(obj, **kw) |
| 476 | for attrname, obj, meth in dispatch( |
| 477 | self, traverse_internals, "_generated_get_children_traversal" |
| 478 | ) |
| 479 | if attrname not in omit_attrs and obj is not None |
| 480 | ) |
| 481 | |
| 482 | |
| 483 | class _InternalTraversalDispatchType(Protocol): |