Skip to content

Commit 7d4d65d

Browse files
author
UnBonWhisky
committed
fix: refactor SharedClientTheme to use dataclass and update type hints
1 parent 23bd2cf commit 7d4d65d

3 files changed

Lines changed: 22 additions & 16 deletions

File tree

discord/shared_client_theme.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424

2525
from __future__ import annotations
2626

27-
from typing import TYPE_CHECKING, Iterable
27+
from typing import TYPE_CHECKING, Sequence
28+
from dataclasses import dataclass
2829

2930
from .colour import Colour
3031
from .enums import SharedClientThemeBaseType, try_enum
@@ -37,7 +38,7 @@
3738
if TYPE_CHECKING:
3839
from .types.shared_client_theme import SharedClientTheme as SharedClientThemePayload
3940

40-
41+
@dataclass
4142
class SharedClientTheme:
4243
"""Represents a shared client theme that can be sent in a message.
4344
@@ -60,15 +61,18 @@ class SharedClientTheme:
6061
The mode of the theme. Defaults to :attr:`SharedClientThemeBaseType.unset`,
6162
which Discord treats as :attr:`SharedClientThemeBaseType.dark`.
6263
"""
63-
64-
__slots__ = ("colours", "gradient_angle", "base_mix", "base_theme")
64+
65+
gradient_angle: int = 0
66+
base_mix: int = 0
67+
colours: list[Colour] = MISSING
68+
base_theme: SharedClientThemeBaseType | None = SharedClientThemeBaseType.unset
6569

6670
def __init__(
6771
self,
6872
gradient_angle: int = 0,
6973
base_mix: int = 0,
70-
colors: Iterable[Colour] = MISSING,
71-
colours: Iterable[Colour] = MISSING,
74+
colors: Sequence[Colour] = MISSING,
75+
colours: Sequence[Colour] = MISSING,
7276
*,
7377
base_theme: SharedClientThemeBaseType = SharedClientThemeBaseType.unset,
7478
):
@@ -89,11 +93,13 @@ def __init__(
8993
base_theme, SharedClientThemeBaseType
9094
):
9195
raise TypeError("base_theme must be a SharedClientThemeBaseType or None")
92-
93-
self.colours: list[Colour] = colours
94-
self.gradient_angle: int = gradient_angle
95-
self.base_mix: int = base_mix
96-
self.base_theme: SharedClientThemeBaseType | None = base_theme
96+
97+
super().__init__(
98+
gradient_angle=gradient_angle,
99+
base_mix=base_mix,
100+
colours=list(colours),
101+
base_theme=base_theme,
102+
)
97103

98104
@property
99105
def colors(self) -> list[Colour]:

docs/api/data_classes.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ Message
8989
.. autoclass:: File
9090
:members:
9191

92+
.. attributetable:: SharedClientTheme
93+
94+
.. autoclass:: SharedClientTheme
95+
:members:
96+
9297
Embed
9398
~~~~~
9499

docs/api/models.rst

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,6 @@ Messages
121121
.. autoclass:: ReactionCountDetails()
122122
:members:
123123

124-
.. attributetable:: SharedClientTheme
125-
126-
.. autoclass:: SharedClientTheme()
127-
:members:
128-
129124
Monetization
130125
------------
131126

0 commit comments

Comments
 (0)