From 6765e64cde718a8acd52e67e845ce56f9a9c36a8 Mon Sep 17 00:00:00 2001 From: George Sakkis Date: Tue, 26 Dec 2023 16:17:15 +0200 Subject: [PATCH] Don't try to encode unknown types --- beanie/odm/utils/encoder.py | 12 +----------- tests/odm/models.py | 3 +++ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/beanie/odm/utils/encoder.py b/beanie/odm/utils/encoder.py index d54ba963..047abbec 100644 --- a/beanie/odm/utils/encoder.py +++ b/beanie/odm/utils/encoder.py @@ -135,17 +135,7 @@ def encode(self, obj: Any) -> Any: if isinstance(obj, Iterable): return [self.encode(value) for value in obj] - errors = [] - try: - data = dict(obj) - except Exception as e: - errors.append(e) - try: - data = vars(obj) - except Exception as e: - errors.append(e) - raise ValueError(errors) - return self.encode(data) + raise ValueError(f"Cannot encode {obj!r}") def _iter_model_items( self, obj: pydantic.BaseModel diff --git a/tests/odm/models.py b/tests/odm/models.py index 0c3f6652..65e7533d 100644 --- a/tests/odm/models.py +++ b/tests/odm/models.py @@ -283,6 +283,9 @@ class DocumentWithCustomFiledsTypes(Document): tuple_type: Tuple[int, str] path: Path + class Settings: + bson_encoders = {Color: vars} + if IS_PYDANTIC_V2: model_config = ConfigDict( arbitrary_types_allowed=True,