"""Original opaque sRGB pairs, calculated with WCAG2.2 luminance definition."""
def luminance(colour):
    channels=[int(colour[i:i+2],16)/255 for i in (1,3,5)]
    linear=[v/12.92 if v<=0.04045 else ((v+0.055)/1.055)**2.4 for v in channels]
    return sum(w*v for w,v in zip((0.2126,0.7152,0.0722),linear))

def contrast(a,b):
    light,dark=sorted((luminance(a),luminance(b)),reverse=True)
    return (light+0.05)/(dark+0.05)

PAIRS=[('Warm accent on canvas','#ef8065','#f6f3ed'),('Dark ink on accent','#222a2a','#ef8065'),('Muted copy on canvas','#8c918b','#f6f3ed'),('Darkened accent on canvas','#9b3824','#f6f3ed'),('Dark ink on canvas','#222a2a','#f6f3ed')]
if __name__=='__main__':
    for label,foreground,background in PAIRS:
        ratio=contrast(foreground,background)
        print(label,foreground,background,f'{ratio:.4f}:1','ordinary text:',ratio>=4.5)
    assert contrast('#000000','#ffffff')==21
    assert contrast('#ffffff','#ffffff')==1
    print('Black/white and identical-colour reference assertions passed.')
