From fcb4436460b6b917a6c30a9620e8f0dc476c0b3b Mon Sep 17 00:00:00 2001 From: Nicolas ESTRADA Date: Wed, 19 Jun 2024 19:15:39 +0200 Subject: [PATCH 1/2] fix: bad poetry.lock file --- poetry.lock | 4 ---- 1 file changed, 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0aeee25..50034b8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2392,8 +2392,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -<<<<<<< HEAD content-hash = "64bc9d0b597b6c5a88a7831f22dceb9a01c3ffd7c67c576ca094af786fd7f2a3" -======= -content-hash = "9628835cec18fe8f2f77e9980d1052b2bc93e39ae05f92d7f8810fe5d1357702" ->>>>>>> 8310ed963d58a9e62799238a54c3c318ce61400b From 660546ba4f529daf34fe46ad945233fa2884c7c3 Mon Sep 17 00:00:00 2001 From: Nicolas ESTRADA Date: Wed, 19 Jun 2024 19:27:08 +0200 Subject: [PATCH 2/2] fix: correcting unserializable datetimes when using jsonl format --- target_s3/formats/format_jsonl.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/target_s3/formats/format_jsonl.py b/target_s3/formats/format_jsonl.py index d324a21..2ed05fb 100644 --- a/target_s3/formats/format_jsonl.py +++ b/target_s3/formats/format_jsonl.py @@ -1,19 +1,12 @@ -from datetime import datetime +from functools import partial -from bson import ObjectId -from simplejson import JSONEncoder, dumps +import simplejson as json from target_s3.formats.format_base import FormatBase +from .format_json import JsonSerialize -class JsonSerialize(JSONEncoder): - def default(self, obj: any) -> any: - if isinstance(obj, ObjectId): - return str(obj) - if isinstance(obj, datetime): - return obj.isoformat() - else: - raise TypeError(f"Type {type(obj)} not serializable") +dumps = partial(json.dumps, cls=JsonSerialize) class FormatJsonl(FormatBase): @@ -26,7 +19,7 @@ def _prepare_records(self): return super()._prepare_records() def _write(self) -> None: - return super()._write('\n'.join(map(dumps, self.records))) + return super()._write("\n".join(map(dumps, self.records))) def run(self) -> None: # use default behavior, no additional run steps needed