Skip to content
1 change: 1 addition & 0 deletions interactions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@
from .client import * # noqa: F401 F403 isort: skip
from .api import * # noqa: F401 F403
from .base import * # noqa: F401 F403
from .utils import * # noqa: F401 F403
2 changes: 1 addition & 1 deletion interactions/api/gateway/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
from ...base import get_logger
from ...client.enums import InteractionType, OptionType
from ...client.models import Option
from ...utils.missing import MISSING
from ..dispatch import Listener
from ..enums import OpCodeType
from ..error import LibraryException
from ..http.client import HTTPClient
from ..models.attrs_utils import MISSING
from ..models.flags import Intents
from ..models.guild import Guild
from ..models.member import Member
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/http/limiter.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from asyncio import Lock
from typing import Optional

from ..models.attrs_utils import MISSING
from ...utils.missing import MISSING

__all__ = ("Limiter",)

Expand Down
2 changes: 1 addition & 1 deletion interactions/api/http/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from aiohttp import MultipartWriter

from ...api.cache import Cache
from ..models.attrs_utils import MISSING
from ...utils.missing import MISSING
from ..models.message import Embed, Message, Sticker
from ..models.misc import AllowedMentions, File, Snowflake
from .request import _Request
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/http/webhook.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from aiohttp import MultipartWriter

from ...api.cache import Cache
from ..models.attrs_utils import MISSING
from ...utils.missing import MISSING
from ..models.misc import File
from .request import _Request
from .route import Route
Expand Down
1 change: 0 additions & 1 deletion interactions/api/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
and stores all of the data defining
models for dispatched Gateway events.
"""
from .attrs_utils import * # noqa: F401 F403
from .audit_log import * # noqa: F401 F403
from .channel import * # noqa: F401 F403
from .emoji import * # noqa: F401 F403
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/models/audit_log.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from enum import IntEnum
from typing import TYPE_CHECKING, List, Optional, TypeVar

from .attrs_utils import DictSerializerMixin, convert_list, define, field
from ...utils.attrs_utils import DictSerializerMixin, convert_list, define, field
from .channel import Channel
from .misc import Snowflake
from .user import User
Expand Down
8 changes: 4 additions & 4 deletions interactions/api/models/channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
from enum import IntEnum
from typing import TYPE_CHECKING, Any, Callable, List, Optional, Union

from ..error import LibraryException
from .attrs_utils import (
MISSING,
from ...utils.attrs_utils import (
ClientSerializerMixin,
DictSerializerMixin,
convert_list,
define,
field,
)
from ...utils.missing import MISSING
from ..error import LibraryException
from .flags import Permissions
from .misc import AllowedMentions, File, IDMixin, Overwrite, Snowflake
from .user import User
Expand Down Expand Up @@ -1241,7 +1241,7 @@ async def get_permissions_for(self, member: "Member") -> Permissions:
return Permissions.ALL

# @everyone role overwrites
from ...client.models.utils import search_iterable
from interactions.utils.utils import search_iterable

overwrite_everyone = search_iterable(
self.permission_overwrites, lambda overwrite: int(overwrite.id) == int(self.guild_id)
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/models/emoji.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, List, Optional, Union

from ...utils.attrs_utils import ClientSerializerMixin, convert_list, define, field
from ..error import LibraryException
from .attrs_utils import ClientSerializerMixin, convert_list, define, field
from .misc import Snowflake
from .user import User

Expand Down
6 changes: 3 additions & 3 deletions interactions/api/models/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
from enum import Enum, IntEnum
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union

from ..error import LibraryException
from .attrs_utils import (
MISSING,
from ...utils.attrs_utils import (
ClientSerializerMixin,
DictSerializerMixin,
convert_list,
define,
field,
)
from ...utils.missing import MISSING
from ..error import LibraryException
from .audit_log import AuditLogEvents, AuditLogs
from .channel import Channel, ChannelType, Thread, ThreadMember
from .emoji import Emoji
Expand Down
8 changes: 7 additions & 1 deletion interactions/api/models/gw.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
from datetime import datetime
from typing import Any, List, Optional

from .attrs_utils import ClientSerializerMixin, DictSerializerMixin, convert_list, define, field
from ...utils.attrs_utils import (
ClientSerializerMixin,
DictSerializerMixin,
convert_list,
define,
field,
)
from .channel import Channel, ThreadMember
from .emoji import Emoji
from .guild import EventMetadata
Expand Down
5 changes: 3 additions & 2 deletions interactions/api/models/member.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from datetime import datetime
from typing import TYPE_CHECKING, Any, List, Optional, Union

from ...client.models.utils import search_iterable
from ...utils.attrs_utils import ClientSerializerMixin, convert_int, convert_list, define, field
from ...utils.missing import MISSING
from ...utils.utils import search_iterable
from ..error import LibraryException
from .attrs_utils import MISSING, ClientSerializerMixin, convert_int, convert_list, define, field
from .channel import Channel
from .flags import Permissions
from .misc import AllowedMentions, File, IDMixin, Snowflake
Expand Down
6 changes: 3 additions & 3 deletions interactions/api/models/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
from typing import TYPE_CHECKING, List, Optional, Union

from ...client.models.component import ActionRow, Button, SelectMenu
from ..error import LibraryException
from .attrs_utils import (
MISSING,
from ...utils.attrs_utils import (
ClientSerializerMixin,
DictSerializerMixin,
convert_list,
Expand All @@ -16,6 +14,8 @@
define,
field,
)
from ...utils.missing import MISSING
from ..error import LibraryException
from .channel import Channel
from .emoji import Emoji
from .member import Member
Expand Down
3 changes: 2 additions & 1 deletion interactions/api/models/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@
from typing import List, Optional, Union

from ...base import get_logger
from ...utils.attrs_utils import DictSerializerMixin, convert_list, define, field
from ...utils.missing import MISSING
from ..error import LibraryException
from .attrs_utils import MISSING, DictSerializerMixin, convert_list, define, field

__all__ = (
"AutoModKeywordPresetTypes",
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/models/presence.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from enum import IntEnum
from typing import Any, List, Optional

from .attrs_utils import DictSerializerMixin, convert_list, define, field
from ...utils.attrs_utils import DictSerializerMixin, convert_list, define, field
from .emoji import Emoji
from .flags import StatusType
from .misc import Snowflake
Expand Down
3 changes: 2 additions & 1 deletion interactions/api/models/role.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from typing import TYPE_CHECKING, Any, List, Optional, Union

from ...utils.attrs_utils import ClientSerializerMixin, DictSerializerMixin, define, field
from ...utils.missing import MISSING
from ..error import LibraryException
from .attrs_utils import MISSING, ClientSerializerMixin, DictSerializerMixin, define, field
from .misc import IDMixin, Image, Snowflake

if TYPE_CHECKING:
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/models/team.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Any, List, Optional

from .attrs_utils import ClientSerializerMixin, convert_list, define, field
from ...utils.attrs_utils import ClientSerializerMixin, convert_list, define, field
from .flags import AppFlags
from .misc import IDMixin, Snowflake
from .user import User
Expand Down
2 changes: 1 addition & 1 deletion interactions/api/models/user.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import TYPE_CHECKING, Optional, Union

from .attrs_utils import ClientSerializerMixin, define, field
from ...utils.attrs_utils import ClientSerializerMixin, define, field
from .flags import UserFlags
from .misc import IDMixin, Snowflake

Expand Down
3 changes: 2 additions & 1 deletion interactions/api/models/webhook.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from enum import IntEnum
from typing import TYPE_CHECKING, Any, List, Optional, Union

from ...utils.attrs_utils import ClientSerializerMixin, define, field
from ...utils.missing import MISSING
from ..error import LibraryException
from .attrs_utils import MISSING, ClientSerializerMixin, define, field
from .misc import AllowedMentions, File, IDMixin, Image, Snowflake
from .user import User

Expand Down
1 change: 0 additions & 1 deletion interactions/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@
from .context import * # noqa: F401 F403
from .decor import * # noqa: F401 F403
from .enums import * # noqa: F401 F403
from .get import * # noqa: F401 F403
from .models import * # noqa: F401 F403
3 changes: 2 additions & 1 deletion interactions/client/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
from ..api import WebSocketClient as WSClient
from ..api.error import LibraryException
from ..api.http.client import HTTPClient
from ..api.models.attrs_utils import MISSING, convert_list
from ..api.models.flags import Intents, Permissions
from ..api.models.guild import Guild
from ..api.models.misc import Image, Snowflake
from ..api.models.presence import ClientPresence
from ..api.models.team import Application
from ..api.models.user import User
from ..base import get_logger
from ..utils.attrs_utils import convert_list
from ..utils.missing import MISSING
from .decor import component as _component
from .enums import ApplicationCommandType, Locale, OptionType
from .models.command import ApplicationCommand, Choice, Command, Option
Expand Down
3 changes: 2 additions & 1 deletion interactions/client/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from ..api.error import LibraryException
from ..api.http.client import HTTPClient
from ..api.models.attrs_utils import MISSING, ClientSerializerMixin, convert_int, define, field
from ..api.models.channel import Channel
from ..api.models.flags import Permissions
from ..api.models.guild import Guild
Expand All @@ -12,6 +11,8 @@
from ..api.models.misc import AllowedMentions, Snowflake
from ..api.models.user import User
from ..base import get_logger
from ..utils.attrs_utils import ClientSerializerMixin, convert_int, define, field
from ..utils.missing import MISSING
from .enums import InteractionCallbackType, InteractionType
from .models.command import Choice
from .models.component import ActionRow, Button, Modal, SelectMenu, _build_components
Expand Down
2 changes: 1 addition & 1 deletion interactions/client/decor.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from typing import Any, Dict, List, Optional, Union

from ..api.models.attrs_utils import MISSING
from ..api.models.flags import Permissions
from ..api.models.guild import Guild
from ..utils.missing import MISSING
from .enums import ApplicationCommandType, Locale
from .models.command import ApplicationCommand, Option
from .models.component import Button, Component, SelectMenu
Expand Down
1 change: 0 additions & 1 deletion interactions/client/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,3 @@
from .command import * # noqa: F401 F403
from .component import * # noqa: F401 F403
from .misc import * # noqa: F401 F403
from .utils import * # noqa: F401 F403
3 changes: 2 additions & 1 deletion interactions/client/models/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
from typing import TYPE_CHECKING, Any, Awaitable, Callable, Coroutine, Dict, List, Optional, Union

from ...api.error import LibraryException
from ...api.models.attrs_utils import MISSING, DictSerializerMixin, convert_list, define, field
from ...api.models.channel import Channel, ChannelType
from ...api.models.guild import Guild
from ...api.models.member import Member
from ...api.models.message import Attachment
from ...api.models.misc import Snowflake
from ...api.models.role import Role
from ...api.models.user import User
from ...utils.attrs_utils import DictSerializerMixin, convert_list, define, field
from ...utils.missing import MISSING
from ..enums import ApplicationCommandType, Locale, OptionType, PermissionType

if TYPE_CHECKING:
Expand Down
3 changes: 2 additions & 1 deletion interactions/client/models/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
from typing import List, Optional, Union

from ...api.error import LibraryException
from ...api.models.attrs_utils import MISSING, DictSerializerMixin, convert_list, define, field
from ...api.models.emoji import Emoji
from ...utils.attrs_utils import DictSerializerMixin, convert_list, define, field
from ...utils.missing import MISSING
from ..enums import ButtonStyle, ComponentType, TextStyleType

__all__ = (
Expand Down
2 changes: 1 addition & 1 deletion interactions/client/models/misc.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from typing import Dict, List, Optional

from ...api.models.attrs_utils import DictSerializerMixin, convert_dict, convert_list, define, field
from ...api.models.channel import Channel
from ...api.models.member import Member
from ...api.models.message import Attachment, Message
from ...api.models.misc import Snowflake
from ...api.models.role import Role
from ...api.models.user import User
from ...utils.attrs_utils import DictSerializerMixin, convert_dict, convert_list, define, field
from ..enums import ApplicationCommandType, ComponentType, InteractionType, PermissionType
from ..models.command import Option
from .component import ActionRow
Expand Down
4 changes: 4 additions & 0 deletions interactions/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from .attrs_utils import * # noqa: F401 F403
from .get import * # noqa: F401 F403
from .missing import * # noqa: F401 F403
from .utils import * # noqa: F401 F403
Original file line number Diff line number Diff line change
@@ -1,36 +1,15 @@
from copy import deepcopy
from functools import wraps
from typing import ClassVar, Dict, Mapping, Optional, Tuple
from typing import Dict, Mapping, Optional, Tuple

import attrs

__all__ = ("MISSING", "DictSerializerMixin", "ClientSerializerMixin")
from .missing import MISSING


class _Missing:
"""A sentinel object for places where None is a valid value"""

_instance: ClassVar["_Missing"] = None

def __new__(cls):
if not isinstance(cls._instance, cls):
cls._instance = object.__new__(cls)
return cls._instance

def __eq__(self, other):
return self.__class__ is other.__class__

def __repr__(self):
return "<interactions.MISSING>"

def __hash__(self):
return 0

def __bool__(self):
return False


MISSING = _Missing()
__all__ = (
"DictSerializerMixin",
"ClientSerializerMixin",
)


@attrs.define(eq=False, init=False, on_setattr=attrs.setters.NO_OP)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from functools import wraps
from typing import Any, Callable, ClassVar, Dict, List, Optional, Tuple, Type, TypeVar, Union, overload
from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TypeVar, Union, overload

import attrs

Expand All @@ -9,22 +9,6 @@ _T = TypeVar("_T")
_P = TypeVar("_P")


class _Missing:
"""A sentinel object for places where None is a valid value"""
_instance: ClassVar["_Missing"] = None

def __eq__(self, other): ...

def __repr__(self): ...

def __hash__(self): ...

def __bool__(self): ...


MISSING = _Missing()


@attrs.define(eq=False, init=False, on_setattr=attrs.setters.NO_OP)
class DictSerializerMixin:
_json: dict = attrs.field(init=False)
Expand Down
Loading