From a1112a862ed58e2ff351413841225656517fec06 Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Wed, 12 Feb 2025 11:44:46 +0100 Subject: [PATCH] fix several bugs --- src/fundus/scraping/article.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/fundus/scraping/article.py b/src/fundus/scraping/article.py index 70945b68..b06c4035 100644 --- a/src/fundus/scraping/article.py +++ b/src/fundus/scraping/article.py @@ -9,7 +9,7 @@ from fundus.logging import create_logger from fundus.parser import ArticleBody, Image from fundus.scraping.html import HTML -from fundus.utils.serialization import JSONVal +from fundus.utils.serialization import JSONVal, is_jsonable logger = create_logger(__name__) @@ -133,7 +133,9 @@ def serialize(v: Any) -> JSONVal: return v.serialize() # type: ignore[no-any-return] elif isinstance(v, datetime): return str(v) - raise TypeError(f"Attribute {attribute!r} of type {type(v)!r} is not JSON serializable") + elif not is_jsonable(v): + raise TypeError(f"Attribute {attribute!r} of type {type(v)!r} is not JSON serializable") + return v # type: ignore[no-any-return] serialization: Dict[str, JSONVal] = {} for attribute in attributes: @@ -144,7 +146,7 @@ def serialize(v: Any) -> JSONVal: if isinstance(value, list): serialization[attribute] = [serialize(item) for item in value] else: - serialization[attribute] = value + serialization[attribute] = serialize(value) return serialization