From 605856ff6f5993e851032d7d64a945396a1ffb0c Mon Sep 17 00:00:00 2001 From: Jay Hutchinson Date: Sat, 26 Feb 2022 11:56:02 -0600 Subject: Added __getstate__() and __setstate__(). --- pylru.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pylru.py b/pylru.py index c751e37..67f3d7d 100644 --- a/pylru.py +++ b/pylru.py @@ -317,6 +317,38 @@ class lrucache(object): yield node node = node.next + def __getstate__(self): + d = self.__dict__.copy() + del d['table'] + del d['head'] + + elements = [(node.key, node.value) for node in self.dli()] + return (d, elements) + + def __setstate__(self, state): + d = state[0] + elements = state[1] + + self.__dict__.update(d) + + + size = self.listSize + + # Create an empty hash table. + self.table = {} + + self.head = _dlnode() + self.head.next = self.head + self.head.prev = self.head + + self.listSize = 1 + + # Now adjust the list to the desired size. + self.size(size) + + + for key, value in reversed(elements): + self[key] = value class WriteThroughCacheManager(object): -- cgit v1.2.1