From dbbe4ee3ebc8ccfb306133cff4251fd41dc44a43 Mon Sep 17 00:00:00 2001 From: onerandomusername Date: Tue, 16 Sep 2025 11:21:37 -0400 Subject: [PATCH] fix without future-annotations --- disnake/abc.py | 14 +++--- disnake/app_commands.py | 8 +++- disnake/appinfo.py | 6 ++- disnake/application_role_connection.py | 4 +- disnake/audit_logs.py | 12 +++-- disnake/automod.py | 3 +- disnake/backoff.py | 6 ++- disnake/bans.py | 3 +- disnake/channel.py | 14 ++++-- disnake/client.py | 37 ++++++++++----- disnake/components.py | 2 +- disnake/embeds.py | 7 ++- disnake/emoji.py | 2 +- disnake/entitlement.py | 3 +- disnake/enums.py | 3 +- disnake/errors.py | 3 +- disnake/ext/commands/base_core.py | 7 +-- disnake/ext/commands/bot.py | 2 +- disnake/ext/commands/bot_base.py | 4 +- disnake/ext/commands/cog.py | 3 +- disnake/ext/commands/common_bot_base.py | 3 +- disnake/ext/commands/context.py | 5 +- disnake/ext/commands/converter.py | 7 ++- disnake/ext/commands/cooldowns.py | 3 +- disnake/ext/commands/core.py | 5 +- disnake/ext/commands/ctx_menus_core.py | 9 ++-- disnake/ext/commands/errors.py | 2 +- disnake/ext/commands/flag_converter.py | 5 +- disnake/ext/commands/help.py | 7 +-- disnake/ext/commands/interaction_bot_base.py | 18 ++++--- disnake/ext/commands/params.py | 5 +- disnake/ext/commands/slash_core.py | 9 ++-- disnake/flags.py | 3 +- disnake/gateway.py | 3 +- disnake/guild.py | 23 +++++---- disnake/guild_scheduled_event.py | 3 +- disnake/http.py | 2 +- disnake/i18n.py | 3 +- disnake/interactions/application_command.py | 14 +++--- disnake/interactions/base.py | 8 ++-- disnake/interactions/message.py | 6 ++- disnake/interactions/modal.py | 7 ++- disnake/iterators.py | 4 +- disnake/member.py | 9 ++-- disnake/mentions.py | 3 +- disnake/message.py | 12 +++-- disnake/oggparse.py | 4 +- disnake/opus.py | 3 +- disnake/permissions.py | 3 +- disnake/player.py | 5 +- disnake/poll.py | 5 +- disnake/shard.py | 6 ++- disnake/sku.py | 3 +- disnake/soundboard.py | 3 +- disnake/stage_instance.py | 3 +- disnake/state.py | 15 ++++-- disnake/subscription.py | 3 +- disnake/team.py | 3 +- disnake/template.py | 3 +- disnake/threads.py | 5 +- disnake/types/activity.py | 7 +-- disnake/types/appinfo.py | 9 ++-- disnake/types/application_role_connection.py | 6 ++- disnake/types/audit_log.py | 50 ++++++++++---------- disnake/types/automod.py | 5 +- disnake/types/channel.py | 12 +++-- disnake/types/components.py | 9 ++-- disnake/types/emoji.py | 8 ++-- disnake/types/entitlement.py | 6 ++- disnake/types/gateway.py | 34 ++++++++----- disnake/types/guild.py | 33 +++++++------ disnake/types/guild_scheduled_event.py | 10 ++-- disnake/types/integration.py | 7 +-- disnake/types/interactions.py | 21 ++++---- disnake/types/invite.py | 13 ++--- disnake/types/member.py | 10 ++-- disnake/types/message.py | 29 +++++++----- disnake/types/onboarding.py | 8 ++-- disnake/types/poll.py | 9 ++-- disnake/types/role.py | 5 +- disnake/types/sku.py | 6 ++- disnake/types/soundboard.py | 7 +-- disnake/types/sticker.py | 7 +-- disnake/types/subscription.py | 6 ++- disnake/types/team.py | 7 +-- disnake/types/template.py | 9 ++-- disnake/types/threads.py | 11 +++-- disnake/types/user.py | 6 ++- disnake/types/voice.py | 10 ++-- disnake/types/webhook.py | 9 ++-- disnake/types/welcome_screen.py | 5 +- disnake/types/widget.py | 7 ++- disnake/ui/action_row.py | 18 ++++--- disnake/ui/button.py | 7 +-- disnake/ui/file.py | 4 +- disnake/ui/item.py | 3 +- disnake/ui/media_gallery.py | 7 ++- disnake/ui/modal.py | 3 +- disnake/ui/select/base.py | 9 ++-- disnake/ui/select/channel.py | 10 ++-- disnake/ui/select/mentionable.py | 8 ++-- disnake/ui/select/role.py | 8 ++-- disnake/ui/select/string.py | 11 +++-- disnake/ui/select/user.py | 8 ++-- disnake/ui/thumbnail.py | 4 +- disnake/ui/view.py | 3 +- disnake/utils.py | 11 +++-- disnake/voice_client.py | 3 +- disnake/webhook/async_.py | 5 +- disnake/webhook/sync.py | 4 +- disnake/widget.py | 3 +- docs/conf.py | 7 ++- docs/extensions/redirects.py | 3 +- noxfile.py | 4 +- pyproject.toml | 4 -- scripts/codemods/base.py | 4 +- scripts/codemods/combined.py | 6 ++- scripts/codemods/overloads_no_missing.py | 6 ++- scripts/codemods/typed_flags.py | 7 ++- scripts/versioning.py | 8 +++- tests/helpers.py | 4 +- tests/test_utils.py | 6 ++- tests/ui/test_decorators.py | 6 ++- 123 files changed, 591 insertions(+), 369 deletions(-) diff --git a/disnake/abc.py b/disnake/abc.py index d415bbcafd..b10c952099 100644 --- a/disnake/abc.py +++ b/disnake/abc.py @@ -5,7 +5,6 @@ import asyncio import copy from abc import ABC -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -22,9 +21,6 @@ from .enums import ( ChannelType, PartyType, - ThreadLayout, - ThreadSortOrder, - VideoQualityMode, try_enum_to_int, ) from .errors import ClientException @@ -36,7 +32,6 @@ from .partial_emoji import PartialEmoji from .permissions import PermissionOverwrite, Permissions from .role import Role -from .sticker import GuildSticker, StandardSticker, StickerItem from .utils import _overload_with_permissions from .voice_client import VoiceClient, VoiceProtocol @@ -52,6 +47,7 @@ VoiceProtocolT = TypeVar("VoiceProtocolT", bound=VoiceProtocol) if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence from datetime import datetime from typing_extensions import Self @@ -61,7 +57,12 @@ from .client import Client from .embeds import Embed from .emoji import Emoji - from .enums import InviteTarget + from .enums import ( + InviteTarget, + ThreadLayout, + ThreadSortOrder, + VideoQualityMode, + ) from .guild import Guild, GuildChannel as AnyGuildChannel, GuildMessageable from .guild_scheduled_event import GuildScheduledEvent from .iterators import ChannelPinsIterator, HistoryIterator @@ -69,6 +70,7 @@ from .message import Message, MessageReference, PartialMessage from .poll import Poll from .state import ConnectionState + from .sticker import GuildSticker, StandardSticker, StickerItem from .threads import AnyThreadArchiveDuration, ForumTag from .types.channel import ( Channel as ChannelPayload, diff --git a/disnake/app_commands.py b/disnake/app_commands.py index 67dc9c13af..c109b87e30 100644 --- a/disnake/app_commands.py +++ b/disnake/app_commands.py @@ -5,14 +5,13 @@ import math import re from abc import ABC -from collections.abc import Mapping, Sequence +from collections.abc import Mapping from typing import TYPE_CHECKING, ClassVar, TypeAlias from .enums import ( ApplicationCommandPermissionType, ApplicationCommandType, ChannelType, - Locale, OptionType, enum_if_int, try_enum, @@ -24,8 +23,13 @@ from .utils import MISSING, _get_as_snowflake, _maybe_cast, deprecated, warn_deprecated if TYPE_CHECKING: + from collections.abc import Sequence + from typing_extensions import Self + from .enums import ( + Locale, + ) from .i18n import LocalizationProtocol, LocalizationValue, LocalizedOptional, LocalizedRequired from .state import ConnectionState from .types.interactions import ( diff --git a/disnake/appinfo.py b/disnake/appinfo.py index 2dc323205f..27881edc86 100644 --- a/disnake/appinfo.py +++ b/disnake/appinfo.py @@ -2,17 +2,19 @@ from __future__ import annotations -from collections.abc import Sequence from typing import TYPE_CHECKING, cast from . import utils -from .asset import Asset, AssetBytes +from .asset import Asset from .enums import ApplicationEventWebhookStatus, try_enum from .flags import ApplicationFlags from .permissions import Permissions from .utils import MISSING if TYPE_CHECKING: + from collections.abc import Sequence + + from .asset import AssetBytes from .guild import Guild from .state import ConnectionState from .types.appinfo import ( diff --git a/disnake/application_role_connection.py b/disnake/application_role_connection.py index df76bb9dd5..d5756df68e 100644 --- a/disnake/application_role_connection.py +++ b/disnake/application_role_connection.py @@ -5,12 +5,12 @@ from typing import TYPE_CHECKING from .enums import ApplicationRoleConnectionMetadataType, enum_if_int, try_enum -from .i18n import LocalizationValue, Localized +from .i18n import Localized if TYPE_CHECKING: from typing_extensions import Self - from .i18n import LocalizationProtocol, LocalizedRequired + from .i18n import LocalizationProtocol, LocalizationValue, LocalizedRequired from .types.application_role_connection import ( ApplicationRoleConnectionMetadata as ApplicationRoleConnectionMetadataPayload, ) diff --git a/disnake/audit_logs.py b/disnake/audit_logs.py index abae2b48ac..d3a6f5d9ef 100644 --- a/disnake/audit_logs.py +++ b/disnake/audit_logs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from collections.abc import Callable, Generator, Mapping +from collections.abc import Callable from typing import ( TYPE_CHECKING, Any, @@ -11,15 +11,14 @@ cast, ) -from . import abc, enums, flags, utils +from . import enums, flags, utils from .app_commands import ApplicationCommandPermissions from .asset import Asset -from .automod import AutoModAction, AutoModTriggerMetadata, _automod_action_factory +from .automod import AutoModTriggerMetadata, _automod_action_factory from .colour import Colour from .invite import Invite from .mixins import Hashable from .object import Object -from .partial_emoji import PartialEmoji from .permissions import PermissionOverwrite, Permissions from .threads import ForumTag, Thread @@ -32,14 +31,17 @@ if TYPE_CHECKING: import datetime + from collections.abc import Generator, Mapping + from . import abc from .app_commands import APIApplicationCommand - from .automod import AutoModRule + from .automod import AutoModAction, AutoModRule from .emoji import Emoji from .guild import Guild from .guild_scheduled_event import GuildScheduledEvent from .integrations import PartialIntegration from .member import Member + from .partial_emoji import PartialEmoji from .role import Role from .stage_instance import StageInstance from .sticker import GuildSticker diff --git a/disnake/automod.py b/disnake/automod.py index 2383b81a72..b64e764969 100644 --- a/disnake/automod.py +++ b/disnake/automod.py @@ -3,7 +3,6 @@ from __future__ import annotations import datetime -from collections.abc import Iterable, Sequence from typing import ( TYPE_CHECKING, overload, @@ -21,6 +20,8 @@ from .utils import MISSING, _get_as_snowflake, snowflake_time if TYPE_CHECKING: + from collections.abc import Iterable, Sequence + from typing_extensions import Self from .abc import Snowflake diff --git a/disnake/backoff.py b/disnake/backoff.py index 7ef7f6ad1f..2e91f7f6d5 100644 --- a/disnake/backoff.py +++ b/disnake/backoff.py @@ -4,8 +4,10 @@ import random import time -from collections.abc import Callable -from typing import Generic, Literal, TypeVar, overload +from typing import TYPE_CHECKING, Generic, Literal, TypeVar, overload + +if TYPE_CHECKING: + from collections.abc import Callable T = TypeVar("T", bool, Literal[True], Literal[False]) diff --git a/disnake/bans.py b/disnake/bans.py index e149bfbbe8..c6035b3d13 100644 --- a/disnake/bans.py +++ b/disnake/bans.py @@ -2,12 +2,13 @@ from __future__ import annotations -from collections.abc import Sequence from typing import TYPE_CHECKING, NamedTuple __all__ = ("BanEntry",) if TYPE_CHECKING: + from collections.abc import Sequence + from .abc import Snowflake from .user import User diff --git a/disnake/channel.py b/disnake/channel.py index c1f6a6c81e..8e85cb4a94 100644 --- a/disnake/channel.py +++ b/disnake/channel.py @@ -3,9 +3,7 @@ from __future__ import annotations import asyncio -import datetime import time -from collections.abc import Callable, Iterable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -32,13 +30,13 @@ ) from .errors import ClientException from .file import File -from .flags import ChannelFlags, MessageFlags +from .flags import ChannelFlags from .iterators import ArchivedThreadIterator from .mixins import Hashable from .object import Object from .partial_emoji import PartialEmoji -from .permissions import PermissionOverwrite, Permissions -from .soundboard import GuildSoundboardSound, PartialSoundboardSound, SoundboardSound +from .permissions import Permissions +from .soundboard import GuildSoundboardSound, PartialSoundboardSound from .stage_instance import StageInstance from .threads import ForumTag, Thread from .utils import MISSING @@ -59,16 +57,22 @@ ) if TYPE_CHECKING: + import datetime + from collections.abc import Callable, Iterable, Mapping, Sequence + from typing_extensions import Never, Self from .abc import Snowflake, SnowflakeTime from .asset import AssetBytes from .embeds import Embed from .emoji import Emoji + from .flags import MessageFlags from .guild import Guild, GuildChannel as GuildChannelType from .member import Member, VoiceState from .message import AllowedMentions, Message, PartialMessage + from .permissions import PermissionOverwrite from .role import Role + from .soundboard import SoundboardSound from .state import ConnectionState from .sticker import GuildSticker, StandardSticker, StickerItem from .threads import AnyThreadArchiveDuration, ThreadType diff --git a/disnake/client.py b/disnake/client.py index 89eb1997cd..fcb9e74899 100644 --- a/disnake/client.py +++ b/disnake/client.py @@ -8,8 +8,8 @@ import sys import traceback import types -from collections.abc import Callable, Coroutine, Generator, Mapping, Sequence -from datetime import datetime, timedelta +from collections.abc import Callable, Coroutine +from datetime import timedelta from errno import ECONNRESET from typing import ( TYPE_CHECKING, @@ -24,13 +24,11 @@ import aiohttp from . import abc, utils -from .activity import ActivityTypes, BaseActivity, create_activity +from .activity import BaseActivity, create_activity from .app_commands import ( APIMessageCommand, APISlashCommand, APIUserCommand, - ApplicationCommand, - GuildApplicationCommandPermissions, ) from .appinfo import AppInfo from .application_role_connection import ApplicationRoleConnectionMetadata @@ -38,7 +36,7 @@ from .channel import PartialMessageable, _threaded_channel_factory from .emoji import Emoji from .entitlement import Entitlement -from .enums import ApplicationCommandType, ChannelType, Event, Status +from .enums import ChannelType, Event, Status from .errors import ( ConnectionClosed, GatewayNotFound, @@ -47,23 +45,21 @@ PrivilegedIntentsRequired, SessionStartLimitReached, ) -from .flags import ApplicationFlags, Intents, MemberCacheFlags from .gateway import DiscordWebSocket, ReconnectWebSocket from .guild import Guild, GuildBuilder from .guild_preview import GuildPreview from .http import HTTPClient -from .i18n import LocalizationProtocol, LocalizationStore +from .i18n import LocalizationStore from .invite import Invite from .iterators import EntitlementIterator, GuildIterator from .mentions import AllowedMentions from .object import Object from .sku import SKU -from .soundboard import GuildSoundboardSound, SoundboardSound +from .soundboard import SoundboardSound from .stage_instance import StageInstance from .state import ConnectionState -from .sticker import GuildSticker, StandardSticker, StickerPack, _sticker_factory +from .sticker import StickerPack, _sticker_factory from .template import Template -from .threads import Thread from .ui.view import View from .user import ClientUser, User from .utils import MISSING, deprecated @@ -73,14 +69,31 @@ from .widget import Widget if TYPE_CHECKING: + from collections.abc import Generator, Mapping, Sequence + from datetime import datetime + from typing_extensions import NotRequired from .abc import GuildChannel, PrivateChannel, Snowflake, SnowflakeTime - from .app_commands import APIApplicationCommand, MessageCommand, SlashCommand, UserCommand + from .activity import ActivityTypes + from .app_commands import ( + APIApplicationCommand, + ApplicationCommand, + GuildApplicationCommandPermissions, + MessageCommand, + SlashCommand, + UserCommand, + ) from .asset import AssetBytes from .channel import DMChannel + from .enums import ApplicationCommandType + from .flags import ApplicationFlags, Intents, MemberCacheFlags + from .i18n import LocalizationProtocol from .member import Member from .message import Message + from .soundboard import GuildSoundboardSound + from .sticker import GuildSticker, StandardSticker + from .threads import Thread from .types.application_role_connection import ( ApplicationRoleConnectionMetadata as ApplicationRoleConnectionMetadataPayload, ) diff --git a/disnake/components.py b/disnake/components.py index d1b26e44bb..fa4ed33183 100644 --- a/disnake/components.py +++ b/disnake/components.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Mapping from typing import ( TYPE_CHECKING, Any, @@ -31,6 +30,7 @@ from .utils import MISSING, _get_as_snowflake, assert_never, get_slots if TYPE_CHECKING: + from collections.abc import Mapping from typing import TypeAlias from typing_extensions import Self diff --git a/disnake/embeds.py b/disnake/embeds.py index 1f1aacc856..97006294c0 100644 --- a/disnake/embeds.py +++ b/disnake/embeds.py @@ -3,7 +3,6 @@ from __future__ import annotations import datetime -from collections.abc import Mapping, Sized from typing import ( TYPE_CHECKING, Any, @@ -16,9 +15,13 @@ from . import utils from .colour import Colour -from .file import File from .utils import MISSING, classproperty, warn_deprecated +if TYPE_CHECKING: + from collections.abc import Mapping, Sized + + from .file import File + __all__ = ("Embed",) diff --git a/disnake/emoji.py b/disnake/emoji.py index a812afe974..6ceab26b01 100644 --- a/disnake/emoji.py +++ b/disnake/emoji.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Iterator from typing import TYPE_CHECKING, Any from .asset import Asset, AssetMixin @@ -14,6 +13,7 @@ __all__ = ("Emoji",) if TYPE_CHECKING: + from collections.abc import Iterator from datetime import datetime from .abc import Snowflake diff --git a/disnake/entitlement.py b/disnake/entitlement.py index fc42272e05..e2e847ef10 100644 --- a/disnake/entitlement.py +++ b/disnake/entitlement.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING from .enums import EntitlementType, try_enum @@ -10,6 +9,8 @@ from .utils import _get_as_snowflake, parse_time, snowflake_time, utcnow if TYPE_CHECKING: + import datetime + from .guild import Guild from .state import ConnectionState from .types.entitlement import Entitlement as EntitlementPayload diff --git a/disnake/enums.py b/disnake/enums.py index d140906c8e..797cf491c3 100644 --- a/disnake/enums.py +++ b/disnake/enums.py @@ -2,7 +2,6 @@ from __future__ import annotations import types -from collections.abc import Iterator from functools import total_ordering from typing import ( TYPE_CHECKING, @@ -14,6 +13,8 @@ ) if TYPE_CHECKING: + from collections.abc import Iterator + from typing_extensions import Self __all__ = ( diff --git a/disnake/errors.py b/disnake/errors.py index 6275d3b51e..d36caececd 100644 --- a/disnake/errors.py +++ b/disnake/errors.py @@ -2,10 +2,11 @@ from __future__ import annotations -from collections.abc import Mapping from typing import TYPE_CHECKING, Any, ClassVar, TypeAlias if TYPE_CHECKING: + from collections.abc import Mapping + from aiohttp import ClientResponse, ClientWebSocketResponse from requests import Response diff --git a/disnake/ext/commands/base_core.py b/disnake/ext/commands/base_core.py index 04619f24e7..2c3de392fb 100644 --- a/disnake/ext/commands/base_core.py +++ b/disnake/ext/commands/base_core.py @@ -6,7 +6,6 @@ import datetime import functools from abc import ABC -from collections.abc import Callable from typing import ( TYPE_CHECKING, Any, @@ -16,7 +15,6 @@ overload, ) -from disnake.app_commands import ApplicationCommand from disnake.enums import ApplicationCommandType from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.permissions import Permissions @@ -28,18 +26,21 @@ maybe_coroutine, ) -from .cooldowns import BucketType, CooldownMapping, MaxConcurrency +from .cooldowns import BucketType, CooldownMapping from .errors import CheckFailure, CommandError, CommandInvokeError, CommandOnCooldown if TYPE_CHECKING: + from collections.abc import Callable from typing import Concatenate from typing_extensions import ParamSpec, Self + from disnake.app_commands import ApplicationCommand from disnake.interactions import ApplicationCommandInteraction from ._types import AppCheck, Coro, Error, Hook from .cog import Cog + from .cooldowns import MaxConcurrency from .interaction_bot_base import InteractionBotBase ApplicationCommandInteractionT = TypeVar( diff --git a/disnake/ext/commands/bot.py b/disnake/ext/commands/bot.py index 65a0ed22bd..0a756986b3 100644 --- a/disnake/ext/commands/bot.py +++ b/disnake/ext/commands/bot.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Sequence from typing import TYPE_CHECKING, Any import disnake @@ -12,6 +11,7 @@ if TYPE_CHECKING: import asyncio + from collections.abc import Callable, Sequence import aiohttp from typing_extensions import Self diff --git a/disnake/ext/commands/bot_base.py b/disnake/ext/commands/bot_base.py index 3e228e9a38..8b8b160c6f 100644 --- a/disnake/ext/commands/bot_base.py +++ b/disnake/ext/commands/bot_base.py @@ -9,7 +9,7 @@ import sys import traceback import warnings -from collections.abc import Callable, Iterable +from collections.abc import Iterable from typing import TYPE_CHECKING, Any, TypeAlias, TypeVar import disnake @@ -24,6 +24,8 @@ from .view import StringView if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import Self from disnake.message import Message diff --git a/disnake/ext/commands/cog.py b/disnake/ext/commands/cog.py index 961f98ff8d..0c5ac20f2a 100644 --- a/disnake/ext/commands/cog.py +++ b/disnake/ext/commands/cog.py @@ -4,7 +4,6 @@ import inspect import logging -from collections.abc import Callable, Generator from typing import ( TYPE_CHECKING, Any, @@ -22,6 +21,8 @@ from .slash_core import InvokableSlashCommand if TYPE_CHECKING: + from collections.abc import Callable, Generator + from typing_extensions import Self from disnake.interactions import ApplicationCommandInteraction diff --git a/disnake/ext/commands/common_bot_base.py b/disnake/ext/commands/common_bot_base.py index 72f761a910..4626674922 100644 --- a/disnake/ext/commands/common_bot_base.py +++ b/disnake/ext/commands/common_bot_base.py @@ -11,7 +11,6 @@ import sys import time import types -from collections.abc import Mapping from typing import TYPE_CHECKING, Any, Generic, TypeVar import disnake @@ -21,6 +20,8 @@ from .cog import Cog if TYPE_CHECKING: + from collections.abc import Mapping + from ._types import CoroFunc from .help import HelpCommand diff --git a/disnake/ext/commands/context.py b/disnake/ext/commands/context.py index 9c68a859bf..bcde014ce0 100644 --- a/disnake/ext/commands/context.py +++ b/disnake/ext/commands/context.py @@ -2,7 +2,6 @@ from __future__ import annotations -import inspect import re from typing import TYPE_CHECKING, Any, Generic, TypeAlias, TypeVar @@ -10,14 +9,16 @@ import disnake.utils from disnake import ApplicationCommandInteraction from disnake.message import Message -from disnake.permissions import Permissions if TYPE_CHECKING: + import inspect + from typing_extensions import ParamSpec from disnake.channel import DMChannel, GroupChannel from disnake.guild import Guild, GuildMessageable from disnake.member import Member + from disnake.permissions import Permissions from disnake.state import ConnectionState from disnake.user import ClientUser, User from disnake.voice_client import VoiceProtocol diff --git a/disnake/ext/commands/converter.py b/disnake/ext/commands/converter.py index 2c12df7aae..a4eee88e2a 100644 --- a/disnake/ext/commands/converter.py +++ b/disnake/ext/commands/converter.py @@ -5,7 +5,6 @@ import functools import inspect import re -from collections.abc import Callable, Iterable from typing import ( TYPE_CHECKING, Any, @@ -20,7 +19,7 @@ import disnake -from .context import AnyContext, Context +from .context import Context from .errors import ( BadArgument, BadBoolArgument, @@ -48,8 +47,12 @@ ) if TYPE_CHECKING: + from collections.abc import Callable, Iterable + from disnake.abc import MessageableChannel + from .context import AnyContext + # TODO: USE ACTUAL FUNCTIONS INSTEAD OF USELESS CLASSES diff --git a/disnake/ext/commands/cooldowns.py b/disnake/ext/commands/cooldowns.py index afec770218..3eaafedb8d 100644 --- a/disnake/ext/commands/cooldowns.py +++ b/disnake/ext/commands/cooldowns.py @@ -5,7 +5,6 @@ import asyncio import time from collections import deque -from collections.abc import Callable from typing import TYPE_CHECKING, Any from disnake.enums import Enum @@ -14,6 +13,8 @@ from .errors import MaxConcurrencyReached if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import Self from ...message import Message diff --git a/disnake/ext/commands/core.py b/disnake/ext/commands/core.py index 46162be090..6522bc0c13 100644 --- a/disnake/ext/commands/core.py +++ b/disnake/ext/commands/core.py @@ -6,7 +6,6 @@ import datetime import functools import inspect -from collections.abc import Callable, Generator from typing import ( TYPE_CHECKING, Any, @@ -31,7 +30,7 @@ from ._types import _BaseCommand from .cog import Cog -from .context import AnyContext, Context +from .context import Context from .converter import Greedy, get_converter, run_converters from .cooldowns import BucketType, Cooldown, CooldownMapping, DynamicCooldownMapping, MaxConcurrency from .errors import ( @@ -58,6 +57,7 @@ ) if TYPE_CHECKING: + from collections.abc import Callable, Generator from typing import Concatenate from typing_extensions import ParamSpec, Self @@ -65,6 +65,7 @@ from disnake.message import Message from ._types import AppCheck, Check, Coro, CoroFunc, Error, Hook + from .context import AnyContext __all__ = ( diff --git a/disnake/ext/commands/ctx_menus_core.py b/disnake/ext/commands/ctx_menus_core.py index cb0e05dd06..8de672da8d 100644 --- a/disnake/ext/commands/ctx_menus_core.py +++ b/disnake/ext/commands/ctx_menus_core.py @@ -2,30 +2,31 @@ from __future__ import annotations -from collections.abc import Callable, Sequence from typing import TYPE_CHECKING, Any from disnake.app_commands import MessageCommand, UserCommand -from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.i18n import Localized -from disnake.permissions import Permissions from disnake.utils import iscoroutinefunction from .base_core import InvokableApplicationCommand, _get_overridden_method -from .errors import CommandError from .params import safe_call if TYPE_CHECKING: + from collections.abc import Callable, Sequence + from typing_extensions import ParamSpec + from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.i18n import LocalizedOptional from disnake.interactions import ( ApplicationCommandInteraction, MessageCommandInteraction, UserCommandInteraction, ) + from disnake.permissions import Permissions from .base_core import CogT, InteractionCommandCallback + from .errors import CommandError P = ParamSpec("P") diff --git a/disnake/ext/commands/errors.py b/disnake/ext/commands/errors.py index 530374a55e..8dbe5e8db2 100644 --- a/disnake/ext/commands/errors.py +++ b/disnake/ext/commands/errors.py @@ -2,13 +2,13 @@ from __future__ import annotations -from collections.abc import Callable from typing import TYPE_CHECKING, Any from disnake.errors import ClientException, DiscordException from disnake.utils import humanize_list if TYPE_CHECKING: + from collections.abc import Callable from inspect import Parameter from disnake.abc import GuildChannel diff --git a/disnake/ext/commands/flag_converter.py b/disnake/ext/commands/flag_converter.py index 95bc428b18..fdeaee280e 100644 --- a/disnake/ext/commands/flag_converter.py +++ b/disnake/ext/commands/flag_converter.py @@ -5,9 +5,7 @@ import inspect import re import sys -from collections.abc import Iterator from dataclasses import dataclass, field -from re import Pattern from typing import ( TYPE_CHECKING, Any, @@ -38,6 +36,9 @@ if TYPE_CHECKING: + from collections.abc import Iterator + from re import Pattern + from typing_extensions import Self from .context import Context diff --git a/disnake/ext/commands/help.py b/disnake/ext/commands/help.py index 9090173e10..5f5f54842a 100644 --- a/disnake/ext/commands/help.py +++ b/disnake/ext/commands/help.py @@ -6,8 +6,6 @@ import functools import itertools import re -from collections.abc import Callable, Generator, Iterable, Mapping, Sequence -from re import Match from typing import ( TYPE_CHECKING, Any, @@ -19,17 +17,20 @@ import disnake.abc import disnake.utils -from .context import BotT, Context from .core import Command, Group from .errors import CommandError if TYPE_CHECKING: + from collections.abc import Callable, Generator, Iterable, Mapping, Sequence + from re import Match + from typing_extensions import Self from ._types import Check, FuncT, MaybeCoro from .bot import AutoShardedBot, Bot from .bot_base import BotBase from .cog import Cog + from .context import BotT, Context # note: no InteractionBot AnyBot: TypeAlias = Bot | AutoShardedBot diff --git a/disnake/ext/commands/interaction_bot_base.py b/disnake/ext/commands/interaction_bot_base.py index 72574de744..87dc6131d1 100644 --- a/disnake/ext/commands/interaction_bot_base.py +++ b/disnake/ext/commands/interaction_bot_base.py @@ -7,7 +7,6 @@ import sys import traceback import warnings -from collections.abc import Callable, Iterable, Sequence from itertools import chain from typing import ( TYPE_CHECKING, @@ -17,14 +16,11 @@ ) import disnake -from disnake.app_commands import ApplicationCommand, Option from disnake.custom_warnings import SyncWarning from disnake.enums import ApplicationCommandType -from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.utils import iscoroutinefunction, warn_deprecated from . import errors -from .base_core import InvokableApplicationCommand from .common_bot_base import CommonBotBase from .ctx_menus_core import ( InvokableMessageCommand, @@ -34,11 +30,15 @@ ) from .errors import CommandRegistrationError from .flags import CommandSyncFlags -from .slash_core import InvokableSlashCommand, SubCommand, SubCommandGroup, slash_command +from .slash_core import InvokableSlashCommand, SubCommandGroup, slash_command if TYPE_CHECKING: + from collections.abc import Callable, Iterable, Sequence + from typing_extensions import NotRequired, ParamSpec + from disnake.app_commands import ApplicationCommand, Option + from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.i18n import LocalizedOptional from disnake.interactions import ( ApplicationCommandInteraction, @@ -48,7 +48,13 @@ from disnake.permissions import Permissions from ._types import AppCheck, CoroFunc - from .base_core import CogT, CommandCallback, InteractionCommandCallback + from .base_core import ( + CogT, + CommandCallback, + InteractionCommandCallback, + InvokableApplicationCommand, + ) + from .slash_core import SubCommand P = ParamSpec("P") diff --git a/disnake/ext/commands/params.py b/disnake/ext/commands/params.py index 88e2c2e821..d818b42a61 100644 --- a/disnake/ext/commands/params.py +++ b/disnake/ext/commands/params.py @@ -12,7 +12,6 @@ import math import types from abc import ABC, abstractmethod -from collections.abc import Callable, Sequence from dataclasses import dataclass from enum import Enum, EnumMeta from types import EllipsisType, UnionType @@ -34,7 +33,7 @@ import disnake from disnake.app_commands import Option, OptionChoice from disnake.channel import _channel_type_factory -from disnake.enums import ChannelType, OptionType, try_enum_to_int +from disnake.enums import OptionType, try_enum_to_int from disnake.ext import commands from disnake.i18n import Localized from disnake.interactions import ApplicationCommandInteraction @@ -51,11 +50,13 @@ T_ = TypeVar("T_") if TYPE_CHECKING: + from collections.abc import Callable, Sequence from typing import Concatenate, TypeGuard from typing_extensions import ParamSpec, Self from disnake.app_commands import Choices + from disnake.enums import ChannelType from disnake.i18n import LocalizationValue, LocalizedOptional from disnake.types.interactions import ApplicationCommandOptionChoiceValue diff --git a/disnake/ext/commands/slash_core.py b/disnake/ext/commands/slash_core.py index 8f59000b1d..8d0d046c68 100644 --- a/disnake/ext/commands/slash_core.py +++ b/disnake/ext/commands/slash_core.py @@ -4,7 +4,6 @@ import asyncio import inspect -from collections.abc import Callable, Sequence from typing import ( TYPE_CHECKING, Any, @@ -14,18 +13,20 @@ from disnake import utils from disnake.app_commands import Option, SlashCommand from disnake.enums import OptionType -from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.i18n import Localized -from disnake.interactions import ApplicationCommandInteraction -from disnake.permissions import Permissions from .base_core import InvokableApplicationCommand, _get_overridden_method from .errors import CommandError, CommandInvokeError from .params import call_param_func, classify_autocompleter, expand_params if TYPE_CHECKING: + from collections.abc import Callable, Sequence + from disnake.app_commands import Choices + from disnake.flags import ApplicationInstallTypes, InteractionContextTypes from disnake.i18n import LocalizedOptional + from disnake.interactions import ApplicationCommandInteraction + from disnake.permissions import Permissions from .base_core import CommandCallback diff --git a/disnake/flags.py b/disnake/flags.py index 3fd529b0a1..c86f81e890 100644 --- a/disnake/flags.py +++ b/disnake/flags.py @@ -4,7 +4,6 @@ import functools import operator -from collections.abc import Callable, Iterator, Sequence from typing import ( TYPE_CHECKING, Any, @@ -19,6 +18,8 @@ from .utils import MISSING, _generated if TYPE_CHECKING: + from collections.abc import Callable, Iterator, Sequence + from typing_extensions import Self from disnake.types.appinfo import ApplicationIntegrationType diff --git a/disnake/gateway.py b/disnake/gateway.py index c50ce170a5..cd6ce453ea 100644 --- a/disnake/gateway.py +++ b/disnake/gateway.py @@ -12,7 +12,6 @@ import traceback import zlib from collections import deque -from collections.abc import Callable from typing import ( TYPE_CHECKING, Any, @@ -31,6 +30,8 @@ from .errors import ConnectionClosed if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import Self from .client import Client diff --git a/disnake/guild.py b/disnake/guild.py index eff680e6de..ac9c9047e8 100644 --- a/disnake/guild.py +++ b/disnake/guild.py @@ -5,7 +5,6 @@ import copy import datetime import unicodedata -from collections.abc import Iterable, Sequence from typing import ( TYPE_CHECKING, Any, @@ -19,7 +18,6 @@ ) from . import abc, utils -from .app_commands import GuildApplicationCommandPermissions from .asset import Asset from .automod import AutoModAction, AutoModRule from .bans import BanEntry, BulkBanResult @@ -36,8 +34,6 @@ from .colour import Colour from .emoji import Emoji from .enums import ( - AuditLogAction, - AutoModEventType, AutoModTriggerType, ChannelType, ContentFilter, @@ -46,19 +42,15 @@ Locale, NotificationLevel, NSFWLevel, - ThreadLayout, - ThreadSortOrder, VerificationLevel, - VideoQualityMode, WidgetStyle, try_enum, try_enum_to_int, ) from .errors import ClientException, HTTPException, InvalidData -from .file import File from .flags import SystemChannelFlags from .guild_scheduled_event import GuildScheduledEvent, GuildScheduledEventMetadata -from .integrations import Integration, _integration_factory +from .integrations import _integration_factory from .invite import Invite from .iterators import AuditLogIterator, BanIterator, MemberIterator from .member import Member, VoiceState @@ -87,10 +79,21 @@ MISSING = utils.MISSING if TYPE_CHECKING: + from collections.abc import Iterable, Sequence + from .abc import Snowflake, SnowflakeTime - from .app_commands import APIApplicationCommand + from .app_commands import APIApplicationCommand, GuildApplicationCommandPermissions from .asset import AssetBytes from .automod import AutoModTriggerMetadata + from .enums import ( + AuditLogAction, + AutoModEventType, + ThreadLayout, + ThreadSortOrder, + VideoQualityMode, + ) + from .file import File + from .integrations import Integration from .permissions import Permissions from .state import ConnectionState from .template import Template diff --git a/disnake/guild_scheduled_event.py b/disnake/guild_scheduled_event.py index c5f2d18462..964e3c17d1 100644 --- a/disnake/guild_scheduled_event.py +++ b/disnake/guild_scheduled_event.py @@ -2,7 +2,6 @@ from __future__ import annotations -from datetime import datetime from typing import TYPE_CHECKING, Any, Literal, overload from .asset import Asset @@ -25,6 +24,8 @@ ) if TYPE_CHECKING: + from datetime import datetime + from .abc import GuildChannel, Snowflake from .asset import AssetBytes from .guild import Guild diff --git a/disnake/http.py b/disnake/http.py index 92c8f64c46..5eae2eded8 100644 --- a/disnake/http.py +++ b/disnake/http.py @@ -7,7 +7,6 @@ import re import sys import weakref -from collections.abc import Coroutine, Iterable, Sequence from errno import ECONNRESET from typing import ( TYPE_CHECKING, @@ -37,6 +36,7 @@ _log = logging.getLogger(__name__) if TYPE_CHECKING: + from collections.abc import Coroutine, Iterable, Sequence from types import TracebackType from typing_extensions import Self diff --git a/disnake/i18n.py b/disnake/i18n.py index 32f2e5acc2..e4d4375d0b 100644 --- a/disnake/i18n.py +++ b/disnake/i18n.py @@ -3,7 +3,6 @@ from __future__ import annotations import logging -import os import warnings from abc import ABC, abstractmethod from collections import defaultdict @@ -24,6 +23,8 @@ from .errors import LocalizationKeyError if TYPE_CHECKING: + import os + from typing_extensions import Self LocalizedRequired: TypeAlias = "str | Localized[str]" diff --git a/disnake/interactions/application_command.py b/disnake/interactions/application_command.py index 997721576b..c51edd6d3d 100644 --- a/disnake/interactions/application_command.py +++ b/disnake/interactions/application_command.py @@ -2,15 +2,10 @@ from __future__ import annotations -from collections.abc import Mapping from typing import TYPE_CHECKING, Any from .. import utils -from ..enums import ApplicationCommandType, Locale, OptionType, try_enum -from ..guild import Guild -from ..member import Member -from ..message import Message -from ..user import User +from ..enums import ApplicationCommandType, OptionType, try_enum from .base import ClientT, Interaction, InteractionDataResolved __all__ = ( @@ -34,12 +29,19 @@ MISSING = utils.MISSING if TYPE_CHECKING: + from collections.abc import Mapping + + from ..enums import Locale from ..ext.commands import InvokableApplicationCommand + from ..guild import Guild + from ..member import Member + from ..message import Message from ..state import ConnectionState from ..types.interactions import ( ApplicationCommandInteraction as ApplicationCommandInteractionPayload, ApplicationCommandInteractionData as ApplicationCommandInteractionDataPayload, ) + from ..user import User class ApplicationCommandInteraction(Interaction[ClientT]): diff --git a/disnake/interactions/base.py b/disnake/interactions/base.py index af60abe000..c259919ecb 100644 --- a/disnake/interactions/base.py +++ b/disnake/interactions/base.py @@ -3,7 +3,7 @@ from __future__ import annotations import asyncio -from collections.abc import Mapping, Sequence +from collections.abc import Mapping from datetime import timedelta from typing import ( TYPE_CHECKING, @@ -39,7 +39,6 @@ ) from ..flags import InteractionContextTypes, MessageFlags from ..guild import Guild -from ..http import HTTPClient from ..i18n import Localized from ..member import Member from ..message import Attachment, AuthorizingIntegrationOwners, Message @@ -47,7 +46,7 @@ from ..permissions import Permissions from ..role import Role from ..ui.action_row import normalize_components, normalize_components_to_dict -from ..user import ClientUser, User +from ..user import User from ..webhook.async_ import Webhook, async_context, handle_message_parameters __all__ = ( @@ -58,6 +57,7 @@ ) if TYPE_CHECKING: + from collections.abc import Sequence from datetime import datetime from aiohttp import ClientSession @@ -68,6 +68,7 @@ from ..embeds import Embed from ..ext.commands import AutoShardedBot, Bot from ..file import File + from ..http import HTTPClient from ..mentions import AllowedMentions from ..poll import Poll from ..state import ConnectionState @@ -86,6 +87,7 @@ from ..ui._types import MessageComponents, ModalComponents, ModalTopLevelComponent from ..ui.modal import Modal from ..ui.view import View + from ..user import ClientUser from .message import MessageInteraction from .modal import ModalInteraction diff --git a/disnake/interactions/message.py b/disnake/interactions/message.py index a04471b808..e8ef738d5b 100644 --- a/disnake/interactions/message.py +++ b/disnake/interactions/message.py @@ -2,10 +2,9 @@ from __future__ import annotations -from collections.abc import Sequence from typing import TYPE_CHECKING, Any -from ..components import VALID_ACTION_ROW_MESSAGE_COMPONENT_TYPES, ActionRowMessageComponent +from ..components import VALID_ACTION_ROW_MESSAGE_COMPONENT_TYPES from ..enums import ComponentType, try_enum from ..message import Message from ..ui.action_row import walk_components @@ -18,7 +17,10 @@ ) if TYPE_CHECKING: + from collections.abc import Sequence + from ..abc import AnyChannel + from ..components import ActionRowMessageComponent from ..member import Member from ..role import Role from ..state import ConnectionState diff --git a/disnake/interactions/modal.py b/disnake/interactions/modal.py index 15c7db53cf..8f42b20872 100644 --- a/disnake/interactions/modal.py +++ b/disnake/interactions/modal.py @@ -2,7 +2,7 @@ from __future__ import annotations -from collections.abc import Callable, Generator, Sequence +from collections.abc import Sequence from typing import ( TYPE_CHECKING, Any, @@ -11,13 +11,16 @@ from ..components import _SELECT_COMPONENT_TYPE_VALUES from ..enums import ComponentType -from ..message import Attachment, Message +from ..message import Message from ..utils import cached_slot_property from .base import ClientT, Interaction, InteractionDataResolved if TYPE_CHECKING: + from collections.abc import Callable, Generator + from ..abc import AnyChannel from ..member import Member + from ..message import Attachment from ..role import Role from ..state import ConnectionState from ..types.interactions import ( diff --git a/disnake/iterators.py b/disnake/iterators.py index da41199738..9c86f21b9f 100644 --- a/disnake/iterators.py +++ b/disnake/iterators.py @@ -4,7 +4,7 @@ import asyncio import datetime -from collections.abc import AsyncIterator, Awaitable, Callable, Generator +from collections.abc import AsyncIterator, Awaitable, Callable from typing import ( TYPE_CHECKING, Any, @@ -40,6 +40,8 @@ ) if TYPE_CHECKING: + from collections.abc import Generator + from .abc import Messageable, Snowflake from .app_commands import APIApplicationCommand from .client import Client diff --git a/disnake/member.py b/disnake/member.py index 66015c1121..a63b4dcc64 100644 --- a/disnake/member.py +++ b/disnake/member.py @@ -5,7 +5,6 @@ import datetime import itertools import sys -from collections.abc import Callable, Sequence from operator import attrgetter from typing import ( TYPE_CHECKING, @@ -19,8 +18,8 @@ import disnake.abc from . import utils -from .activity import ActivityTypes, create_activity -from .asset import Asset, AssetBytes +from .activity import create_activity +from .asset import Asset from .colour import Colour from .enums import Status, try_enum from .flags import MemberFlags @@ -35,9 +34,13 @@ ) if TYPE_CHECKING: + from collections.abc import Callable, Sequence + from typing_extensions import Self from .abc import Snowflake + from .activity import ActivityTypes + from .asset import AssetBytes from .channel import DMChannel, StageChannel, VoiceChannel from .flags import PublicUserFlags from .guild import Guild diff --git a/disnake/mentions.py b/disnake/mentions.py index b8afbcfdc5..20f1f69149 100644 --- a/disnake/mentions.py +++ b/disnake/mentions.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Sequence from typing import TYPE_CHECKING, Any, cast from .enums import MessageType @@ -10,6 +9,8 @@ __all__ = ("AllowedMentions",) if TYPE_CHECKING: + from collections.abc import Sequence + from typing_extensions import Self from .abc import Snowflake diff --git a/disnake/message.py b/disnake/message.py index b7ee6aa69e..922a267cc3 100644 --- a/disnake/message.py +++ b/disnake/message.py @@ -3,12 +3,9 @@ from __future__ import annotations import asyncio -import datetime import io import re from base64 import b64decode, b64encode -from collections.abc import Callable -from os import PathLike from typing import ( TYPE_CHECKING, Any, @@ -20,7 +17,7 @@ from . import utils from .channel import PartialMessageable -from .components import MessageTopLevelComponent, _message_component_factory +from .components import _message_component_factory from .embeds import Embed from .emoji import Emoji from .enums import ( @@ -42,14 +39,18 @@ from .reaction import Reaction from .sticker import StickerItem from .threads import Thread -from .user import User from .utils import MISSING, _get_as_snowflake, assert_never, deprecated, escape_mentions if TYPE_CHECKING: + import datetime + from collections.abc import Callable + from os import PathLike + from typing_extensions import Self from .abc import GuildChannel, MessageableChannel, Snowflake from .channel import DMChannel, GroupChannel + from .components import MessageTopLevelComponent from .guild import GuildMessageable from .mentions import AllowedMentions from .role import Role @@ -83,6 +84,7 @@ from .types.user import User as UserPayload from .ui._types import MessageComponents from .ui.view import View + from .user import User EmojiInputType: TypeAlias = Emoji | PartialEmoji | str diff --git a/disnake/oggparse.py b/disnake/oggparse.py index 1052366fe7..bcbd6e2d03 100644 --- a/disnake/oggparse.py +++ b/disnake/oggparse.py @@ -3,11 +3,13 @@ from __future__ import annotations import struct -from collections.abc import Generator from typing import IO, TYPE_CHECKING, ClassVar from .errors import DiscordException +if TYPE_CHECKING: + from collections.abc import Generator + __all__ = ( "OggError", "OggPage", diff --git a/disnake/opus.py b/disnake/opus.py index efb370748c..7c84947732 100644 --- a/disnake/opus.py +++ b/disnake/opus.py @@ -10,7 +10,6 @@ import os.path import struct import sys -from collections.abc import Callable from typing import ( TYPE_CHECKING, Any, @@ -24,6 +23,8 @@ from .utils import MISSING if TYPE_CHECKING: + from collections.abc import Callable + T = TypeVar("T") BAND_CTL = Literal["narrow", "medium", "wide", "superwide", "full"] SIGNAL_CTL = Literal["auto", "voice", "music"] diff --git a/disnake/permissions.py b/disnake/permissions.py index 6d46afe761..0f52c6b0d6 100644 --- a/disnake/permissions.py +++ b/disnake/permissions.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Iterator from functools import wraps from typing import ( TYPE_CHECKING, @@ -15,6 +14,8 @@ from .utils import _generated, _overload_with_permissions if TYPE_CHECKING: + from collections.abc import Callable, Iterator + from typing_extensions import Self diff --git a/disnake/player.py b/disnake/player.py index b757c2d052..da6ddf85b8 100644 --- a/disnake/player.py +++ b/disnake/player.py @@ -3,7 +3,6 @@ from __future__ import annotations import asyncio -import io import logging import re import shlex @@ -13,7 +12,6 @@ import time import traceback import warnings -from collections.abc import Callable from typing import IO, TYPE_CHECKING, Any, Generic, TypeVar from . import utils @@ -22,6 +20,9 @@ from .opus import Encoder as OpusEncoder if TYPE_CHECKING: + import io + from collections.abc import Callable + from typing_extensions import Self from .voice_client import VoiceClient diff --git a/disnake/poll.py b/disnake/poll.py index 0079623a98..15ce3b6e13 100644 --- a/disnake/poll.py +++ b/disnake/poll.py @@ -6,8 +6,7 @@ from typing import TYPE_CHECKING from . import utils -from .abc import Snowflake -from .emoji import Emoji, _EmojiTag +from .emoji import _EmojiTag from .enums import PollLayoutType, try_enum from .iterators import PollAnswerIterator from .partial_emoji import PartialEmoji @@ -15,6 +14,8 @@ if TYPE_CHECKING: from datetime import datetime + from .abc import Snowflake + from .emoji import Emoji from .message import Message from .state import ConnectionState from .types.poll import ( diff --git a/disnake/shard.py b/disnake/shard.py index 3bffe63f6d..51475c9626 100644 --- a/disnake/shard.py +++ b/disnake/shard.py @@ -4,7 +4,6 @@ import asyncio import logging -from collections.abc import Callable from errno import ECONNRESET from typing import ( TYPE_CHECKING, @@ -17,7 +16,7 @@ import aiohttp from .backoff import ExponentialBackoff -from .client import Client, GatewayParams, SessionStartLimit +from .client import Client, SessionStartLimit from .enums import Status from .errors import ( ClientException, @@ -31,9 +30,12 @@ from .state import AutoShardedConnectionState if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import Self from .activity import BaseActivity + from .client import GatewayParams from .flags import Intents, MemberCacheFlags from .i18n import LocalizationProtocol from .mentions import AllowedMentions diff --git a/disnake/sku.py b/disnake/sku.py index 512a2abf75..b95957dfdc 100644 --- a/disnake/sku.py +++ b/disnake/sku.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING from .enums import SKUType, try_enum @@ -13,6 +12,8 @@ from .utils import snowflake_time if TYPE_CHECKING: + import datetime + from .abc import Snowflake, SnowflakeTime from .state import ConnectionState from .types.sku import SKU as SKUPayload diff --git a/disnake/soundboard.py b/disnake/soundboard.py index 8776908418..16ec5c5e26 100644 --- a/disnake/soundboard.py +++ b/disnake/soundboard.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any from .asset import Asset, AssetMixin @@ -11,6 +10,8 @@ from .utils import MISSING, _get_as_snowflake, snowflake_time if TYPE_CHECKING: + import datetime + from .emoji import Emoji from .guild import Guild from .state import ConnectionState diff --git a/disnake/stage_instance.py b/disnake/stage_instance.py index 6aa288ca95..182ebc1e37 100644 --- a/disnake/stage_instance.py +++ b/disnake/stage_instance.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING from .enums import StagePrivacyLevel, try_enum @@ -12,6 +11,8 @@ __all__ = ("StageInstance",) if TYPE_CHECKING: + import datetime + from .channel import StageChannel from .guild import Guild from .guild_scheduled_event import GuildScheduledEvent diff --git a/disnake/state.py b/disnake/state.py index 53b110fcf9..c295b0dca3 100644 --- a/disnake/state.py +++ b/disnake/state.py @@ -11,7 +11,6 @@ import os import weakref from collections import OrderedDict, deque -from collections.abc import Callable, Coroutine, Sequence from typing import ( TYPE_CHECKING, Any, @@ -43,14 +42,13 @@ from .components import _SELECT_COMPONENT_TYPES from .emoji import Emoji from .entitlement import Entitlement -from .enums import ApplicationCommandType, ChannelType, ComponentType, MessageType, Status, try_enum +from .enums import ChannelType, ComponentType, MessageType, Status, try_enum from .flags import ApplicationFlags, Intents, MemberCacheFlags from .guild import Guild from .guild_scheduled_event import GuildScheduledEvent from .integrations import _integration_factory from .interactions import ( ApplicationCommandInteraction, - Interaction, MessageInteraction, ModalInteraction, ) @@ -83,21 +81,26 @@ from .sticker import GuildSticker from .subscription import Subscription from .threads import Thread, ThreadMember -from .ui.modal import Modal, ModalStore -from .ui.view import View, ViewStore +from .ui.modal import ModalStore +from .ui.view import ViewStore from .user import ClientUser, User from .utils import MISSING from .webhook import Webhook if TYPE_CHECKING: + from collections.abc import Callable, Coroutine, Sequence from typing import Concatenate from .abc import AnyChannel, MessageableChannel, PrivateChannel from .app_commands import APIApplicationCommand, ApplicationCommand from .client import Client + from .enums import ApplicationCommandType from .gateway import DiscordWebSocket from .guild import GuildChannel, VocalGuildChannel from .http import HTTPClient + from .interactions import ( + Interaction, + ) from .types import gateway from .types.activity import Activity as ActivityPayload from .types.channel import DMChannel as DMChannelPayload @@ -109,6 +112,8 @@ from .types.sticker import GuildSticker as GuildStickerPayload from .types.user import User as UserPayload from .types.webhook import Webhook as WebhookPayload + from .ui.modal import Modal + from .ui.view import View from .voice_client import VoiceProtocol Channel: TypeAlias = GuildChannel | VocalGuildChannel | PrivateChannel diff --git a/disnake/subscription.py b/disnake/subscription.py index a316f5f52c..050fcc1997 100644 --- a/disnake/subscription.py +++ b/disnake/subscription.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING from .enums import SubscriptionStatus, try_enum @@ -10,6 +9,8 @@ from .utils import parse_time, snowflake_time if TYPE_CHECKING: + import datetime + from .state import ConnectionState from .types.subscription import Subscription as SubscriptionPayload from .user import User diff --git a/disnake/team.py b/disnake/team.py index a626393829..6fa2848d1d 100644 --- a/disnake/team.py +++ b/disnake/team.py @@ -2,7 +2,6 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING from . import utils @@ -11,6 +10,8 @@ from .user import BaseUser if TYPE_CHECKING: + import datetime + from .state import ConnectionState from .types.team import Team as TeamPayload, TeamMember as TeamMemberPayload diff --git a/disnake/template.py b/disnake/template.py index 0256fe7b22..c41d9b28c0 100644 --- a/disnake/template.py +++ b/disnake/template.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Any, NoReturn -from .guild import Guild, Member +from .guild import Guild from .utils import MISSING, _assetbytes_to_base64_data, parse_time __all__ = ("Template",) @@ -14,6 +14,7 @@ from .asset import AssetBytes from .flags import MemberCacheFlags + from .guild import Member from .state import ConnectionState from .types.emoji import Emoji as EmojiPayload from .types.template import Template as TemplatePayload diff --git a/disnake/threads.py b/disnake/threads.py index 78d3d9feb6..2cc76055a8 100644 --- a/disnake/threads.py +++ b/disnake/threads.py @@ -4,11 +4,10 @@ import asyncio import time -from collections.abc import Callable, Iterable, Sequence from typing import TYPE_CHECKING, Literal, TypeAlias from .abc import GuildChannel, Messageable -from .enums import ChannelType, ThreadArchiveDuration, try_enum, try_enum_to_int +from .enums import ChannelType, try_enum, try_enum_to_int from .errors import ClientException from .flags import ChannelFlags from .mixins import Hashable @@ -25,12 +24,14 @@ if TYPE_CHECKING: import datetime + from collections.abc import Callable, Iterable, Sequence from typing_extensions import Self from .abc import Snowflake, SnowflakeTime from .channel import CategoryChannel, ForumChannel, MediaChannel, TextChannel from .emoji import Emoji + from .enums import ThreadArchiveDuration from .guild import Guild from .member import Member from .message import Message, PartialMessage diff --git a/disnake/types/activity.py b/disnake/types/activity.py index 603a33f9fb..bb842ec61f 100644 --- a/disnake/types/activity.py +++ b/disnake/types/activity.py @@ -2,12 +2,13 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + from .user import User StatusType = Literal["idle", "dnd", "online", "offline"] StatusDisplayType = Literal[0, 1, 2] diff --git a/disnake/types/appinfo.py b/disnake/types/appinfo.py index 4182bf5b30..68293e796f 100644 --- a/disnake/types/appinfo.py +++ b/disnake/types/appinfo.py @@ -2,13 +2,14 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake -from .team import Team -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + from .team import Team + from .user import User # (also called "installation context", which seems more accurate) ApplicationIntegrationType = Literal[0, 1] # GUILD_INSTALL, USER_INSTALL diff --git a/disnake/types/application_role_connection.py b/disnake/types/application_role_connection.py index af89e45efb..279e8ad2b6 100644 --- a/disnake/types/application_role_connection.py +++ b/disnake/types/application_role_connection.py @@ -1,10 +1,12 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .i18n import LocalizationDict +if TYPE_CHECKING: + from .i18n import LocalizationDict ApplicationRoleConnectionMetadataType = Literal[1, 2, 3, 4, 5, 6, 7, 8] diff --git a/disnake/types/audit_log.py b/disnake/types/audit_log.py index 2065971187..6d57b4523d 100644 --- a/disnake/types/audit_log.py +++ b/disnake/types/audit_log.py @@ -2,33 +2,35 @@ from __future__ import annotations -import datetime -from typing import Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .automod import ( - AutoModAction, - AutoModEventType, - AutoModRule, - AutoModTriggerMetadata, - AutoModTriggerType, -) -from .channel import ChannelType, PermissionOverwrite, VideoQualityMode -from .guild import ( - DefaultMessageNotificationLevel, - ExplicitContentFilterLevel, - MFALevel, - VerificationLevel, -) -from .guild_scheduled_event import GuildScheduledEvent -from .integration import IntegrationExpireBehavior, PartialIntegration -from .interactions import ApplicationCommand, ApplicationCommandPermissions -from .role import Role -from .snowflake import Snowflake -from .threads import Thread -from .user import User -from .webhook import Webhook +if TYPE_CHECKING: + import datetime + + from .automod import ( + AutoModAction, + AutoModEventType, + AutoModRule, + AutoModTriggerMetadata, + AutoModTriggerType, + ) + from .channel import ChannelType, PermissionOverwrite, VideoQualityMode + from .guild import ( + DefaultMessageNotificationLevel, + ExplicitContentFilterLevel, + MFALevel, + VerificationLevel, + ) + from .guild_scheduled_event import GuildScheduledEvent + from .integration import IntegrationExpireBehavior, PartialIntegration + from .interactions import ApplicationCommand, ApplicationCommandPermissions + from .role import Role + from .snowflake import Snowflake + from .threads import Thread + from .user import User + from .webhook import Webhook AuditLogEvent = Literal[ 1, diff --git a/disnake/types/automod.py b/disnake/types/automod.py index 7deb951b0d..f946ba71fd 100644 --- a/disnake/types/automod.py +++ b/disnake/types/automod.py @@ -2,11 +2,12 @@ from __future__ import annotations -from typing import Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake, SnowflakeList +if TYPE_CHECKING: + from .snowflake import Snowflake, SnowflakeList AutoModTriggerType = Literal[1, 3, 4, 5] AutoModEventType = Literal[1] diff --git a/disnake/types/channel.py b/disnake/types/channel.py index 21beadca8a..d8898be73d 100644 --- a/disnake/types/channel.py +++ b/disnake/types/channel.py @@ -1,13 +1,15 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .message import MessagePin -from .snowflake import Snowflake -from .threads import ForumTag, ThreadArchiveDurationLiteral, ThreadMember, ThreadMetadata -from .user import PartialUser +if TYPE_CHECKING: + from .message import MessagePin + from .snowflake import Snowflake + from .threads import ForumTag, ThreadArchiveDurationLiteral, ThreadMember, ThreadMetadata + from .user import PartialUser OverwriteType = Literal[0, 1] diff --git a/disnake/types/components.py b/disnake/types/components.py index 97062ebd3e..bf4a1550b0 100644 --- a/disnake/types/components.py +++ b/disnake/types/components.py @@ -2,13 +2,14 @@ from __future__ import annotations -from typing import Literal, TypeAlias, TypedDict, Union +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict, Union from typing_extensions import NotRequired, ReadOnly, Required -from .channel import ChannelType -from .emoji import PartialEmoji -from .snowflake import Snowflake +if TYPE_CHECKING: + from .channel import ChannelType + from .emoji import PartialEmoji + from .snowflake import Snowflake ComponentType = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19] ButtonStyle = Literal[1, 2, 3, 4, 5, 6] diff --git a/disnake/types/emoji.py b/disnake/types/emoji.py index 27ce2b1994..8c47dcc544 100644 --- a/disnake/types/emoji.py +++ b/disnake/types/emoji.py @@ -1,9 +1,11 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict -from .snowflake import Snowflake, SnowflakeList -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake, SnowflakeList + from .user import User class PartialEmoji(TypedDict): diff --git a/disnake/types/entitlement.py b/disnake/types/entitlement.py index 1ffacf61ab..0ef488f1e5 100644 --- a/disnake/types/entitlement.py +++ b/disnake/types/entitlement.py @@ -1,10 +1,12 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake EntitlementType = Literal[1, 2, 3, 4, 5, 6, 7, 8] diff --git a/disnake/types/gateway.py b/disnake/types/gateway.py index ca00f5ab9b..269af9b3c9 100644 --- a/disnake/types/gateway.py +++ b/disnake/types/gateway.py @@ -2,33 +2,41 @@ from __future__ import annotations -from collections.abc import Sequence -from typing import Any, Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Any, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .activity import PartialPresenceUpdate, PresenceData, SendableActivity -from .appinfo import PartialAppInfo, PartialGatewayAppInfo +from .activity import PartialPresenceUpdate from .audit_log import AuditLogEntry -from .automod import AutoModAction, AutoModRule, AutoModTriggerType +from .automod import AutoModRule from .channel import Channel, GuildChannel, StageInstance -from .emoji import Emoji, PartialEmoji from .entitlement import Entitlement from .guild import Guild, UnavailableGuild from .guild_scheduled_event import GuildScheduledEvent from .integration import BaseIntegration from .interactions import BaseInteraction, GuildApplicationCommandPermissions -from .invite import InviteTargetType, InviteType from .member import MemberWithUser from .message import Message -from .role import Role -from .snowflake import Snowflake, SnowflakeList from .soundboard import GuildSoundboardSound -from .sticker import GuildSticker from .subscription import Subscription -from .threads import Thread, ThreadMember, ThreadMemberWithPresence, ThreadType -from .user import AvatarDecorationData, User -from .voice import GuildVoiceState, SupportedModes, VoiceChannelEffect +from .threads import Thread, ThreadMember +from .user import User +from .voice import GuildVoiceState, VoiceChannelEffect + +if TYPE_CHECKING: + from collections.abc import Sequence + + from .activity import PresenceData, SendableActivity + from .appinfo import PartialAppInfo, PartialGatewayAppInfo + from .automod import AutoModAction, AutoModTriggerType + from .emoji import Emoji, PartialEmoji + from .invite import InviteTargetType, InviteType + from .role import Role + from .snowflake import Snowflake, SnowflakeList + from .sticker import GuildSticker + from .threads import ThreadMemberWithPresence, ThreadType + from .user import AvatarDecorationData + from .voice import SupportedModes class SessionStartLimit(TypedDict): diff --git a/disnake/types/guild.py b/disnake/types/guild.py index 1636530110..17e444e98b 100644 --- a/disnake/types/guild.py +++ b/disnake/types/guild.py @@ -1,22 +1,27 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .activity import PartialPresenceUpdate -from .channel import CreateGuildChannel, GuildChannel, StageInstance -from .emoji import Emoji -from .guild_scheduled_event import GuildScheduledEvent -from .member import Member -from .role import CreateRole, Role -from .snowflake import Snowflake -from .soundboard import GuildSoundboardSound -from .sticker import GuildSticker -from .threads import Thread -from .user import User -from .voice import GuildVoiceState -from .welcome_screen import WelcomeScreen +from .channel import CreateGuildChannel +from .role import CreateRole + +if TYPE_CHECKING: + from .activity import PartialPresenceUpdate + from .channel import GuildChannel, StageInstance + from .emoji import Emoji + from .guild_scheduled_event import GuildScheduledEvent + from .member import Member + from .role import Role + from .snowflake import Snowflake + from .soundboard import GuildSoundboardSound + from .sticker import GuildSticker + from .threads import Thread + from .user import User + from .voice import GuildVoiceState + from .welcome_screen import WelcomeScreen class Ban(TypedDict): diff --git a/disnake/types/guild_scheduled_event.py b/disnake/types/guild_scheduled_event.py index adac3cec20..b82c59153c 100644 --- a/disnake/types/guild_scheduled_event.py +++ b/disnake/types/guild_scheduled_event.py @@ -1,12 +1,14 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .member import Member -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .member import Member + from .snowflake import Snowflake + from .user import User GuildScheduledEventPrivacyLevel = Literal[2] GuildScheduledEventStatus = Literal[1, 2, 3, 4] diff --git a/disnake/types/integration.py b/disnake/types/integration.py index 2f51c04088..de34340e7e 100644 --- a/disnake/types/integration.py +++ b/disnake/types/integration.py @@ -2,12 +2,13 @@ from __future__ import annotations -from typing import Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + from .user import User class IntegrationApplication(TypedDict): diff --git a/disnake/types/interactions.py b/disnake/types/interactions.py index 336f42e38b..f113c1adbc 100644 --- a/disnake/types/interactions.py +++ b/disnake/types/interactions.py @@ -4,24 +4,25 @@ from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict -from .appinfo import ApplicationIntegrationType -from .channel import ChannelType -from .components import MessageTopLevelComponent, Modal -from .embed import Embed -from .entitlement import Entitlement -from .i18n import LocalizationDict -from .member import Member, MemberWithUser -from .role import Role +from .components import Modal from .snowflake import Snowflake -from .threads import ThreadMetadata -from .user import User if TYPE_CHECKING: from typing import TypeAlias from typing_extensions import NotRequired + from .appinfo import ApplicationIntegrationType + from .channel import ChannelType + from .components import MessageTopLevelComponent + from .embed import Embed + from .entitlement import Entitlement + from .i18n import LocalizationDict + from .member import Member, MemberWithUser from .message import AllowedMentions, Attachment, Message + from .role import Role + from .threads import ThreadMetadata + from .user import User ApplicationCommandType = Literal[1, 2, 3] diff --git a/disnake/types/invite.py b/disnake/types/invite.py index 55d79e9540..62997b610b 100644 --- a/disnake/types/invite.py +++ b/disnake/types/invite.py @@ -2,15 +2,16 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .appinfo import PartialAppInfo -from .channel import InviteChannel -from .guild import InviteGuild -from .guild_scheduled_event import GuildScheduledEvent -from .user import PartialUser +if TYPE_CHECKING: + from .appinfo import PartialAppInfo + from .channel import InviteChannel + from .guild import InviteGuild + from .guild_scheduled_event import GuildScheduledEvent + from .user import PartialUser InviteType = Literal[0, 1, 2] InviteTargetType = Literal[1, 2] diff --git a/disnake/types/member.py b/disnake/types/member.py index b31466f02f..495a157d6c 100644 --- a/disnake/types/member.py +++ b/disnake/types/member.py @@ -1,11 +1,15 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict from typing_extensions import NotRequired -from .snowflake import SnowflakeList -from .user import AvatarDecorationData, User +from .user import User + +if TYPE_CHECKING: + from .snowflake import SnowflakeList + from .user import AvatarDecorationData class BaseMember(TypedDict): diff --git a/disnake/types/message.py b/disnake/types/message.py index c4b0376208..9f24c83083 100644 --- a/disnake/types/message.py +++ b/disnake/types/message.py @@ -2,21 +2,26 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .channel import ChannelType -from .components import MessageTopLevelComponent -from .embed import Embed -from .emoji import PartialEmoji -from .interactions import InteractionDataResolved, InteractionMessageReference, InteractionMetadata -from .member import Member, UserWithMember -from .poll import Poll -from .snowflake import Snowflake, SnowflakeList -from .sticker import StickerItem -from .threads import Thread -from .user import User +if TYPE_CHECKING: + from .channel import ChannelType + from .components import MessageTopLevelComponent + from .embed import Embed + from .emoji import PartialEmoji + from .interactions import ( + InteractionDataResolved, + InteractionMessageReference, + InteractionMetadata, + ) + from .member import Member, UserWithMember + from .poll import Poll + from .snowflake import Snowflake, SnowflakeList + from .sticker import StickerItem + from .threads import Thread + from .user import User class ChannelMention(TypedDict): diff --git a/disnake/types/onboarding.py b/disnake/types/onboarding.py index a1b1aa11cc..5414803595 100644 --- a/disnake/types/onboarding.py +++ b/disnake/types/onboarding.py @@ -1,9 +1,11 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict -from .emoji import Emoji -from .snowflake import Snowflake, SnowflakeList +if TYPE_CHECKING: + from .emoji import Emoji + from .snowflake import Snowflake, SnowflakeList OnboardingPromptType = Literal[0, 1] diff --git a/disnake/types/poll.py b/disnake/types/poll.py index fe6eb413cc..368e8c6855 100644 --- a/disnake/types/poll.py +++ b/disnake/types/poll.py @@ -2,13 +2,14 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .emoji import PartialEmoji -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .emoji import PartialEmoji + from .snowflake import Snowflake + from .user import User class PollMedia(TypedDict): diff --git a/disnake/types/role.py b/disnake/types/role.py index 6422b65741..729e8eb656 100644 --- a/disnake/types/role.py +++ b/disnake/types/role.py @@ -2,11 +2,12 @@ from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake class Role(TypedDict): diff --git a/disnake/types/sku.py b/disnake/types/sku.py index 83614af6bb..4a5ecb2b5c 100644 --- a/disnake/types/sku.py +++ b/disnake/types/sku.py @@ -1,8 +1,10 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake SKUType = Literal[2, 3, 5, 6] diff --git a/disnake/types/soundboard.py b/disnake/types/soundboard.py index 0e99457779..59b6e5f458 100644 --- a/disnake/types/soundboard.py +++ b/disnake/types/soundboard.py @@ -2,12 +2,13 @@ from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + from .user import User class PartialSoundboardSound(TypedDict): diff --git a/disnake/types/sticker.py b/disnake/types/sticker.py index 5c86961cbf..f0b1a17cc3 100644 --- a/disnake/types/sticker.py +++ b/disnake/types/sticker.py @@ -2,12 +2,13 @@ from __future__ import annotations -from typing import Literal, TypeAlias, TypedDict +from typing import TYPE_CHECKING, Literal, TypeAlias, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + from .user import User StickerFormatType = Literal[1, 2, 3, 4] diff --git a/disnake/types/subscription.py b/disnake/types/subscription.py index 56675b4e7e..ceaddc098d 100644 --- a/disnake/types/subscription.py +++ b/disnake/types/subscription.py @@ -1,10 +1,12 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake SubscriptionStatus = Literal[0, 1, 2] diff --git a/disnake/types/team.py b/disnake/types/team.py index 36e5e1d690..5157db7d9c 100644 --- a/disnake/types/team.py +++ b/disnake/types/team.py @@ -2,10 +2,11 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict -from .snowflake import Snowflake -from .user import PartialUser +if TYPE_CHECKING: + from .snowflake import Snowflake + from .user import PartialUser TeamMembershipState = Literal[1, 2] TeamMemberRole = Literal["admin", "developer", "read_only"] diff --git a/disnake/types/template.py b/disnake/types/template.py index eb2d77b960..384e8d9a3a 100644 --- a/disnake/types/template.py +++ b/disnake/types/template.py @@ -2,11 +2,12 @@ from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict -from .guild import Guild -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .guild import Guild + from .snowflake import Snowflake + from .user import User class CreateTemplate(TypedDict): diff --git a/disnake/types/threads.py b/disnake/types/threads.py index d1b8cf8bad..6448b9e794 100644 --- a/disnake/types/threads.py +++ b/disnake/types/threads.py @@ -2,14 +2,15 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .activity import PresenceData -from .member import Member -from .message import Message -from .snowflake import Snowflake, SnowflakeList +if TYPE_CHECKING: + from .activity import PresenceData + from .member import Member + from .message import Message + from .snowflake import Snowflake, SnowflakeList ThreadType = Literal[10, 11, 12] ThreadArchiveDurationLiteral = Literal[60, 1440, 4320, 10080] diff --git a/disnake/types/user.py b/disnake/types/user.py index 33a941a1b7..162687a2c9 100644 --- a/disnake/types/user.py +++ b/disnake/types/user.py @@ -1,10 +1,12 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake PaletteType = Literal[ "crimson", diff --git a/disnake/types/voice.py b/disnake/types/voice.py index d012c59a4a..ad91526ebe 100644 --- a/disnake/types/voice.py +++ b/disnake/types/voice.py @@ -1,12 +1,14 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .emoji import PartialEmoji -from .member import MemberWithUser -from .snowflake import Snowflake +if TYPE_CHECKING: + from .emoji import PartialEmoji + from .member import MemberWithUser + from .snowflake import Snowflake SupportedModes = Literal[ # "aead_aes256_gcm_rtpsize", # supported in libsodium, but not exposed by pynacl diff --git a/disnake/types/webhook.py b/disnake/types/webhook.py index e9cbce0be2..6908ce9c81 100644 --- a/disnake/types/webhook.py +++ b/disnake/types/webhook.py @@ -2,13 +2,14 @@ from __future__ import annotations -from typing import Literal, TypedDict +from typing import TYPE_CHECKING, Literal, TypedDict from typing_extensions import NotRequired -from .channel import PartialChannel -from .snowflake import Snowflake -from .user import User +if TYPE_CHECKING: + from .channel import PartialChannel + from .snowflake import Snowflake + from .user import User class SourceGuild(TypedDict): diff --git a/disnake/types/welcome_screen.py b/disnake/types/welcome_screen.py index 31b9ce0b4b..12c168ed51 100644 --- a/disnake/types/welcome_screen.py +++ b/disnake/types/welcome_screen.py @@ -2,9 +2,10 @@ from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict -from .snowflake import Snowflake +if TYPE_CHECKING: + from .snowflake import Snowflake class WelcomeScreen(TypedDict): diff --git a/disnake/types/widget.py b/disnake/types/widget.py index 1384a6ec55..4ca280e6b0 100644 --- a/disnake/types/widget.py +++ b/disnake/types/widget.py @@ -1,10 +1,13 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations -from typing import TypedDict +from typing import TYPE_CHECKING, TypedDict -from .snowflake import Snowflake from .user import User +if TYPE_CHECKING: + from .snowflake import Snowflake + class WidgetChannel(TypedDict): id: Snowflake diff --git a/disnake/ui/action_row.py b/disnake/ui/action_row.py index f8b461f516..b2704b20e5 100644 --- a/disnake/ui/action_row.py +++ b/disnake/ui/action_row.py @@ -2,7 +2,7 @@ from __future__ import annotations -from collections.abc import Generator, Iterator, Mapping, Sequence +from collections.abc import Sequence from typing import ( TYPE_CHECKING, Any, @@ -16,8 +16,6 @@ from ..components import ( ActionRow as ActionRowComponent, - ActionRowChildComponent, - ActionRowMessageComponent as ActionRowMessageComponentRaw, Button as ButtonComponent, ChannelSelectMenu as ChannelSelectComponent, Component, @@ -36,15 +34,13 @@ Thumbnail as ThumbnailComponent, UserSelectMenu as UserSelectComponent, ) -from ..enums import ButtonStyle, ChannelType, ComponentType, TextInputStyle +from ..enums import ButtonStyle, ComponentType, TextInputStyle from ..utils import MISSING, SequenceProxy, assert_never, copy_doc, deprecated from ._types import ( ActionRowChildT, ActionRowMessageComponent, ActionRowModalComponent, ComponentInput, - MessageTopLevelComponent, - NonActionRowChildT, ) from .button import Button from .container import Container @@ -61,12 +57,18 @@ from .thumbnail import Thumbnail if TYPE_CHECKING: + from collections.abc import Generator, Iterator, Mapping from typing import TypeAlias from typing_extensions import Self from ..abc import AnyChannel + from ..components import ( + ActionRowChildComponent, + ActionRowMessageComponent as ActionRowMessageComponentRaw, + ) from ..emoji import Emoji + from ..enums import ChannelType from ..member import Member from ..message import Message from ..partial_emoji import PartialEmoji @@ -76,6 +78,10 @@ MessageTopLevelComponent as MessageTopLevelComponentPayload, ) from ..user import User + from ._types import ( + MessageTopLevelComponent, + NonActionRowChildT, + ) from .select.base import SelectDefaultValueInputType, SelectDefaultValueMultiInputType from .select.string import SelectOptionInput diff --git a/disnake/ui/button.py b/disnake/ui/button.py index eee479c4df..0450ba3c2f 100644 --- a/disnake/ui/button.py +++ b/disnake/ui/button.py @@ -3,14 +3,13 @@ from __future__ import annotations import os -from collections.abc import Callable from typing import TYPE_CHECKING, Any, ClassVar, TypeVar, overload from ..components import Button as ButtonComponent from ..enums import ButtonStyle, ComponentType from ..partial_emoji import PartialEmoji, _EmojiTag from ..utils import MISSING, iscoroutinefunction -from .item import DecoratedItem, Item +from .item import Item __all__ = ( "Button", @@ -18,10 +17,12 @@ ) if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import ParamSpec, Self from ..emoji import Emoji - from .item import ItemCallbackType + from .item import DecoratedItem, ItemCallbackType from .view import View else: diff --git a/disnake/ui/file.py b/disnake/ui/file.py index 947114b632..7e0da7e6cf 100644 --- a/disnake/ui/file.py +++ b/disnake/ui/file.py @@ -5,7 +5,7 @@ import copy from typing import TYPE_CHECKING, ClassVar -from ..components import FileComponent, UnfurledMediaItem, handle_media_item_input +from ..components import FileComponent, handle_media_item_input from ..enums import ComponentType from ..utils import MISSING from .item import UIComponent @@ -13,7 +13,7 @@ if TYPE_CHECKING: from typing_extensions import Self - from ..components import LocalMediaItemInput + from ..components import LocalMediaItemInput, UnfurledMediaItem __all__ = ("File",) diff --git a/disnake/ui/item.py b/disnake/ui/item.py index ec8f9347f9..ba8f7ddb42 100644 --- a/disnake/ui/item.py +++ b/disnake/ui/item.py @@ -3,7 +3,6 @@ from __future__ import annotations from abc import ABC, abstractmethod -from collections.abc import Callable, Coroutine from typing import ( TYPE_CHECKING, Any, @@ -24,6 +23,8 @@ V_co = TypeVar("V_co", bound="View | None", covariant=True) if TYPE_CHECKING: + from collections.abc import Callable, Coroutine + from typing_extensions import Self from ..client import Client diff --git a/disnake/ui/media_gallery.py b/disnake/ui/media_gallery.py index 2d10d9f17f..bb3b4fe9a5 100644 --- a/disnake/ui/media_gallery.py +++ b/disnake/ui/media_gallery.py @@ -2,17 +2,20 @@ from __future__ import annotations -from collections.abc import Sequence from typing import TYPE_CHECKING, ClassVar -from ..components import MediaGallery as MediaGalleryComponent, MediaGalleryItem +from ..components import MediaGallery as MediaGalleryComponent from ..enums import ComponentType from ..utils import MISSING from .item import UIComponent if TYPE_CHECKING: + from collections.abc import Sequence + from typing_extensions import Self + from ..components import MediaGalleryItem + __all__ = ("MediaGallery",) diff --git a/disnake/ui/modal.py b/disnake/ui/modal.py index 769ac963bb..1ca84a6f4f 100644 --- a/disnake/ui/modal.py +++ b/disnake/ui/modal.py @@ -6,7 +6,6 @@ import os import sys import traceback -from collections.abc import Callable from functools import partial from typing import TYPE_CHECKING, TypeAlias, TypeVar, cast @@ -18,6 +17,8 @@ from .text_input import TextInput if TYPE_CHECKING: + from collections.abc import Callable + from ..client import Client from ..interactions.modal import ModalInteraction from ..state import ConnectionState diff --git a/disnake/ui/select/base.py b/disnake/ui/select/base.py index 21aa3c49e2..8d3133cf52 100644 --- a/disnake/ui/select/base.py +++ b/disnake/ui/select/base.py @@ -4,7 +4,6 @@ import os from abc import ABC, abstractmethod -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, ClassVar, @@ -14,19 +13,21 @@ ) from ...components import AnySelectMenu, SelectDefaultValue -from ...enums import ComponentType, SelectDefaultValueType from ...object import Object from ...utils import MISSING, humanize_list, iscoroutinefunction -from ..item import DecoratedItem, Item +from ..item import Item __all__ = ("BaseSelect",) if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence + from typing_extensions import ParamSpec, Self from ...abc import Snowflake + from ...enums import ComponentType, SelectDefaultValueType from ...interactions import MessageInteraction - from ..item import ItemCallbackType + from ..item import DecoratedItem, ItemCallbackType from ..view import View else: diff --git a/disnake/ui/select/channel.py b/disnake/ui/select/channel.py index 2907c01794..11967bd680 100644 --- a/disnake/ui/select/channel.py +++ b/disnake/ui/select/channel.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -11,20 +10,23 @@ overload, ) -from ...abc import GuildChannel, Snowflake +from ...abc import GuildChannel from ...channel import DMChannel, GroupChannel, PartialMessageable from ...components import ChannelSelectMenu from ...enums import ChannelType, ComponentType, SelectDefaultValueType from ...object import Object from ...threads import Thread from ...utils import MISSING -from .base import BaseSelect, P, SelectDefaultValueInputType, V_co, _create_decorator +from .base import BaseSelect, V_co, _create_decorator if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence + from typing_extensions import Self - from ...abc import AnyChannel + from ...abc import AnyChannel, Snowflake from ..item import DecoratedItem, ItemCallbackType + from .base import P, SelectDefaultValueInputType __all__ = ( diff --git a/disnake/ui/select/mentionable.py b/disnake/ui/select/mentionable.py index 56170b5f6d..746697ef95 100644 --- a/disnake/ui/select/mentionable.py +++ b/disnake/ui/select/mentionable.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -11,19 +10,22 @@ overload, ) -from ...abc import Snowflake from ...components import MentionableSelectMenu from ...enums import ComponentType, SelectDefaultValueType from ...member import Member from ...role import Role from ...user import ClientUser, User from ...utils import MISSING -from .base import BaseSelect, P, SelectDefaultValueMultiInputType, V_co, _create_decorator +from .base import BaseSelect, V_co, _create_decorator if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence + from typing_extensions import Self + from ...abc import Snowflake from ..item import DecoratedItem, ItemCallbackType + from .base import P, SelectDefaultValueMultiInputType __all__ = ( diff --git a/disnake/ui/select/role.py b/disnake/ui/select/role.py index bf5e3397c3..c4ce932892 100644 --- a/disnake/ui/select/role.py +++ b/disnake/ui/select/role.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -11,18 +10,21 @@ overload, ) -from ...abc import Snowflake from ...components import RoleSelectMenu from ...enums import ComponentType, SelectDefaultValueType from ...object import Object from ...role import Role from ...utils import MISSING -from .base import BaseSelect, P, SelectDefaultValueInputType, V_co, _create_decorator +from .base import BaseSelect, V_co, _create_decorator if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence + from typing_extensions import Self + from ...abc import Snowflake from ..item import DecoratedItem, ItemCallbackType + from .base import P, SelectDefaultValueInputType __all__ = ( diff --git a/disnake/ui/select/string.py b/disnake/ui/select/string.py index efcc588a9f..64de5417d8 100644 --- a/disnake/ui/select/string.py +++ b/disnake/ui/select/string.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Mapping from typing import ( TYPE_CHECKING, Any, @@ -12,18 +11,22 @@ overload, ) -from ...abc import Snowflake from ...components import SelectOption, StringSelectMenu -from ...enums import ComponentType, SelectDefaultValueType +from ...enums import ComponentType from ...utils import MISSING -from .base import BaseSelect, P, V_co, _create_decorator +from .base import BaseSelect, V_co, _create_decorator if TYPE_CHECKING: + from collections.abc import Callable, Mapping + from typing_extensions import Self + from ...abc import Snowflake from ...emoji import Emoji + from ...enums import SelectDefaultValueType from ...partial_emoji import PartialEmoji from ..item import DecoratedItem, ItemCallbackType + from .base import P __all__ = ( diff --git a/disnake/ui/select/user.py b/disnake/ui/select/user.py index a53848d38d..7659bd7507 100644 --- a/disnake/ui/select/user.py +++ b/disnake/ui/select/user.py @@ -2,7 +2,6 @@ from __future__ import annotations -from collections.abc import Callable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, @@ -11,19 +10,22 @@ overload, ) -from ...abc import Snowflake from ...components import UserSelectMenu from ...enums import ComponentType, SelectDefaultValueType from ...member import Member from ...object import Object from ...user import ClientUser, User from ...utils import MISSING -from .base import BaseSelect, P, SelectDefaultValueInputType, V_co, _create_decorator +from .base import BaseSelect, V_co, _create_decorator if TYPE_CHECKING: + from collections.abc import Callable, Mapping, Sequence + from typing_extensions import Self + from ...abc import Snowflake from ..item import DecoratedItem, ItemCallbackType + from .base import P, SelectDefaultValueInputType __all__ = ( diff --git a/disnake/ui/thumbnail.py b/disnake/ui/thumbnail.py index f136b863a5..cffe673129 100644 --- a/disnake/ui/thumbnail.py +++ b/disnake/ui/thumbnail.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, ClassVar -from ..components import Thumbnail as ThumbnailComponent, UnfurledMediaItem, handle_media_item_input +from ..components import Thumbnail as ThumbnailComponent, handle_media_item_input from ..enums import ComponentType from ..utils import MISSING from .item import UIComponent @@ -12,7 +12,7 @@ if TYPE_CHECKING: from typing_extensions import Self - from ..components import MediaItemInput + from ..components import MediaItemInput, UnfurledMediaItem __all__ = ("Thumbnail",) diff --git a/disnake/ui/view.py b/disnake/ui/view.py index 1a6102408b..a1573a992b 100644 --- a/disnake/ui/view.py +++ b/disnake/ui/view.py @@ -8,7 +8,6 @@ import sys import time import traceback -from collections.abc import Callable, Sequence from functools import partial from itertools import groupby from typing import TYPE_CHECKING, ClassVar @@ -29,6 +28,8 @@ if TYPE_CHECKING: + from collections.abc import Callable, Sequence + from typing_extensions import Self from ..interactions import MessageInteraction diff --git a/disnake/utils.py b/disnake/utils.py index 52a6bd22c9..f83f8f0216 100644 --- a/disnake/utils.py +++ b/disnake/utils.py @@ -19,11 +19,7 @@ from bisect import bisect_left from collections.abc import ( AsyncIterator, - Awaitable, - Callable, - Iterable, Iterator, - Mapping, Sequence, ) from inspect import getdoc as _getdoc, isawaitable as _isawaitable, signature as _signature @@ -46,6 +42,13 @@ from urllib.parse import parse_qs, urlencode if TYPE_CHECKING: + from collections.abc import ( + Awaitable, + Callable, + Iterable, + Mapping, + ) + from typing_extensions import Self from .enums import Locale diff --git a/disnake/voice_client.py b/disnake/voice_client.py index 6d84b360b4..6dacec87a1 100644 --- a/disnake/voice_client.py +++ b/disnake/voice_client.py @@ -22,7 +22,6 @@ import socket import struct import threading -from collections.abc import Callable from typing import TYPE_CHECKING, Any from . import opus, utils @@ -33,6 +32,8 @@ from .utils import MISSING if TYPE_CHECKING: + from collections.abc import Callable + from . import abc from .client import Client from .guild import Guild diff --git a/disnake/webhook/async_.py b/disnake/webhook/async_.py index 81007a6a6f..12191e1b32 100644 --- a/disnake/webhook/async_.py +++ b/disnake/webhook/async_.py @@ -5,7 +5,6 @@ import asyncio import logging import re -from collections.abc import Sequence from contextvars import ContextVar from errno import ECONNRESET from typing import ( @@ -33,7 +32,7 @@ from ..mixins import Hashable from ..object import Object from ..ui.action_row import normalize_components_to_dict -from ..user import BaseUser, ClientUser, User +from ..user import BaseUser, User __all__ = ( "Webhook", @@ -46,6 +45,7 @@ if TYPE_CHECKING: import datetime + from collections.abc import Sequence from types import TracebackType from typing_extensions import Self @@ -66,6 +66,7 @@ from ..types.webhook import Webhook as WebhookPayload from ..ui._types import MessageComponents from ..ui.view import View + from ..user import ClientUser MISSING = utils.MISSING diff --git a/disnake/webhook/sync.py b/disnake/webhook/sync.py index e0b6a27d6c..a730c529f2 100644 --- a/disnake/webhook/sync.py +++ b/disnake/webhook/sync.py @@ -12,7 +12,6 @@ import re import threading import time -from collections.abc import Sequence from errno import ECONNRESET from typing import ( TYPE_CHECKING, @@ -25,7 +24,6 @@ from .. import utils from ..channel import PartialMessageable from ..errors import DiscordServerError, Forbidden, HTTPException, NotFound, WebhookTokenMissing -from ..flags import MessageFlags from ..http import Route from ..message import Message from ..object import Object @@ -39,6 +37,7 @@ _log = logging.getLogger(__name__) if TYPE_CHECKING: + from collections.abc import Sequence from types import TracebackType from typing_extensions import Self @@ -46,6 +45,7 @@ from ..abc import Snowflake from ..embeds import Embed from ..file import File + from ..flags import MessageFlags from ..mentions import AllowedMentions from ..message import Attachment from ..types.message import Message as MessagePayload diff --git a/disnake/widget.py b/disnake/widget.py index 3f1e22cf7c..19d9c9cef1 100644 --- a/disnake/widget.py +++ b/disnake/widget.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Any -from .activity import BaseActivity, Spotify, create_activity +from .activity import create_activity from .asset import Asset from .enums import Status, WidgetStyle, try_enum from .invite import Invite @@ -15,6 +15,7 @@ import datetime from .abc import GuildChannel, Snowflake + from .activity import BaseActivity, Spotify from .guild import Guild from .state import ConnectionState from .types.widget import ( diff --git a/docs/conf.py b/docs/conf.py index fb1c540ea5..7504459fec 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,6 +11,7 @@ # # All configuration values have a default; values that are commented out # serve to show the default. +from __future__ import annotations import importlib.metadata import importlib.util @@ -19,10 +20,12 @@ import re import subprocess # noqa: TID251 import sys -from typing import Any +from typing import TYPE_CHECKING, Any import versioningit -from sphinx.application import Sphinx + +if TYPE_CHECKING: + from sphinx.application import Sphinx # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the diff --git a/docs/extensions/redirects.py b/docs/extensions/redirects.py index d084e6f583..ff3e5ae04e 100644 --- a/docs/extensions/redirects.py +++ b/docs/extensions/redirects.py @@ -5,10 +5,11 @@ from pathlib import Path from typing import TYPE_CHECKING -from sphinx.application import Sphinx from sphinx.util.fileutil import copy_asset_file if TYPE_CHECKING: + from sphinx.application import Sphinx + from ._types import SphinxExtensionMeta SCRIPT_PATH = "_templates/api_redirect.js_t" diff --git a/noxfile.py b/noxfile.py index 78e41c8391..0173038c74 100755 --- a/noxfile.py +++ b/noxfile.py @@ -13,7 +13,6 @@ import os import pathlib import shutil -from collections.abc import Sequence from typing import ( TYPE_CHECKING, Any, @@ -22,6 +21,9 @@ import nox +if TYPE_CHECKING: + from collections.abc import Sequence + nox.needs_version = ">=2025.5.1" diff --git a/pyproject.toml b/pyproject.toml index 195ece9f29..47f7567a1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -216,10 +216,6 @@ ignore = [ "TID252", # we still use relative imports ## flake8-todos "TD", # similar to flake8-fixme, though they may conflict - ## flake8-typechecking - "TC001", # typing-only first party import # to be enabled - "TC002", # typing only standard library import # to be enabled - "TC003", # typing only third party import # to be enabled ## flake8-unused-arguments "ARG", # most unused arguments are intentional ## flake8-use-pathlib diff --git a/scripts/codemods/base.py b/scripts/codemods/base.py index bdae48ca17..14ea79427a 100644 --- a/scripts/codemods/base.py +++ b/scripts/codemods/base.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations from abc import ABC -from collections.abc import Generator from contextlib import contextmanager from contextvars import ContextVar from typing import TYPE_CHECKING, ClassVar @@ -10,6 +10,8 @@ import libcst.codemod as codemod if TYPE_CHECKING: + from collections.abc import Generator + base_type = codemod.Codemod else: base_type = object diff --git a/scripts/codemods/combined.py b/scripts/codemods/combined.py index 306be23d7c..364279e007 100644 --- a/scripts/codemods/combined.py +++ b/scripts/codemods/combined.py @@ -1,13 +1,17 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations import functools +from typing import TYPE_CHECKING -import libcst as cst from libcst import codemod from . import link_doc_types, overloads_no_missing, typed_flags, typed_permissions from .base import NoMetadataWrapperMixin +if TYPE_CHECKING: + import libcst as cst + CODEMODS = [ overloads_no_missing.EllipsisOverloads, typed_flags.FlagTypings, diff --git a/scripts/codemods/overloads_no_missing.py b/scripts/codemods/overloads_no_missing.py index b954fdfd43..97b6b36d32 100644 --- a/scripts/codemods/overloads_no_missing.py +++ b/scripts/codemods/overloads_no_missing.py @@ -1,12 +1,16 @@ # SPDX-License-Identifier: MIT -from collections.abc import Sequence + +from typing import TYPE_CHECKING import libcst as cst import libcst.matchers as m from .base import BaseCodemodCommand +if TYPE_CHECKING: + from collections.abc import Sequence + EllipsisType = type(Ellipsis) diff --git a/scripts/codemods/typed_flags.py b/scripts/codemods/typed_flags.py index 2d55c9ac79..52c2dcc32b 100644 --- a/scripts/codemods/typed_flags.py +++ b/scripts/codemods/typed_flags.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations import importlib import textwrap -import types -from typing import cast +from typing import TYPE_CHECKING, cast import libcst as cst import libcst.codemod.visitors as codevisitors @@ -14,6 +14,9 @@ from .base import BaseCodemodCommand +if TYPE_CHECKING: + import types + BASE_FLAG_CLASSES = (flags.BaseFlags, flags.ListBaseFlags) MODULES = ( diff --git a/scripts/versioning.py b/scripts/versioning.py index 820d68daaa..a5ae880ae4 100644 --- a/scripts/versioning.py +++ b/scripts/versioning.py @@ -2,10 +2,14 @@ # This script runs as part of the wheel building process, # all dependencies MUST be included in pyproject.toml -from typing import Any +from __future__ import annotations + +from typing import TYPE_CHECKING, Any import packaging.version -import versioningit + +if TYPE_CHECKING: + import versioningit def template_fields( diff --git a/tests/helpers.py b/tests/helpers.py index bec353dfe6..3cf1a63cb3 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations import datetime import functools import inspect -import types from collections.abc import Callable from contextlib import AbstractContextManager from typing import TYPE_CHECKING, TypeVar @@ -11,6 +11,8 @@ if TYPE_CHECKING: # for pyright + import types + from typing_extensions import reveal_type as reveal_type else: # to avoid flake8 noqas diff --git a/tests/test_utils.py b/tests/test_utils.py index 7e1ce3b4fc..e8f69200bf 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,4 +1,5 @@ # SPDX-License-Identifier: MIT +from __future__ import annotations import asyncio import datetime @@ -7,7 +8,6 @@ import os import sys import warnings -from collections.abc import Callable from dataclasses import dataclass from datetime import timedelta, timezone from typing import ( @@ -29,6 +29,8 @@ from . import helpers, utils_helper_module if TYPE_CHECKING: + from collections.abc import Callable + from typing_extensions import TypeAliasType elif sys.version_info >= (3, 12): # non-3.12 tests shouldn't be using this @@ -997,7 +999,7 @@ def inner() -> None: ... def decorated(self) -> None: ... # we cannot stringify this file due to it testing annotation resolving - _lambda: Callable[["_Clazz"], None] = lambda _: None # noqa: UP037 + _lambda: Callable[[_Clazz], None] = lambda _: None @pytest.mark.parametrize( diff --git a/tests/ui/test_decorators.py b/tests/ui/test_decorators.py index 6ebf4f0985..02274f1e4f 100644 --- a/tests/ui/test_decorators.py +++ b/tests/ui/test_decorators.py @@ -2,8 +2,7 @@ from __future__ import annotations import contextlib -from collections.abc import Iterator -from typing import Any, TypeVar +from typing import TYPE_CHECKING, Any, TypeVar import pytest from typing_extensions import assert_type @@ -11,6 +10,9 @@ from disnake import ui from disnake.ui.button import V_co +if TYPE_CHECKING: + from collections.abc import Iterator + V = TypeVar("V", bound=ui.View) I = TypeVar("I", bound=ui.Item)