Advertisement
Guest User

Untitled

a guest
Mar 10th, 2021
601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from typing import Tuple
  2.  
  3.  
  4. def parse_optional_alpha(colour) -> Tuple[int]:
  5.     if not isinstance(colour, (list, tuple)) or len(colour) not in (3, 4):
  6.         raise ValueError("Unknown colour info.")
  7.  
  8.     try:
  9.         r, g, b, a = colour
  10.         return (r, g, b, a)
  11.     except ValueError:
  12.         return (*colour, 0)
  13.  
  14.  
  15. def normalise_colour_info(colour) -> Tuple[str, Tuple[int, int, int, int]]:
  16.     """Normalise colour info to (name, (r, g, b, alpha))."""
  17.  
  18.     if len(colour) >= 3:
  19.         try:
  20.             return ("", parse_optional_alpha(colour))
  21.         except ValueError as e:
  22.             raise e
  23.    
  24.     try:
  25.         name, values = colour
  26.     except ValueError:
  27.         raise ValueError("Unknown colour info.")
  28.  
  29.     return (name, parse_optional_alpha(values))
  30.  
  31.  
  32. assert normalise_colour_info(("a", (1, 2, 3))) == ("a", (1, 2, 3, 0))
  33. assert normalise_colour_info(("a", (1, 2, 3, 4))) == ("a", (1, 2, 3, 4))
  34. assert normalise_colour_info((1, 2, 3, 4)) == ("", (1, 2, 3, 4))
  35. assert normalise_colour_info((1, 2, 3)) == ("", (1, 2, 3, 0))
  36.  
  37.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement