Added first version of DebugManager. Implemented draft of the rule engine

This commit is contained in:
2020-11-20 13:41:45 +01:00
parent cd066881b4
commit 315f8ea09b
156 changed files with 8388 additions and 2852 deletions
+43
View File
@@ -0,0 +1,43 @@
class FastCache:
"""
Simplest LRU cache
"""
def __init__(self, max_size=256):
self.max_size = max_size
self.cache = {}
self.lru = []
def put(self, key, value):
if len(self.cache) == self.max_size:
del self.cache[self.lru.pop(0)]
if key in self.cache:
self.lru.remove(key)
self.cache[key] = value
self.lru.append(key)
def get(self, key):
try:
return self.cache[key]
except KeyError:
return None
def evict_by_key(self, predicate):
to_remove = []
for k, v in self.cache.items():
if predicate(k):
to_remove.append(k)
for k in to_remove:
self.lru.remove(k)
del self.cache[k]
def copy(self):
return self.cache.copy()
def clear(self):
self.cache.clear()
self.lru.clear()