File: pattern_matching_extras.py

package info (click to toggle)
black 25.12.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,180 kB
  • sloc: python: 113,389; makefile: 25
file content (102 lines) | stat: -rw-r--r-- 1,796 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# flags: --minimum-version=3.10
import match

match something:
    case [a as b]:
        print(b)
    case [a as b, c, d, e as f]:
        print(f)
    case Point(a as b):
        print(b)
    case Point(int() as x, int() as y):
        print(x, y)


match = 1
case: int = re.match(something)

match re.match(case):
    case type("match", match):
        pass
    case match:
        pass


def func(match: case, case: match) -> case:
    match Something():
        case func(match, case):
            ...
        case another:
            ...


match a, *b, c:
    case [*_]:
        assert "seq" == _
    case {}:
        assert "map" == b


match match(
    case,
    match(
        match, case, match, looooooooooooooooooooooooooooooooooooong, match, case, match
    ),
    case,
):
    case case(
        match=case,
        case=re.match(
            loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
        ),
    ):
        pass
    case [a as match]:
        pass
    case case:
        pass
    case something:
        pass


match match:
    case case:
        pass


match a, *b(), c:
    case d, *f, g:
        pass


match something:
    case {
        "key": key as key_1,
        "password": PASS.ONE | PASS.TWO | PASS.THREE as password,
    }:
        pass
    case {"maybe": something(complicated as this) as that}:
        pass


match something:
    case 1 as a:
        pass
    case 2 as b, 3 as c:
        pass
    case 4 as d, (5 as e), (6 | 7 as g), *h:
        pass


match bar1:
    case Foo(aa=Callable() as aa, bb=int()):
        print(bar1.aa, bar1.bb)
    case _:
        print("no match", "\n")


match bar1:
    case Foo(
        normal=x, perhaps=[list, {"x": d, "y": 1.0}] as y, otherwise=something, q=t as u
    ):
        pass