MCPcopy Create free account
hub / github.com/ccxt/ccxt / append

Method append

python/ccxt/async_support/base/ws/cache.py:142–177  ·  view source on GitHub ↗
(self, item)

Source from the content-addressed store, hash-verified

140 self._index = collections.deque([], max_size)
141
142 def append(self, item):
143 by_id = self.hashmap.setdefault(item['symbol'], {})
144 if item['id'] in by_id:
145 reference = by_id[item['id']]
146 if reference != item:
147 reference.update(item)
148 item = reference
149 index = self._index.index(item['id'])
150 del self._deque[index]
151 del self._index[index]
152 else:
153 by_id[item['id']] = item
154 if len(self._deque) == self._deque.maxlen:
155 delete_item = self._deque.popleft()
156 self._index.popleft()
157 try:
158 del self.hashmap[delete_item['symbol']][delete_item['id']]
159 except Exception as e:
160 logger.error(f"Error deleting item from hashmap: {delete_item}. Error:{e}")
161 self._deque.append(item)
162 self._index.append(item['id'])
163 if self._clear_all_updates:
164 self._clear_all_updates = False
165 self._clear_updates_by_symbol.clear()
166 self._all_new_updates = 0
167 self._new_updates_by_symbol.clear()
168 if item['symbol'] not in self._new_updates_by_symbol:
169 self._new_updates_by_symbol[item['symbol']] = set()
170 if self._clear_updates_by_symbol.get(item['symbol']):
171 self._clear_updates_by_symbol[item['symbol']] = False
172 self._new_updates_by_symbol[item['symbol']].clear()
173 id_set = self._new_updates_by_symbol[item['symbol']]
174 before_length = len(id_set)
175 id_set.add(item['id'])
176 after_length = len(id_set)
177 self._all_new_updates = (self._all_new_updates or 0) + (after_length - before_length)
178
179
180class ArrayCacheBySymbolBySide(ArrayCache):

Callers 15

test_safe_methodsFunction · 0.95
handle_my_tradeMethod · 0.95
handle_tradeMethod · 0.95
handle_my_tradesMethod · 0.95
handle_my_tradesMethod · 0.95
handle_orderMethod · 0.95
handle_orderMethod · 0.95
handle_my_tradesMethod · 0.95
handle_orderMethod · 0.95
handle_my_tradesMethod · 0.95
handle_orderMethod · 0.95
handle_my_tradesMethod · 0.95

Calls 6

updateMethod · 0.45
errorMethod · 0.45
appendMethod · 0.45
clearMethod · 0.45
getMethod · 0.45
addMethod · 0.45

Tested by 2

test_safe_methodsFunction · 0.76
test_ws_cacheFunction · 0.76