gitscope
← marzneshin / v0.1.3 / app/utils/store.py
https://dev.kronoz.win/r/marzneshin.git
app/utils/store.py · Python
Blame Raw
 1class MemoryStorage:
 2    def __init__(self):
 3        self._data = {}
 4
 5    def set(self, key, value):
 6        self._data[key] = value
 7
 8    def get(self, key, default=None):
 9        return self._data.get(key, default)
10
11    def delete(self, key):
12        self._data.pop(key, None)
13
14    def clear(self):
15        self._data.clear()
16
17
18class ListStorage(list):
19    def __init__(self, update_func):
20        super().__init__()
21        self.update_func = update_func
22
23    def __getitem__(self, index):
24        if not self:
25            self.update()
26
27        return super().__getitem__(index)
28
29    def __iter__(self):
30        if not self:
31            self.update()
32
33        return super().__iter__()
34
35    def __str__(self):
36        if not self:
37            self.update()
38
39        return super().__str__()
40
41    def update(self):
42        self.update_func(self)
43
44
45class DictStorage(dict):
46    def __init__(self, update_func):
47        super().__init__()
48        self.update_func = update_func
49
50    def __getitem__(self, key):
51        if not self:
52            self.update()
53
54        return super().__getitem__(key)
55
56    def __iter__(self):
57        if not self:
58            self.update()
59
60        return super().__iter__()
61
62    def __str__(self):
63        if not self:
64            self.update()
65
66        return super().__str__()
67
68    def values(self):
69        if not self:
70            self.update()
71
72        return super().values()
73
74    def keys(self):
75        if not self:
76            self.update()
77
78        return super().keys()
79
80    def get(self, key, default=None):
81        if not self:
82            self.update()
83
84        return super().get(key, default)
85
86    def update(self):
87        self.update_func(self)