MCPcopy Create free account
hub / github.com/abetlen/llama-cpp-python / Circle

Class Circle

examples/low_level_api/util.py:31–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29
30
31class Circle:
32 def __init__(self, size, default=0):
33 self.list = [default] * size
34 self.maxsize = size
35 self.size = 0
36 self.offset = 0
37
38 def append(self, elem):
39 if self.size < self.maxsize:
40 self.list[self.size] = elem
41 self.size += 1
42 else:
43 self.list[self.offset] = elem
44 self.offset = (self.offset + 1) % self.maxsize
45
46 def __getitem__(self, val):
47 if isinstance(val, int):
48 if 0 > val or val >= self.size:
49 raise IndexError("Index out of range")
50 return (
51 self.list[val]
52 if self.size < self.maxsize
53 else self.list[(self.offset + val) % self.maxsize]
54 )
55 elif isinstance(val, slice):
56 start, stop, step = val.start, val.stop, val.step
57 if step is None:
58 step = 1
59 if start is None:
60 start = 0
61 if stop is None:
62 stop = self.size
63 if start < 0:
64 start = self.size + start
65 if stop < 0:
66 stop = self.size + stop
67
68 indices = range(start, stop, step)
69 return [
70 self.list[(self.offset + i) % self.maxsize]
71 for i in indices
72 if i < self.size
73 ]
74 else:
75 raise TypeError("Invalid argument type")
76
77
78if __name__ == "__main__":

Callers 1

util.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…