Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: create and implement IDMixin to compare/hash models that have ids #883

Merged
merged 2 commits into from Jun 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions interactions/api/models/channel.py
Expand Up @@ -11,7 +11,7 @@
define,
field,
)
from .misc import File, Overwrite, Snowflake
from .misc import File, IDMixin, Overwrite, Snowflake
from .user import User
from .webhook import Webhook

Expand Down Expand Up @@ -88,7 +88,7 @@ class ThreadMember(ClientSerializerMixin):


@define()
class Channel(ClientSerializerMixin):
class Channel(ClientSerializerMixin, IDMixin):
"""
A class object representing all types of channels.

Expand Down
8 changes: 5 additions & 3 deletions interactions/api/models/channel.pyi
Expand Up @@ -2,13 +2,14 @@ from datetime import datetime
from enum import IntEnum
from typing import Any, Callable, List, Optional, Union

from ... import ActionRow, Button, SelectMenu
from .attrs_utils import ClientSerializerMixin, define
from .guild import Invite, InviteTargetType
from .message import Embed, Message, MessageInteraction
from .misc import File, Overwrite, Snowflake
from .misc import File, IDMixin, Overwrite, Snowflake
from .user import User
from .webhook import Webhook
from ... import ActionRow, Button, SelectMenu


class ChannelType(IntEnum):
GUILD_TEXT: int
Expand Down Expand Up @@ -40,8 +41,9 @@ class ThreadMember(ClientSerializerMixin):
muted: bool
mute_config: Optional[Any]


@define()
class Channel(ClientSerializerMixin):
class Channel(ClientSerializerMixin, IDMixin):
type: ChannelType
id: Snowflake
guild_id: Optional[Snowflake]
Expand Down
13 changes: 7 additions & 6 deletions interactions/api/models/guild.py
Expand Up @@ -18,6 +18,7 @@
AutoModAction,
AutoModTriggerMetadata,
AutoModTriggerType,
IDMixin,
Image,
Overwrite,
Snowflake,
Expand Down Expand Up @@ -164,7 +165,7 @@ class WelcomeScreen(DictSerializerMixin):


@define()
class StageInstance(DictSerializerMixin):
class StageInstance(DictSerializerMixin, IDMixin):
"""
A class object representing an instance of a stage channel in a guild.

Expand All @@ -185,7 +186,7 @@ class StageInstance(DictSerializerMixin):


@define()
class UnavailableGuild(DictSerializerMixin):
class UnavailableGuild(DictSerializerMixin, IDMixin):
"""
A class object representing how a guild that is unavailable.

Expand All @@ -204,7 +205,7 @@ class UnavailableGuild(DictSerializerMixin):


@define()
class Guild(ClientSerializerMixin):
class Guild(ClientSerializerMixin, IDMixin):
"""
A class object representing how a guild is registered.

Expand Down Expand Up @@ -2272,7 +2273,7 @@ def discovery_splash_url(self) -> Optional[str]:


@define()
class GuildPreview(DictSerializerMixin):
class GuildPreview(DictSerializerMixin, IDMixin):
"""
A class object representing the preview of a guild.

Expand Down Expand Up @@ -2301,7 +2302,7 @@ class GuildPreview(DictSerializerMixin):


@define()
class Integration(DictSerializerMixin):
class Integration(DictSerializerMixin, IDMixin):
"""
A class object representing an integration in a guild.

Expand Down Expand Up @@ -2382,7 +2383,7 @@ class EventMetadata(DictSerializerMixin):


@define()
class ScheduledEvents(DictSerializerMixin):
class ScheduledEvents(DictSerializerMixin, IDMixin):
"""
A class object representing the scheduled events of a guild.

Expand Down
23 changes: 15 additions & 8 deletions interactions/api/models/guild.pyi
Expand Up @@ -2,18 +2,19 @@ from datetime import datetime
from enum import Enum, IntEnum
from typing import Any, Dict, List, Optional, Union

from .attrs_utils import ClientSerializerMixin, DictSerializerMixin, define, MISSING
from .attrs_utils import ClientSerializerMixin, DictSerializerMixin, MISSING, define
from .channel import Channel, ChannelType, Thread
from .gw import AutoModerationRule
from .member import Member
from .message import Emoji, Sticker
from .misc import Image, Overwrite, Snowflake, AutoModTriggerType, AutoModAction, AutoModTriggerMetadata
from .misc import AutoModAction, AutoModTriggerMetadata, AutoModTriggerType, IDMixin, Image, Overwrite, Snowflake
from .presence import PresenceActivity
from .role import Role
from .team import Application
from .user import User
from .webhook import Webhook


class VerificationLevel(IntEnum):
NONE: int
LOW: int
Expand Down Expand Up @@ -80,22 +81,25 @@ class WelcomeScreen(DictSerializerMixin):
description: Optional[str]
welcome_channels: Optional[List[WelcomeChannels]]


@define()
class StageInstance(DictSerializerMixin):
class StageInstance(DictSerializerMixin, IDMixin):
id: Snowflake
guild_id: Snowflake
channel_id: Snowflake
topic: str
privacy_level: int
discoverable_disabled: bool


@define()
class UnavailableGuild(DictSerializerMixin):
class UnavailableGuild(DictSerializerMixin, IDMixin):
id: Snowflake
unavailable: bool


@define()
class Guild(ClientSerializerMixin):
class Guild(ClientSerializerMixin, IDMixin):
id: Snowflake
name: str
icon: Optional[str]
Expand Down Expand Up @@ -430,8 +434,9 @@ class Guild(ClientSerializerMixin):
@property
def discovery_splash_url(self) -> Optional[str]: ...


@define()
class GuildPreview(DictSerializerMixin):
class GuildPreview(DictSerializerMixin, IDMixin):
id: Snowflake
emojis: Optional[List[Emoji]]
name: str
Expand All @@ -443,8 +448,9 @@ class GuildPreview(DictSerializerMixin):
approximate_presence_count: int
description: Optional[str]


@define()
class Integration(DictSerializerMixin):
class Integration(DictSerializerMixin, IDMixin):
id: Snowflake
name: str
type: str
Expand Down Expand Up @@ -499,8 +505,9 @@ class GuildTemplate(DictSerializerMixin):
class EventMetadata(DictSerializerMixin):
location: Optional[str]


@define()
class ScheduledEvents(DictSerializerMixin):
class ScheduledEvents(DictSerializerMixin, IDMixin):
id: Snowflake
guild_id: Snowflake
channel_id: Optional[Snowflake]
Expand Down
11 changes: 6 additions & 5 deletions interactions/api/models/gw.py
Expand Up @@ -21,6 +21,7 @@
AutoModTriggerType,
ClientStatus,
File,
IDMixin,
Snowflake,
)
from .presence import PresenceActivity
Expand Down Expand Up @@ -84,7 +85,7 @@ class AutoModerationAction(DictSerializerMixin):


@define()
class AutoModerationRule(DictSerializerMixin):
class AutoModerationRule(DictSerializerMixin, IDMixin):
"""
A class object representing the gateway events ``AUTO_MODERATION_RULE_CREATE``, ``AUTO_MODERATION_RULE_UPDATE``, and ``AUTO_MODERATION_RULE_DELETE``

Expand Down Expand Up @@ -121,7 +122,7 @@ class AutoModerationRule(DictSerializerMixin):


@define()
class ApplicationCommandPermissions(ClientSerializerMixin):
class ApplicationCommandPermissions(ClientSerializerMixin, IDMixin):
"""
A class object representing the gateway event ``APPLICATION_COMMAND_PERMISSIONS_UPDATE``.

Expand Down Expand Up @@ -590,7 +591,7 @@ class GuildStickers(DictSerializerMixin):


@define()
class GuildScheduledEvent(ClientSerializerMixin):
class GuildScheduledEvent(ClientSerializerMixin, IDMixin):
"""
A class object representing gateway events ``GUILD_SCHEDULED_EVENT_CREATE``, ``GUILD_SCHEDULED_EVENT_UPDATE``, ``GUILD_SCHEDULED_EVENT_DELETE``.

Expand Down Expand Up @@ -650,7 +651,7 @@ class GuildScheduledEventUser(DictSerializerMixin):


@define()
class Integration(DictSerializerMixin):
class Integration(DictSerializerMixin, IDMixin):
"""
A class object representing the gateway events ``INTEGRATION_CREATE``, ``INTEGRATION_UPDATE`` and ``INTEGRATION_DELETE``.

Expand Down Expand Up @@ -794,7 +795,7 @@ class ThreadList(DictSerializerMixin):


@define()
class ThreadMembers(DictSerializerMixin):
class ThreadMembers(DictSerializerMixin, IDMixin):
"""
A class object representing the gateway event ``THREAD_MEMBERS_UPDATE``.

Expand Down
20 changes: 12 additions & 8 deletions interactions/api/models/gw.pyi
@@ -1,17 +1,17 @@
from datetime import datetime
from typing import Any, Dict, List, Optional, Union
from typing import Any, List, Optional, Union

from ...client.models.component import ActionRow, Button, SelectMenu
from .attrs_utils import ClientSerializerMixin, DictSerializerMixin, define
from .channel import Channel, ThreadMember
from .guild import EventMetadata
from .member import Member
from .message import Embed, Emoji, Message, MessageInteraction, Sticker
from .misc import AutoModAction, ClientStatus, File, Snowflake, AutoModTriggerMetadata
from .misc import AutoModAction, AutoModTriggerMetadata, ClientStatus, File, IDMixin, Snowflake
from .presence import PresenceActivity
from .role import Role
from .team import Application
from .user import User
from ...client.models.component import ActionRow, Button, SelectMenu


class AutoModerationAction(DictSerializerMixin):
Expand All @@ -26,7 +26,8 @@ class AutoModerationAction(DictSerializerMixin):
matched_keyword: Optional[str]
matched_content: Optional[str]

class AutoModerationRule(DictSerializerMixin):

class AutoModerationRule(DictSerializerMixin, IDMixin):
_json: dict
id: Snowflake
guild_id: Snowflake
Expand All @@ -42,7 +43,7 @@ class AutoModerationRule(DictSerializerMixin):


@define()
class ApplicationCommandPermissions(ClientSerializerMixin):
class ApplicationCommandPermissions(ClientSerializerMixin, IDMixin):
application_id: Snowflake
guild_id: Snowflake
id: Snowflake
Expand Down Expand Up @@ -149,8 +150,9 @@ class GuildStickers(DictSerializerMixin):
guild_id: Snowflake
stickers: List[Sticker]


@define()
class GuildScheduledEvent(ClientSerializerMixin):
class GuildScheduledEvent(ClientSerializerMixin, IDMixin):
id: Snowflake
guild_id: Snowflake
channel_id: Optional[Snowflake]
Expand All @@ -174,8 +176,9 @@ class GuildScheduledEventUser(DictSerializerMixin):
user_id: Snowflake
guild_id: Snowflake


@define()
class Integration(DictSerializerMixin):
class Integration(DictSerializerMixin, IDMixin):
id: Snowflake
name: str
type: str
Expand Down Expand Up @@ -220,8 +223,9 @@ class ThreadList(DictSerializerMixin):
threads: List[Channel]
members: List[ThreadMember]


@define()
class ThreadMembers(DictSerializerMixin):
class ThreadMembers(DictSerializerMixin, IDMixin):
id: Snowflake
guild_id: Snowflake
member_count: int
Expand Down
4 changes: 2 additions & 2 deletions interactions/api/models/member.py
Expand Up @@ -5,15 +5,15 @@
from .attrs_utils import MISSING, ClientSerializerMixin, convert_int, define, field
from .channel import Channel
from .flags import Permissions
from .misc import File, Snowflake
from .misc import File, IDMixin, Snowflake
from .role import Role
from .user import User

__all__ = ("Member",)


@define()
class Member(ClientSerializerMixin):
class Member(ClientSerializerMixin, IDMixin):
"""
A class object representing the user of a guild, known as a "member."

Expand Down
9 changes: 5 additions & 4 deletions interactions/api/models/member.pyi
@@ -1,17 +1,18 @@
from datetime import datetime
from typing import Any, List, Optional, Union

from ... import ActionRow, Button, SelectMenu
from .attrs_utils import ClientSerializerMixin, define
from .channel import Channel
from .flags import Permissions as Permissions
from .message import Embed, Message, MessageInteraction
from .misc import File, Snowflake
from .misc import File, IDMixin, Snowflake
from .role import Role as Role
from .user import User as User
from .channel import Channel
from ... import ActionRow, Button, SelectMenu


@define()
class Member(ClientSerializerMixin):
class Member(ClientSerializerMixin, IDMixin):
user: Optional[User]
nick: Optional[str]
roles: List[int]
Expand Down