"""Fixture label audit, not semantic inference or a training run."""
import json
def audit(variants):
    accepted=[];rejected=[]
    for row in variants:
        same=row["original_label"]==row["reviewed_label"]
        assert same==row["label_preserved"]
        (accepted if same else rejected).append(row["id"])
    return accepted,rejected
def assert_no_source_overlap(train_sources,test_sources):
    if set(train_sources)&set(test_sources):raise ValueError("source family leaks across split")
if __name__=="__main__":
    variants=[{"id":"V1","original_label":"cancel_booking","reviewed_label":"cancel_booking","label_preserved":True},{"id":"V2","original_label":"cancel_booking","reviewed_label":"cancel_booking","label_preserved":True},{"id":"V3","original_label":"cancel_booking","reviewed_label":"keep_booking","label_preserved":False},{"id":"V4","original_label":"continue_shipping","reviewed_label":"stop_shipping","label_preserved":False},{"id":"V5","original_label":"continue_shipping","reviewed_label":"continue_shipping","label_preserved":True}]
    good,bad=audit(variants)
    assert good==["V1","V2","V5"] and bad==["V3","V4"]
    assert_no_source_overlap(["D1"],["D2"])
    caught=False
    try:assert_no_source_overlap(["D1"],["D1","D2"])
    except ValueError:caught=True
    assert caught
    print(json.dumps({"accepted":good,"rejected_inherited_labels":bad,"overlapping_source_split_rejected":caught,"semantic_labels_are_author_supplied":True},indent=2))
