in sapp/trace_graph.py [0:0]
def _save_trace_frame_leaf_assoc(self, bulk_saver: BulkSaver) -> None:
"""Adds trace frame leaf assocs to bulk saver after filtering them:
1. if frame is a leaf, include all kinds
2. otherwise, find outgoing leaf kinds and intersect with union of incoming
leaf kinds of all successor frames.
3. include only kinds that map to one of these outgoing kinds.
"""
for trace_frame_id, leaf_ids in self._trace_frame_leaf_assoc.items():
frame = self._trace_frames[trace_frame_id]
valid_frame_leaf_ids = self._compute_valid_frame_leaves(frame)
for leaf_id, depth in leaf_ids.items():
leaf_text = self._shared_texts[leaf_id]
if (
leaf_text.kind is SharedTextKind.FEATURE
or leaf_id in valid_frame_leaf_ids
or self._is_opposite_leaf(frame, leaf_text)
):
bulk_saver.add_trace_frame_leaf_assoc(leaf_text, frame, depth)
else:
# Logging all the leaf kinds that are omitted causes large logs.
pass