|
30 | 30 | import os
|
31 | 31 | from typing import TYPE_CHECKING, Callable, TypeVar
|
32 | 32 |
|
33 |
| -from .. import abc |
34 | 33 | from ..channel import _threaded_guild_channel_factory
|
35 | 34 | from ..components import SelectMenu, SelectOption, SelectDefaultValue
|
36 | 35 | from ..emoji import AppEmoji, GuildEmoji
|
|
59 | 58 | if TYPE_CHECKING:
|
60 | 59 | from typing_extensions import Self
|
61 | 60 |
|
62 |
| - from ..abc import GuildChannel |
| 61 | + from ..abc import GuildChannel, Snowflake |
63 | 62 | from ..types.components import SelectMenu as SelectMenuPayload
|
64 | 63 | from ..types.interactions import ComponentInteractionData
|
65 | 64 | from .view import View
|
@@ -200,7 +199,7 @@ def __init__(
|
200 | 199 | label: str | None = None,
|
201 | 200 | description: str | None = None,
|
202 | 201 | required: bool | None = None,
|
203 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 202 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
204 | 203 | ) -> None:
|
205 | 204 | if options and select_type is not ComponentType.string_select:
|
206 | 205 | raise InvalidArgument("options parameter is only valid for string selects")
|
@@ -248,12 +247,14 @@ def __init__(
|
248 | 247 | )
|
249 | 248 | self.row = row
|
250 | 249 |
|
251 |
| - def _handle_default_values(self, default_values: Sequence[abc.Snowflake] | None, select_type: ComponentType) -> list[SelectDefaultValue]: |
| 250 | + def _handle_default_values(self, default_values: Sequence[Snowflake] | None, select_type: ComponentType) -> list[SelectDefaultValue]: |
252 | 251 | if not default_values:
|
253 | 252 | return []
|
254 | 253 |
|
255 | 254 | ret = []
|
256 | 255 |
|
| 256 | + from discord import abc # > circular import < |
| 257 | + |
257 | 258 | instances_mapping: dict[type, tuple[tuple[ComponentType, ...], SelectDefaultValueType]] = {
|
258 | 259 | Role: ((ComponentType.role_select, ComponentType.mentionable_select), SelectDefaultValueType.role),
|
259 | 260 | User: ((ComponentType.user_select, ComponentType.mentionable_select), SelectDefaultValueType.user),
|
@@ -390,7 +391,7 @@ def default_values(self) -> list[SelectDefaultValue]:
|
390 | 391 | return self._underlying.default_values
|
391 | 392 |
|
392 | 393 | @default_values.setter
|
393 |
| - def default_values(self, values: list[SelectDefaultValue | abc.Snowflake] | None) -> None: |
| 394 | + def default_values(self, values: list[SelectDefaultValue | Snowflake] | None) -> None: |
394 | 395 | default_values = self._handle_default_values(values, self.type)
|
395 | 396 | self._underlying.default_values = default_values
|
396 | 397 |
|
@@ -687,7 +688,7 @@ def select(
|
687 | 688 | disabled: bool = False,
|
688 | 689 | row: int | None = None,
|
689 | 690 | id: int | None = None,
|
690 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 691 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
691 | 692 | ) -> Callable[[ItemCallbackType[Select[V]]], Select[V]]:
|
692 | 693 | """A decorator that attaches a select menu to a component.
|
693 | 694 |
|
@@ -851,7 +852,7 @@ def user_select(
|
851 | 852 | disabled: bool = False,
|
852 | 853 | row: int | None = None,
|
853 | 854 | id: int | None = None,
|
854 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 855 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
855 | 856 | ) -> Callable[[ItemCallbackType[Select[V]]], Select[V]]:
|
856 | 857 | """A shortcut for :meth:`discord.ui.select` with select type :attr:`discord.ComponentType.user_select`.
|
857 | 858 |
|
@@ -879,7 +880,7 @@ def role_select(
|
879 | 880 | disabled: bool = False,
|
880 | 881 | row: int | None = None,
|
881 | 882 | id: int | None = None,
|
882 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 883 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
883 | 884 | ) -> Callable[[ItemCallbackType[Select[V]]], Select[V]]:
|
884 | 885 | """A shortcut for :meth:`discord.ui.select` with select type :attr:`discord.ComponentType.role_select`.
|
885 | 886 |
|
@@ -907,7 +908,7 @@ def mentionable_select(
|
907 | 908 | disabled: bool = False,
|
908 | 909 | row: int | None = None,
|
909 | 910 | id: int | None = None,
|
910 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 911 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
911 | 912 | ) -> Callable[[ItemCallbackType[Select[V]]], Select[V]]:
|
912 | 913 | """A shortcut for :meth:`discord.ui.select` with select type :attr:`discord.ComponentType.mentionable_select`.
|
913 | 914 |
|
@@ -936,7 +937,7 @@ def channel_select(
|
936 | 937 | channel_types: list[ChannelType] = MISSING,
|
937 | 938 | row: int | None = None,
|
938 | 939 | id: int | None = None,
|
939 |
| - default_values: Sequence[SelectDefaultValue | abc.Snowflake] | None = None, |
| 940 | + default_values: Sequence[SelectDefaultValue | Snowflake] | None = None, |
940 | 941 | ) -> Callable[[ItemCallbackType[Select[V]]], Select[V]]:
|
941 | 942 | """A shortcut for :meth:`discord.ui.select` with select type :attr:`discord.ComponentType.channel_select`.
|
942 | 943 |
|
|
0 commit comments