View difference between Paste ID: Uf9r6Exg and Vuj9xPGf
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