"""Authored pixel-label contracts, not image-model inference."""
import json
from collections import Counter
def semantic(instance,mapping):
    if not instance or any(len(row)!=len(instance[0]) for row in instance):raise ValueError('rectangular nonempty mask')
    if any(type(v) is not int or v not in mapping for row in instance for v in row):raise ValueError('each instance id requires class mapping')
    return [[mapping[v] for v in row] for row in instance]
def render(mask,title):
    return '<h3>'+title+'</h3><table dir="ltr"><tbody>'+''.join('<tr>'+''.join('<td>'+str(v)+'</td>' for v in row)+'</tr>' for row in mask)+'</tbody></table>'
def demo():
    instance=[[0]*7 for _ in range(5)]
    for r in [1,2]:
        for c in [1,2]:instance[r][c]=1
        for c in [3,4]:instance[r][c]=2
    mapping={0:0,1:1,2:1};classes=semantic(instance,mapping)
    alternate=[[9 if v else 0 for v in row] for row in instance];alternate_classes=semantic(alternate,{0:0,9:1})
    assert classes==alternate_classes and instance!=alternate
    counts=Counter(v for row in instance for v in row);assert counts=={0:27,1:4,2:4}
    assert sum(v==1 for row in classes for v in row)==8
    try:semantic(instance,{0:0,1:1})
    except ValueError:rejected=True
    else:raise AssertionError('missing id mapping accepted')
    return {'dimensions':{'rows':5,'columns':7},'instance_mask_authored':instance,'instance_to_class':mapping,'semantic_mask':classes,'alternate_single_instance_mask':alternate,'alternate_maps_to_same_semantic':True,'instance_pixel_counts':dict(counts),'semantic_class_names':{0:'background',1:'authored tile object'},'instance_names':{0:'background',1:'left object',2:'right object'},'rendered_html':render(classes,'ماسکِ کلاس؛ ۰ پس‌زمینه و ۱ شیء')+render(instance,'ماسکِ نمونه؛ ۱ چپ و ۲ راست، هر دو از یک کلاس'),'missing_mapping_rejected':rejected,'vision_model_executed':False,'instance_identity_recovered_from_semantic':False}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=False,indent=2))
