1212from mashumaro .types import Discriminator , SerializationStrategy
1313
1414
15- class LowercaseAlbumTypeSerializationStrategy (SerializationStrategy ):
16- """Serialization strategy for objects encapsulated in items."""
17-
18- def serialize (self , value : AlbumType ) -> str :
19- """Serialize optional string."""
20- return value
21-
22- def deserialize (self , value : str ) -> AlbumType :
23- """Deserialize optional string."""
24- return AlbumType (value .lower ())
25-
26-
2715class DeviceType (StrEnum ):
2816 """Device type."""
2917
@@ -132,11 +120,7 @@ def deserialize(self, value: dict[str, Any]) -> list[Any]:
132120class SimplifiedAlbum (DataClassORJSONMixin ):
133121 """Album model."""
134122
135- album_type : AlbumType = field (
136- metadata = field_options (
137- serialization_strategy = LowercaseAlbumTypeSerializationStrategy ()
138- )
139- )
123+ album_type : AlbumType
140124 total_tracks : int
141125 album_id : str = field (metadata = field_options (alias = "id" ))
142126 images : list [Image ]
@@ -146,6 +130,14 @@ class SimplifiedAlbum(DataClassORJSONMixin):
146130 uri : str
147131 artists : list [SimplifiedArtist ]
148132
133+ @classmethod
134+ def __pre_deserialize__ (cls , d : dict [str , Any ]) -> dict [str , Any ]:
135+ """Pre deserialize hook."""
136+ return {
137+ ** d ,
138+ "album_type" : d ["album_type" ].lower (),
139+ }
140+
149141
150142@dataclass
151143class Album (SimplifiedAlbum ):
0 commit comments