Skip to content

Commit cfe5941

Browse files
authored
Merge pull request #154 from arusahni/master
Replace TypedDict and NamedTuple with dataclasses
2 parents 01d7688 + a65de18 commit cfe5941

2 files changed

Lines changed: 19 additions & 14 deletions

File tree

tidalapi/mix.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
from __future__ import annotations
2020

2121
import copy
22+
from dataclasses import dataclass
2223
from enum import Enum
23-
from typing import TYPE_CHECKING, List, Optional, TypedDict, Union
24+
from typing import TYPE_CHECKING, List, Optional, Union
2425

2526
from tidalapi.types import JsonObj
2627

@@ -45,14 +46,11 @@ class MixType(Enum):
4546
history_yearly = "HISTORY_YEARLY_MIX"
4647

4748

48-
class ImageDetails(TypedDict):
49-
url: str
50-
51-
52-
class ImageResponse(TypedDict):
53-
SMALL: ImageDetails
54-
MEDIUM: ImageDetails
55-
LARGE: ImageDetails
49+
@dataclass
50+
class ImageResponse:
51+
small: str
52+
medium: str
53+
large: str
5654

5755

5856
class Mix:
@@ -111,7 +109,12 @@ def parse(self, json_obj: JsonObj) -> "Mix":
111109
self.mix_type = MixType(json_obj["mixType"])
112110
self.content_behaviour = json_obj["contentBehavior"]
113111
self.short_subtitle = json_obj["shortSubtitle"]
114-
self.images = json_obj["images"]
112+
images = json_obj["images"]
113+
self.images = ImageResponse(
114+
small=images["SMALL"]["url"],
115+
mediumimages["MEDIUM"]["url"],
116+
large=images["LARGE"]["url"],
117+
)
115118

116119
return copy.copy(self)
117120

@@ -140,10 +143,10 @@ def image(self, dimensions: int) -> str:
140143
raise ValueError("No images present.")
141144

142145
if dimensions == 320:
143-
return self.images["SMALL"]["url"]
146+
return self.images.small
144147
elif dimensions == 640:
145-
return self.images["MEDIUM"]["url"]
148+
return self.images.medium
146149
elif dimensions == 1500:
147-
return self.images["LARGE"]["url"]
150+
return self.images.large
148151

149152
raise ValueError(f"Invalid resolution {dimensions} x {dimensions}")

tidalapi/session.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import random
2626
import time
2727
import uuid
28+
from dataclasses import dataclass
2829
from enum import Enum
2930
from typing import (
3031
TYPE_CHECKING,
@@ -185,7 +186,8 @@ class Case(Enum):
185186
TypeConversionKeys = Literal["identifier", "type", "parse"]
186187

187188

188-
class TypeRelation(NamedTuple):
189+
@dataclass
190+
class TypeRelation:
189191
identifier: str
190192
type: Optional[Any]
191193
parse: Callable

0 commit comments

Comments
 (0)