SHOW:
|
|
- or go back to the newest paste.
| 1 | from typing import Tuple | |
| 2 | ||
| 3 | ||
| 4 | def parse_optional_alpha(colour) -> Tuple[int]: | |
| 5 | - | if not isinstance(colour, (list, tuple)): |
| 5 | + | if not isinstance(colour, (list, tuple)) or len(colour) not in (3, 4): |
| 6 | raise ValueError("Unknown colour info.")
| |
| 7 | ||
| 8 | - | if len(colour) not in (3, 4): |
| 8 | + | |
| 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 | - | def normalise_colour_info(colour): |
| 18 | + | |
| 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 |