Module

themes._contrast

WCAG 2.0 contrast ratio calculation for palette validation.

Pure Python implementation, no external dependencies. Used by SyntaxPalette.validate_contrast() for accessibility checking.

WCAG 2.0 Requirements:

  • AA: 4.5:1 for normal text, 3:1 for large text
  • AAA: 7:1 for normal text, 4.5:1 for large text

See Also:

  • https://www.w3.org/TR/WCAG20/#contrast-ratiodef
  • rosettes.themes._palette: SyntaxPalette.validate_contrast()

Functions

contrast_ratio 2 float
Compute WCAG 2.0 contrast ratio between foreground and background.
def contrast_ratio(fg: str, bg: str) -> float
Parameters
Name Type Description
fg str

Foreground hex color (e.g. "#ffffff")

bg str

Background hex color (e.g. "#000000")

Returns
float
passes_aa 2 bool
Check if contrast ratio passes WCAG AA.
def passes_aa(ratio: float, *, large_text: bool = False) -> bool
Parameters
Name Type Description
ratio float

Contrast ratio from contrast_ratio()

large_text bool

If True, use 3:1 threshold; else 4.5:1.

Default:False
Returns
bool
passes_aaa 2 bool
Check if contrast ratio passes WCAG AAA.
def passes_aaa(ratio: float, *, large_text: bool = False) -> bool
Parameters
Name Type Description
ratio float

Contrast ratio from contrast_ratio()

large_text bool

If True, use 4.5:1 threshold; else 7:1.

Default:False
Returns
bool