You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A clear and concise description of what the bug is.
I have a requirement to create a custom type and implement the bson ser method. It works well when used normally, but if used with an Optional / Union , it dosent work. In this case, the internal logic considers the field type as a Union.
Current Behavior
... Steps to reproduce the bug ...
`class EncryptedString(str):
@classmethod
def __get_validators__(cls):
yield cls.validate
@classmethod
def validate(cls, v):
if isinstance(v, bytes):
return v.decode("utf-8")
if not isinstance(v, str):
raise TypeError("Only string type is allowed")
return v
@classmethod
def __bson__(cls, v) -> str:
encrypted_data = v.encode("utf-8")
return encrypted_data
class Model1(EmbeddedModel):
key1: Optional[EncryptedString] = None # DOSNT WORK
class EncryptedModel(Model):
encrypted_field: EncryptedString #WORKS WELL
embedded_model: List[Union[Model1]] = [] #DOSNT WORK
non_list_union: Model1`
Expected behavior
... A clear and concise description of what you expected to happen. ...
I expect the bson method to be invoked in every case for a custom type
Environment
ODMantic version: 0.9.2
...
Version of additional modules (if relevant):
...
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered:
Bug
A clear and concise description of what the bug is.
I have a requirement to create a custom type and implement the bson ser method. It works well when used normally, but if used with an Optional / Union , it dosent work. In this case, the internal logic considers the field type as a Union.
Current Behavior
... Steps to reproduce the bug ...
`class EncryptedString(str):
class Model1(EmbeddedModel):
key1: Optional[EncryptedString] = None # DOSNT WORK
class EncryptedModel(Model):
encrypted_field: EncryptedString #WORKS WELL
embedded_model: List[Union[Model1]] = [] #DOSNT WORK
non_list_union: Model1`
Expected behavior
... A clear and concise description of what you expected to happen. ...
I expect the bson method to be invoked in every case for a custom type
Environment
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: