cython
1# mode: run
2# ticket 636
3# tag: slicing, getitem
4
5class Sliceable(object):
6"""
7>>> sl = Sliceable()
8
9>>> sl[1:2]
10(1, 2, None)
11>>> py_slice2(sl, 1, 2)
12(1, 2, None)
13
14>>> sl[1:None]
15(1, None, None)
16>>> py_slice2(sl, 1, None)
17(1, None, None)
18
19>>> sl[None:2]
20(None, 2, None)
21>>> py_slice2(sl, None, 2)
22(None, 2, None)
23
24>>> sl[None:None]
25(None, None, None)
26>>> py_slice2(sl, None, None)
27(None, None, None)
28"""
29def __getitem__(self, sl):
30return (sl.start, sl.stop, sl.step)
31
32def py_slice2(obj,a,b):
33"""
34>>> [1,2,3][1:2]
35[2]
36>>> py_slice2([1,2,3], 1, 2)
37[2]
38
39>>> [1,2,3][None:2]
40[1, 2]
41>>> py_slice2([1,2,3], None, 2)
42[1, 2]
43
44>>> [1,2,3][None:None]
45[1, 2, 3]
46>>> py_slice2([1,2,3], None, None)
47[1, 2, 3]
48"""
49return obj[a:b]
50