add proxy for the first part and try to develop the second part

This commit is contained in:
Pierre Geeraert
2025-12-03 12:08:56 +00:00
parent 6c34d510e5
commit 460f18d85a
1095 changed files with 358799 additions and 5 deletions
@@ -0,0 +1,37 @@
from collections import deque
from collections.abc import MutableSequence
class Tail(MutableSequence):
def __init__(self, maxlen):
self._tail = deque(maxlen=maxlen)
self._start = 0
@property
def start(self):
return self._start
def tailfull(self):
return len(self._tail) == self._tail.maxlen
def insert(self, index, value):
if self.tailfull():
self._tail.popleft()
self._start += 1
self._tail.insert(index - self._start, value)
def flush(self):
self._start += len(self._tail)
self._tail = deque(maxlen=self._tail.maxlen)
def __getitem__(self, index):
return self._tail[index - self._start]
def __setitem__(self, index, value):
self._tail[index - self._start] = value
def __delitem__(self, index):
del self._tail[index - self._start]
def __len__(self):
return len(self._tail) + self._start