|
1 |
| -from abc import ABC, abstractmethod |
| 1 | +from abc import abstractmethod |
| 2 | +import contextlib |
2 | 3 | from dataclasses import dataclass
|
3 | 4 | import json
|
4 | 5 | from typing import Dict, Callable, Generator, Iterable, Optional, Tuple
|
@@ -103,19 +104,13 @@ def cache_stats_key(self) -> str:
|
103 | 104 | return self.main.cache_stats_key
|
104 | 105 |
|
105 | 106 |
|
106 |
| -class KeyValueStore(ABC): |
| 107 | +class KeyValueStore(contextlib.AbstractContextManager): |
107 | 108 | """Key value store that persists writes."""
|
108 | 109 |
|
109 | 110 | @property
|
110 | 111 | def path(self):
|
111 | 112 | return self._path
|
112 | 113 |
|
113 |
| - def __enter__(self) -> "KeyValueStore": |
114 |
| - pass |
115 |
| - |
116 |
| - def __exit__(self, exc_type, exc_value, traceback) -> None: |
117 |
| - pass |
118 |
| - |
119 | 114 | @abstractmethod
|
120 | 115 | def contains(self, key: Dict) -> bool:
|
121 | 116 | pass
|
@@ -150,11 +145,9 @@ def __init__(self, path: str):
|
150 | 145 |
|
151 | 146 | def __enter__(self) -> "_SqliteKeyValueStore":
|
152 | 147 | self._sqlite_dict.__enter__()
|
153 |
| - super().__enter__() |
154 | 148 | return self
|
155 | 149 |
|
156 | 150 | def __exit__(self, exc_type, exc_value, traceback) -> None:
|
157 |
| - super().__exit__(exc_type, exc_value, traceback) |
158 | 151 | self._sqlite_dict.__exit__(exc_type, exc_value, traceback)
|
159 | 152 |
|
160 | 153 | def contains(self, key: Dict) -> bool:
|
@@ -204,11 +197,10 @@ def __init__(self, uri: str, collection_name: str):
|
204 | 197 | super().__init__()
|
205 | 198 |
|
206 | 199 | def __enter__(self) -> "_MongoKeyValueStore":
|
207 |
| - super().__enter__() |
208 | 200 | return self
|
209 | 201 |
|
210 | 202 | def __exit__(self, exc_type, exc_value, traceback) -> None:
|
211 |
| - super().__exit__(exc_type, exc_value, traceback) |
| 203 | + return |
212 | 204 |
|
213 | 205 | def _canonicalize_key(self, key: Dict) -> SON:
|
214 | 206 | serialized = json.dumps(key, sort_keys=True)
|
|
0 commit comments