Skip to content

symfonic.agent.backend.linked_selection_spans

linked_selection_spans

Only uniquely attributable linked lines enter the v2 receipt.

linked_selection_spans

linked_selection_spans(direct, spans)

Omit uncreditable links while retaining valid direct evidence.

Source code in src/symfonic/agent/backend/linked_selection_spans.py
def linked_selection_spans(direct, spans):
    """Omit uncreditable links while retaining valid direct evidence."""
    direct_refs = {span.publication for span in direct}
    direct_ids = {span.publication.record_id for span in direct}
    linked = tuple(span for span in spans if span.line.startswith("[linked] "))
    targets = Counter(span.publication.record_id for span in linked)
    admitted = set()
    for index, span in enumerate(spans):
        if not span.line.startswith("[linked] "):
            continue
        edge = span.linked_edge
        if type(edge) is not LinkedRenderedWitness:
            continue
        anchor = (edge.source_publication if edge.direction == "outgoing"
                  else edge.target_publication)
        neighbor = (edge.target_publication if edge.direction == "outgoing"
                    else edge.source_publication)
        if (anchor not in direct_refs or span.publication != neighbor
                or span.publication.record_id in direct_ids
                or targets[span.publication.record_id] != 1):
            continue
        admitted.add(index)
    return tuple(span for index, span in enumerate(spans)
                 if not span.line.startswith("[linked] ") or index in admitted)