Skip to content

Commit 1d11d76

Browse files
authored
Merge pull request #78 from jhjaggars/buffer-to-files
simplifying json encoding
2 parents f869858 + 7af899e commit 1d11d76

1 file changed

Lines changed: 14 additions & 19 deletions

File tree

receptor/buffers/file.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,20 @@
1414
pool = ThreadPoolExecutor()
1515

1616

17-
class ManifestEncoder(json.JSONEncoder):
18-
def default(self, o):
19-
if isinstance(o, datetime.datetime):
20-
return {
21-
"_type": "datetime.datetime",
22-
"value": o.isoformat(),
23-
}
24-
return super().default(o)
25-
17+
def encode_date(obj):
18+
if isinstance(obj, datetime.datetime):
19+
return {
20+
"_type": "datetime.datetime",
21+
"value": obj.isoformat(),
22+
}
23+
raise TypeError
2624

27-
class ManifestDecoder(json.JSONDecoder):
28-
def __init__(self, *args, **kwargs):
29-
super().__init__(object_hook=self.object_hook, *args, **kwargs)
3025

31-
def object_hook(self, o):
32-
type_ = o.get("_type")
33-
if type_ != "datetime.datetime":
34-
return o
35-
return dateutil.parser.parse(o["value"])
26+
def decode_date(o):
27+
type_ = o.get("_type")
28+
if type_ != "datetime.datetime":
29+
return o
30+
return dateutil.parser.parse(o["value"])
3631

3732

3833
class DurableBuffer:
@@ -75,12 +70,12 @@ async def _save_manifest(self):
7570

7671
def _write_manifest(self):
7772
with open(self._manifest_path, "w") as fp:
78-
json.dump(list(self.q._queue), fp, cls=ManifestEncoder)
73+
json.dump(list(self.q._queue), fp, default=encode_date)
7974

8075
def _read_manifest(self):
8176
try:
8277
with open(self._manifest_path, "r") as fp:
83-
return json.load(fp, cls=ManifestDecoder)
78+
return json.load(fp, object_hook=decode_date)
8479
except FileNotFoundError:
8580
return []
8681
except json.decoder.JSONDecodeError:

0 commit comments

Comments
 (0)