Skip to content

Commit 3a68f40

Browse files
committed
Create typing for bracket settings
1 parent 984b034 commit 3a68f40

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "sendou-py"
7-
version = "1.2.0"
7+
version = "1.2.1"
88
description = "An async Python library for Sendou.ink"
99
authors = [ "Vincent Lee <[email protected]>",]
1010
license = "MIT"

sendou/models/tournament/bracket/bracket.py

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,37 @@ def __init__(self, data: dict):
3030
self.round_count = data.get("roundCount", None)
3131

3232

33+
class BracketSettings:
34+
"""
35+
Bracket Settings
36+
37+
Attributes:
38+
39+
size (int): Bracket Size
40+
seed_ordering (List[str]): Seed Ordering
41+
consolation_final (Optional[bool]): Consolation Final
42+
round_robin_mode (Optional[str]): Round Robin Mode
43+
group_count (Optional[int]): Group Count
44+
grand_final (Optional[str]): Grand Final
45+
"""
46+
_raw: dict
47+
size: int # Size of bracket?
48+
seed_ordering: List[str]
49+
consolation_final: Optional[bool]
50+
round_robin_mode: Optional[str]
51+
group_count: Optional[int]
52+
grand_final: Optional[str]
53+
54+
def __init__(self, data: dict):
55+
self._raw = data
56+
self.size = data.get("size", 0)
57+
self.seed_ordering = data.get("seedOrdering", [])
58+
self.consolation_final = data.get("consolationFinal", None)
59+
self.round_robin_mode = data.get("roundRobinMode", None)
60+
self.group_count = data.get("groupCount", None)
61+
self.grand_final = data.get("grandFinal", None)
62+
63+
3364
class BracketStage:
3465
"""
3566
Bracket Stage
@@ -46,7 +77,7 @@ class BracketStage:
4677
id: int
4778
name: str
4879
number: int
49-
settings: Any
80+
settings: BracketSettings
5081
tournament_id: int
5182
type: BracketType
5283
created_at: datetime # Provided as unix timestamp
@@ -55,7 +86,7 @@ def __init__(self, data: dict):
5586
self.id = data.get("id", 0)
5687
self.name = data.get("name", "")
5788
self.number = data.get("number", 0)
58-
self.settings = data.get("settings", {})
89+
self.settings = BracketSettings(data.get("settings", {}))
5990
self.tournament_id = data.get("tournament_id", 0)
6091
self.type = BracketType(data.get("type", ""))
6192
self.created_at = datetime.fromtimestamp(data.get("createdAt", 0), tz=timezone.utc)
@@ -211,19 +242,20 @@ class BracketData(BaseModel):
211242
Bracket Data
212243
213244
Attributes:
214-
stage (BracketStage): Bracket Stage
245+
stage (Optional[BracketStage]): Bracket Stage
215246
group (List[BracketGroup]): Bracket Groups
216247
round (List[BracketRound]): Bracket Rounds
217248
match (List[BracketMatch]): Bracket Matches
218249
"""
219-
stage: List[BracketStage]
250+
stage: Optional[BracketStage]
220251
group: List[BracketGroup]
221252
round: List[BracketRound]
222253
match: List[BracketMatch]
223254

224255
def __init__(self, data: dict, request_client: RequestsClient):
225256
super().__init__(data, request_client)
226-
self.stage = [BracketStage(stage) for stage in data.get("stage", [])]
257+
stage = data.get("stage", [])
258+
self.stage = BracketStage(stage[0]) if len(stage) > 0 else None
227259
self.group = [BracketGroup(group) for group in data.get("group", [])]
228260
self.round = [BracketRound(r) for r in data.get("round", [])]
229261
self.match = [BracketMatch(match, request_client) for match in data.get("match", [])]

0 commit comments

Comments
 (0)