1# ticket: 316 2 3cimport cython 4 5@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 6def go_py_enumerate(): 7 """ 8 >>> go_py_enumerate() 9 0 1 10 1 2 11 2 3 12 3 4 13 """ 14 for i,k in enumerate(range(1,5)): 15 print i, k 16 17@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 18def py_enumerate_list_index_target(): 19 """ 20 >>> py_enumerate_list_index_target() 21 [0] 1 22 [1] 2 23 [2] 3 24 [3] 4 25 """ 26 target = [None] 27 for target[0],k in enumerate(range(1,5)): 28 print target, k 29 30@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 31def go_py_enumerate_start(): 32 """ 33 >>> go_py_enumerate_start() 34 5 1 35 6 2 36 7 3 37 8 4 38 """ 39 for i,k in enumerate(range(1,5), 5): 40 print i, k 41 42@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 43def go_c_enumerate(): 44 """ 45 >>> go_c_enumerate() 46 0 1 47 1 2 48 2 3 49 3 4 50 """ 51 cdef int i,k 52 for i,k in enumerate(range(1,5)): 53 print i, k 54 55@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 56def c_enumerate_carray_target(): 57 """ 58 >>> c_enumerate_carray_target() 59 0 1 60 1 2 61 2 3 62 3 4 63 """ 64 cdef int k 65 cdef int[1] i 66 for i[0],k in enumerate(range(1,5)): 67 print i[0], k 68 69@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 70def go_c_enumerate_step(): 71 """ 72 >>> go_c_enumerate_step() 73 0 1 74 1 3 75 2 5 76 """ 77 cdef int i,k 78 for i,k in enumerate(range(1,7,2)): 79 print i, k 80 81@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 82def py_enumerate_dict(dict d): 83 """ 84 >>> py_enumerate_dict({}) 85 :: 55 99 86 >>> py_enumerate_dict(dict(a=1, b=2, c=3)) 87 0 True 88 1 True 89 2 True 90 :: 2 True 91 """ 92 cdef int i = 55 93 k = 99 94 keys = list(d.keys()) 95 for i,k in enumerate(d): 96 k = keys[i] == k 97 print i, k 98 print u"::", i, k 99 100@cython.test_fail_if_path_exists("//SimpleCallNode") 101def py_enumerate_break(*t): 102 """ 103 >>> py_enumerate_break(1,2,3,4) 104 0 1 105 :: 0 1 106 """ 107 i,k = 55,99 108 for i,k in enumerate(t): 109 print i, k 110 break 111 print u"::", i, k 112 113@cython.test_fail_if_path_exists("//SimpleCallNode") 114def py_enumerate_return(*t): 115 """ 116 >>> py_enumerate_return() 117 :: 55 99 118 >>> py_enumerate_return(1,2,3,4) 119 0 1 120 """ 121 i,k = 55,99 122 for i,k in enumerate(t): 123 print i, k 124 return 125 print u"::", i, k 126 127@cython.test_fail_if_path_exists("//SimpleCallNode") 128def py_enumerate_continue(*t): 129 """ 130 >>> py_enumerate_continue(1,2,3,4) 131 0 1 132 1 2 133 2 3 134 3 4 135 :: 3 4 136 """ 137 i,k = 55,99 138 for i,k in enumerate(t): 139 print i, k 140 continue 141 print u"::", i, k 142 143@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 144def empty_c_enumerate(): 145 """ 146 >>> empty_c_enumerate() 147 (55, 99) 148 """ 149 cdef int i = 55, k = 99 150 for i,k in enumerate(range(0)): 151 print i, k 152 return i, k 153 154# not currently optimised 155def single_target_enumerate(): 156 """ 157 >>> single_target_enumerate() 158 0 1 159 1 2 160 2 3 161 3 4 162 """ 163 for t in enumerate(range(1,5)): 164 print t[0], t[1] 165 166@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 167def multi_enumerate(): 168 """ 169 >>> multi_enumerate() 170 0 0 0 1 171 1 1 1 2 172 2 2 2 3 173 3 3 3 4 174 """ 175 for a,(b,(c,d)) in enumerate(enumerate(enumerate(range(1,5)))): 176 print a,b,c,d 177 178@cython.test_fail_if_path_exists("//SimpleCallNode//NameNode[@name = 'enumerate']") 179def multi_enumerate_start(): 180 """ 181 >>> multi_enumerate_start() 182 0 2 0 1 183 1 3 1 2 184 2 4 2 3 185 3 5 3 4 186 """ 187 for a,(b,(c,d)) in enumerate(enumerate(enumerate(range(1,5)), 2)): 188 print a,b,c,d 189 190@cython.test_fail_if_path_exists("//SimpleCallNode") 191def multi_c_enumerate(): 192 """ 193 >>> multi_c_enumerate() 194 0 0 0 1 195 1 1 1 2 196 2 2 2 3 197 3 3 3 4 198 """ 199 cdef int a,b,c,d 200 for a,(b,(c,d)) in enumerate(enumerate(enumerate(range(1,5)))): 201 print a,b,c,d 202 203@cython.test_fail_if_path_exists("//SimpleCallNode") 204def convert_target_enumerate(L): 205 """ 206 >>> convert_target_enumerate([2,3,5]) 207 0 2 208 1 3 209 2 5 210 """ 211 cdef int a,b 212 for a, b in enumerate(L): 213 print a,b 214 215@cython.test_fail_if_path_exists("//SimpleCallNode") 216def convert_target_enumerate_start(L, int n): 217 """ 218 >>> convert_target_enumerate_start([2,3,5], 3) 219 3 2 220 4 3 221 5 5 222 """ 223 cdef int a,b 224 for a, b in enumerate(L, n): 225 print a,b 226