11
11
- Maximum size limit with LRU eviction
12
12
- Thread-safe operations
13
13
14
- Doctest examples
15
- ----------------
16
- >>> from mcpgateway.cache.resource_cache import ResourceCache
17
- >>> cache = ResourceCache(max_size=2, ttl=1)
18
- >>> cache.set('a', 1)
19
- >>> cache.get('a')
20
- 1
21
- >>> import time
22
- >>> time.sleep(1.2)
23
- >>> cache.get('a') is None
24
- True
25
- >>> cache.set('a', 1)
26
- >>> cache.set('b', 2)
27
- >>> cache.set('c', 3) # LRU eviction
28
- >>> sorted(cache._cache.keys())
29
- ['b', 'c']
30
- >>> cache.delete('b')
31
- >>> cache.get('b') is None
32
- True
33
- >>> cache.clear()
34
- >>> cache.get('a') is None
35
- True
14
+ Examples:
15
+ >>> from mcpgateway.cache.resource_cache import ResourceCache
16
+ >>> cache = ResourceCache(max_size=2, ttl=1)
17
+ >>> cache.set('a', 1)
18
+ >>> cache.get('a')
19
+ 1
20
+ >>> import time
21
+ >>> time.sleep(1.2)
22
+ >>> cache.get('a') is None
23
+ True
24
+ >>> cache.set('a', 1)
25
+ >>> cache.set('b', 2)
26
+ >>> cache.set('c', 3) # LRU eviction
27
+ >>> sorted(cache._cache.keys())
28
+ ['b', 'c']
29
+ >>> cache.delete('b')
30
+ >>> cache.get('b') is None
31
+ True
32
+ >>> cache.clear()
33
+ >>> cache.get('a') is None
34
+ True
36
35
"""
37
36
38
37
# Standard
@@ -64,27 +63,27 @@ class ResourceCache:
64
63
_cache: Cache storage
65
64
_lock: Async lock for thread safety
66
65
67
- Doctest :
68
- >>> from mcpgateway.cache.resource_cache import ResourceCache
69
- >>> cache = ResourceCache(max_size=2, ttl=1)
70
- >>> cache.set('a', 1)
71
- >>> cache.get('a')
72
- 1
73
- >>> import time
74
- >>> time.sleep(1.2)
75
- >>> cache.get('a') is None
76
- True
77
- >>> cache.set('a', 1)
78
- >>> cache.set('b', 2)
79
- >>> cache.set('c', 3) # LRU eviction
80
- >>> sorted(cache._cache.keys())
81
- ['b', 'c']
82
- >>> cache.delete('b')
83
- >>> cache.get('b') is None
84
- True
85
- >>> cache.clear()
86
- >>> cache.get('a') is None
87
- True
66
+ Examples :
67
+ >>> from mcpgateway.cache.resource_cache import ResourceCache
68
+ >>> cache = ResourceCache(max_size=2, ttl=1)
69
+ >>> cache.set('a', 1)
70
+ >>> cache.get('a')
71
+ 1
72
+ >>> import time
73
+ >>> time.sleep(1.2)
74
+ >>> cache.get('a') is None
75
+ True
76
+ >>> cache.set('a', 1)
77
+ >>> cache.set('b', 2)
78
+ >>> cache.set('c', 3) # LRU eviction
79
+ >>> sorted(cache._cache.keys())
80
+ ['b', 'c']
81
+ >>> cache.delete('b')
82
+ >>> cache.get('b') is None
83
+ True
84
+ >>> cache.clear()
85
+ >>> cache.get('a') is None
86
+ True
88
87
"""
89
88
90
89
def __init__ (self , max_size : int = 1000 , ttl : int = 3600 ):
@@ -120,7 +119,7 @@ def get(self, key: str) -> Optional[Any]:
120
119
Returns:
121
120
Cached value or None if not found/expired
122
121
123
- Example :
122
+ Examples :
124
123
>>> from mcpgateway.cache.resource_cache import ResourceCache
125
124
>>> cache = ResourceCache(max_size=2, ttl=1)
126
125
>>> cache.set('a', 1)
@@ -132,7 +131,7 @@ def get(self, key: str) -> Optional[Any]:
132
131
>>> short_cache.get('b')
133
132
2
134
133
>>> import time
135
- >>> time.sleep(1)
134
+ >>> time.sleep(1.2 )
136
135
>>> short_cache.get('b') is None
137
136
True
138
137
"""
@@ -159,12 +158,12 @@ def set(self, key: str, value: Any) -> None:
159
158
key: Cache key
160
159
value: Value to cache
161
160
162
- Doctest :
163
- >>> from mcpgateway.cache.resource_cache import ResourceCache
164
- >>> cache = ResourceCache(max_size=2, ttl=1)
165
- >>> cache.set('a', 1)
166
- >>> cache.get('a')
167
- 1
161
+ Examples :
162
+ >>> from mcpgateway.cache.resource_cache import ResourceCache
163
+ >>> cache = ResourceCache(max_size=2, ttl=1)
164
+ >>> cache.set('a', 1)
165
+ >>> cache.get('a')
166
+ 1
168
167
"""
169
168
now = time .time ()
170
169
@@ -184,27 +183,27 @@ def delete(self, key: str) -> None:
184
183
Args:
185
184
key: Cache key to delete
186
185
187
- Doctest :
188
- >>> from mcpgateway.cache.resource_cache import ResourceCache
189
- >>> cache = ResourceCache()
190
- >>> cache.set('a', 1)
191
- >>> cache.delete('a')
192
- >>> cache.get('a') is None
193
- True
186
+ Examples :
187
+ >>> from mcpgateway.cache.resource_cache import ResourceCache
188
+ >>> cache = ResourceCache()
189
+ >>> cache.set('a', 1)
190
+ >>> cache.delete('a')
191
+ >>> cache.get('a') is None
192
+ True
194
193
"""
195
194
self ._cache .pop (key , None )
196
195
197
196
def clear (self ) -> None :
198
197
"""
199
198
Clear all cached entries.
200
199
201
- Doctest :
202
- >>> from mcpgateway.cache.resource_cache import ResourceCache
203
- >>> cache = ResourceCache()
204
- >>> cache.set('a', 1)
205
- >>> cache.clear()
206
- >>> cache.get('a') is None
207
- True
200
+ Examples :
201
+ >>> from mcpgateway.cache.resource_cache import ResourceCache
202
+ >>> cache = ResourceCache()
203
+ >>> cache.set('a', 1)
204
+ >>> cache.clear()
205
+ >>> cache.get('a') is None
206
+ True
208
207
"""
209
208
self ._cache .clear ()
210
209
0 commit comments