From db477c4744fd4de1e58c3aa60ce744c9b9e5c07d Mon Sep 17 00:00:00 2001 From: Seaswimmer Date: Mon, 3 Jun 2024 00:07:52 -0400 Subject: [PATCH] fix(aurora): fixed an issue with json encoding --- aurora/models/base.py | 10 ++++++++-- aurora/utilities/json.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/aurora/models/base.py b/aurora/models/base.py index 08e1cd1..e6005ee 100644 --- a/aurora/models/base.py +++ b/aurora/models/base.py @@ -9,14 +9,20 @@ class AuroraBaseModel(BaseModel): model_config = ConfigDict(ignored_types=(Red,), arbitrary_types_allowed=True) bot: Red + def dump(self) -> dict: + return self.model_dump(exclude={"bot"}) + def to_json(self, indent: int | None = None, file: Any | None = None, **kwargs): from ..utilities.json import dump, dumps # pylint: disable=cyclic-import - return dump(self.model_dump(exclude={"bot"}), file, indent=indent, **kwargs) if file else dumps(self.model_dump(exclude={"bot"}), indent=indent, **kwargs) + return dump(self.dump(), file, indent=indent, **kwargs) if file else dumps(self.model_dump(exclude={"bot"}), indent=indent, **kwargs) class AuroraGuildModel(AuroraBaseModel): """Subclass of AuroraBaseModel that includes a guild_id attribute, and a modified to_json() method to match.""" guild_id: int + def dump(self) -> dict: + return self.model_dump(exclude={"bot", "guild_id"}) + def to_json(self, indent: int | None = None, file: Any | None = None, **kwargs): from ..utilities.json import dump, dumps # pylint: disable=cyclic-import - return dump(self.model_dump(exclude={"bot", "guild_id"}), file, indent=indent, **kwargs) if file else dumps(self.model_dump(exclude={"bot", "guild_id"}), indent=indent, **kwargs) + return dump(self.dump(), file, indent=indent, **kwargs) if file else dumps(self.model_dump(exclude={"bot", "guild_id"}), indent=indent, **kwargs) diff --git a/aurora/utilities/json.py b/aurora/utilities/json.py index 7a0cd15..892a227 100644 --- a/aurora/utilities/json.py +++ b/aurora/utilities/json.py @@ -13,7 +13,7 @@ class JSONEncoder(json.JSONEncoder): if isinstance(o, timedelta): return str(o) if isinstance(o, AuroraBaseModel): - return o.to_json() + return o.dump() if isinstance(o, Red): return None return super().default(o)