Skip to content

Commit 0b3a6f2

Browse files
committed
Allow defining deserializers for NewTypes
1 parent 0814d12 commit 0b3a6f2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

mautrix/client/api/types/util/serializable_attrs.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,21 @@ def _deserialize(cls: Type[T], value: JSON, default: Optional[T] = None) -> T:
140140
if value is None:
141141
return _safe_default(default)
142142

143-
cls = getattr(cls, "__supertype__", None) or cls
144143
try:
145-
return deserializer_map[cls](value)
144+
deser = deserializer_map[cls]
146145
except KeyError:
147146
pass
147+
else:
148+
return deser(value)
149+
supertype = getattr(cls, "__supertype__", None)
150+
if supertype:
151+
cls = supertype
152+
try:
153+
deser = deserializer_map[supertype]
154+
except KeyError:
155+
pass
156+
else:
157+
return deser(value)
148158
if attr.has(cls):
149159
if _has_custom_deserializer(cls):
150160
return cls.deserialize(value)

0 commit comments

Comments
 (0)