cython
1# mode: run
2
3def slice1(stop):
4"""
5>>> list(range(8))
6[0, 1, 2, 3, 4, 5, 6, 7]
7>>> list(range(10))[slice1(8)]
8[0, 1, 2, 3, 4, 5, 6, 7]
9>>> slice1(1)
10slice(None, 1, None)
11>>> slice1(10)
12slice(None, 10, None)
13>>> slice1(None)
14slice(None, None, None)
15>>> slice1(1) == slice(1)
16True
17>>> slice1(None) == slice(None)
18True
19"""
20return slice(stop)
21
22
23def slice1_const():
24"""
25>>> slice1_const() == slice(12)
26True
27"""
28return slice(12)
29
30
31def slice2(start, stop):
32"""
33>>> list(range(2, 8))
34[2, 3, 4, 5, 6, 7]
35>>> list(range(10))[slice2(2, 8)]
36[2, 3, 4, 5, 6, 7]
37>>> slice2(1, 10)
38slice(1, 10, None)
39>>> slice2(None, 10)
40slice(None, 10, None)
41>>> slice2(4, None)
42slice(4, None, None)
43"""
44return slice(start, stop)
45
46
47def slice2_const():
48"""
49>>> slice2_const() == slice(None, 12)
50True
51"""
52return slice(None, 12)
53
54
55def slice3(start, stop, step):
56"""
57>>> list(range(2, 8, 3))
58[2, 5]
59>>> list(range(10))[slice3(2, 8, 3)]
60[2, 5]
61>>> slice3(2, None, 3)
62slice(2, None, 3)
63>>> slice3(None, 3, 2)
64slice(None, 3, 2)
65"""
66return slice(start, stop, step)
67
68
69def slice3_const():
70"""
71>>> slice3_const() == slice(12, None, 34)
72True
73"""
74return slice(12, None, 34)
75