1 2cimport cython 3 4class A(object): 5 """ 6 >>> a = A() 7 >>> a.f() 8 [2, 1] 9 >>> a.g() 10 (False, True) 11 """ 12 def f(self): 13 self.refs = [3,2,1] 14 del self.refs[0] 15 return self.refs 16 17 def g(self): 18 self.a = 3 19 del self.a 20 return (hasattr(self, u"a"), hasattr(self, u"g")) 21 22def del_item(L, o): 23 """ 24 >>> del_item({1: 'a', 2: 'b'}, 1) 25 {2: 'b'} 26 >>> del_item(list(range(10)), 2) 27 [0, 1, 3, 4, 5, 6, 7, 8, 9] 28 """ 29 del L[o] 30 return L 31 32@cython.test_assert_path_exists('//DelStatNode//IndexNode//NoneCheckNode') 33def del_dict(dict D, o): 34 """ 35 >>> del_dict({1: 'a', 2: 'b'}, 1) 36 {2: 'b'} 37 """ 38 del D[o] 39 return D 40 41@cython.test_fail_if_path_exists('//NoneCheckNode') 42def del_dict_from_literal(o): 43 """ 44 >>> del_dict_from_literal(1) 45 {2: 'b'} 46 """ 47 D = {1: 'a', 2: 'b'} 48 del D[o] 49 return D 50 51def del_list(list L, o): 52 """ 53 >>> del_list(list(range(5)), 3) 54 [0, 1, 2, 4] 55 """ 56 del L[o] 57 return L 58 59def del_int(L, int i): 60 """ 61 >>> del_int(list(range(5)), 3) 62 [0, 1, 2, 4] 63 >>> del_int({-1: 'neg', 1: 'pos'}, -1) 64 {1: 'pos'} 65 """ 66 del L[i] 67 return L 68 69def del_list_int(L, int i): 70 """ 71 >>> del_list_int(list(range(5)), 3) 72 [0, 1, 2, 4] 73 """ 74 del L[i] 75 return L 76 77def del_temp_slice(a): 78 """ 79 >>> class A(object): 80 ... attr = [1,2,3] 81 >>> a = A() 82 >>> a.attr 83 [1, 2, 3] 84 >>> del_temp_slice(a) 85 [] 86 >>> a.attr 87 [] 88 >>> del_temp_slice(a) 89 [] 90 >>> a.attr 91 [] 92 """ 93 while a.attr: 94 del a.attr[:] 95 return a.attr 96 97def del_local(a): 98 """ 99 >>> del_local(object()) 100 """ 101 del a 102 assert 'a' not in locals() 103 104def del_seq(a, b, c): 105 """ 106 >>> del_seq(1, 2, 3) 107 """ 108 del a, (b, c) 109 assert 'a' not in locals() 110 assert 'b' not in locals() 111 assert 'c' not in locals() 112