"""Construct word-level teaching targets; no tokenizer or training."""
import json
def make_tasks(sentences):
    result=[]
    for i,words in enumerate(sentences,1):
        if len(words)!=3:raise ValueError("three words required by this fixture")
        masked=[words[0],"[MASK]",words[2]]
        restored=masked.copy();restored[1]=words[1]
        assert restored==words
        prefix=words[:2];target=words[2]
        assert prefix+[target]==words
        result.extend([{"source_id":"D"+str(i),"task":"masked_word","input":masked,"target":words[1],"hidden_index":1},{"source_id":"D"+str(i),"task":"next_word","input":prefix,"target":target,"hidden_index":2}])
    return result
if __name__=="__main__":
    sentences=[["کتاب","تازه","رسید"],["باران","آرام","بارید"],["اتوبوس","زود","آمد"]]
    tasks=make_tasks(sentences)
    assert len(tasks)==6 and [t["target"] for t in tasks]==["تازه","رسید","آرام","بارید","زود","آمد"]
    print(json.dumps({"tasks":tasks,"reconstruction_checks":6,"actual_training":False},ensure_ascii=False,indent=2))
