MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / ListVariable

Class ListVariable

test/sot/test_mutable_data.py:65–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63
64
65class ListVariable(VariableBase):
66 def __init__(self, data):
67 self.data = data
68 self.proxy = MutableListLikeData(data, ListVariable.proxy_getter)
69
70 @staticmethod
71 def proxy_getter(proxy, key):
72 if key < 0 or key >= len(proxy.original_data):
73 return MutableData.Empty()
74 return ConstVariable(proxy.original_data[key])
75
76 def getitem(self, key):
77 if isinstance(key, int):
78 res = self.proxy.get(key)
79 if isinstance(res, MutableData.Empty):
80 raise IndexError(f"Index {key} out of range")
81 return res
82 elif isinstance(key, slice):
83 return self.proxy.get_all()[key]
84 else:
85 raise TypeError(f"Invalid key type {type(key)}")
86
87 def __getitem__(self, key):
88 return self.getitem(key)
89
90 def setitem(self, key, value):
91 if isinstance(key, int):
92 self.proxy.set(key, value)
93 elif isinstance(key, slice):
94 start, end, step = key.indices(self.proxy.length)
95 indices = list(range(start, end, step))
96 if step == 1:
97 # replace a continuous range
98 for i, idx in enumerate(indices):
99 self.proxy.delete(idx - i)
100 for i, item in enumerate(value):
101 self.proxy.insert(start + i, item)
102 else:
103 # replace some elements
104 if len(indices) != len(value):
105 raise ValueError(
106 f"Attempt to replace {len(indices)} items with {len(value)}"
107 )
108 for i, idx in enumerate(indices):
109 self.proxy.set(idx, value[i])
110
111 def delitem(self, key):
112 self.proxy.delete(key)
113
114 def insert(self, index, value):
115 self.proxy.insert(index, value)
116
117 def append(self, value):
118 self.proxy.insert(self.proxy.length, value)
119
120 def extend(self, value):
121 for item in value:
122 self.append(item)

Callers 15

test_getitemMethod · 0.70
test_getitem_slice_1Method · 0.70
test_getitem_slice_2Method · 0.70
test_setitemMethod · 0.70
test_setitem_slice_1Method · 0.70
test_setitem_slice_2Method · 0.70
test_delitemMethod · 0.70
test_insertMethod · 0.70
test_appendMethod · 0.70
test_extendMethod · 0.70
test_popMethod · 0.70
test_clearMethod · 0.70

Calls

no outgoing calls

Tested by 15

test_getitemMethod · 0.56
test_getitem_slice_1Method · 0.56
test_getitem_slice_2Method · 0.56
test_setitemMethod · 0.56
test_setitem_slice_1Method · 0.56
test_setitem_slice_2Method · 0.56
test_delitemMethod · 0.56
test_insertMethod · 0.56
test_appendMethod · 0.56
test_extendMethod · 0.56
test_popMethod · 0.56
test_clearMethod · 0.56